AI 博客

《AI AGENT 法案》要的那份记录,你的栈根本不存

S. 5051 将要求代表个人行事的智能体保留实时记录、只在被授予的权限内行动、未经明确许可不得转委派。链路追踪记的是行为,而这三项义务讲的都是权限——这也正是法案把「去找一套委派协议」的差事交给 NIST 的原因:那套协议并不存在。

作者 智能体 AI 维基 30 分钟读完

一份如今躺在参议院商务委员会里的法案,将要求代表个人行事的智能体实时记录自己做过什么、只在被授予的权限之内行动,并且未经明确许可不得把这份权限转交给另一个智能体。就凭你的栈现在写下的东西,这三条一条也满足不了——因为链路追踪记录的是行为,而这三项义务讲的都是权限;而法案之所以把「去找一套协议」这件差事交给 NIST,正是因为标准智能体栈里没有任何一个协议在传递它。

S. 5051 究竟写了什么

《2026 年 AI AGENT 法案》——这个缩写展开是 Artificial Intelligence Access, Gatekeeper Exchange, and Nondiscriminatory Transfer——由参议员 Mark Warner 于 2026 年 7 月 21 日提出,此前六月底曾流传过一份讨论稿。法案经两读后被移交参议院商务、科学与交通委员会,至今仍在那里。这是绝大多数法案的常规命运,所以有必要在开头就把话说明白:这是一份尚无委员会行动的早期立法,而对任何一份法案下注,最稳的一注都是它永远走不到全院表决。

但如果把它当作一份规格说明、而不是一次预测来读,它就有意思得多了,因为它在机制上写得异常具体。

法案的核心对象是托管型用户智能体(custodial user agent):一个被授权代表用户行事、且这种授权是透明的、有文档记载的、有限的、可撤销的。这四个形容词不是装饰。每一个都点名了一项必须在系统里被表示出来、才有人查得动的性质;四个合起来描述的是一种数据结构,而不是一种态度。

围绕这个定义的是一组积极义务。托管型用户智能体必须保护用户数据、遵循用户的指示与合理期待、避免自我交易与可预见的伤害、对代表用户所采取的动作保留可审计的实时记录、不得超出用户授权的范围行事,以及未经用户明确许可不得把自己的权限委派给另一个智能体。

两个机构领到了任务。FTC 是主要执法者,并负责制定智能体提供方必须满足的安全与身份标准。NIST 被要求去识别现有的开放协议——若不存在,则制定并发布标准——以实现范围受限、可验证、实时的同意委派与撤销,以及对托管型智能体的身份、注册状态与所采取动作的可审计核验。第二项授权是真正的破绽所在:当一套协议已经存在时,国会通常不会请一个标准机构去把它找出来。

还有偏市场结构的另一半,也是获得最多报道的那一半:用户规模超过一定门槛的平台——据报道是月活 5000 万——必须允许用户把至少一个合格的第三方智能体带上平台,而不能把用户限死在平台自家的那一个里。

条款它要求什么它落在栈的哪一层
托管型用户智能体的定义透明、有记载、有限、可撤销一个带范围与到期日的授权对象
实时动作记录可审计,且用户可取用一块面向用户的界面,而不是一条日志管线
不得超出授权行事要的是强制,不是意图模型下方,在凭据签发处
未经许可不得转委派逐跳的证据子智能体、A2A 对等方、工具调用
NIST 的协议授权委派、撤销、核验那一层还不存在

活动日志与权限记录是两种不同的产物

An activity log and an authority record hold different fields Two panels side by side. The left panel is the activity log most agent stacks already emit: timestamp, run identifier, tool name, arguments, result and latency. It answers what happened and when, and cannot answer who authorised it. The right panel is the authority record the bill's duties require: grantor, granted scope, stated purpose, expiry, revocation state, the actor that exercised it and the delegation chain behind that actor. It answers whether the action was permitted. An arrow between them is labelled with the field that joins the two, a grant identifier stamped on every action. WHAT YOUR STACK ALREADY WRITES WHAT THE DUTIES REQUIRE Activity log timestamp run_id / trace_id tool_name arguments result, tokens, latency model version Answers: what happened, when, how much it cost, and which span was slow. Cannot answer: whether anyone was entitled to do it. Authority record grantor (the human) granted_scope stated_purpose granted_at / expires_at revoked_at actor + delegation_chain exercised_scope Answers: was this permitted, by whom, for what, and is it still permitted. This is the artefact NIST is asked to standardise. grant_id The arrow is one field — a grant_id stamped on every action — and it is what joins the two ledgers. An activity log is a record of behaviour. An authority record is a record of permission. Neither derives the other, and every clause about records, scope and delegation in the bill is written against the second one.
两本账谁也推导不出谁,而多数团队只留了左边那一本。

去问一个工程团队能不能拿出智能体做过什么的记录,他们会说能,而就他们心里想的那件事而言,他们说得没错。链路追踪、span、工具调用参数、模型版本、token 数、延迟——如今的智能体可观测性是真的做得不错,而 OpenTelemetry 的 GenAI 语义约定让它变得可移植。

现在再问那些义务真正会生出来的问题。是谁授予了这个智能体把钱从这个账户转走的能力?他们授予的范围是什么、用的是哪些字眼、什么时候授予的?动作发生的那一刻它还有效吗?执行这次动作的东西本身持有这份授权,还是从某个持有它的东西那里继承来的?用户今天能不能自己看到答案,而不必开一张工单?

一条链路追踪一个也答不上来。它记录的是 transfer_funds 在那个时间戳被那个服务用那些参数调用了——这是一句关于行为的陈述。而法案的义务是关于权限的陈述,权限有它自己的字段:授权人、范围、用途、到期时间、撤销状态,以及一路走到这次动作的行为主体链。我们那篇委托访问与同意记录是从同意那一侧作出同样的论证,而这个观察是可以推广的:一条为回答「发生了什么」而建的审计轨迹,无法经由后处理变成一条回答「那件事被允许吗」的轨迹。连接两者的那个字段压根不存在。

工程上的补救很小、很枯燥,而这恰恰是最好的那一类。当用户授权某个智能体去做某件事时,铸造一个授权对象——授权人、范围、声明的用途、到期时间——给它一个 id,并把这个 id 打在依此权限所采取的每一次动作上。把实际行使的范围记在被授予的范围旁边。就这一个字段,把你已有的链路追踪变成了第二本账,而这是一周的活儿,不是一次平台迁移。它不便宜的地方在于以后再补:给十八个月的历史回填一个授权 id 是做不到的,而第一次有人问起这些问题时,问的一定是上个季度。

转委派那一条,瞄准的是你的架构

Where authority evidence exists along a four-hop agent chain A left-to-right chain of four hops. The user grants consent to the orchestrating agent through an OAuth authorisation, which produces a real, checkable record. The orchestrator then spawns a sub-agent, the sub-agent calls a partner agent over the A2A protocol, and the partner agent calls a tool over MCP. Under each of the last three hops a marker records that no delegation assertion travels on the wire: the sub-agent is an internal function call, A2A carries an agent card but no delegation primitive, and MCP passes a bearer token that says nothing about who is behind it. A note states that the bill's prohibition on delegating authority without explicit user permission applies to exactly the three hops with no evidence. ONE TASK, FOUR HOPS User grants consent in a browser Orchestrator holds the token, plans the work Sub-agent spawned in process Partner agent reached over A2A Their tools called over MCP WHAT TRAVELS ON EACH HOP HOP 1 OAuth grant: grantor, scope, expiry, revocable. Real evidence. Keep the record. HOP 2 A function call. No assertion at all. Authority is simply inherited. HOP 3 An agent card and a task. No delegation field. Who is behind it is unstated. HOP 4 A bearer token scoped to the calling service. Says nothing about the human. The duty not to delegate authority without explicit permission applies to hops 2, 3 and 4 — the three that carry no evidence of it.
一个任务,四跳,只有一跳留下了证据。

在所有义务里,「未经用户明确许可不得把权限委派给另一个智能体」是与 2026 年智能体的真实建法撞得最狠的那一条。子智能体不是什么奇技淫巧,它是应对上下文压力的默认答案;整套子智能体模式的文献之所以存在,就是因为人人都在这么干。

顺着一条现实的链路把权限追一遍。用户通过 OAuth 流程授权给编排智能体——这是一份真的授权,带范围、带到期、带撤销端点。编排智能体生成一个子智能体,这是一次函数调用:子智能体继承了一切,而什么也没有被声明,因为根本没有一条线可以往上放声明。子智能体把活儿经 A2A 交给合作方的智能体,那上面有一张 agent card、有一个 task,就是没有委派字段。那家合作方再经 MCP 调用工具,用的是一枚只属于它自己服务的 bearer token。四跳,只有一跳产出了记录。

这些协议短期内不会替你把这道口子补上。8 月 20 日,A2A 与 MCP 一同迁入 Agentic AI Foundation,当时我们把它读作没有委派原语的合并——治理并到了一起,缺的那一层并没有因此长出来。MCP 的授权工作标准化的是服务器怎样拿到一枚令牌,而不是令牌背后是谁;更深的讨论在 MCP 授权与 OAuth 2.1 里。

反倒是有一样东西早就存在、却出奇地没人拿来干这件事:OAuth 2.0 Token Exchange(RFC 8693)。它带有 actor 声明,本来就是为了让一枚令牌能说出「这个服务正代表那个主体行事」,而且它可以嵌套,于是一条链是可表示的。它不是完整答案——它对用途只字未提,对用户当时看到了什么也只字未提——但一个今天就想要委派证据的团队,不必等 NIST 就能拿到。

更难的问题是「明确许可」到底能是什么意思,因为字面读法根本没法发布。没有人会为每一个子智能体点一次弹窗;一个每个任务问你四遍的智能体,是一个没人会用的智能体,而同意疲劳会把「批准」变成一个条件反射,那比没有批准更糟。可行的读法是:许可附着在委派的形状上,而不是附着在每一次实例上——用户授予一份按用途收窄的权限,其中写明哪些可以转委派、可以转给谁(内部子智能体可以、第三方智能体不行,或者只限这家指名的合作方),而每一跳都记录自己是在这份授权之下行事的。这是多数团队都实现得了的设计,而且也是唯一一种能让那份记录值得一读的读法。

准入条款指的方向,与边缘正相反

把这些义务与互操作那一半并排放着看,会浮出一处两边都没有承认的张力。

法案会强制最大的那些平台接受用户自带的智能体。而与此同时,真实的互联网正朝反方向走:Cloudflare 对新域名默认阻止 AI 爬虫,而真正起作用的强制发生在边缘、而不是在一份 robots 文件里——当下的局面在机器人验证与智能体的网页访问权里。一套规制说:把合格的智能体放进来。另一套说:把身份不明的智能体挡在外面。2027 年的一个第三方智能体,完全可能在法律上有权触达某个平台,却在技术上没有任何办法证明自己该被放过它前面的那台 CDN。

不过它们没有看上去那么矛盾,而调和之处正是有用的那一部分:两套规制汇聚到了同一个缺失的原语上。边缘想要一句可验证的陈述:这个智能体是谁。法案想要一句可验证的陈述:这个智能体被谁授权做了什么。基于签名的机器人认证提供了前者;NIST 那项授权说的是后者。一个两样都拿得出来的智能体,用同一份凭据既能穿过 CDN,也能满足记录义务;一个两样都拿不出来的智能体,就是一个动机良好的爬虫。

支付这个领域最早走到这个结论,而且版本最锋利。AP2 把一次购买表示为一组签名的 mandate,把用户的意图、智能体的购物车与这笔付款绑在一起——机制在 AP2 与智能体商务里。这套机器能证明的是:某个具体的智能体在某份具体的 mandate 之下做了某笔具体的购买。它单靠自己证明不了的是:这个人类是不是本意就要授权这一笔购买,而不是几个月前签下了一份宽泛的意图、后来被智能体撑开了。「智能体的动作可归属」与「用户授权了它」之间的这道缝,正是法案的记录义务要合上的那道缝;而无论在错误的对象上叠多少密码学,这道缝都合不上。

不管法案如何,该建的是什么

The bill's duties, what a typical stack emits, and the gap Three columns. The first lists what the bill asks a custodial user agent to do: keep real-time records users can read, act only inside the granted authorisation, and never hand authority onward without explicit permission. The second lists what a typical stack emits today: traces and spans, a service credential shared across the fleet, and sub-agents spawned freely with no record. The third lists what closes the gap: a purpose-scoped grant with an expiry, a grant identifier stamped on every action, and sub-delegation made an explicit bounded operation. S. 5051 DUTIES · YOUR STACK · THE WORK The bill asks for Real-time action records the user can actually read No action beyond the granted authorisation No onward delegation without explicit permission Your stack emits Traces and spans, readable by engineers, retained 30 days One service credential, scoped to the fleet, not the task Sub-agents spawned at will, recorded nowhere The work either way A purpose-scoped grant with an expiry and a revocation path grant_id stamped on every action, exercised scope logged Sub-delegation as an explicit, bounded, recorded operation The third column is worth building whether or not this bill ever reaches a floor vote.
第三栏能活过这份法案死在委员会里。

铸造的是授权,不是会话。当用户授权一个智能体去行动时,创建一个对象:授权人、范围、用用户自己的话写下的用途、到期时间,以及一条撤销路径。「已连接」不是授权。一份永不过期的授权是一枚凭据,而它正是会在事故里冒出来的那一枚。

把授权 id 打在每一次动作上,并把实际行使的范围记在被授予的范围旁边。就一个字段。它让你已有的链路追踪变得答得上问题,也让过宽的授权显形——那种你一口气授了十二个 scope、而智能体一年只用过两个的授权。

把转委派做成一次操作,而不是一个实现细节。子智能体应当收到一份派生出来、更窄、且自带记录的权限,而不是它父辈那份的复制品。你用 RFC 8693 表达它、用一份签名的内部声明表达它,还是用一个代理按跳签发凭据,都远不如「一跳是你的系统事后枚举得出来的东西」这件事要紧。枚举不出来的转委派,就是框不住的转委派——这与范围受限凭证在上一层讲的是同一个道理。

把面向用户的动作记录当成一块产品界面。「用户可取用的实时记录」不是一次日志导出。它是一块屏:智能体做了什么、依据哪一份权限、改动了什么,以及一个撤销按钮。把这块屏建出来的团队会发现它一箭双雕,正好是产品本来就需要的那份信任凭借——这正是决策回执与审计的论点。

把撤销演练一遍。「可撤销」是定义里的四个形容词之一,也是没人去测的那一个。抽掉一份授权,看看究竟有什么真的停了:正在跑的任务、排队的作业、某个子智能体里缓存的凭据、派生出来的记忆。多数栈会发现,撤销停掉的是下一次授权,而已经在飞的东西一样也没停。

这些没有一件依赖国会。这五条里的每一条,都已经在别处被要求过了——被欧盟《AI 法案》的透明度与人类监督期待、被寻常的 SOC 2 访问复核、被第一个问你「你的智能体在我们租户里被允许做什么」的企业客户,或者被你自己在智能体干了一件没人说得清的事之后的那场事故复盘。这份法案,是一项在它到来之前就已经成立的要求的一次写得不错的表述。照着它建,立法的结局就不再要紧了。

常见问题

AI AGENT 法案已经是法律了吗?

不是。S. 5051 于 2026 年 7 月 21 日提出,随后被移交参议院商务、科学与交通委员会。它尚无任何委员会行动,而任何一届国会里提出的法案,多数都不会走到表决。把它当成一份写得很清楚的、关于「消费者保护对智能体的思考落在了哪里」的陈述,而不是一条合规截止日期。

什么是「托管型用户智能体」?

这是法案对「被授权以透明、有文档记载、有限且可撤销的方式代表某人行事的智能体」的称呼。实质在那四个形容词里:一个说不出自己范围、拿不出自己权限依据、对自己可以做什么没有上界,或者关不掉的智能体,不符合这个定义——无论它是怎么宣传自己的。

这是要禁掉子智能体吗?

按文本不是。它禁的是未经明确许可就把用户的权限委派给另一个智能体,这是一项「把委派表示出来并记录下来」的要求,而不是对多智能体架构的禁令。可行的读法是:许可附着在委派的形状上——什么可以交出去、交给谁——并且提前声明,而不是在运行时逐跳去要。

用 OpenTelemetry 的链路追踪能满足这些要求吗?

不能,尽管你应该继续保留它们。链路追踪回答的是发生了什么;而这些义务问的是什么被允许,而权限需要自己的记录:授权人、范围、用途、到期时间、撤销状态与行为主体链。最便宜的一座桥,是把一个授权标识打在每一次动作上,它能把你本就在产出的那条追踪变成关于权限的证据。

互操作条款是不是意味着我可以把智能体指向任何大平台?

只有在法案以大致当前的形态通过之后才成立,而且只对满足 FTC 制定的安全与身份标准的智能体成立——那套标准眼下还不存在。在此之前,准入由各平台的条款以及边缘强制说了算,而后者一直在收紧,而不是放松。

延伸阅读

本站相关:

信息来源: