AI Tools
教程12 分钟2026年7月28日作者:AIGCDev

NVIDIA NOOA 研究预览:AI 智能体运行框架先查哪 6 项

AI 智能体(agent)接入工具、记忆和多步执行后,仍可能丢字段、重复调用,或在长任务中偏离目标。遇到这些问题,先检查运行框架(harness)如何传入上下文、执行动作、保存状态并判定任务完成。

NVIDIA Developer Blog 于 2026-07-27 发布 Six Agent Harness Capabilities for Higher Model Performance,介绍 NVIDIA Labs Object-Oriented Agents(NOOA)。截至 2026-07-28NOOA 代码仓库已经公开,但 CHANGELOG仍把首次公开发布放在 Unreleased 项下。代码和评测方法都已公开,可以直接检查和复现;但 NOOA 仍是研究预览,不能当作现有运行框架的稳定替代品。

现有团队可以用这六项能力审查当前系统:固定输入输出契约和上下文引用,隔离模型生成的代码并收紧执行循环,再把状态显式化,同时限制模型可调用的框架 API。没有固定评测集、完整轨迹和回滚路径时,所有改造都应留在隔离环境。

哪些团队应该先查运行框架

这份清单适合已经有智能体原型、能保存任务轨迹,并愿意用同一模型和任务集比较改造前后结果的开发者或平台团队。单轮回答质量不佳,先查模型、提示词和检索;连基线都复现不了,先补评测和日志。

当前症状 第一检查项
工具结果过长,提示上下文持续膨胀 对象引用与摘要预览
输出字段缺失或格式经常无效 类型契约与返回值校验
长任务丢状态或重复执行 显式状态与事件历史
没有固定评测集或完整轨迹 暂停框架改造,先补基线

先写清四个完成条件:任务成功率是否提升、每个任务的词元(token)是否下降、失败类型是否减少,以及哪些旧任务出现退步。任何一项答不上来,都不要把改造接入生产流量。

NOOA 实际把智能体做成什么

NOOA 用单个 Python 类表示一个智能体。方法签名和 docstring(文档字符串)定义任务与类型边界,字段保存模型可见状态。方法体为 ... 时,运行框架用大语言模型驱动的循环执行该方法;普通方法体则作为确定性代码直接运行。NVIDIA 技术报告详细说明了这套编程模型和评测方法。

Python 结构 NOOA 中的职责
一个类 智能体的能力、状态和提示边界
方法签名与 docstring 类型化输入输出与任务提示
... 方法体 由模型驱动的生成或 CodeAct 循环
普通方法与字段 确定性规则、外部能力和显式状态

CodeAct 循环允许模型编写 Python,在当前对象上调用方法,并操作执行环境里的对象。NOOA 会检查语法树并限制模块,但这些措施无法隔离宿主机。官方要求把会执行模型代码的智能体放进容器、虚拟机或 NVIDIA OpenShell 这类操作系统级沙箱。NOOA 仓库的安全说明还明确列出了文件删除、环境修改和数据外传风险。

下表第二列是 NOOA 的官方机制,第三列是本站给现有生产系统的保守建议,不能把两列当成同一结论。

官方能力 NOOA 机制 现有系统先检查什么
类型化输入输出(typed input/output) 方法参数和返回值经过类型校验 工具参数、返回值和最终答案是否有可执行校验
引用传递(pass by reference) 对象留在执行环境,模型只看有界预览 大对象是否反复序列化进提示上下文
代码行动(code as action) 模型在执行循环中编写并运行 Python 代码执行是否隔离,副作用是否经过确定性门禁
可编程循环(programmable loop engineering) 开发者和模型都可用普通 Python 组织循环 停止、重试、预算和权限是否由系统强制执行
显式对象状态(explicit object state) 类型化状态存在智能体对象上 任务、证据和风险状态是否脱离聊天历史
模型可调用框架 API(model-callable harness APIs) 模型可检查上下文块和事件历史 是否先开放只读查询,再评估写入权限

第一阶段:固定契约和上下文

先处理两类能直接量化的问题:输入输出校验失败,以及大对象反复进入提示上下文。完成后,应该能分别看到结构校验失败率和每个任务的词元变化。

第 1 步:把自由文本边界改成类型契约

只要求模型“返回 JSON”并不等于有了契约。输入、工具结果和最终答案都要经过结构定义(schema)或等价代码校验;校验失败后,把字段级错误交回执行循环,由它决定重试还是停止。

边界 必须校验 失败处理
工具输入 类型、必填字段、枚举值、长度限制 拒绝执行并返回字段级错误
工具输出 成功状态、错误码、关键结果字段 按错误类型重试或停止
最终答案 任务状态、证据、限制、下一步动作 缺少必要字段时不交付

下面的示例只展示字段契约,不是可直接执行的 JSON Schema。字段名和校验器仍要按业务实现。

{
  "action": "create_ticket",
  "input": {
    "customer_id": "string",
    "priority": "low | medium | high",
    "evidence_ids": ["string"]
  },
  "output": {
    "status": "created | rejected",
    "ticket_id": "string | null",
    "errors": ["string"]
  }
}

验收时分别统计结构校验失败、自动修正成功和最终停止的次数。旧系统里只能靠人工读日志发现的格式错误,改造后必须变成可查询指标。

第 2 步:让大对象留在执行环境

NOOA 的引用传递把活动 Python 对象留在执行环境中。模型先看到受限预览,需要完整内容时再调用方法查询。NVIDIA 技术报告把它列为在 SWE-bench Verified 中减少上下文词元的机制之一。

现有系统未必能传递活动 Python 引用,可以先用可审计的对象句柄:

  • 长文档保存为 doc_id,上下文只给摘要、章节索引和可请求片段。
  • 检索结果先返回标题、来源、摘要和证据 ID,不一次塞入全部结果。
  • 表格通过查询函数返回小窗口,同时记录过滤条件和行范围。
  • 日志、图片和二进制保留资源引用,只暴露错误摘要或按需提取结果。

每个对象句柄至少要记录来源和更新时间,还要能查到对象大小、可查询字段与访问权限。上线时同时观察平均提示词元和任务成功率。若成功率下降,先扩大预览或补查询接口。

第二阶段:约束代码和执行循环

让模型编写代码,也会扩大它对文件、网络和进程的操作能力。代码必须先在操作系统级沙箱中执行,开发者再通过外层循环强制执行预算、权限、审批和停止条件。

第 3 步:把模型代码放进沙箱

NOOA 的 CodeAct 策略会在智能体进程内执行模型生成的 Python;技术报告的限制章节说明,进程内校验不能保护宿主机。在生产系统中,模型只负责语义判断和提出动作意图;权限、幂等、审计和最终提交交给确定性代码。

动作类型 模型可以决定 系统必须强制
读取信息 查询对象和条件 权限、范围和返回字段
生成草稿 候选内容 格式、敏感数据和引用检查
修改系统状态 变更意图和参数草稿 幂等、审批、审计和提交
高风险操作 待确认计划 默认停止并等待人工批准

容器或虚拟机至少要限制挂载目录、网络出口、凭证和进程资源。动作失败时,轨迹要分清三类原因:模型或契约错误、权限或策略拒绝、外部系统故障。原因分不清,就不要继续增加工具。

第 4 步:把停止和重试写进程序

NOOA 的可编程循环允许开发者和模型使用普通 Python 组织控制流。生产中可以让模型编排受限的内层步骤,但任务完成、最大步数、费用和高风险审批必须由模型无法绕过的外层程序控制。

  • 完成与停止:列出完成所需的字段与证据,以及最大步数和转人工条件。
  • 重试与预算:只重试暂时性错误,并限制次数、词元、费用和总时长。
  • 工具与权限:按任务阶段开放工具,权限扩大时暂停并重新审批。
  • 上下文与失败输出:规定进入短期上下文的信息,并向用户返回可执行的失败原因。

系统提示词负责解释规则,程序边界负责执行。测试至少覆盖正常完成、可重试错误、不可重试错误和预算耗尽四条路径。

第三阶段:分离状态并限制自管理 API

长任务要把完成条件、证据、工具结果和风险标记保存为可检查状态。先给模型事件与上下文的只读查询能力;只有权限控制、审计和回放都稳定后,才开放写入型自管理 API。

第 5 步:让状态离开聊天历史

NOOA 把显式对象状态保存在智能体实例上,每轮都从活动对象重新渲染公开字段给模型,不靠聊天历史重建。现有系统可以先定义四类类型化状态。

状态 示例字段 用途
任务状态 goalcurrent_stepblocked_reason 选择下一步并判断完成
证据状态 source_idsverified_claimsunknowns 防止重复核验和无依据结论
工具状态 failed_callsresource_refs 控制重试和资源引用
风险状态 needs_approvalpolicy_flagsrollback_plan 阻断未批准的副作用

状态必须能序列化、审计和回放。只写在聊天记录里的计划不算可靠状态;历史压缩或跨会话恢复都可能把它丢掉。

第 6 步:从只读框架 API 开始

NOOA 把上下文块、每轮动态上下文和事件历史暴露为模型可调用 API;开发者可以决定每个智能体能看到哪些接口。按照 NVIDIA 技术报告的定义,这不是普通工具调用:模型可以直接检查和管理自己的工作上下文。

  1. 只读查询:查看事件历史、资源引用和当前状态。
  2. 受限写入:只能添加工作笔记或标记待验证事实。
  3. 记忆候选:允许提交长期记忆候选,由策略或人工决定是否信任。
  4. 生产 API:只开放经过权限、审计和回放验证的操作。

NVIDIA 技术博客介绍的可选长期记忆会记录类型、重要性、标签和关系,并在任务结束后合并重复或冲突记录。这些是官方研究机制,不意味着业务记忆可以自动信任。业务系统仍要保留来源、写入原因、纠错和删除路径。

用同一任务集决定是否放行

NVIDIA 报告称,在 SWE-bench Verified 上使用 GPT-5.5 的 xhigh 推理强度时,NOOA 的通过率为 82.2%,平均每个任务约调用模型 28 次、使用 110 万词元。作为对照,PI 运行框架的通过率为 78.2%,平均调用 66 次、使用 220 万词元。这组结果只适用于报告中的模型、智能体、工具和评测设置,不能当作客服、知识库或运维智能体的收益承诺。NVIDIA 技术报告

指标 记录方式
任务成功与退步 固定任务集,列出旧版成功而新版失败的任务
词元和模型调用 分别统计提示、输出、工具返回和调用次数
结构与工具错误 按校验、权限、外部系统和停止原因分类
轨迹可复查性 审查者能否重放关键动作并定位失败来源

一次只改一类能力,模型、任务集和判分规则保持不变。类型契约稳定后再测对象引用;代码沙箱和外层循环通过故障测试后,才开放状态写入或长期记忆。

生产放行条件

  • 模型生成代码始终运行在受限容器、虚拟机或 OpenShell 中。
  • 访问控制与幂等由确定性代码负责,审批、预算和停止规则也由程序执行。
  • 固定任务集覆盖成功、退步、故障和高风险拒绝,回滚已实际演练。
  • 轨迹能还原模型动作、系统门禁、外部副作用和人工批准。

本文只审查模型与运行框架之间的接口,不替代长任务安全控制或评测集建设。长时间自主任务还要执行长程安全门禁;没有固定任务集时,先按AI Agent 评测集工作流建立基线。模型代码进入真实环境前,再用 NVIDIA OpenShell 与本地 Agent 安全清单核对隔离边界。

FAQ

NOOA 适合直接替换 LangGraph、AutoGen 或自研框架吗?

不建议。截至 2026-07-28,代码已经公开,但仓库还没有稳定版本标签,因此仍应按研究预览使用。先用本文六项能力检查现有系统,再按同一口径评测,决定是否采用 NOOA 的实现。

没有 SWE-bench 或 CyberGym,怎么评估?

使用自己的固定任务集。例如,客服智能体可用脱敏历史工单配合人工判分,代码智能体则用单元测试和审查清单。研究智能体可以按引用准确率和证据覆盖率判分。基线和新版必须使用同一批任务、同一模型和同一判分规则。

记忆系统可以自动写入所有模型结论吗?

不能。自动写入会把错误结论带进后续任务。长期记忆至少要保存来源、时间、写入原因和纠错状态;高风险事实还需要策略或人工确认。

什么时候应该暂停运行框架改造?

遇到以下任一情况就暂停:完整轨迹无法保存、基线无法复现,或分不清失败来自模型还是系统边界。继续增加工具或记忆,会破坏新旧版本的可比性;补齐日志、评测集和最小类型契约后再恢复。

ai-agentsnvidianooaagent-harnessevaluation