DeepDojo.AI发布 2026-11-12English

子代理的结论能不能信?五项核对清单

Claude CodeAI 编程

你让一个只读子代理去查“用户退出后旧 refresh token 仍能换取新 token”的问题。几分钟后它交回一段摘要:退出只清了 cookie,没有写吊销记录,所以旧 token 仍然有效;还附上了 session/refresh.ts:41 和一段复现步骤。看起来结论已经有了,直接按它的建议改就行。

先别急着改。这份摘要可能完全正确,也可能只说对了一半:复现步骤也许从没真正跑过,另一个子代理也许认为原因在缓存。子代理的结论靠不靠得住,取决于两头:

  • 派出去时:它拿到的背景够不够。普通子代理看不到主会话,你没交代的目录、复现条件和限制,它只能猜;
  • 带回来时:你有没有核对证据。摘要越短越干净,越容易让人忘了问“这句话的依据在哪”。

所以委派要写成自包含的消息,交代目标、范围、已知事实、限制和交付格式;结果回来后,逐条核对文件、行号、日志和测试,把已验证的结论和待验证的推测分开。下面先讲交接时它能看到什么,再讲怎样写委派、怎样核对返回结果。

01 子代理能看到什么

普通子任务看不到主会话聊天,委派消息需要自包含。Claude Code 的子代理文档说得很明确:每个子代理都从一个全新、隔离的上下文开始,看不到你的对话历史、已经调用过的 Skill,也看不到 Claude 已经读过的文件;Claude 写一段总结任务的委派消息,子代理就从那里开始。

几种调用方式能看到的背景不同:

方式能看到的背景
普通子代理只有委派消息,看不到主会话历史
会话 fork继承到目前为止的整段对话,工具调用仍留在它自己那边,只把最终结果带回
Skill 的 context: fork以 Skill 内容作为提示启动新子代理,看不到你的对话历史
内置 Explore、Plan为保持轻量,启动时不加载 CLAUDE.md 和 Git 状态

最后两行最容易出错。Skills 文档对 context: fork 的说明是:子代理看不到你的对话历史,Skill 的指令必须能独立成立。Explore、Plan 跳过项目规则,需要遵守的限制要在委派时再说一遍,例如跳过 vendor/;需要项目规则,就明确交接,或选能加载它们的自定义代理、general-purpose。

02 留在主会话还是交出去

默认 Skill 在当前会话运行,能够沿用已有讨论和工作状态,适合正在进行的修改与需要多轮协作的任务。下面的设置会把任务交给独立子代理:

context: fork
agent: general-purpose

fork 把搜索、日志等中间过程留在独立上下文,新执行者也就看不到主会话历史。把目标、输入、范围、限制、结果和完成条件写进 SKILL.md。

仍用只读审查为例:主会话若已决定只检查认证改动,fork 的输入就应给出这个范围和基线。能否完整交接这些信息,也是选择独立上下文的成本。

需要沿用当前讨论 → 留主会话
输入和边界完整,中间输出很多 → 考虑 fork

这个任务到底值不值得委派,判断方法见Claude Code 什么时候该用子代理。

03 一份委派消息要说清五件事

一份可执行的委派至少说明:

  • 目标:最终要回答什么问题。
  • 范围:允许看哪些目录、提交或日志。
  • 已知事实:错误信息、复现条件、相关决策。
  • 限制:只读还是可写,哪些内容不要碰。
  • 交付:返回摘要、文件位置、证据和未决问题。

例如,与其说:

让子代理看看认证问题。

不如说:

使用只读子代理检查 `src/auth/` 和 `src/api/session/` 中的会话失效问题。
现象是用户退出后旧 refresh token 仍能换取 access token。
请追踪调用链,报告根因、涉及文件和可复现路径,不要修改代码,
最终结果控制在 800 字以内。

目录和复现条件给子代理指明了调查方向,它就少花时间猜背景。约定结果的长度和结构,也能把搜索日志留在子任务里,只带回做决定需要的材料。不过,收到短摘要后,还得看发现来自哪里。篇幅短了,并不代表已经有当前项目的证据。

小黑把边界清楚的独立任务送入不同工作舱并只收回精简证据

04 返回结果要逐条核对

摘要中的结论、行号和复现步骤都需要核对。主会话要区分已运行的验证与待验证的推测,并检查:

  • 结论是否附带真实文件、行号、日志或测试证据。
  • 子代理是否超出约定范围。
  • 修改是否基于正确分支和最新文件。
  • 多个代理的结论是否互相矛盾。
  • 关键测试是否由主会话或独立验证重新确认。

回到开头那份摘要。看起来已经有结论了,主会话仍要拆开核对:

  1. 打开对应代码,确认它是否处于相关调用路径,以及退出行为是否确实遗漏了吊销处理。
  2. 检查复现步骤是否有实际运行结果。只有描述时,标记为未验证,再执行复现。
  3. 若另一个代理认为原因是缓存,比较两者的现象、调用路径与复现条件。吊销遗漏和缓存问题可能同时存在,不能只因一条结论带有行号就排除另一条。

有证据支持的结论才能确认,其余保留为待核查判断。

05 继续追问还是另开上下文

核对完发现还有疑点,要不要接着问同一个子代理?子代理文档说明,内置 Explore、Plan 是一次性的,不返回可恢复的代理 ID;general-purpose、自定义代理可以在同一会话里恢复,继续使用原来的完整历史。继续追同一问题时有用;换问题就另开上下文。

同一种调查反复出现、每次都要重说角色和格式时,可以把这些固定要求写进一个自定义代理,做法见Claude Code 自定义只读审查子代理。

派出去时把五件事写清,带回来时逐条对证据。开头那句“退出只清了 cookie”,在你打开 session/refresh.ts、跑过一次复现之后,才从一条线索变成可以动手修改的结论。