近两年,智能体框架越做越重——编排图、外部记忆库、专用工具包装、刚性状态机,层层叠加。MIT CSAIL 的研究者提出 JAZ(出自论文 Harness as a Language,arXiv 2609.26891,2026 年 9 月 22 日),反向操作:把整个框架压成一条递归 invoke 原语,用尽可能少的抽象去承载尽可能多的表达能力。
JAZ 的核心是一个 LLM 支撑的 primitive——invoke。模型可以在一个裸 Python REPL 里写任意可执行代码,代码里又能递归调用 invoke;而所有对模型的输入与交互历史,都是代码环境里的普通变量。换句话说,记忆即状态、工具即函数、编排即递归,三者回归到语言本身,不再需要额外的记忆服务与状态机来搬运上下文。
用「代码即上下文」取代「数据库即记忆」
现有框架常把长期记忆外包给向量库,带来检索延迟与长上下文切片失败;JAZ 把所有交互历史直接暴露为运行时变量,省掉了这批开销。程序化递归则让模型自己派生子智能体、迭代细化任务,不必依赖专门的编排包装。配套的 built-in hooks 允许开发者施加约束与监控,保留了对失控递归的兜底手段,而不是把安全完全交给模型自觉。
评测上,JAZ 只用提示词、不造专用工具、不接外部记忆或文件系统,就去打那些本由专门系统守着的任务。在 StuLife 的长程记忆召回段,它对 Letta(MemGPT)高出 8 个百分点,却只用一半成本;在 AppWorld 的持续自我改进上,它对 ACE 高出 4 个百分点,且成本更低。极简架构在两项基准上既准又省,给「框架税是否必要」抛出了一个有力的反例。
极简不免费:安全与可观测性的包袱
表达力拉满的另一面,是递归执行带来的现实难题。让模型写任意 Python 并自我递归,等于把上下文的读写权整段交给模型,提示注入与沙箱逃逸的风险随之放大;可观测性也成问题——LangSmith、Arize 这类工具能否追清递归调用栈,论文并未给出答案。生产环境落地,必须有严格沙箱与调用栈追踪,否则一次失控递归就可能把整段上下文改写。
把 JAZ 放进近年的框架演化里看,它代表一种「递归转向」:与其用更多中间件去约束模型,不如把循环本身还给语言,让模型用代码管理自己的状态。这套思路并非孤例,越来越多的极简框架在尝试用更少的抽象换取更高的表达力与更低的 token 开销,把「框架税」重新交还给开发者去权衡。它的风险也同样清晰——当约束越少,沙箱与审计的责任就越重地落到部署方肩上,模型的自由度和系统的可控性始终是一组要自己平衡的账。这也意味着框架之争的胜负手,正从「功能多寡」转向「可控性设计」,谁能把自由度关进安全的笼子,谁才配谈极简。
更该持续观察的是:这类「JAZ 式」实现会不会在开源社区冒出专门解决调试缺口的 trace-viewer,以及它能否在企业级错误处理上证明自己。若极简真能在复杂多步推理上压过 LangChain、AutoGen 这类重型栈而不必补回一堆「必要的复杂度」,智能体基础设施会明显向低层原语迁移。目前官方及行业暂未披露更多细节,后续将持续跟进迭代动态。
总体看,JAZ 像一记对框架税的反思:当模型本身足够强,很多外层包装可能只是把模型的不足外包给了开发者。把循环本身当作语言原语,是一次大胆也危险的回归——优雅与否,最终由生产环境的可审计性来裁决。