@trq212: https://x.com/trq212/status/2061907337154367865

X AI KOLs Following 产品

摘要

Claude Code 发布了动态工作流功能,使得Claude能够为研究、安全分析、代理团队和代码审查等任务创建自定义框架,所有这些都在工具内原生实现。

https://t.co/R6exTuF7P8
查看原文
查看缓存全文

缓存时间: 2026/06/02 23:39

每项任务都有专属工具:Claude Code 中的动态工作流

上周,我们在 Claude Code 中发布了动态工作流。Claude 现在可以随时自行编写专属工具,为手头的任务量身定制。

虽然默认的 Claude Code 工具是为编码构建的,但它也适用于许多其他类型的任务,因为事实证明,许多任务与编码任务类似。但有些类型的任务,我们不得不在 Claude Code 之上构建自定义工具才能达到最佳性能,例如研究、安全分析、智能体团队或代码审查。

工作流允许你动态创建工具,使 Claude 能够在 Claude Code 内部原生解决所有这些问题以及更多问题。你还可以与他人共享和重用这些工作流。

在本文中,我将介绍我最初的工作流体验和心得,以便你充分利用。

话虽如此,最佳实践仍在发展中!动态工作流通常使用更多的 token,因此请仔细考虑何时以及如何使用它们。

注意:本文也发表在 Claude 博客上

示例提示

在深入技术细节之前,我想先提供一些示例提示,让你思考工作流的可能性:

  • “这个测试大概每 50 次运行会失败 1 次。建立一个工作流来重现它,形成理论,并在工作树中对其进行对抗性测试 /goal 直到某个理论成功为止。”

  • “使用工作流,回顾我最近 50 次会话,挖掘出我反复犯的错误,将重复出现的错误转化为 CLAUDE.md 规则。”

  • “使用工作流,挖掘过去六个月 Slack 中的 #incidents 频道,找出没有人提交工单的重复根本原因。”

  • “拿我的商业计划,运行一个工作流,让不同的智能体从投资者、客户和竞争对手的角度将其拆解。”

  • “这里有一个包含 80 份简历的文件夹,使用工作流对它们进行排名,以寻找后端职位,并仔细检查前十名。使用 AskUserQuestion 工具让我为评估标准进行面试。”

  • “我需要为这个 CLI 工具起个名字。使用工作流集思广益,提出一堆选项,然后运行一个淘汰赛来选出前三名。”

  • “使用工作流将我们代码库中的 User 模型全部重命名为 Account。”

  • “浏览我的博客文章草稿,使用工作流验证代码库中每一个技术声明,我不想发布任何错误的信息。”

动态工作流如何工作

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

动态工作流还包含标准的 JavaScript 函数,如 JSON、Math 和 Array,以帮助处理数据。

特别有用的是,动态工作流可以决定智能体使用哪些模型,以及子智能体是否在自己的工作树中运行,从而让 Claude 选择所需的智能水平和隔离程度。

如果工作流被打断(例如由于用户操作或关闭终端),恢复会话将使工作流从中断处继续。

为什么使用动态工作流

当你要求默认的 Claude Code 工具执行一项任务时,它需要在同一个上下文窗口中同时进行规划和执行。对于许多编码任务来说,这非常高效,但在长时间的、大规模并行的和/或高度结构化的对抗性任务中,有时会失效。

这是因为 Claude 在单个上下文窗口中处理复杂任务的时间越长,就越容易出现几种特定的故障模式:

  • 智能体懒惰 是指 Claude 在完成特别复杂的多部分任务之前就停下来,并在取得部分进展后宣布任务完成,例如在安全审查中处理了 50 项中的 20 项。

  • 自我偏好偏差 指的是 Claude 倾向于偏爱自己的结果或发现,尤其是在要求其根据评估标准进行验证或判断时。

  • 目标漂移 指的是在多次交互(尤其是在压缩之后)中逐渐丧失对原始目标的忠实度。每次摘要步骤都会有损失,像边缘情况需求或“不要做 X“这样的约束可能会丢失。

创建工作流通过协调具有自己上下文窗口和集中、孤立目标的独立 Claude 实例来帮助解决这些问题。

动态工作流 vs 静态工作流

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

但由于静态工作流需要适用于所有边缘情况,它们通常更通用。借助 Claude Opus 4.8 和动态工作流,Claude 现在足够智能,可以为你的用例编写定制的工具。

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

你只需让 Claude 创建一个工作流,或者使用触发词“ultracode“来确保 Claude Code 创建一个工作流,即可开始使用动态工作流。

但建立关于动态工作流如何工作的思维模型,将帮助你理解何时使用它们以及如何通过提示来引导 Claude。

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

分类并行动

使用一个分类智能体来决定任务类型,然后根据任务路由到不同的智能体或行为。或者在最后使用分类器来确定输出。

扇出并综合

将任务拆分成许多较小的步骤,在每个步骤上运行一个智能体,然后综合这些结果。这在有大量较小步骤时特别有用,或者当每个步骤受益于自己干净的上下文窗口以避免干扰或交叉污染时。综合步骤是一个屏障——它等待所有扇出的智能体,然后将它们的结构化输出合并为一个结果。

对抗性验证

对于每个生成的智能体,运行一个单独生成的智能体,根据评估标准或标准对其输出进行对抗性验证。

生成并过滤

就一个主题生成多个想法,然后通过评估标准或验证进行过滤,去重,仅返回最高质量、经过测试的想法。

淘汰赛

不是分配工作,而是让智能体竞争。生成 N 个智能体,每个智能体使用不同的方法尝试相同的任务。然后提示或模型使用评判智能体以成对方式评判结果,直到产生胜者。

循环直到完成

对于工作量未知的任务,循环生成智能体,直到满足停止条件(没有新发现,或日志中没有更多错误),而不是固定次数的通过。

用例

创造性地思考何时以及如何让 Claude Code 创建动态工作流。我发现工作流有时对于非技术性工作更加有用。

迁移和重构

Bun 是使用工作流从 Zig 重写为 Rust 的。你可以在 Jarred 的 X 话题中阅读更多关于如何完成的信息。

关键是将任务分解为一系列需要操作的步骤,例如调用点、失败的测试、模块等。在工作树中为每个修复生成一个子智能体来进行修复,然后让另一个智能体进行对抗性审查,并合并它们。考虑告诉智能体不要使用资源密集型命令,以便你可以最大程度地并行化,而不会耗尽机器资源。

深度研究

我们在 Claude Code 中发布了一个深度研究技巧(/deep-research),它使用动态工作流。具体来说,它扇出网络搜索、获取来源、对抗性验证其声明,并综合出一份带引用的报告。

但你可能不仅仅是为了网络搜索而进行这种研究。例如,要求 Claude 从 Slack 的上下文中编译一份状态报告,或者通过深入探索代码库来研究某个功能是如何工作的。

深度验证

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

排序

你可能有一个项目列表,想要根据某种定性测量进行排序,你认为 Claude Code 擅长评估这些测量,例如:按漏洞严重性排序的支持工单。但如果你试图在一个提示中对超过 1000 行进行排序,质量会下降,并且无法放入上下文。相反,运行一个淘汰赛、一个成对比较智能体的流水线(比较判断比绝对评分更可靠),或者并行进行桶排序然后合并。每个比较都是自己的智能体,因此确定性循环保存括号,只有运行顺序保留在上下文中。

记忆和规则遵守

如果你有一套特定的规则,发现 Claude 即使放入 CLAUDE.md 也经常会遗漏或难以遵守,创建一个工作流,其中包含一组必须由验证智能体检查的规则——每条规则对应一个验证智能体。创建一个怀疑论者角色的子智能体来审查规则,确保它们符合要求,这将有助于避免过多的误报。

反向操作也有效:挖掘你最近的会话和代码审查评论中你反复犯的错误,使用并行智能体进行聚类,对抗性地验证每个候选规则(这条规则是否能防止一个实际错误?),然后将幸存者提炼回 CLAUDE.md。

根本原因调查

调试的最佳方式是提出几个独立的假设并进行测试,但如果你只使用一个上下文窗口,Claude 可能会遇到自我偏好偏差。

工作流可以通过从不同证据中生成假设的智能体来从结构上防止这种情况。例如,分别为日志、文件和数据设置智能体。然后每个假设都可以面对一组验证者和反驳者。

这不仅适用于代码。工作流可用于销售(为什么三月份销售额下降了?)、数据工程(为什么这个流水线失败了?)或任何事后分析。

大规模分类

每个团队都有支持队列、错误报告或其他无法完全由人工处理的任务积压。

一个分类工作流对每个项目进行分类,对已跟踪的项目进行去重,并采取行动。这可能意味着尝试修复或上报给人类用户。

分类工作流的一个有用模式是隔离。这涉及禁止读取不受信任的公共内容的智能体执行高权限操作,这些操作由负责根据信息采取行动的智能体执行。

将分类工作流与 /loop 配对,让 Claude 持续执行此操作。

探索和品味

工作流在探索不同解决方案时很有用,尤其是当基于品味(如设计或命名)并受益于评估标准时。

尝试让 Claude 探索一系列解决方案,并为审查智能体提供一个关于好的解决方案是什么样的评估标准。当审查智能体认为满足了标准时,任务完成。解决方案也可以通过基于评估标准的淘汰赛进行排序或选择。

评估

你可以通过在工作树中生成独立的智能体,然后生成比较智能体来比较和根据评估标准对特定输出进行评分,从而对特定任务进行轻量级评估。例如,评估然后根据特定标准优化你创建的技巧。

模型和智能路由

创建一个针对你任务调整的分类智能体,决定使用哪个模型。当你的任务涉及大量工具调用并且在执行之前进行研究可以确定最适合该任务的模型时,这会很有帮助。

例如,对于任务“解释 auth 模块如何工作“,最佳模型取决于 auth 模块中的文件数量和代码库的形状。一个分类智能体可以进行此研究,然后根据任务的预期复杂性路由到 Sonnet 或 Opus。

何时不使用动态工作流

工作流是新的。虽然有许多用例会产生超乎寻常的结果,但它们并非每个任务都需要,并且最终可能会使用显著更多的 token。

最好创造性地使用工作流,以你以前没有过的方式推动 Claude Code。对于常规编码任务,试着问问自己,它真的需要更多计算吗?例如,大多数传统的编码任务不需要一个由 5 名审查者组成的小组。

构建动态工作流的技巧

提示

使用我们上面描述的具体技术进行详细提示,可以为动态工作流带来最佳结果。

工作流不仅适用于大型任务。你可以提示模型使用“快速工作流“。例如,你可以对一个假设进行快速对抗性审查。

与 /goal 和 /loop 结合

当使用可以重复的工作流(例如分类、研究或验证)时,将它们与 /loop 配对以定期运行,并与 /goal 配对以设置硬性完成要求。

Token 使用预算

你可以为动态工作流设置明确的 token 使用预算,以限制任务使用的 token 数量。你可以使用预算提示它,例如:“使用 10k token”,这将设置上限。

保存和共享动态工作流

你可以通过在工作流菜单中按“s“来保存工作流。你可以将它们检入 ~/.claude/workflows 或通过技巧进行分发。

要通过技巧共享它们,请将你的 JavaScript 工作流文件放入技巧文件夹,并在 SKILL.MD 中引用它们。为了提供更多灵活性,你可能希望提示 Claude 将技巧中的工作流视为模板,而不是需要逐字运行的脚本。

一个全新的世界

工作流是扩展 Claude Code 的一种有用的新方式。我鼓励你将其视为一个起点,如何最好地使用它们仍有待探索。请告诉我们你的发现。

Thariq Shihipar 和 Sid Bidasaria (@sidbid) 是 Anthropic 的技术人员,从事 Claude Code 的工作。

相似文章