GitHub fetch
一次 fetch 运行是每个 GitHub 任务中相同的流程:解析 → 预判 → 获取 或 检出。
步骤
1. 解析
从 URL 或用户文本中解析 owner/repo(如果存在,还包括 issue/PR 编号)。
完成标准: owner/repo 已识别(或已要求用户澄清)。
2. 预判
在 检出 之前,决定该任务是否需要读取多个文件或进行全仓库搜索(Grep/Glob)?
- 否 → 获取 分支(步骤 3)。
- 是 → 检出 分支(步骤 4)。
- 任务中途扩展 → 在第二次访问前重新预判;根据需要切换分支。
完成标准: 已选择并记录分支(获取 vs 检出)。
3. 获取分支
根据 URL 类型遵循 GH-COMMANDS.md。单个文件:gh api repos/owner/repo/contents/path?ref=branch。
完成标准: 通过 gh 返回请求的内容;未启动 检出。
4. 检出分支
遵循 CHECKOUT.md —— 询问本地路径,验证远端,仅在批准后克隆。
完成标准: 已验证使用的本地路径,或在已知绝对路径下已批准浅克隆;对该项目树执行 Read/Grep/Glob 操作。
访问方式
通过 gh(获取分支)或已验证的 检出 路径访问 GitHub。如果 gh 缺失或未认证,则回退到 WebFetch。
完成条件: 每次访问都通过了 预判 关卡,使用了 获取 或 检出;仅在 gh 真的失败时才使用 WebFetch。