每个任务都有自己的运行框架:Claude Code 中的动态工作流
每个任务都有自己的运行框架:Claude Code 中的动态工作流
每个任务都有自己的运行框架:Claude Code 中的动态工作流 每个任务都有自己的运行框架:Claude Code 中的动态工作流 Modified June 3 把一个任务拆成很多更小的步骤,让一个智能体处理每个步骤,然后综合这些结果。这在有大量小步骤时特别有用;如果每一步都受益于一个干净的独立上下文窗口,也很适合这种模式,因为它们不会互相干扰或交叉污染。综合步骤是一道屏障:它会等待所有扇出的智能体完成,然后把它们的结构化输出合并成一个结果。 对抗式验证 对每个生成出来的智能体,再运行一个单独的智能体,根据评分标准或条件对它的输出做对抗式验证。 生成并过滤 围绕一个主题生成多个想法,然后根据评分标准或验证结果进行过滤,去重后只返回质量最高、经过测试的想法。 锦标赛 不是把工作拆开,而是让智能体围绕同一任务竞争。生成 N 个智能体,每个智能体用不同方法尝试同一任务。然后由提示词或模型通过评审智能体进行两两评判,直到选出赢家。 循环直到完成 对工作量未知的任务,不要设置固定轮数,而是循环生成智能体,直到满足停止条件,例如没有新发现,或日志中没有更多错误。 使用场景 你可以更有创造性地思考,什么时候、怎样让 Claude Code 创建动态工作流。我发现,工作流有时在非技术工作里甚至更有用。 迁移与重构 Bun 使用工作流从 Zig 重写成了 Rust。你可以在 Jarred 的 X 线程中了解更多细节。 关键是把任务拆成一系列需要操作的步骤,例如调用点、失败测试、模块等。为每个修复都在 worktree 中派生一个子智能体,让它完成修复;再让另一个智能体做对抗式评审,并合并结果。可以考虑明确告诉智能体不要使用资源密集型命令,这样你就能最大化并行度,同时避免耗尽本机资源。 深度研究 我们在 Claude Code 中发布了一个使用动态工作流的深度研究 Skill:/deep research。具体来说,它会扇出网页搜索、获取来源、对来源中的主张做对抗式验证,并综合出一份带引用的报告。 但这类研究不只适用于网页搜索。例如,你可以让 Claude 从 Slack 中的上下文汇总一份状态报告,或通过深入探索代码库来研究某个功能是如何工作的。 深度验证 如果你有一份报告,并希望检查其中引用的每一个事实性主张和来源,可以生成一个工作流:让一个智能体识别所有事实性主张,然后为每条主张派生一个子智能体做详细检查。你还可以让一个验证智能体检查来源子智能体,确保它找到的来源质量足够高。 排序 你可能有一组条目,希望根据某种定性标准排序,而且你相信 Claude Code 擅长评估这个标准。例如,把支持工单按 bug 严重程度排序。但如果你试图在一个提示词里排序 1000 多行,质量会下降,也放不进上下文。 更好的方式是运行锦标赛、一条由两两比较智能体组成的流水线,或并行分桶排序再合并。比较判断通常比绝对打分更可靠。每次比较都是一个独立智能体,因此确定性的循环负责维护赛程,而只有当前运行顺序留在上下文中。 记忆与规则遵循 如果你有一组规则,即使放进 CLAUDE.md,Claude 仍然经常漏掉或处理不好,可以创建一个工作流,列出必须由验证智能体检查的规则,每条规则一个验证智能体。创建一个怀疑者人格的子智能体来复查规则是否合理,有助于避免过多误报。 反过来也可以:挖掘你最近的会话和代码评审评论,找出你反复做出的修正;用并行智能体聚类这些修正;对每个候选规则做对抗式验证,判断“这条规则是否本可以防止一个真实错误”;然后把存活下来的规则提炼回 CLAUDE.md。 根因调查 调试最有效的方法,是提出多个独立假设并逐一测试。但如果只使用一个上下文窗口,Claude 可能会陷入自我偏好偏差。 工作流可以通过结构设计防止这一点:派生多个智能体,从互不重叠的证据中生成假设。例如,为日志、文件和数据分别设置智能体。然后,每个假设都可以面对一组验证者和反驳者。 这不只适用于代码。工作流也可以用于销售,例如“为什么三月销售额下降了”;用于数据工程,例如“为什么这条流水线失败了”;也可以用于任何事后复盘。 大规模分流 每个团队都有支持队列、bug 报告,或某种人类无法完全处理的积压事项。 分流工作流会对每个条目分类,与已经追踪的事项去重,并采取行动。这可能意味着尝试修复,也可能意味着升级给人类用户。 分流工作流里一个有用模式是隔离区。读取不可信公开内容的智能体被禁止执行高权限动作;高权限动作由负责根据这些信息行动的智能体来完成。 把分流工作流与 /loop 配对,可以让 Claude 持续执行这类任务。 探索与品味 在探索不同解决方案时,工作流会很有用,尤其是设计或命名这类依赖品味、又受益于评分标准的任务。 可以让 Claude 探索一批方案,并给评审智能体一套“什么才算好方案”的评分标准。当评审智能体认为标准已经满足时,任务就完成了。方案也可以根据评分标准通过锦标赛来排序或选择。 Evals 你可以为特定任务运行轻量级 evals:在 worktree 中派生独立智能体,然后派生比较智能体,根据评分标准比较并打分具体输出。例如,根据特定条件评估并改进你创建的某个 Skill。 模型与智能路由 创建一个针对你任务调优过的分类器智能体,由它决定使用哪个模型。当任务会涉及许多工具调用,并且执行前的研究可以帮助识别最适合的模型时,这会很有用。 例如,“解释 auth 模块如何工作”这个任务的最佳模型,取决于 auth 模块里有多少文件,以及代码库的形态。分类器智能体可以先做这项研究,再根据预期复杂度路由到 Sonnet 或 Opus。 什么时候不该使用动态工作流 工作流仍然很新。虽然在很多场景里它能带来超额收益,但并不是每个任务都需要它,而且它可能会显著增加 token 消耗。 更适合的做法,是用工作流创造性地推动 Claude Code 去做过去难以做到的事情。对常规编码任务,可以先问自己:它真的需要更多计算吗?例如,多数传统编码任务并不需要 5 个评审者组成的小组。 构建动态工作流的建议 提示词 为动态工作流写详细提示词,并使用上面介绍的具体技巧,通常会得到最好的结果。 工作流不只适用于大型任务。你也可以提示模型使用“快速工作流”。例如,围绕某个假设做一次快速对抗式评审。 结合 /goal 和 /loop 当使用可以重复运行的工作流时,例如分流、研究或验证,可以把它们与 /loop 配对,让它们按固定间隔运行;再配合 /goal 设置硬性完成要求。 token 使用预算 你可以为动态工作流设置显式 token 预算,限制某个任务使用多少 token。可以像这样提示它:“使用 10k token”,这会设置上限。 保存和分享动态工作流 你可以在工作流菜单里按 s 保存工作流。保存后可以把它们提交到 /.claude/workflows,或通过 Skill 分发。 如果要通过 Skill 分享,把 JavaScript 工作流文件放进 skill 文件夹,并在 SKILL.md 中引用它们。为了获得更大灵活性,你可能会希望提示 Claude 把 Skill 里的工作流当作模板,而不是必须逐字运行的脚本。 一个全新的世界 工作流是一种扩展 Claude Code 的新方式。你可以把它当作起点,关于如何最好地使用它们,还有很多值得探索。欢迎把你的发现告诉我们。 Thariq Shihipar 和 Sid Bidasaria(@sidbid)是 Anthropic 技术团队成员,负责 Claude Code 相关工作。 Bun Jarred 的 X 线程 CLAUDE.md SKILL.md 把一个任务拆成很多更小的步骤,让一个智能体处理每个步骤,然后综合这些结果。这在有大量小步骤时特别有用;如果每一步都受益于一个干净的独立上下文窗口,也很适合这种模式,因为它们不会互相干扰或交叉污染。综合步骤是一道屏障:它会等待所有扇出的智能体完成,然后把它们的结构化输出合并成一个结果。 对抗式验证 对每个生成出来的智能体,再运行一个单独的智能体,根据评分标准或条件对它的输出做对抗式验证。 生成并过滤 围绕一个主题生成多个想法,然后根据评分标准或验证结果进行过滤,去重后只返回质量最高、经过测试的想法。 锦标赛 不是把工作拆开,而是让智能体围绕同一任务竞争。生成 N 个智能体,每个智能体用不同方法尝试同一任务。然后由提示词或模型通过评审智能体进行两两评判,直到选出赢家。 循环直到完成 对工作量未知的任务,不要设置固定轮数,而是循环生成智能体,直到满足停止条件,例如没有新发现,或日志中没有更多错误。 使用场景 你可以更有创造性地思考,什么时候、怎样让 Claude Code 创建动态工作流。我发现,工作流有时在非技术工作里甚至更有用。 迁移与重构 Bun 使用工作流从 Zig 重写成了 Rust。你可以在 Jarred 的 X 线程中了解更多细节。 Bun Jarred 的 X 线程 关键是把任务拆成一系列需要操作的步骤,例如调用点、失败测试、模块等。为每个修复都在 worktree 中派生一个子智能体,让它完成修复;再让另一个智能体做对抗式评审,并合并结果。可以考虑明确告诉智能体不要使用资源密集型命令,这样你就能最大化并行度,同时避免耗尽本机资源。 深度研究 我们在 Claude Code 中发布了一个使用动态工作流的深度研究 Skill:/deep research。具体来说,它会扇出网页搜索、获取来源、对来源中的主张做对抗式验证,并综合出一份带引用的报告。 但这类研究不只适用于网页搜索。例如,你可以让 Claude 从 Slack 中的上下文汇总一份状态报告,或通过深入探索代码库来研究某个功能是如何工作的。 深度验证 如果你有一份报告,并希望检查其中引用的每一个事实性主张和来源,可以生成一个工作流:让一个智能体识别所有事实性主张,然后为每条主张派生一个子智能体做详细检查。你还可以让一个验证智能体检查来源子智能体,确保它找到的来源质量足够高。 排序 你可能有一组条目,希望根据某种定性标准排序,而且你相信 Claude Code 擅长评估这个标准。例如,把支持工单按 bug 严重程度排序。但如果你试图在一个提示词里排序 1000 多行,质量会下降,也放不进上下文。 更好的方式是运行锦标赛、一条由两两比较智能体组成的流水线,或并行分桶排序再合并。比较判断通常比绝对打分更可靠。每次比较都是一个独立智能体,因此确定性的循环负责维护赛程,而只有当前运行顺序留在上下文中。 记忆与规则遵循 如果你有一组规则,即使放进 CLAUDE.md,Claude 仍然经常漏掉或处理不好,可以创建一个工作流,列出必须由验证智能体检查的规则,每条规则一个验证智能体。创建一个怀疑者人格的子智能体来复查规则是否合理,有助于避免过多误报。 反过来也可以:挖掘你最近的会话和代码评审评论,找出你反复做出的修正;用并行智能体聚类这些修正;对每个候选规则做对抗式验证,判断“这条规则是否本可以防止一个真实错误”;然后把存活下来的规则提炼回 CLAUDE.md。 CLAUDE.md 根因调查 调试最有效的方法,是提出多个独立假设并逐一测试。但如果只使用一个上下文窗口,Claude 可能会陷入自我偏好偏差。 工作流可以通过结构设计防止这一点:派生多个智能体,从互不重叠的证据中生成假设。例如,为日志、文件和数据分别设置智能体。然后,每个假设都可以面对一组验证者和反驳者。 这不只适用于代码。工作流也可以用于销售,例如“为什么三月销售额下降了”;用于数据工程,例如“为什么这条流水线失败了”;也可以用于任何事后复盘。 大规模分流 每个团队都有支持队列、bug 报告,或某种人类无法完全处理的积压事项。 分流工作流会对每个条目分类,与已经追踪的事项去重,并采取行动。这可能意味着尝试修复,也可能意味着升级给人类用户。 分流工作流里一个有用模式是隔离区。读取不可信公开内容的智能体被禁止执行高权限动作;高权限动作由负责根据这些信息行动的智能体来完成。 把分流工作流与 /loop 配对,可以让 Claude 持续执行这类任务。 探索与品味 在探索不同解决方案时,工作流会很有用,尤其是设计或命名这类依赖品味、又受益于评分标准的任务。 可以让 Claude 探索一批方案,并给评审智能体一套“什么才算好方案”的评分标准。当评审智能体认为标准已经满足时,任务就完成了。方案也可以根据评分标准通过锦标赛来排序或选择。 Evals 你可以为特定任务运行轻量级 evals:在 worktree 中派生独立智能体,然后派生比较智能体,根据评分标准比较并打分具体输出。例如,根据特定条件评估并改进你创建的某个 Skill。 模型与智能路由 创建一个针对你任务调优过的分类器智能体,由它决定使用哪个模型。当任务会涉及许多工具调用,并且执行前的研究可以帮助识别最适合的模型时,这会很有用。 例如,“解释 auth 模块如何工作”这个任务的最佳模型,取决于 auth 模块里有多少文件,以及代码库的形态。分类器智能体可以先做这项研究,再根据预期复杂度路由到 Sonnet 或 Opus。 什么时候不该使用动态工作流 工作流仍然很新。虽然在很多场景里它能带来超额收益,但并不是每个任务都需要它,而且它可能会显著增加 token 消耗。 更适合的做法,是用工作流创造性地推动 Claude Code 去做过去难以做到的事情。对常规编码任务,可以先问自己:它真的需要更多计算吗?例如,多数传统编码任务并不需要 5 个评审者组成的小组。 构建动态工作流的建议 提示词 为动态工作流写详细提示词,并使用上面介绍的具体技巧,通常会得到最好的结果。 工作流不只适用于大型任务。你也可以提示模型使用“快速工作流”。例如,围绕某个假设做一次快速对抗式评审。 结合 /goal 和 /loop 当使用可以重复运行的工作流时,例如分流、研究或验证,可以把它们与 /loop 配对,让它们按固定间隔运行;再配合 /goal 设置硬性完成要求。 token 使用预算 你可以为动态工作流设置显式 token 预算,限制某个任务使用多少 token。可以像这样提示它:“使用 10k token”,这会设置上限。 保存和分享动态工作流 你可以在工作流菜单里按 s 保存工作流。保存后可以把它们提交到 /.claude/workflows,或通过 Skill 分发。 如果要通过 Skill 分享,把 JavaScript 工作流文件放进 skill 文件夹,并在 SKILL.md 中引用它们。为了获得更大灵活性,你可能会希望提示 Claude 把 Skill 里的工作流当作模板,而不是必须逐字运行的脚本。 SKILL.md 一个全新的世界 工作流是一种扩展 Claude Code 的新方式。你可以把它当作起点,关于如何最好地使用它们,还有很多值得探索。欢迎把你的发现告诉我们。 Thariq Shihipar 和 Sid Bidasaria(@sidbid)是 Anthropic 技术团队成员,负责 Claude Code 相关工作。 原帖链接:https://x.com/trq212/status/2061907337154367865 原帖链接:https://x.com/trq212/status/2061907337154367865 上周,我们在 Claude Code 中发布了动态工作流。现在,Claude 可以即时为手头任务编写自己的运行框架,并且这个框架是为当前任务定制的。 动态工作流 运行框架 默认的 Claude Code 运行框架是为编码而构建的,但它对很多其他类型的任务也很有用,因为事实证明,很多任务都像编码任务。不过,有些任务类别过去需要我们在 Claude Code 之上构建自定义运行框架,才能达到最佳表现,例如 Research、安全分析、智能体团队,或 Code Review。 Research 安全分析 智能体团队 Code Review 工作流可以让你动态创建运行框架,让 Claude 能更原生地在 Claude Code 内解决这些问题,以及更多问题。你也可以把这些工作流分享给别人,或复用别人的工作流。 这篇文章会介绍我最初使用工作流的体验和一些经验,帮助你更充分地利用它们。 不过,最佳实践仍在形成中。动态工作流通常会使用更多 token,因此要认真考虑什么时候使用、怎么使用。 注:这篇文章也可以在 Claude Blog 阅读。 Claude Blog 示例提示词 在进入技术细节之前,我想先放几个示例提示词,帮助你感受工作流的可能性: • “这个测试大约每 50 次运行会失败 1 次。设置一个工作流来复现它、形成理论,并在 worktree 中对这些理论做对抗式测试。/goal 不要停止,直到有一个理论成立。” • “使用一个工作流,浏览我最近 50 次会话,挖掘我反复做出的修正,并把重复出现的修正变成 CLAUDE.md 规则。” • “使用一个工作流,翻查过去六个月 Slack 里的 incidents,找出反复出现但没人提交工单的根因。” • “拿我的商业计划,运行一个工作流,让不同智能体分别从投资者、客户和竞争对手视角拆解它。” • “这里有一个包含 80 份简历的文件夹。使用一个工作流,为后端岗位排序,并复核前 10 名。用 AskUserQuestion 工具采访我,以确定评分标准。” • “我需要给这个 CLI 工具起名。使用一个工作流想出一批选项,然后跑一场锦标赛,选出前 3 个。” • “使用一个工作流,把我们的 User 模型在所有地方重命名为 Account。” • “遍历我的博客草稿,使用一个工作流根据代码库验证每一个技术论断。我不想发布任何错误内容。” 动态工作流如何工作 动态工作流会执行一个 JavaScript 文件,文件里可以使用几个特殊函数,用来生成并协调子智能体: 子智能体 动态工作流也包含标准 JavaScript 函数,例如 JSON、Math 和 Array,方便处理数据。 有一点特别值得知道:动态工作流可以决定某个智能体使用哪个模型,也可以决定子智能体是否在自己的 worktree 中运行。这让 Claude 能自行选择所需的智能水平和隔离程度。 如果工作流被打断,例如因为用户操作或退出终端,恢复会话后,工作流可以从中断处继续。 为什么需要动态工作流 当你让默认 Claude Code 运行框架执行一个任务时,它需要在同一个上下文窗口里同时规划和执行。对很多编码任务来说,这非常有效;但遇到长时间运行、大规模并行,或者高度结构化的对抗性任务时,它有时会失效。 原因是:Claude 在单个上下文窗口中处理复杂任务的时间越长,就越容易受到几类具体失败模式影响: • 智能体偷懒:Claude 在完成特别复杂、包含多个部分的任务之前就停下来,并在只取得部分进展后宣布任务完成。例如一次安全审查有 50 项,它只处理了 20 项。 • 自我偏好偏差:Claude 倾向于偏爱自己的结果或发现,尤其是在被要求根据评分标准验证或评判这些结果时。 • 目标漂移:经过很多轮对话后,尤其是在发生压缩之后,Claude 会逐渐丢失对原始目标的忠实度。每次摘要都会损失信息,边界情况要求或“不要做 X”这样的约束可能会丢失。 创建工作流可以帮助对抗这些问题,因为它会编排多个独立的 Claude,让它们各自拥有自己的上下文窗口,以及聚焦且隔离的目标。 动态工作流与静态工作流 你之前可能已经用 Claude Agent SDK 或 claude p 创建过静态工作流,用来协调多个 Claude Code 实例。 但静态工作流需要覆盖所有边界情况,因此通常更通用。随着 Claude Opus 4.8 和动态工作流出现,Claude 现在已经足够智能,可以为你的具体用例编写量身定制的运行框架。 Claude Opus 4.8 使用动态工作流时有帮助的模式 你可以直接让 Claude 创建一个工作流,也可以使用触发词 ultracode,确保 Claude Code 会创建工作流。 不过,建立对动态工作流运行方式的心智模型,会帮助你理解什么时候该使用它们,以及如何通过提示词引导 Claude。 Claude 在构建工作流时,可能会使用并组合几种常见模式: 分类并执行 使用一个分类器智能体判断任务类型,然后根据任务类型路由到不同智能体或行为。也可以在最后使用分类器判断输出。 扇出并综合