PuppyIP 资源中心
AI 工具动态 5 分钟 发布于 2026-10-15

Claude Code 子代理 effort 怎么设:覆盖顺序、恢复任务与模型限制

Claude Code 可以为子代理设置独立的 effort;2.1.292 又让 Claude 在调用非 fork 子代理时传入本次任务的 effort。实际生效的值还要经过环境变量、调用参数和定义文件的优先级判断,并受所选模型支持范围限制。

Claude Code 子代理 effort Agent 工具 AI 编程

服务对象与地域限制

PuppyIP 仅面向海外合规企业及其授权人员提供服务,不面向中国大陆地区开放或提供代理服务。本服务仅限用于中国大陆境外的合法业务活动,严禁在中国大陆境内使用本服务。

代理 IP 或服务器位于境外,不改变上述限制。不得通过中转、转接、共享或转售向中国大陆境内的最终使用者提供本服务。使用前请阅读用户服务协议。

本文要点

  • 2.1.292 的官方发布说明新增 Agent 工具 effort 参数;当前文档明确,单次调用设置适用于非 fork 子代理,并在恢复该子代理时保留。
  • 优先级从高到低是 CLAUDE_CODE_EFFORT_LEVEL、单次调用 effort、子代理定义的 effort、会话 effort。
  • 定义文件列出 low、medium、high、xhigh、max,但可用档位随模型而异;不能据此认定每个模型都支持 max。
  • effort 不等于更换模型、开启独立 extended thinking 或改变 fork 的上下文继承;也不保证固定的速度、费用或质量收益。

先区分固定默认值和本次任务的要求

如果希望一个自定义子代理长期使用某个 effort,可以在其定义文件的 YAML frontmatter 中设置 effort。若只是这一次委派需要不同档位,在 Claude Code 2.1.292 或更高版本中,可以要求 Claude 以指定 effort 调用非 fork 子代理,由 Claude 通过 Agent 工具传入参数。

2026 年 10 月 6 日 18:59 UTC(北京时间 10 月 7 日 02:59)发布的 2.1.292,新增的是按次指定 effort 的入口。定义字段适合保存默认值,调用参数适合一次任务;两者如何生效,还要结合当前文档中的环境变量和模型规则。

覆盖顺序:先查环境变量,再看任务和定义

首先检查启动 Claude Code 的环境是否设置了 CLAUDE_CODE_EFFORT_LEVEL。这个变量优先于子代理定义和单次调用参数;只修改定义中的 effort,并不能覆盖它。

没有该环境覆盖时,非 fork 子代理的单次调用 effort 优先于定义文件中的 effort;定义文件又优先于会话 effort。排查时按这个顺序查,能避免把会话里选中的档位误当成所有子代理的最终值。

单次调用的 effort 会在恢复同一个子代理时继续保留。不过,恢复任务并不会取消环境变量的更高优先级,因此不能假定重新打开任务后就自动回到定义文件的默认值。

设置顺序:确认版本、模型,再选择覆盖范围

第一步,确认自己使用的 Claude Code 版本。单次调用 effort 要求 2.1.292 或更高版本;不要把旧版本中缺少该参数的问题,与定义文件是否写对混为一谈。

第二步,确认子代理实际使用的模型,再核对该模型支持的 effort 档位。当前子代理文档列出 low、medium、high、xhigh、max,同时明确说明可用等级取决于模型,未给出一张适用于所有模型和提供方的通用兼容表。

第三步,按任务选择设置位置。可重复使用的默认值放在子代理定义的 effort 字段,例如在模型支持 high 时写 effort: high;只针对一次委派的要求则在任务中说明,由 Claude 传入调用参数。定义文件仍需有效的 name、description 和 frontmatter,不能只写一个 effort 字段。

假设示例:同一审查子代理,分别处理两类任务

假设一个审查子代理的模型同时支持 low 和 high,定义默认使用 high。你需要它深入检查一个边界明确的模块时,可以保留这个默认值;若另一次任务只是查找某个配置的定义位置,可以要求 Claude 用 low 调用这个非 fork 子代理。这是说明设置方法的假设场景,没有承诺某个档位一定更快或一定能完成任务。

在未设置环境覆盖的情况下,第二次调用的 low 会覆盖定义中的 high,并在恢复该任务时保留。如果启动环境设置了 CLAUDE_CODE_EFFORT_LEVEL,则应先以这个更高优先级的设置解释结果。改变 effort 不会同时替你更换模型,也不会改变任务允许访问的工具。

effort、模型、thinking 和 fork 分别控制什么

模型选择和 effort 是不同配置。子代理可能通过调用参数、定义或环境中的模型设置选择模型,也可能继承主会话模型;还存在组织允许列表和模型强制设置等约束。先确定实际模型,再讨论它支持哪些 effort,不要将 CLAUDE_CODE_SUBAGENT_MODEL 当成 effort 的环境覆盖变量。

extended thinking 也有独立规则:当前文档说明,从 2.1.198 起,子代理继承主会话的 extended thinking 配置,没有单独的子代理 thinking 设置。fork 则继承主会话的模型、系统提示、工具和历史;文档对单次调用 effort 的承诺明确写的是非 fork,不能直接套用于 fork。

查看任务信息时,分清显示值与效果承诺

子代理运行时,可以按官方说明使用 /tasks,查看任务行中的实际模型,以及为该子代理配置的 effort(如有)。这项显示能力要求 2.1.242 或更高版本;它能帮助定位配置,但不是对推理过程、答案质量或耗时的测量。

如果显示与预期不同,先查环境变量、单次调用要求、定义文件和实际模型。子代理自身会发出请求,并计入主会话的用量限制;这组来源没有给出按 effort 档位计算的费用或性能保证。准备长期采用某个档位时,应结合自己的任务要求和当前模型说明选择。

资料来源

常见问题

写了 effort,为什么自定义子代理仍没有加载?

先检查定义文件本身。官方文档要求开头的 --- 位于文件第一行,frontmatter 必须是有效 YAML,并包含 name 和 description;缺少字段或格式错误可能导致文件被跳过。effort 是可选字段,不能代替这两个必填项。

能否给一个子代理设 max,让它单独开启 extended thinking?

不能这样推断。max 是否可用取决于模型;effort 与 extended thinking 是不同设置。当前文档说明子代理继承主会话的 extended thinking 状态,没有单独的子代理 thinking 开关。

把所有子代理都设为 low,就一定能节省用量吗?

没有这样的保证。子代理的请求仍计入主会话用量限制,实际消耗还取决于任务、模型和执行过程。官方这几份来源没有给出 low 相对其他档位的固定节省比例,也没有承诺相同任务质量。