每个任务自有其框架:Claude Code 动态工作流入门
公众号名称:AI 方寸山
作者名称:九皋山人
发布时间:2026-06-03 09:35
原文: A harness for every task: dynamic workflows in Claude Code[1]
作者: @trq212
翻译日期: 2026-06-03

上周,我们在 Claude Code 中发布了动态工作流[2]功能。Claude 现在可以即时编写自己的框架[3],为手头任务量身定做。
虽然 Claude Code 的默认框架是为编码任务设计的,但它在许多其他类型的任务中同样有用——因为事实表明,大量任务与编码任务有相似之处。不过,在某些特定类型的任务上,我们不得不基于 Claude Code 构建定制框架才能达到最佳表现,比如深度研究[4]、安全分析[5]、代理团队[6]和代码审查[7]。
动态工作流允许你动态创建框架,让 Claude 能在 Claude Code 内部原生地解决上述所有问题,甚至更多。你还可以将工作流分享给他人复用。
在本文中,我将分享我使用动态工作流的初步经验和心得,帮你充分释放它的潜力。
不过需要提醒的是,最佳实践仍在演进中!动态工作流通常会消耗更多 token,因此请仔细斟酌使用时机和方式。注:本文也同步发布于 Claude 官方博客[8]。
示例提示词
在深入技术细节之前,我想先展示一些示例提示词,帮你打开思路:
- “这个测试大概每 50 次触发一次失败。搭建一个工作流来复现它、形成假设并在工作树中对抗性验证,不找到根因不罢休。/goal”
- “用一个工作流遍历我最近的 50 个会话,挖掘我反复做过的修正,把那些反复出现的模式整理成 CLAUDE.md 规则”
- “用一个工作流深挖 Slack 里过去六个月的 #incidents 频道,找出那些反复出现却没人提工单的根因”
- “拿着我的商业计划书,用一个工作流让不同的代理分别以投资人、客户和竞争对手的视角来无情批判它”
- “这里有个文件夹装着 80 份简历,用工作流为后端岗位排序,并逐一复核前十名。用 AskUserQuestion 工具采访我以建立评分标准”
- “我需要给这个 CLI 工具起个名字。用工作流头脑风暴一批候选,然后打一场锦标赛来决出前三名”
- “用工作流把我们的 User 模型全局重命名为 Account”
- “遍历我的博客草稿,用工作流对照代码仓库逐一核实每一条技术声明,我不想发布任何错误内容”
动态工作流的工作原理
动态工作流执行一个 JavaScript 文件,该文件包含几个特殊函数,用于生成和协调子代理[9]:

动态工作流还包含 JSON、Math、Array 等标准 JavaScript 函数,用于处理数据。
一个特别值得了解的要点是,动态工作流可以决定代理使用哪个模型,以及子代理是否在自己的工作树中运行——这让 Claude 能够按需选择智能级别和隔离程度。
如果工作流因用户操作或终端退出等意外中断,恢复会话后工作流能够从断点继续执行。
为什么需要动态工作流
当你使用 Claude Code 默认框架执行任务时,它需要在同一个上下文窗口中同时完成规划和执行。对于许多编码任务来说,这种方式非常高效,但在长时间运行、高度并行和/或结构化对抗的任务中,有时会掉链子。
这是因为 Claude 在单一上下文窗口中处理复杂任务的时间越长,就越容易陷入以下几种典型的失效模式:
- 代理惰性:指 Claude 在尚未完成一项特别复杂的多步骤任务时就提前收工,做出部分进展就宣布大功告成——比如安全审查本该处理 50 项,结果只搞了 20 项就交差了。
- 自我偏好偏差:指 Claude 倾向于偏爱自己产出的结果或发现,尤其是在被要求对照标准进行验证或评判时。
- 目标漂移:指在多轮对话中,尤其是在上下文压缩之后,对原始目标的保真度逐渐丧失。每一次摘要都是有损的,边界条件需求或”禁止 X”之类的约束细节很容易在压缩中丢失。
创建工作流可以对抗这些问题,因为它能将任务编排给多个独立的 Claude,每个 Claude 拥有各自的上下文窗口和聚焦、隔离的目标。
动态工作流 vs 静态工作流
你可能已经使用 Claude Agent SDK 或 claude -p 创建过静态工作流,通过它们来协调多个 Claude Code 实例协同工作。
但因为静态工作流需要覆盖所有边缘情况,它们通常更加通用化。有了 Claude Opus 4.8[10] 和动态工作流,Claude 现在足够聪明,能为你量身打造一个定制框架。

动态工作流的实用模式
你可以直接要求 Claude 创建动态工作流来开始使用,也可以通过触发词 “ultracode” 来确保 Claude Code 创建的是一个工作流。
但建立对动态工作流运作方式的思维模型,将帮助你理解何时使用它们,以及如何通过提示词来引导 Claude。
Claude 在构建工作流时,通常会组合使用以下几种常见模式:

分类-路由
使用分类代理判断任务类型,然后根据任务类型路由到不同的代理或行为。或者,在流程结束时使用分类器来确定输出。
扇出-合成
将任务拆分为多个较小的步骤,对每个步骤运行一个代理,然后合成这些结果。当步骤数量庞大,或每个步骤需要独立的干净上下文窗口以避免相互干扰或交叉污染时,这种模式特别有用。合成步骤是一个屏障——它等待所有扇出代理完成,然后将它们的结构化输出合并为一个结果。
对抗性验证
为每个生成的代理,再启动一个独立的代理来对照标准或准则对抗性地验证其输出。
生成-筛选
围绕某个主题生成若干想法,然后对照标准或通过验证来筛选,去重后只返回那些质量最高、经过检验的想法。
锦标赛
不让代理分工协作,而是让它们竞争。生成 N 个代理,每个代理用不同的方法尝试同样的任务。然后由提示词或模型两两评判它们的结果,通过裁判代理逐轮淘汰,直至决出胜者。
循环至完成
对于工作量未知的任务,循环生成代理直到满足停止条件(无新发现、或日志中不再有错误),而不是固定轮次。
使用场景
发挥创意来思考何时以及如何让 Claude Code 创建动态工作流。我发现工作流在非技术类工作中有时甚至更有用。

迁移与重构
Bun[11] 使用工作流从 Zig 重写为 Rust。你可以在 Jarred 的 X 帖子[12]中了解详情。
关键做法是将任务分解为一系列需要操作的步骤——比如调用点、失败的测试、模块等。为每个修复启动一个子代理在工作树中进行修改,再用另一个代理进行对抗性评审,最后合入。可以考虑告诉代理不要使用资源密集型的命令,以便最大限度地并行化,同时避免机器资源耗尽。
深度研究
我们在 Claude Code 中发布了一个使用动态工作流的深度研究技能(/deep-research)。具体来说,它会扇出网页搜索、抓取来源、对抗性验证其声明,并合成一份带有引用的报告。
但这类研究的范围远超网页搜索。比如,让 Claude 根据 Slack 中的上下文编制一份状态报告,或者深入探索代码仓库来研究某个功能的实现原理。
深度验证

另一方面,如果你有一份报告,想逐一核实其中引用的每条事实声明,你可以生成一个工作流:用一个代理识别所有事实声明,然后为每一条声明启动一个子代理进行详细核查。你还可以再加一个验证代理来审查来源子代理,确保其使用的来源质量过关。
排序

你可能有一份列表,想按某种 Claude Code 擅长的定性指标来排序——比如按 Bug 严重程度对工单排序。但如果你试图在一条提示词中排 1000 行以上的数据,质量会急剧下降,而且上下文窗口也装不下。更好的做法是:打一场锦标赛,用两两比较代理组成的流水线(比较判断比绝对打分更可靠),或者并行分桶排序再合并。每次比较由独立代理完成,确定性循环维护比赛对阵表,上下文窗口只保留当前排序。
记忆与规则遵从

如果你有一套特定的规则,即使写进了 CLAUDE.md 中,Claude 仍然会遗漏或难以遵守,那就创建一个工作流,列出必须由验证代理逐一检查的规则清单——每条规则对应一个验证代理。再创建一个持怀疑态度的审查代理,复核每条规则以确保其合理,这有助于避免过多的误报。
反过来也行得通:挖掘你最近的会话和代码审查评论中反复出现的修正,用并行代理进行聚类,对抗性验证每个候选规则(这条规则是否能避免一次真实的错误?),然后将存活下来的规则提炼回 CLAUDE.md[13]。
根因调查
当你能提出多个独立假设并逐一验证时,调试效果最好。但如果只用一个上下文窗口,Claude 可能会陷入自我偏好偏差。工作流可以从结构上杜绝这个问题:启动多个代理,各自从互不重叠的证据中生成假设。例如,分别分析日志、文件和数据的独立代理。每个假设再交由一组验证者和反驳者组成的评审团来检验。
这不仅仅适用于代码。工作流可用于销售分析(为什么三月份销售额下降了?)、数据工程(为什么这条数据管道失败了?)或任何复盘类工作。
规模化分诊

每个团队都有支持队列、Bug 报告或其他人力无法完全处理的积压工作。
分类工作流对每个条目进行归类和去重(对照已跟踪事项),然后采取行动。可以是尝试修复,也可以是升级给人工处理。
分类工作流的一个实用模式是隔离。即禁止读取不受信公共内容的代理执行高权限操作,这些操作交由负责执行信息处理的代理来完成。
将分类工作流与 /loop 配合使用,让 Claude 持续运行这一流程。
探索与品味
在探索解决方案的不同思路时,工作流同样有用——尤其是那些偏品味判断的任务,比如设计或命名,而且能从评分标准中受益。
尝试让 Claude 探索一批方案,给评审代理一个关于”好方案长什么样”的评分标准。当评审代理认为方案已达到标准时,任务即告完成。方案也可以基于评分标准通过锦标赛来排序或筛选。
评估
你可以为特定任务运行轻量级评估:在工作树中启动独立代理,再启动比较代理来对照标准比较和评分特定输出。例如,评估并迭代优化你创建的某个技能。
模型与智能路由
创建一个针对你的任务场景调优的分类代理,来决定使用哪个模型。当任务涉及大量工具调用,且在执行前做研究就能确定最佳模型时,这一点特别有用。
例如,“解释 auth 模块的工作原理”这个任务的最佳模型取决于 auth 模块有多少文件以及代码仓库的形态。分类代理可以执行这项研究,然后根据预期任务复杂度将任务路由给 Sonnet 或 Opus。
何时不该使用动态工作流
工作流是一项新功能。虽然它在许多场景中能带来超乎寻常的效果,但并非每个任务都需要,而且可能会消耗显著更多的 token。
最好是用创意的方式使用工作流,将 Claude Code 推向此前未曾触及的领域。对于常规编码任务,不妨问自己:真的需要更多算力吗?比如,大多数传统编码任务并不需要一个五人评审团。
动态工作流构建技巧
提示词
对动态工作流使用详细的提示词,并采用上文提到的具体技巧,能产生最佳效果。
工作流不只是大任务的专属。你可以提示模型使用”快速工作流”,例如对一个假设进行快速对抗性复核。
配合 /goal 和 /loop 使用
对于可重复执行的工作流——比如分类、研究或验证——配合 /loop 定时运行,配合 /goal 设定硬性完成要求。
Token 用量预算
你可以为动态工作流设置明确的 token 用量预算,限制任务消耗的 token 数量。提示时加入类似”使用 10k token”的预算即可设置上限。
保存和分享动态工作流
你可以在工作流菜单中按”s”键保存工作流。工作流可以签入 ~/.claude/workflows,或通过技能进行分发。

要通过技能分享工作流,将 JavaScript 工作流文件放入技能文件夹,并在 SKILL.MD[14] 中引用它们。为了获得更大的灵活性,你可以提示 Claude 将技能中的工作流视为模板而非需要逐字执行的脚本。

一个全新的世界
工作流是扩展 Claude Code 的一种强大新方式。我鼓励你将此视为一个起点,关于如何最佳使用它们,还有很多值得探索的空间。期待看到你的发现。
Thariq Shihipar 和 Sid Bidasaria(@sidbid[15])是 Anthropic 的技术人员,专注于 Claude Code 的开发工作。
- https://x.com/i/status/2061907337154367865 [back]
- https://code.claude.com/docs/en/workflows [back]
- https://code.claude.com/docs/en/glossary#agentic-harness [back]
- https://support.claude.com/en/articles/11088861-using-research-on-claude [back]
- https://support.claude.com/en/articles/11932705-automated-security-reviews-in-claude-code [back]
- https://code.claude.com/docs/en/agent-teams [back]
- https://code.claude.com/docs/en/code-review [back]
- https://claude.com/blog/a-harness-for-every-task-dynamic-workflows-in-claude-code [back]
- https://code.claude.com/docs/en/sub-agents [back]
- https://www.anthropic.com/news/claude-opus-4-8 [back]
- https://bun.com/ [back]
- https://x.com/jarredsumner/status/2060050578026189172 [back]
- http://claude.md/ [back]
- http://skill.md/ [back]
- https://x.com/sidbid [back]
内容效果不满意?点此反馈