事件概述

arXiv 上出现了一篇新论文《Harness as a Language: A Minimalist Agent Framework With Maximal Expressivity》(arXiv:2609.26891,cs.AI),提交于 2026 年 9 月 22 日,共 25 页、3 张图。作者为 Zhening Li、Joshua Liu、Mateja Vukelic、Nicole Shen、Supriya Lall、Amitayush Thakur、Alex Zhang、Omar Khattab、Jonathan Light、Armando Solar-Lezama。

论文的出发点是一个常见现象:现代语言模型 Agent 都围绕 “agent loop” 构建——LLM 置身于一个暴露若干工具的环境,通过反复调用工具并观察输出,自主控制整个工作流。但论文指出,某些工作流当前仍然需要在 agent loop 之外做额外工程,典型如记忆系统(memory systems)和自我改进系统(self-improving systems)。

作者为此构建了一个 LLM Agent 框架 JAZ,用来探究一个”几乎就是 agent loop 本身”的极简 harness,究竟能在多大程度上完成那些专用系统所要完成的任务。JAZ 只暴露一个基于 LLM 的原语 invoke,并提供一组内置 hooks,让程序员可以对流程施加约束与监控。

关键技术点

1. 把 invoke 当作语言原语

论文明确将 invoke 定义为一种语言原语(language primitive):它代表一个函数,而该函数的”实现”在每次被调用时由 LLM 在运行时提供。这个视角是整篇论文的理论动机来源,作者称其设计是”从第一性原理出发”推导的。

2. 两条定义性质

论文称 invoke 是满足以下两条定义性质的最简单循环,是对现有 code-mode agent loop 的泛化:

  1. 可写任意可执行代码:LLM 能够编写任意可执行代码,并且代码中可以包含递归的 invoke。
  2. 所见即环境变量:LLM 能看到的一切——包括传入 invoke 的所有输入,以及它与代码环境之间的交互历史——都是代码环境中的变量。

也就是说,交互历史本身不再是藏在框架内部、只能靠特定 API 访问的隐式状态,而是被显式地暴露为可编程对象。

3. hooks 提供约束与监控

除 invoke 之外,JAZ 提供一组内置 hooks,供程序员施加约束和监控。至于 hooks 的具体种类、数量与调用语义,原文未说明。

4. 实验设置与结果

论文的核心验证方式是”做减法”:在评测 invoke 时,只使用 prompting,不手工设计工具、不额外搭建 harness、也不接入外部系统(例如记忆系统或文件系统),然后把结果与那些传统上依赖专用外部 harness 实现的工作流作对比。

论文报告的两项结果:

  • 长时程工作流(需要超出上下文窗口的召回):在 StuLife 的 recall-heavy 部分上,JAZ invoke 比 Letta(MemGPT)高出 8%,成本只有其一半。
  • 持续自我改进(continual self-improvement):在 AppWorld 上,JAZ invoke 比 ACE 高出 4%,成本更低。

需要注意的是,原文摘要只给出了这两组对比数字,具体的任务构造、评测指标定义、以及”8%/4%”是相对提升还是百分点差异,摘要中未说明。

对数据科学与 AI Agent 落地的意义

第一,harness 的复杂度未必等于能力。 当前 Agent 工程实践里,记忆模块、文件系统、工具集、反思/自我改进循环往往被默认当作”必需品”层层叠加。JAZ 的实验至少在两个具体场景上给出了反例:把一切可见信息统一降级为代码环境中的变量,再用递归 invoke 表达控制流,就能覆盖一部分原本属于专用系统的工作流。对预算敏感、延迟敏感的落地项目来说,”成本减半还更准”这个方向值得关注。

第二,Agent 的可观测性被重新定义了。 当交互历史成为代码环境里的普通变量,日志、审计、约束检查都可以写成普通代码,而不必依赖框架暴露的专有回调。这对生产环境中的可调试性与合规审计是很实际的收益。

第三,递归 invoke 打开了自我改进的表达空间。 AppWorld 上的自我改进对比说明,不用专门搭一套”自省—改写—重试”的系统,也能用原语级别的递归组合出类似效果。对做 Agent 编排的数据科学家而言,这提示我们应优先考虑”表达力在语言层”而非”能力在框架层”。

但也要保持谨慎:论文目前的证据集中在两个 benchmark 的两个子场景上,25 页篇幅说明细节不少,但摘要层面没有给出失败案例、稳定性分析或与更多主流框架的横向对比。极简设计的代价通常体现在易用性、生态和调试体验上,这部分原文未说明。

我的技术点评

这篇论文的价值,与其说是发布了 JAZ 这个框架,不如说是抛出了一个很好的问题:当我们说 Agent 需要”记忆系统”时,我们到底是在说它需要一块外部存储,还是只是需要一种能把历史当作值来操作的表达能力?

把 invoke 类比成语言原语,是很聪明的抽象。它把”LLM 是运行时”这件事推到了极致——函数签名先定,实现每次调用时由模型现场生成。这实际上和 code-mode agent 的思路一脉相承,但两条性质中的第二条(一切可见信息都是代码环境中的变量)才是真正关键的差异化:它把上下文管理从”框架的职责”变成了”程序的职责”。这既带来了表达力,也把责任完全推给了写代码的人。极简 harness 的”最大表达力”,本质上是把复杂度从框架转移到了用户代码里——这在评测里看不出来,但在真实工程里往往是成本所在。

另外让我在意的是评测口径。与 Letta(MemGPT)比召回、与 ACE 比持续自我改进,两个对手分别是两个细分方向的代表,选得很精准;但”8% 和成本一半”这种组合表述,需要看正文才能判断是否在同等预算下比较、是否对提示词做了调优。摘要里的数字更像是”方向性证据”而非”定论”。

总的来说,这是一篇值得精读全文的论文:它可能不会取代现有 Agent 框架,但会让很多团队重新审视自己堆叠的每一层 harness 是否真的必要。

原文链接