用途
Source Ingest 用于研究流程中的来源摄取环节,目标是把混合类型的来源输入归一化为本地、可直接用于教程编写的文本,同时保留来源出处(provenance)。它适用于 source-tutorial 的 C1 阶段,需要把 sources/manifest.yml 中的网页、PDF、仓库、文档等内容变成可追溯文本时使用。如果 source manifest 尚未确定,或来源尚未确认,则应跳过。
主要能力
- 从 sources/manifest.yml 接受本地文件路径或远程 URL。
- 支持的类型(kind)包括:webpage、pdf、markdown、repo、docs_site、video。
- 输出两个文件:sources/index.jsonl 和 sources/provenance.jsonl。
- 对视频采用字幕优先的摄取方式:优先使用提供的 transcript_locator;其次使用可用的 Bilibili 字幕;否则明确失败,而不是把观看页面当作可用文本。
- 普通的 YouTube/Bilibili 观看页面不应被建模为 kind: webpage。
- 对可选来源的失败会继续执行并记录警告;对标记为 required: true 的来源,若无法摄取则整体失败(fail closed)。
- 只把成功抽取的内容当作有效来源;失败来源必须落盘记录,不能默默忽略。
使用方式
快速开始:
uv run python .codex/skills/source-ingest/scripts/run.py --workspace <workspace>
全部选项:
- --workspace <dir>(必填)
- --unit-id <U###>
- --inputs <semicolon-separated>
- --outputs <semicolon-separated>
- --checkpoint <C#>
示例:摄取清单中列出的全部来源:
uv run python .codex/skills/source-ingest/scripts/run.py --workspace <workspace>
触发与路由
触发词:source ingest、ingest sources、normalize tutorial sources、网页抽取、资料归一化。
适用场景
- 需要把 manifest 中登记的多种来源统一转成可追溯的本地文本,供后续教程编写使用。
- 来源包含网页、PDF、Markdown、仓库、文档站点或视频,且需要保留出处信息。
限制与注意事项
- 远程 URL 需要网络连接。
- 视频必须有可用字幕(transcript_locator 或 Bilibili 字幕),否则会明确失败。
- 若仓库或文档站点摄取产生过多噪声,可缩小 manifest 范围到最相关的文档根目录,或替换为具体的文档页面。
- 必选来源失败会导致整体失败;可选来源失败会记录警告并继续。