最近一周,我的推特信息流几乎被 Claude Code 的“动态工作流”(Dynamic Workflows)刷屏了。
如果你只看了那些“震惊!AI 自动重写 75 万行代码”的标题党,你可能会觉得这又是一个类似 Devin 的营销噱头。但作为一名长期关注 AI Agent 演进的开发者,在深度拆解了它的底层逻辑并阅读了内置脚本源码后,我想说:这可能是自 ReAct 模式提出以来,AI Agent 领域最重要的一次工程范式转移。
它标志着 AI 从“基于对话的反复横跳”,正式进入了“基于代码的确定性编排”时代。
一、 为什么传统的 Agent 模式走到了死胡同?
在动态工作流出现之前,我们使用 AI Agent 的逻辑通常是:Prompt -> Loop -> Reflection。
无论是 AutoGPT 还是各种复杂的 LangGraph 工作流,本质上都在做一件事:让 LLM 在一个长对话上下文中,不断地通过 ReAct(推理-行动)循环来尝试解决问题。这种模式有三个难以逾越的“毒点”:
1.上下文膨胀与幻觉:所有的思考过程、中间结果、工具调用记录都堆在 Context Window 里。随着任务变复杂,Token 成本呈指数级增长,更致命的是,长上下文会显著拉低模型的推理精度。
2.不可控的随机性:即便你写了 500 行的 System Prompt,Agent 在第 50 步操作时依然可能因为前面的某个小干扰而“跑偏”。
3.难以调试与复用:Agent 的执行路径像个黑盒。你很难精准地告诉它:“在第 3 步和第 5 步之间,我要你并发执行 10 个搜索,并且必须通过三方校验。”
Claude Code 的动态工作流(Dynamic Workflow)给出的解法极其暴力且优雅:既然 LLM 擅长写代码,那就让它在处理复杂任务前,先给自己写一段 JavaScript 编排脚本,然后由一个受控的运行时(Runtime)去执行。
二、 硬核拆解:动态工作流的“编排 API”
当我们输入 ultracode 或者运行 /deep-research 时,Claude 并不是在直接和你聊天,而是在后台生成了一段 .js 脚本。
通过对 deep-research 源码的逆向(你可以通过 /workflows 视图中的 View raw script 看到),我发现了几个核心的编排原语,这才是干货所在:
API 原语 | 功能描述 | 软件工程视角 |
phase(title) | 定义任务阶段 | 类似于 CI/CD Pipeline 的 Stage,提供进度可视化和状态隔离。 |
agent(prompt, options) | 产生一个原子化的子代理 | 将复杂任务拆解为无状态的微服务调用,支持 schema 强制结构化输出。 |
pipeline(input, ...steps) | 流式处理管道 | 实现并发处理与数据流转,类似于函数式编程中的 pipe。 |
parallel(tasks) | 并发执行 | 真正发挥 LLM 吞吐能力的利器,可以同时调起几十个模型实例。 |
log(message) | 确定性日志 | 记录中间决策,而非漫长的对话。 |
关键点:脱离上下文的中间态管理
这是动态工作流最天才的地方。在脚本运行期间,中间结果(Intermediate Results)存储在脚本的变量中,而不是 Claude 的对话上下文里。
这意味着,当一个子代理完成任务后,它只把最终结果返回给主脚本。主脚本再根据逻辑(if/else, loops)决定传给下一个子代理什么。这种“分而治之”的策略,让 AI 处理 500 个文件的重构任务时,Context Window 依然清爽如初。
三、 深度案例分析:/deep-research 是如何工作的?
很多人觉得 /deep-research 只是搜得更多,其实它的核心竞争力在于对抗性验证(Adversarial Verification)。
在源码中,我看到了这样一段逻辑:
1.分解(Scope):agent() 将你的问题拆解为 5 个不同的搜索维度。
2.并发抓取(Search & Fetch):利用 pipeline 并发调起搜索和网页抓取,并进行自动去重。
3.三票制验证(Verify):这是最精彩的部分。脚本会为每一个提取出的事实(Claim)分配 3 个独立的子代理。这些子代理被要求以“怀疑论者”的身份去反驳该事实。
- 只有获得至少 2 票支持(即反驳失败)的事实,才能进入最终报告。
4.结构化汇总(Synthesize):最后由一个代理将通过校验的事实,根据预定义的 JSON Schema 汇总成 Markdown。
这种“代码定义逻辑 + AI 执行原子任务”的组合,将 AI 的不可靠性通过工程化的“冗余校验”降到了最低。 这不再是简单的 AI 写作,这是 AI 驱动的分布式事实核查系统。
四、 范式转移:从 Prompt 到 Orchestration
如果你是一名科技博主或开发者,你应该意识到,Claude Code 正在重新定义“AI 编程”的终局。
以前我们追求的是“如何写出更好的 Prompt”,现在我们要追求的是“如何构建更好的编排脚本”。
- AI 资产化:你可以通过 /workflows 按 s 保存生成的脚本,并将其提交到 Git 仓库。这意味着你的 AI 任务流成了代码资产,可以被团队审计、复用和持续改进。
- 确定性回归:当你发现 AI 在某个环节表现不好,你不需要改那个玄学的 System Prompt,你只需要在脚本里加一个 if 判断,或者增加一个校验阶段。
五、 吐槽与泼冷水:它还没到“一键重构”的程度
虽然动态工作流很强,但在实战中我也踩了不少坑:
1.Token 碎钞机:一次深度研究或大规模重构可能瞬间消耗掉几十万 Token。如果你没开 Pro 或 API 额度不够,它会频繁报错。
2.JS 基础门槛:虽然 Claude 能帮你写脚本,但如果你想微调那些复杂的 pipeline 逻辑,你最好真的懂 JavaScript。
3.调试体验:目前的 /workflows 视图虽然能看进度,但一旦脚本逻辑出错(比如某个 JSON 解析失败),报错信息有时比较晦涩,回溯成本较高。
总结
Claude Code 的动态工作流不是在对话框里加了个插件,它是给 AI 注入了一个软件工程的大脑。
它告诉我们:解决复杂问题的钥匙,不在于让 AI 变得更聪明(更强的模型),而在于给 AI 一套更科学的编排工具(更强的运行时)。
如果你还没试过 ultracode,建议先从一个小规模的 deep-research 开始,去感受一下那种几十个 Agent 在你后台疯狂工作、而你却能优雅地在终端继续输入命令的快感。那才是 AI Agent 应该有的样子。
- 作者:airouter.me
- 链接:https://airouter.me/article/claude-code-dynamic-workflow-tutorial
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
.webp?table=block&id=29d6498c-e5c2-81db-8e4b-e244bef7a08e&t=29d6498c-e5c2-81db-8e4b-e244bef7a08e)
.webp?table=block&id=29d6498c-e5c2-81c0-a99d-c7634656aeb1&t=29d6498c-e5c2-81c0-a99d-c7634656aeb1)
.webp?table=block&id=29d6498c-e5c2-8142-95cf-f25aa5bf7c3c&t=29d6498c-e5c2-8142-95cf-f25aa5bf7c3c)
.webp?table=block&id=29d6498c-e5c2-81a6-9769-d0a36aa56ae1&t=29d6498c-e5c2-81a6-9769-d0a36aa56ae1)
.webp?table=block&id=29d6498c-e5c2-81b9-9097-ca18dffbaf26&t=29d6498c-e5c2-81b9-9097-ca18dffbaf26)
.webp?table=block&id=29d6498c-e5c2-8179-a7cc-f3e9ba78174b&t=29d6498c-e5c2-8179-a7cc-f3e9ba78174b)

