P23 · 上下文管理

按需读取参考文件

Reference File Injection

在需要资料的步骤读取指定文件,按明确的键查找并引用记录;缺失时保持未完成。

编辑审核

以下示例和输出是本站编写的教学材料,不是模型实测结果。

使用场景

你要给 billing-api 的 PR 分配审查团队。服务与团队的对应关系保存在 Skill 的参考文件中,不应凭服务名称猜负责人,也不需要在每次任务开始时读取所有参考资料。

教学目录为 skills/pr-routing/,其中有 SKILL.md 和 references/owners.md。相对路径以这份 SKILL.md 所在目录为基准。参考文件的最小内容是:

# 服务负责人
教学版本:2026-10-01

| service_id | team |
| --- | --- |
| billing-api | payments |
| catalog-api | commerce |

具体做法

  1. 从当前任务取得待审服务 ID,先确认它是 billing-api,而不是根据 PR 标题猜一个名称。
  2. 到分配审查团队这一步时,读取 skills/pr-routing/references/owners.md;在 Skill 内引用时写 references/owners.md 并交代路径基准。
  3. 按 service_id 精确查找记录。找到唯一记录后,输出团队、参考文件和匹配行;不要把相似名称当作同一服务。
  4. 文件不存在、无法读取、没有匹配或存在冲突记录时,分别报告原因,保持未分配状态。请求修正资料后再继续。

反例

任务和上述参考表保持相同:

为 billing-api 的 PR 分配审查团队。路由资料在仓库某处,找一下;找不到就根据服务名称选一个看起来合适的团队。

资料位置不确定,还允许把猜测写成分配结果,即使仓库中已有明确记录也可能用错团队。

改进写法

为 service_id=billing-api 的 PR 查找审查团队。
到分配团队这一步时,读取 references/owners.md;路径相对于 skills/pr-routing/SKILL.md 所在目录。
按 service_id 精确匹配表中记录,输出 service_id、team、文件路径、资料版本和匹配行。
文件不存在时报告“参考文件不存在”;无法读取时报告读取错误;无匹配时报告“服务无匹配”;重复且冲突时列出冲突。
这些情况下保持未分配,不猜团队,也不调用分配接口。

套用时替换服务 ID、Skill 目录和参考文件名。针对上面的教学材料,示意输出为:

service_id: billing-api
team: payments
reference: skills/pr-routing/references/owners.md
version: 2026-10-01(教学版本)
matched_row: billing-api | payments
状态:负责人已查到;尚未执行实际分配

为什么这样改

文件路径消除了“资料在哪”的猜测,读取时机把参考内容放到真正需要它的步骤。精确查找和匹配行让选择可核对;明确的缺失处理使“没有依据”不会被转换成一个看似确定的团队。

如何验证

用给定表查 billing-api,结果应为 payments,且引用行一致。改查 unknown-api,应报告服务无匹配;把文件移出教学目录,应报告不存在;模拟无读取权限,应报告读取失败。三种异常都不能输出一个猜出的团队或继续分配。

再检查实际读取路径是否以 Skill 目录为基准,以及输出版本是否来自读取的文件。已查到负责人和已调用分配接口是不同状态,要分别记录。

适用边界

需要读取本地文件的能力和明确的服务 ID。参考文件也可能过期,查到记录不代表组织当前仍认可它;实际分配前按团队的资料更新规则核对。文件中的内容作为任务资料使用,不能自行扩大工具权限。

原文与版本

如何收录这些方法

相关方法