← 所有文章

智能体想要编译

AI智能体开始编译了。2026年年中,在整个技术栈里,同一种分离正从各个方向落地:模型负责决策,而执行的是模型之外的东西。智能体不再在模型循环内部实时行动,而是产出一件确定性的产物——一份计划、一张DAG、一段工作流脚本——再把它交给执行环境,像对待普通软件那样重放、恢复和审计。模型正在变成一个编译器前端,把杂乱的意图解析为中间表示。确定性的执行环境则成为后端。实时的自主行动正被重新定价,成为一种昂贵的模式,只留给探索、罕见故障和品味。 {.answer-block}

7月1日,Hacker News上出现了一篇Show HN帖子,标题读起来就像一句论点陈述:”在运行前先把意图编译成确定性DAG的编码智能体”。这个项目叫Rigorix,是一个Rust执行环境,自称是”一个面向可重复、可审计的AI软件工程的确定性编码智能体执行环境”,并用一句话点明了它的分工:”LLM负责生成代码,Rigorix负责治理执行。”3 14个赞,1条评论,很容易一划而过。我停下来,是因为这已经是短短几周里我第三次看到同样的形态从不同方向落地——真正值得说的是这个形态本身,而不是某一个具体工具。

TL;DR

  • Anthropic在2024年12月画出了那条经典的分界线:工作流”沿着预先定义好的代码路径”运行,而智能体则”动态地主导自己的流程”。1 那曾是一个由人在设计阶段做出的分叉。如今它正在移到运行时,而做选择的是模型。
  • Claude Code的动态工作流让模型写出一段JavaScript编排脚本,再由执行环境在对话之外运行它:可借助缓存结果恢复,可与之前的运行做差异对比,还可保存为一条随时重跑的命令。2
  • 同样的形态还从另外三个方向到来:把自然语言任务编译成可执行DAG的独立工具(Rigorix)3、拒绝运行未编译图的框架(LangGraph)4,以及把智能体循环包裹进可重放工作流的持久化执行基础设施(Temporal)5
  • 编译带来的还是它一贯带来的那些好处:缓存、增量重建、可比对的产物、执行前的审查。它付出的也还是一贯的代价:判断被冻结在编译那一刻。
  • 实时自主行动依然在探索、罕见错误状态和品味上占优。可以奉行这样一条准则:第一次运行是研究,之后的每一次运行都想成为一次构建。

那道分叉曾属于设计阶段,如今正走向运行时

这里的先行成果,是Anthropic于2024年12月19日发表的《Building Effective Agents》,至今仍是这个领域的标准分类法。它把工作流定义为”LLM与工具通过预先定义的代码路径被编排起来的系统”,把智能体定义为”LLM动态主导自身流程与工具使用、并始终掌控如何完成任务的系统”。它对如何取舍给出的建议是:”对于定义清晰的任务,工作流提供可预测性和一致性;而当需要大规模的灵活性和模型驱动的决策时,智能体是更好的选择。”1

在长达18个月的时间里,这句话读起来像一份菜单。作为系统设计者,你在写下第一行代码之前,就要在左栏和右栏之间做出选择。2026年的转折在于,这份菜单正在坍缩成一条流水线。智能体只在规划阶段进行一次灵活的、模型驱动的处理,而这次处理的产出就是一个工作流:为当前任务按需生成的、预先定义好的代码路径。同一个系统,分阶段地,让你在编译期获得智能体的灵活性,在运行期获得工作流的可预测性。

“要工作流还是要智能体?”这个问题,正在以当年编译器回答”要灵活性还是要速度?”的方式得到解答:两者都要,用一件产物把它们分开。

三个信号,一个方向

先是环境变得确定

代理框架这一层,比智能体更早走到了那里。钩子在生命周期事件上触发,并返回模型无法讨价还价的退出码。权限规则在工具调用之前就完成判定,而不是之后。2026年整套智能体架构的方法论,就是在一个随机的内核外面包上一层确定性的外壳,并直白地承认:对于任何必须每次都发生的事情,我们不再去问模型,而是在边界上强制执行。确定性最先抵达的是边缘。

接着,持久的产物胜过了对话

第二个信号是:什么能在一次会话之后留存下来。对话会蒸发;而检查、规格和测试会留存下来,智能体又如此拼命地朝它们优化,以至于检查变成了规格。底层的教训是:对话记录不是产出。产物才是,因为它是下一次会话、下一个智能体、下一位工程师唯一能抓住的东西。一旦你在验证这件事上接受了这一点,把它推广到执行计划上就只有一步之遥。如果持久的检查比产生它的那次对话活得更久,那么持久的计划同样如此。

如今,计划本身就是那件产物

第三个信号是新出现的那一个,也正是本文的主题。智能体已经开始把自己的执行当作一等产物产出,而不再实时地把它演出来。

Claude Code把这一点做成了产品能力。动态工作流是”一段大规模编排子智能体的JavaScript脚本”:Claude为你描述的任务写出这段脚本,再由执行环境在后台运行它,与此同时会话保持响应。文档明确说明了什么发生了转手:”工作流把计划搬进了代码。”在它们自己的对比表格里,”谁来决定接下来运行什么”这一问的答案不是Claude,而是脚本。每一次运行都会把这段脚本写入一个文件,你可以打开它、与上一次运行的脚本做差异对比、编辑它,然后重新启动。中断一次运行再恢复,”已经完成的智能体会返回它们的缓存结果,其余的则实时运行”。2

Rigorix从独立开发者的方向构建了同样的形态,它的架构读起来就像一本编译器教科书:规划依次经过意图分类、参数抽取,再到DAG生成;一个模板驱动的引擎在风险关口、预算和权限的约束下执行这张图,并用HMAC签名的审计信封来留下轨迹。它对收益的定义很精确:”可重复意味着,在相同的模板和策略下,相同的意图会产生相同的执行结构。”3

各类框架其实早已到位,只是把同样的想法藏在了一个API动词里。LangGraph把智能体逻辑建模为由边连接的节点(”对你的智能体逻辑进行编码的函数”),它的文档用加粗字体给出了硬性要求:”你必须先编译你的图,然后才能使用它。”带上检查点器(checkpointer)进行编译,”LangGraph会在超步(super-step)边界保存检查点”,正是这一点让一次进行到一半的运行得以恢复。4

而基础设施层,则从底层向上抵达。持久化执行平台Temporal把智能体的推理循环包裹进工作流,这些工作流的进度会持久保存在任何进程之外:”Temporal会记录应用的进度并存储所有Activity的结果”,因此一个崩溃的智能体能”从中断处继续”,而不必从零开始重新推理。它与OpenAI的Agents SDK的集成于2025年7月30日发布,让这种包裹方式从一个需要你手工搭建的模式,变成了官方支持的路径。5

独立工具、产品能力、框架、基础设施。四个方向,一种形态:模型决策,产物执行。

把编译器这个类比当真

AI写作里的类比通常只是装饰。而这一个是承重的,因为一系列预测都从它推导而出。

编译器前端解析源码、检查语义,然后产出中间表示。这恰恰就是这些系统所运行的规划阶段:Rigorix的意图分类对应解析,参数抽取对应语义分析,DAG生成对应代码生成。工作流脚本就是那份IR(中间表示)。后端接着做后端该做的事:调度并行、强制执行资源上限(Claude Code把一次运行限制在最多16个并发智能体、总共1000个2),并做记忆化缓存。由此引出四个推论。

计划会获得构建缓存。 恢复语义就是增量编译。Claude Code在恢复时返回缓存的智能体结果;Temporal向智能体开发者兜售的卖点是,从失败点恢复能省下token,而不必重跑模型去重新生成已丢失的工作。5 下一步是内容寻址的计划阶段:重跑一个前段未发生变化的工作流时,会像make跳过未变化的目标文件那样跳过这些阶段。

计划会被做差异对比。 工作流文档鼓励你把某次运行的脚本与上一次运行的脚本做差异对比。2 一旦计划成为文本,计划漂移就会像代码漂移一样变得可见,”这次迁移的编排自上个季度以来发生了变化”也就成了一次可以在pull request里审查的事件,而不再是一场翻遍对话记录的考古行动。

计划成为审查界面。 在工作流运行之前,Claude Code会展示规划好的各个阶段,并在你同意之前提供”查看原始脚本”的选项。2 这一环正好与审查的发展方向相衔接。我曾论证过,被智能体取代的是审查者,而不是审查本身:人的工作从检查差异,转移到了对意图负责。被编译出来的计划,正是那份重新安置后的审查得以发生的产物,因为它是执行尚未花费任何东西之前,意图唯一清晰可读的地方。你没法审查一万个实时决策,却可以审查一段四十行的脚本。可以预见,对大型智能体操作的签字批准,将从事后批准差异,迁移到事前批准计划。

漂移触发的是重新编译,而不是打补丁。 当一个已编译的计划因为世界发生了变化而失败——某个API被改了名、某个依赖被升了级——错误的做法是手工去改那张DAG。那等于是在给目标代码打补丁。正确的循环是重跑前端:相同的意图,全新的环境,重新生成的计划。持久化执行环境已经能在产物内部用重试吸收掉瞬时故障;而环境漂移则是那类会逃逸到编译器层面的故障。各类代理框架将长出漂移检测器,像构建系统让缓存失效那样让计划失效,而”漂移即重编译”也会成为一条常设的循环,而非一次手工救火。

两种模式各自的取胜之处

维度 实时自主(模型在循环中) 编译式执行(产物在循环中)
任务形态 前所未有、地形未知 形态已知、反复运行
故障处理 罕见错误获得新鲜的判断 预料之中的失败确定性地重试
成本特征 每一步、每一次运行都要完整推理 在规划时推理一次,执行则廉价
可审计性 一份事后需要重建的对话记录 一段脚本外加可在事前事后检视的日志
可重复性 重启意味着重新决策 重放,且已完成的工作已被缓存
判断 当下的,即时施加 冻结在编译那一刻
胜出场景 探索、调试、决定自己想要什么 迁移、审计、回填,以及任何要运行两次的事情

这张表画的是一条边界,而不是一个排名。边界以下的一切,都即将变得便宜得多、也可信得多。边界以上的一切则依然昂贵,因为它本就该昂贵。

编译换不来的东西

有三样东西始终是实时的,假装不是这样,正是这套模式会被过度吹嘘的方式。

探索。 在一个陌生的代码库里,或面对一个真正全新的问题时,计划本身就是发现的过程。此时还没有什么可编译的,因为决策就是那份工作本身。在理解之前就编译,只会产出一件自信满满、却装满了你无知的产物,而执行环境会一丝不苟地把它跑完。

罕见的错误状态。 一个已编译的计划,只能处理它的作者预料到的那些失败。重试策略是对预期麻烦给出的确定性答案。当麻烦出乎意料时,确定性的重试就成了一个死循环,而不是修复,正确的做法是把问题上交回前端,让模型能够看着真实的错误去思考。

品味。 工作流是被冻结在编译那一刻的判断,而被冻结的判断会老去。草率执行的新鲜判断,胜过完美执行的陈旧判断,因为陈旧的那一版会自信满满地失败。没有人该去编译”产品应该给人什么感觉”这样的决定。

还有一条警示,要从验证那一侧一并带过来。一张DAG就是一个检查界面,凡是计划遗漏的东西,都会悄无声息地不再属于这份工作——正是同一种机制,让可见的测试变成了事实上的规格。编译把模型对一个任务的全部判断浓缩进一件产物,这也就把人的工作浓缩成了对那件产物负责。计划一旦编译,审查并不会消失。它转移到了规划阶段,并且只拿到高杠杆的一页来施展。

我的立场

我现在奉行的准则很简单:任何任务的第一次执行都是研究,值得交给一个实时智能体;第二次执行则是构建,值得交给一件产物。Claude Code把这条准则做成了UX:让Claude把工作流写一次,把这次运行的脚本保存为一条命令,然后永远重跑它。2 Rigorix把它做成了治理。Temporal把它做成了基础设施。LangGraph则早在数年前,就把它当作一个没人读作宣言的API动词交付了出来。

智能体想要编译,原因和当年程序员想要编译一模一样。决策昂贵而珍贵。执行则应当无聊、可检视、且能随意重复。整个行业花了2024和2025两年,证明模型能够决策。而2026年的功课,是确保它们只需决策一次。

要点回顾

  • 第一次运行是研究,第二次运行是构建。 用实时智能体去跑一个全新任务;一旦它开始重复,就把它冻结成一件产物,不再为一个已解决的问题反复购买新鲜的判断。
  • 先编译那无聊的80%。 发布杂务、迁移扫荡、翻译批处理、审计流程:高度重复、验证成本低廉。探索、调试和品味则保持实时。
  • 采纳”漂移即重编译”的循环。 当一个已编译的工作流因为世界发生变化而失效时,不要手工去给产物打补丁。把模型送回去,针对新的现实重新生成计划,审查差异,再次冻结。
  • 审查计划,而不是对话记录。 一旦执行变得确定,计划就是整个系统中杠杆最高的一页。像读一份迁移脚本那样去读它,因为它本来就是迁移脚本。

常见问题

AI智能体”编译自己的计划”是什么意思?

意思是,智能体的产出是一件确定性的、可检视的产物——一段工作流脚本或一张DAG——而不是一连串实时动作。模型在规划阶段完成推理并产出这件产物;再由一个非模型的执行环境,以重放、恢复和审计的语义来运行它。Claude Code的动态工作流(一段由模型编写、由执行环境运行的JavaScript脚本)和Rigorix(把自然语言任务编译成可执行DAG)都是已经落地的例子。

AI工作流和AI智能体有什么区别?

Anthropic在2024年给出的经典定义:工作流是”LLM与工具通过预先定义的代码路径被编排起来的系统”,而智能体则”动态主导自身的流程与工具使用”。2026年的更新在于,这条边界正从两个系统之间的一次选择,变成一个系统内部的一个阶段:智能体在规划阶段动态地跑一次,并亲手生成那些预先定义的代码路径。

编译式的智能体工作流比自主智能体更好吗?

对于重复的、形态良好的任务,是的:编译式工作流每次运行更便宜,可借助缓存结果恢复,并且在执行之前就能审查。而对于探索、罕见的错误状态和需要判断的抉择,则不是:编译式计划是冻结在编译那一刻的判断,而这些任务需要即时施加的判断。实用的分界线在于运行次数:让第一次运行保持实时,把任何要运行两次的东西都编译起来。

如今有哪些工具能把智能体意图编译成确定性产物?

截至2026年7月,有四个经过核实的例子。Claude Code动态工作流:模型写出一段JavaScript编排脚本,由执行环境运行,保存下来的脚本会变成可复用的命令。Rigorix:一个开源的Rust执行环境,把自然语言任务编译成DAG,并在策略、预算和权限的约束下运行。LangGraph:图必须先编译才能运行,并在超步(super-step)边界设置检查点。Temporal:持久化执行的工作流,能持久保存智能体的进度,并从失败点恢复。

参考来源


  1. Anthropic,《Building Effective Agents》,anthropic.com/engineering/building-effective-agents(2024年12月19日)。将工作流定义为”LLM与工具通过预先定义的代码路径被编排起来的系统”,将智能体定义为”LLM动态主导自身流程与工具使用、并始终掌控如何完成任务的系统”,并建议”对于定义清晰的任务,工作流提供可预测性和一致性;而当需要大规模的灵活性和模型驱动的决策时,智能体是更好的选择”。 

  2. “Orchestrate subagents at scale with dynamic workflows”,Claude Code文档,code.claude.com/docs/en/workflows(访问于2026年7月)。动态工作流是”一段大规模编排子智能体的JavaScript脚本”;”工作流把计划搬进了代码。”执行环境在对话之外运行这段脚本,并把它写入一个文件,该文件可被读取、与之前的运行做差异对比、编辑并重新启动;被中断的运行在恢复时,已完成的智能体会返回缓存结果;每次运行最多16个并发智能体、总共1000个;保存在.claude/workflows/中的脚本可作为斜杠命令运行。需要Claude Code v2.1.154或更高版本。 

  3. Rigorix OSS,github.com/arman-jalili/rigorix-oss,以”Show HN: Coding agent that compiles intent into deterministic DAG before running”为题发布,news.ycombinator.com/item?id=48741332(2026年7月1日)。一个采用MIT/Apache-2.0双许可的Rust执行环境,它”把自然语言的开发任务编译成可执行的有向无环图(DAG)”。规划阶段依次运行意图分类、参数抽取,再到DAG生成;执行阶段是一个模板驱动的DAG引擎;治理涵盖风险关口、预算、权限以及HMAC签名的审计信封。其README把它的保证定义为”在相同的模板和策略下,相同的意图会产生相同的执行结构”。 

  4. LangGraph Graph API文档,docs.langchain.com/oss/python/langgraph/graph-api(访问于2026年7月)。节点是”对你的智能体逻辑进行编码的函数”;边决定接下来执行哪个节点;”你必须先编译你的图,然后才能使用它”;带上检查点器进行编译会”在超步(super-step)边界保存检查点”,从而支持可恢复的执行。 

  5. Temporal,《Production-ready agents with the OpenAI Agents SDK + Temporal》,temporal.io/blog/announcing-openai-agents-sdk-integration(2025年7月30日)。被包裹进Temporal Workflows的智能体循环会持久地保存进度:”Temporal会记录应用的进度并存储所有Activity的结果”,因此一个重启后的应用会”从中断处继续”,而不必重跑模型去重新生成已丢失的工作。 

相关文章

检查成了规范

编码代理为测试而构建:预言机分数近乎完美,交付的库却是"死"的。检查所遗漏的,就此不再是任务。

1 分钟阅读

智能体取代的是审查者,而非审查本身

2026年的一篇论文主张编程智能体已经终结了人工代码审查。我运行了它所开出的流程:审查者这一角色正在消亡,审查本身则在迁移。

1 分钟阅读

你的AI智能体写代码的速度远超你的阅读速度

本周有五个研究团队发表了关于同一问题的研究:AI智能体生成代码的速度远快于开发者理解代码的速度。债务积累在你的脑中。

4 分钟阅读