Claude Code Tools 研究系列(九)—— Agent:把任务委派给另一个 Claude

💡 原文中文,约13800字,阅读约需33分钟。
📝

内容提要

Agent工具是Claude Code中用于派生新Claude实例执行子任务的元工具,通过独立context实现任务委派,解决单个Claude上下文有限的问题。它支持并行执行、专业化分工和结果聚焦,核心价值在于context隔离而非省力。使用时需注意不外包理解、信任但核对,并编写详细prompt。该工具使Claude Code从单一助手升级为可自我组织的AI团队。

🔎

延伸解读

Agent 的核心价值:context 隔离而非省力

Agent 工具并非简单的任务外包,其本质是通过派生 subagent 实现 context 隔离。主 Claude 只接收最终报告,而 subagent 内部的搜索、读取等过程消耗的是独立 context 池。这种设计用墙钟时间和总 token 数换取主 context 空间,使 Claude 能处理超出单实例承载力的任务。理解这一点有助于避免误用——Agent 不是省力工具,而是信息压缩机制。

使用边界:何时该派 Agent,何时不该

文章明确区分了适用与不适用场景。跨文件调研、多轮试探性搜索、规模大易爆 context 的任务适合派 Agent;而已知目标的单次操作、需要用户交互、过程本身有价值或信息量小的任务则不应使用。核心判断标准是信息压缩比:若关键信息量远大于结论信息量,派 Agent 高效;反之则直接操作更优。

两条红线:不外包理解与信任但核对

Agent 工具描述中强调两条关键原则:一是“决不外包理解”,主 Claude 必须自己综合和决策,不能将分析推给 subagent;二是“信任但核对”,subagent 的报告是意图声明而非实际结果,尤其涉及写操作时需检查实际改动。这两条红线防止 Claude 沦为转发器,确保系统可控。

prompt 编写:像给新同事 briefing

subagent 没有主对话上下文,因此 prompt 需像给刚进门的同事 briefing:说明目标、已排除的路径、周边上下文,并明确输出长度。文章警告“短命令产生浅薄结果”,具体度直接决定输出质量。同时,subagent 的 cwd 会在 bash 调用间重置,必须使用绝对路径,这是避免相对路径失效的硬性要求。

Q&A

Claude Code 中的 Agent 工具是什么?它主要解决什么问题?

Agent 是 Claude Code 中用于派生新 Claude 实例(subagent)执行子任务的元工具。它通过独立 context 实现任务委派,主要解决单个 Claude context 有限、无法处理超大规模或需要多轮试探性搜索的任务。

Agent 工具与 Claude Code 中其他工具(如 Read、Grep)有何本质区别?

其他工具是 Claude 直接操作文件或执行命令,而 Agent 是让另一个 Claude 实例去使用这些工具,实现任务委派。Agent 是元工具,能创造新的 Claude 实例,实现 context 隔离、专业化分工和并行执行。

在什么场景下应该使用 Agent 工具?什么情况下不应该使用?

应该使用 Agent 的场景包括:跨文件调研、多轮试探性搜索、任务规模大到会爆 context、可并行的子任务、需要专业化 subagent。不应该使用的场景包括:已知目标的单次操作(如改一行代码)、需要用户交互的任务、过程本身有价值(如教学)、信息量小的任务。

Agent 工具中的 subagent_type 有哪些类型?各自有什么特点?

subagent_type 是运行时枚举,常见类型包括:claude(通用型,有所有工具)、Explore(快速只读搜索,只有 Read/Grep/Glob,不能改文件)、general-purpose(复杂研究、多步任务)、Plan(架构设计师,只做设计不做实现)、vercel:xxx(Vercel 生态特定领域)。

Agent 工具中 run_in_background 参数默认值是什么?为什么这样设计?

run_in_background 默认值为 true,即 Agent 默认在后台运行。这是因为 Agent 通常用于长任务,后台运行可以让主 Claude 继续处理其他事情,完成后自动通知。这与 Bash 默认前台运行形成对比,体现了不同工具的典型任务特性。

Agent 工具描述中提到的“Never delegate understanding”是什么意思?

这条红线要求主 Claude 不能把理解、综合和决策外包给 subagent。例如,不能写“基于你的发现修复 bug”这样的 prompt,而应该自己阅读 subagent 的报告,理解后做出决策。prompt 的具体性(包含文件路径、行号等)是理解程度的证据。

Agent 工具如何实现 context 隔离?它带来了什么好处?

Agent 派生 subagent 时,subagent 拥有全新的 context,不占用主 Claude 的 token。subagent 内部的搜索、读取、试错都在自己的 context 池中进行,只返回最终报告给主 Claude。好处是主 Claude 的 context 只保留结论,避免被大量中间信息挤爆,实现信息压缩。

Agent 工具中的 isolation 字段有什么作用?

isolation 字段可以设置为 "worktree",为 subagent 创建临时 git worktree,使其在隔离的副本上工作,避免污染主工作树。如果 subagent 没有修改任何文件,worktree 会自动清理。这允许 subagent 大胆尝试而不影响主分支。

🏷️

标签

➡️

继续阅读