用途
source-manifest 用于 source-tutorial 流水线的 C1 阶段,目标是在内容摄取(ingest)开始之前,把来自用户提供的多个来源(URL 或本地文件)收集并落成一个显式的来源清单 sources/manifest.yml。它解决的是多源输入在进入后续流程前缺乏统一、可校验清单的问题。
主要能力
- 读取 GOAL.md 以及已有的 DECISIONS.md 记录,理解教程预期使用哪些类型的来源。
- 当 sources/manifest.yml 不存在时,生成一个最小示例脚手架。
- 校验每个来源是否具备以下字段:source_id、kind、locator、label。
- 对 kind 为 video 的来源,优先要求提供 transcript_locator,除非平台本身暴露公开字幕。
- 拒绝仅含占位符或示例的清单。
- 仅当至少存在一个真实来源时才返回成功。
支持的来源类型
webpage、pdf、markdown、repo、docs_site、video。
对于 video:
- 首选:添加 transcript_locator。
- Bilibili 在公开字幕可用时可能成功。
- YouTube 目前应与 transcript_locator 搭配使用。
使用方式
快速开始:
uv run python .codex/skills/source-manifest/scripts/run.py --workspace <workspace>
全部选项:
- --workspace <dir>(必填)
- --unit-id <U###>
- --inputs <semicolon-separated>
- --outputs <semicolon-separated>
- --checkpoint <C#>
示例(生成脚手架或校验清单):
uv run python .codex/skills/source-manifest/scripts/run.py --workspace <workspace>
触发与路由
触发词:source manifest、sources list、tutorial sources、url list、资料清单、教程来源。
适用场景:source-tutorial 的 C1,需要把多源输入落成统一的 sources/manifest.yml,并在内容不完整时显式阻塞。
跳过条件:已经有完整且经过确认的 sources/manifest.yml。
网络:无。
护栏:不要伪造来源;manifest 不完整时应返回 BLOCKED,而不是假装完成。
输入与输出
输入:GOAL.md、DECISIONS.md。
输出:sources/manifest.yml。
故障排查
问题:脚手架生成后该单元持续阻塞。
原因:清单中仍包含示例占位符。
修复:用真实 URL 或本地文件路径替换脚手架条目,然后重新运行该单元。