高可用架构

从 Harness 到动态工作流:Claude Code 多智能体任务编排的新范式

导读:就在今天,Anthropic Claude Code 团队成员 Thariq 介绍了 Claude Code 的 Dynamic Workflows 功能。他认为,这是 Claude Code 继 skills 和 subagents 之后的重要能力升级,使 Claude 能够围绕具体任务动态生成定制化多智能体工作流,也就是专属 harness。

据介绍,Workflows 不只面向编码场景,也适用于商业计划分析、简历筛选、根因调查、支持队列整理等非技术任务。通过 fan-out、adversarial verification 等模式,Claude 可以将复杂任务拆分给多个独立智能体处理,从而降低 agent 懒惰、目标漂移和自我偏好偏差等问题。

作者 Thariq(@trq212)是 Anthropic Claude Code 团队成员,曾参与 YC W20 项目,任职 southpkcommons 和 medialab。他专注 AI 工具开发,尤其推动 Claude Code Workflow 多 agent 工作流升级,助力非技术任务自动化。

Image
Image

上周,我们在 Claude Code 中发布了动态工作流[1]。Claude 现在可以即时编写自己的执行框架[2],为手头任务量身定制。

默认的 Claude Code 执行框架是为写代码而构建的,但它对许多其他任务也很有用,因为事实证明,很多任务都很像编码任务。不过,有些任务类别要达到最佳表现,我们过去必须在 Claude Code 之上构建自定义执行框架,例如 Research[3]、安全分析[4]、智能体团队[5],或 Code Review[6]。

工作流让你可以动态创建执行框架,使 Claude 能在 Claude Code 内部更原生地解决这些问题,以及更多类似问题。你也可以与他人分享并复用这些工作流。

本文会介绍我早期使用工作流的体验和经验,帮助你充分利用它。

不过,最佳实践仍在发展中。动态工作流通常会使用更多 token,所以要仔细想清楚什么时候用、怎么用。说明:这篇文章也发布在 Claude Blog[7]。

示例提示词

在深入技术细节之前,我想先用一些示例提示词帮你想象工作流的可能性:

  • “这个测试大概 50 次运行会失败 1 次。建立一个工作流来复现它,形成理论,并在 worktree 中对这些理论做对抗性测试,/goal 不要停,直到有一个理论成立。”
  • “用一个工作流,检查我最近 50 个 session,挖掘我反复做出的纠正,把那些反复出现的内容变成 CLAUDE.md 规则。”
  • “用一个工作流,翻阅过去六个月 Slack 里 #incidents[8] 的内容,找出反复出现但没人建 ticket 的根因。”
  • “拿我的商业计划跑一个工作流,让不同智能体分别从投资人、客户、竞争对手的视角拆解它。”
  • “这里有一个包含 80 份简历的文件夹,用一个工作流为后端岗位排序,并复核前十名。用 AskUserQuestion 工具问我问题,形成评分标准。”
  • “我需要给这个 CLI 工具起名。用一个工作流头脑风暴一批选项,再跑一场锦标赛选出前 3 个。”
  • “用一个工作流,把我们的 User model 在所有地方都重命名为 Account。”
  • “检查我的博客草稿,用一个工作流对照代码库验证每个技术主张。我不想发布任何错误内容。”

动态工作流如何运作

动态工作流会执行一个 JavaScript 文件,其中包含一些特殊函数,用来生成和协调子智能体[9]:

Image
Image

动态工作流也包含标准 JavaScript 函数,例如 JSON、Math 和 Array,用来辅助处理数据。

值得留意的是,动态工作流还可以决定智能体用哪个模型,以及子智能体是否在自己的 worktree 中运行,让 Claude 自行选择所需的智能水平和隔离程度。

如果工作流被中断,例如用户操作或退出终端,恢复 session 时,工作流可以从中断处继续。

为什么需要动态工作流

当你让默认 Claude Code 执行框架完成一个任务时,它需要在同一个上下文窗口里同时规划和执行。对很多编码任务来说,这非常有效,但在长期运行、大规模并行,或者高度结构化的对抗性任务中,它有时会失效。

原因是,Claude 在单个上下文窗口里处理复杂任务的时间越长,就越容易受到几类特定失败模式影响:

  • 智能体懒惰,指 Claude 在一个特别复杂的多部分任务尚未完成时提前停下,并在只取得部分进展后宣称任务完成。例如,在安全审查中只处理了 50 个项目里的 20 个。
  • 自我偏好偏差,指 Claude 倾向于偏爱自己的结果或发现,尤其是在被要求根据评分标准验证或评判这些结果时。
  • 目标漂移,指经过许多轮对话后,尤其是在上下文压缩之后,Claude 对原始目标的忠实度逐渐下降。每一次压缩都会丢失信息,边界条件要求或”不要做 X”这类约束可能会丢了。

创建工作流有助于对抗这些问题,因为它可以编排多个独立 Claude,让它们拥有各自的上下文窗口,以及聚焦、隔离的目标。

动态工作流与静态工作流

你以前可能用 Claude Agent SDK 或 claude -p 创建过静态工作流,来协调多个 Claude Code 实例。

但静态工作流需要覆盖所有边界情况,因此通常更通用。借助 Claude Opus 4.8[10] 和动态工作流,Claude 现在已经足够智能,可以为你的具体用例编写量身定制的执行框架。

Image
Image

使用动态工作流时有用的模式

你可以直接要求 Claude 创建一个工作流,也可以使用触发词 “ultracode”,确保 Claude Code 创建工作流。

不过,建立动态工作流如何运作的心智模型,会帮助你理解何时该使用它们,以及如何通过提示词引导 Claude。

Claude 在构建工作流时,可能会使用并组合几种常见模式:

Image
Image

分类再行动

使用一个分类器智能体判断任务类型,然后根据任务路由到不同智能体或不同处理方式。也可以在最后使用分类器来决定输出。

扇出并综合

把任务拆成许多更小的步骤,为每一步运行一个智能体,然后综合这些结果。当存在大量小步骤,或者每一步都受益于自己的干净上下文窗口,避免互相干扰或交叉污染时,这种模式尤其有用。综合步骤是一个屏障,它会等待所有扇出的智能体完成,然后把它们的结构化输出合并成一个结果。

对抗性验证

对每个生成的智能体,再运行一个独立生成的智能体,根据评分标准对它的输出做对抗性验证。

生成并过滤

围绕某个主题生成一批想法,然后根据评分标准或验证结果过滤,去重,并只返回质量最高、经过测试的想法。

锦标赛

让智能体竞争同一个任务,而非拆分工作。生成 N 个智能体,让它们用不同方法尝试同一任务。然后由提示词或模型通过评审智能体进行成对评判,直到选出胜者。

循环直到完成

对于工作量未知的任务,循环生成智能体,直到满足停止条件,例如没有新的发现,或日志里不再有错误。不要使用固定轮数。

使用场景

不妨放开思路,想想什么时候、用什么方式让 Claude Code 创建动态工作流。我发现,工作流有时对非技术工作甚至更有用。

Image
Image

迁移与重构

Bun[11] 借助工作流从 Zig 重写成了 Rust。你可以在 Jarred 的 X thread[12] 中阅读更多细节。

关键是把任务拆成一系列需要处理的步骤,例如 callsite、失败测试、模块等。为每个修复在 worktree 中派生一个子智能体,让它完成修复,再让另一个智能体做对抗性审查,然后合并。可以考虑告诉智能体不要使用资源密集型命令,这样你就能最大化并行度,同时避免耗尽机器资源。

深度研究

我们在 Claude Code 中发布了一个使用动态工作流的深度研究 skill(/deep-research)。具体来说,它会扇出 web 搜索,抓取来源,对主张做对抗性验证,并综合成一份带引用的报告。

但你可以把这类研究用于 web 搜索之外的场景。例如,让 Claude 从 Slack 上下文中汇总状态报告,或者通过深入探索代码库来研究某个功能如何工作。

深度验证

Image
Image

另一方面,如果你有一份报告,想检查并溯源其中引用的每一个事实性主张,可以生成一个工作流,让一个智能体识别所有事实性主张,然后为每个主张派生一个子智能体做详细核查。你还可以让验证智能体检查溯源子智能体,确保它使用的来源足够高质量。

排序

Image
Image

你可能有一份条目列表,想按某种定性指标排序,而你认为 Claude Code 擅长评估这种指标。例如:按 bug 严重程度排序支持 ticket。但如果你尝试在一个提示词里排序 1000 多行,质量会下降,而且上下文也装不下。更好的做法是运行锦标赛、由成对比较智能体组成的流水线(相对判断比绝对打分更可靠),或者先并行分桶排序,再合并。每次比较都是自己的智能体,因此确定性的循环负责维护赛程,只有当前运行顺序留在上下文里。

记忆与规则遵守

Image
Image

如果你有一组特定规则,发现 Claude 即使写进 CLAUDE.md 也经常漏掉或难以遵守,可以创建一个工作流,列出必须由验证智能体检查的规则。每条规则对应一个验证智能体。创建一个怀疑者人格的子智能体来审查这些规则,确保它们合理一致,有助于避免太多误报。

反向也成立:挖掘你最近的 session 和代码审查评论,找出你反复做出的纠正,用并行智能体聚类它们,对每个候选规则做对抗性验证(这条规则是否真的能防止一次真实错误?),然后把幸存下来的规则提炼回 CLAUDE.md[13]。

根因调查

调试的最佳方式,是提出几个相互独立的假设并测试它们。但如果只使用一个上下文窗口,Claude 可能会遇到自我偏好偏差。工作流可以通过结构设计防止这一点:派生多个智能体,从互不重叠的证据中生成假设。例如,为日志、文件和数据分别创建智能体。随后,每个假设都可以交给一组验证者和反驳者审视。

这并不只适用于代码。工作流也可以用于销售(为什么三月销售额下降?)、数据工程(为什么这条 pipeline 失败?),或任何事后复盘练习。

大规模分诊

Image
Image

每个团队都有支持队列、bug 报告,或某种无法完全由人类处理的 backlog。

分诊工作流会对每个条目分类,与已经追踪的内容去重,并采取行动。这可能意味着尝试修复,也可能意味着升级给人类用户。

分诊工作流中一个有用模式是隔离区。读取不可信公开内容的智能体被禁止执行高权限操作,这些操作改由负责根据信息采取行动的智能体完成。

把分诊工作流和 /loop 搭配起来,可以让 Claude 持续执行这类任务。

探索与品味

当你要探索某个解决方案的不同路径时,工作流很有用。尤其是设计、命名这类基于品味的任务,如果配上评分标准,会更适合工作流。

可以让 Claude 探索一批解决方案,并给审查智能体一套优秀方案应满足的评分标准。当审查智能体认为已经满足条件时,任务就完成了。方案也可以依据评分标准通过锦标赛排序或选出。

评估(Evals)

你可以为特定任务运行轻量评估:在 worktree 中派生独立智能体,然后派生比较智能体,根据评分标准比较并评定具体输出。例如,根据特定标准评估并改进你创建的一个 skill。

模型与智能路由

创建一个针对你任务调优的分类器智能体,让它决定使用哪个模型。当任务涉及许多工具调用,并且执行前的研究可以识别最适合的模型时,这会很有帮助。

例如,“解释 auth 模块如何工作”这个任务的最佳模型,取决于 auth 模块有多少文件,以及代码库的结构。分类器智能体可以先做这项研究,再根据预期复杂度路由到 Sonnet 或 Opus。

什么时候不要使用动态工作流

工作流还很新。虽然有很多场景可以带来超额结果,但并非每个任务都需要它们,而且它们可能会使用明显更多 token。

最好把工作流用于创造性地推动 Claude Code,让它做过去没能做到的事情。对于常规编码任务,可以先问问自己:它真的需要更多计算吗?例如,大多数传统编码任务并不需要一个 5 人审查小组。

构建动态工作流的提示

提示词

为动态工作流写详细提示词,并使用上面描述的具体技术,通常会得到最佳结果。

工作流不只适合大型任务。你可以提示模型使用 “quick workflow”。例如,可以快速创建一次针对某个假设的对抗性审查。

结合 /goal 和 /loop

对于可以重复运行的工作流,例如分诊、研究或验证,可以把它们与 /loop 搭配,让它们定期运行;再结合 /goal,设置硬性的完成要求。

Token 使用预算

你可以为动态工作流设置明确的 token 使用预算,限制任务使用多少 token。可以用类似 “use 10k tokens” 的预算提示词来设置上限。

保存和分享动态工作流

你可以在工作流菜单中按 “s” 保存工作流。可以把它们提交到 ~/.claude/workflows,或者通过 skill 分发。

Image
Image

如果要通过 skill 分享,把你的 JavaScript 工作流文件放进 skill 文件夹,并在 SKILL.MD[14] 中引用它们。为了保留更多灵活性,你可能会希望提示 Claude 把 skill 里的工作流当成模板,而非必须逐字执行的脚本。

Image
Image

一个全新的世界

工作流是扩展 Claude Code 的一种有用新方式。我建议你把它看作起点。关于如何最好地使用它们,还有很多东西有待发现。欢迎告诉我们你的发现。

Thariq Shihipar 和 Sid Bidasaria(@sidbid[15])是 Anthropic 的 technical staff,负责 Claude Code。

参考阅读

References

  1. 动态工作流: https://code.claude.com/docs/en/workflows
  2. 执行框架: https://code.claude.com/docs/en/glossary#agentic-harness
  3. Research: https://support.claude.com/en/articles/11088861-using-research-on-claude
  4. 安全分析: https://support.claude.com/en/articles/11932705-automated-security-reviews-in-claude-code
  5. 智能体团队: https://code.claude.com/docs/en/agent-teams
  6. Code Review: https://code.claude.com/docs/en/code-review
  7. Claude Blog: https://claude.com/blog/a-harness-for-every-task-dynamic-workflows-in-claude-code
  8. #incidents: https://x.com/search?q=%23incidents&src=hashtag_click
  9. 子智能体: https://code.claude.com/docs/en/sub-agents
  10. Claude Opus 4.8: https://www.anthropic.com/news/claude-opus-4-8
  11. Bun: https://bun.com/
  12. Jarred 的 X thread: https://x.com/jarredsumner/status/2060050578026189172
  13. CLAUDE.md: http://claude.md/
  14. SKILL.MD: http://skill.md/
  15. @sidbid: https://x.com/@sidbid
  16. 原文 https://x.com/trq212/status/2061907337154367865

如果你也在关注 AI 应用如何真正落地到生产环境,2026.6.26 - 6.27 GIAC 深圳站值得关注。这次大会会集中讨论智能应用开发、架构演进,以及来自一线实践的经验与案例。

识别二维码可申请大会体验门票,点击阅读原文了解大会详细议程。

Image