NVIDIA 开源框架,用 Python 类建模 Agent:方法即 Action、字段即状态、文档字符串即 Prompt、类型注解即契约。253 行代码达 SWE-bench 82.2%。
NOOA 是 NVIDIA Labs 开源的一个模型无关的 Python 框架,它将整个 AI Agent 压缩成一个 Python 类:方法成为模型可以执行的动作,字段保存 Agent 状态,文档字符串是提示词,类型注解是运行时强制执行的契约。用这种方式构建的一个 253 行 Agent,在 SWE-bench Verified 上使用 GPT-5.5(xhigh 努力级别)得分 82.2%——高于 OpenCode 的 78.6% 和 PI 的 78.2%。它以 Apache 2.0 协议发布,仓库为 NVIDIA-NeMo/labs-OO-Agents。
让这一切生效的技巧在其简单性上近乎粗暴。方法体写成 ...,运行时就会用 LLM 循环填充它;写成普通方法体,它就保持确定性 Python。一文件、一类,"模型决定"和"代码决定"的边界就是一行语法。
本文涵盖 NOOA 实际如何工作、82.2% 这个基准分数能证明什么和不能证明什么、该抽象与 LangGraph 风格图的对比,以及设计中心那个安全问题。
NOOA(NVIDIA Object-Oriented Agents)将一个 Agent 模型为一个 Python 类——没有图构建器、没有 YAML、没有独立的提示文件。
标记为 ... 的方法体由 LLM 循环在运行时补全;普通方法体作为普通确定性 Python 运行。
一个 253 行的 NOOA Agent 在 SWE-bench Verified 上使用 GPT-5.5 达到 82.2%,使用 Claude Opus 4.6 达到 79.8%——框架在设计上就是模型无关的。
类型注解是强制执行的契约,而非提示,这是大部分可靠性收益的来源。
NOOA 可以执行 LLM 生成的 Python,因此沙箱化是强制的,而非可选项。

NOOA 代表 NVIDIA Object-Oriented Agents。它是一个 Python 框架,由 NVIDIA Labs 开源发布,详见 arXiv 论文 2607.20709,用于将 Agent 构建为普通 Python 对象,而非编排图、配置文件或链。
该框架作为 NVIDIA 推动开放 Agent 基础设施的更广泛举措的一部分发布,与该公司牵头的 37 名成员的 Open Secure AI 联盟同时宣布。Hacker News 于 2026 年 7 月 27 日同时报道了两项举措,详细的框架报道在 8 月初跟进。
核心思想是一个映射,值得精确陈述,因为一切都由此而来:
如果你之前构建过 Agent,注意这里缺少了什么:没有工具注册表、没有你需要手写的 JSON schema、没有独立的系统提示、没有图边。类本身就是所有这些。
你定义一个类,给它加注解,把你想让模型填充的方法体留作 ...。以下是一个最小 NOOA 风格 Agent 的形状:
from nooa import agent, llm
@agent
class TriageBot:
"""Triages incoming bug reports for a Python web service."""
open_issues: list[str] = []
@llm
def classify(self, report: str) -> str:
"""Return exactly one of: 'crash', 'perf', 'ux', 'security'."""
...
@llm
def draft_reply(self, report: str, category: str) -> str:
"""Write a two-sentence acknowledgement for the reporter.
Mention the category. Do not promise a fix date."""
...
def record(self, report: str) -> None:
# Deterministic: no model call, no ambiguity.
self.open_issues.append(report)
def handle(self, report: str) -> str:
category = self.classify(report)
self.record(report)
return self.draft_reply(report, category)
三件事在做真正的工作。classify 上的 -> str 是被强制执行的——运行时不会因为模型想输出一个字典就传给你代码一个字典。文档字符串就是提示词,所以它和方法签名放在一起,而不是漂到另一个文件里。而 record 是普通 Python,所以 append 每次都精确执行一次,无论模型做什么。
最后一点是设计的真正论点。大部分 Agent bug 不是模型故障;它们是编排故障——那些应该是确定性的东西被路由到了语言模型。NOOA 让确定性路径成为默认,模型路径成为显式的 opt-in。
对于控制流自然表达为普通代码的 Agent,是的——NOOA 显著减少了 ceremony。对于确实需要分支、循环和跨多节点可检查状态转换的 Agent,图框架仍然更诚实地模型化问题。
权衡是具体的。LangGraph 将控制流作为一等公民、可检查的对象:你可以渲染图、diff 它,并在运行前推理每条边。NOOA 将控制流隐藏在 Python 方法调用内部,这更易读但更难可视化或静态分析。你获得表达力,失去一张地图。我们在对 AI Agent 框架的指南中详细比较了基于图的选项:LangGraph、CrewAI 和 AutoGen。
还有一个互操作性问题。NOOA 通过方法定义自己的工具表面,而生态系统的很大一部分已经标准化使用 Model Context Protocol 来连接 Agent 与外部系统——参见我们关于 MCP 是什么及其重要性的解释器。框架原生工具符合人体工程学;协议原生工具可移植。NOOA 目前优化的是前者。
NOOA 明显领先的地方是入门曲线。一个从未构建过 Agent 的 Python 开发者可以在不到一分钟内完全理解 TriageBot 类。这对任何图 DSL 都不成立,对于正常工程团队内的采用来说,这比基准分数差异更重要。

它证明了工具质量的价值独立于模型——值得好几个点的基准分数,而且一个非常小的工具可以击败大得多的工具。它不能证明 NOOA 是你生产工作负载的最佳框架。
已发布的对比,来自一个基准无关的 253 行 Agent:
两种解读都是合理的。慷慨的:在相同模型上领先 OpenCode 3.6 分是一个真正的工程结果,用 253 行得到这个结果说明这个抽象确实是减法而非只是形状不同。怀疑的:SWE-bench Verified 是一个 Python 仓库补丁基准测试,其工具分数对脚手架细节非常敏感,"基准无关"是对意图的声明,而非你可以从外部验证的属性。
两个数字都经得起两种解读。GPT-5.5 的 82.2% 和 Opus 4.6 的 79.8% 之间的 2.4 分差距很小。模型无关框架在更换模型时通常会严重退化,因为脚手架是针对一个模型的特性调优的。跨供应商只有 2.4 分的下降是异常小的。对于一个核心卖点是"模型无关"的框架,这比标题数字更有说服力。
如果你在选择编码 Agent 而不是构建 Agent 的框架,我们的并行 AI 编码 Agent 比较涵盖的是已发布的工具。
NOOA 可以被配置为在你的进程内执行 LLM 生成的 Python。NVIDIA 在其自己的文档中明确说明了这一点,推荐的缓解措施是在与主文件系统隔离的沙箱中运行 Agent,例如 NVIDIA OpenShell。
认真对待这一点。能够生成并运行 Python 的 Agent,按照构造,具有读取你进程可读取的任何文件、发出你进程可发出的任何网络调用、删除你凭据允许的任何内容的capability。每一个在 Agent 正常工作时都是特性,在不工作时就是事件。
现实的威胁模型不是恶意模型。是间接提示注入:Agent 读取一个文件、一个 issue 评论或一个网页,其中包含旨在引导它的文本,然后生成根据这些指令行事的代码。这类攻击是 2026 年 AI 安全的主导故事,我们在 AI 编码 Agent 安全:2026 年清算中介绍了它如何针对已发布工具发挥作用。
在真实环境运行 NOOA Agent 之前,最低限度的预防措施:
将执行环境沙箱化——容器或 VM,不挂载你的源代码树,除非 Agent 需要它。
将凭据限制在任务范围内,永远不要限制到开发者。Agent 不应该继承你的个人云 token。
保持确定性方法的确定性。任何涉及金钱、删除或部署的都应该是普通方法体,绝不是 ...。
记录每一个生成的方法体。如果你无法重建模型写了什么,你就无法审计事件。
NOOA 代表什么? NOOA 代表 NVIDIA Object-Oriented Agents。它是一个来自 NVIDIA Labs 的开源 Python 框架,将 AI Agent 表示为单个 Python 类,以 Apache 2.0 许可证发布在 NVIDIA-NeMo/labs-OO-Agents 仓库中。
NVIDIA NOOA 可以免费使用吗? 可以。NOOA 以 Apache 2.0 发布,允许商业使用、修改和再分发。你仍然需要为你指向的模型提供商付费——框架是模型无关的,不包含推理。
NOOA 只适用于 NVIDIA 模型吗? 不。NOOA 明确是模型无关的,NVIDIA 自己发布的结果包括针对 GPT-5.5 和 Claude Opus 4.6 的运行。两者之间微小的性能差距是模型无关主张成立的更强论点之一。
NOOA 和 LangGraph 有什么不同? LangGraph 将 Agent 模型为一个显式的节点和边图,你可以检查和可视化。NOOA 将其模型为一个 Python 类,控制流是普通方法调用。NOOA 更简洁易读;LangGraph 给你一张静态地图,了解 Agent 可以做什么,这对你有帮助。
运行 NOOA Agent 安全吗? 只能在沙箱内。NOOA 可以执行 LLM 生成的 Python,这意味着受损或被误导的 Agent 可以用你进程的权限读取文件、发出网络调用和修改其环境。NVIDIA 建议将 Agent 与主文件系统隔离运行。
什么是 SWE-bench Verified,为什么 82.2% 很重要? SWE-bench Verified 是一个来自 Python 仓库的真实 GitHub Issue 基准测试,Agent 必须生成通过项目测试的补丁。NOOA 在 GPT-5.5 上达到 82.2%,在同一模型上击败了 OpenCode 的 78.6%,这表明无论你插入哪个模型,工具设计本身都值好几个点。
NOOA 是 2026 年发布的最有意思的 Agent 抽象,它有意思的原因是减法的:它移除概念而非添加概念。方法、字段、文档字符串和类型提示是每个 Python 开发者已经理解的东西,将 Agent 映射到它们上面意味着没有框架词汇要学。
当你的 Agent 的控制流自然地读作代码且你想要确定性路径作为默认时,使用它。当你需要可视化、静态分析或在运行前审计复杂分支逻辑时,留在图框架上。无论哪种方式都要沙箱化——执行生成 Python 的框架其强大程度与它可能造成的损害成正比。
最好的抽象让危险的东西变得明确。... 是一个字符,它是整个决策。