HANRIA Skill v0.2

写给要为智能体的行为负责的人

你的作用域说明哪些系统。它们不说明哪些决定。

作用域与资源策略把自己的事做得很好。它们没有承载的是完整的业务指令 — 这个智能体,为这个目的,最多可以花多少,只能发布到哪里,以及必须在哪里交给人来决定。技能可以读取这条指令。但目前没有任何东西迫使真正执行的路径去查阅它,或在查阅后遵守它。

写给必须为智能体的所作所为负责的人,而不是写给智能体本身。它陈述一种主张,并不提供服务。不提供服务或受理渠道;评估咨询的联系方式见现有边界

问题

失败条件不是一个,而是四个。

自主执行中的问责缺口通常被当作一个问题来谈。把它读作四个更为恰当,因为每一个都需要不同的机制:

归属失败

在贡献无法追溯之处,过错无法归属;而在过错无法归属之处,没有任何参与者有动机去防止它。责任消散在组合之中。

权限漂移

这是许可系统最难察觉的失败方式,因为在每一个单独步骤上系统都表现正确,每一次检查都通过。然而总体却落在授权范围之外。

评价俘获

当判断某一行为是否可接受的部件,正是想要采取该行为的那个部件时,这个判断不具备独立的分量。

救济真空

一个未经授权的结果,若没有任何提出异议、申诉或补救的途径,那就不是一个被治理的系统。它只是一个尚未失败的、没有边界的系统。

这四个条件来自关于自主本地智能体运行时的制度性要求的已发表学术研究。它们构成问题的框架,而不是 HANRIA 所能闭合的清单。准确地说,已发布的技能记录每一次判断由哪一条款支配 — 这是判断的记录,而不是跨多个智能体的贡献记录。它对每个行为单独求值,行为之间不保留状态,因此只在总体上才显现的漂移超出它能够察觉的范围。当运营者独立地写下授权书时,评估器所应用的标准并非智能体自己挑选的 — 这是对评价俘获的部分回答,而且仅仅是部分:技能不检查授权书由谁写成,而一次建议性的核查并不是控制。救济与补救则完全未被触及 — 见下文。

既有轨道为何无法闭合

限制受众并不是指定权限。

当前的智能体授权工作集中于确保令牌被呈递给正确的服务且不被转交 — MCP 授权规范要求显式的 resource 参数并禁止令牌透传,这是针对一类真实混淆的实质性进展。

但这与运营者面对的问题不是同一个问题。限制凭据可以在哪里使用,并没有表达持有者可以用它做什么、基于谁的授予、在什么限度之内、以及该授予如何被收回。那才是权限的指定,而且是更早的想法 — 能力(capability)文献自 1980 年代起就主张,权限应当随对象引用传递,而不是随调用者的身份传递。

支付与结算轨道存在同样形状的缺口。它们转移价值。至于在智能体发起的交易背后,它们表达了多少受委托的权限、策略上下文或软件路径,各家差异相当大。

它实际的样子

一份授权书,四个拟议操作。

运营者用自己的话和条款写下授权书:读取目录、向我们自己的目录 API 发布、除此之外都不可以 — 而退款,或任何触及凭据的事,是运营者的决定而非智能体的决定。随后每个拟议操作都对照它接受核查。

已发布评估器的真实输出(输出为英文)
拟议操作答案评估器的说明
读取 /srv/catalog/2026-09/sku-4417.jsonpermit条款 c2-read-catalog 适用
https://partner-sync.example/ingest 发送 POSTdeny没有条款匹配,因此适用授权书的默认值;最接近的是 c3-post-to-our-api — 目标不匹配任何被许可的前缀
向目录客户退款 40 美元escalate条款 c4-small-refunds 允许此项,但 transaction 始终需要人
向目录客户退款 250 美元deny最接近的是 c4-small-refunds — 金额 250.00 超出上限 50.00 USD

这是技能,它是建议性的。denyescalate 的意思是它拒绝建议继续,并把该判断追加到一份本地日志中。这里没有任何东西被阻止 — 智能体仍然持有它原本拥有的一切访问权。

这张表里有两点在起主要作用。上限收窄的是可以提出的请求,而不是移除那个人 — 40 美元的退款在限额之内,却依然会停下。而当没有任何条款匹配时,答案会指出最接近的条款以及它为何未能匹配,这通常正是你需要看到的。

授权书能触及的范围

它约束所请求的事,而不是智能体已经持有的东西。

授权书陈述的是用来核查拟议操作的边界。它无法约束智能体已经拥有的东西。

权限授权书可以表达什么今天实际发生什么
数据访问哪些路径前缀可以读取或列出被核查并记录
发布可以向哪些目标发送被核查并记录
支出按条款设定的上限,附带币种被核查并记录
第三方联系指名交易对手,并以前缀限定目标被核查并记录
凭据凭据的使用永远不会返回 permit — 仅此而已若有许可条款匹配则为 escalate,否则为 deny

每一行都是被核查并记录,因为技能所做的就只有这些。表中没有任何一项被阻止。阻止需要那个排他地持有凭据的层,而该层尚未发布。

最后一行是诚实的那一行。授权书可以让凭据的使用永远够不到 permit,而评估器对于看起来含有可识别凭据材料的请求,会拒绝建议继续 — 这是一种识别常见形态的启发式方法,不可能完备。二者都不能阻止智能体使用它已经持有的令牌。

答案的形状

四个层,其中只有一个能够拒绝。

  1. 智能体

    计划、协商并提出请求。它不是安放控制的地方,因为其上下文中的任何东西都可能被覆盖。

  2. 技能

    已发布 — 免费、MIT、今天即可安装。使授权书变得明确,对照它核查拟议操作,并记录判断。建议性 — 这是分发与集成层,不是安全产品。

  3. 运行时

    存在于 Rust 源码中,未发布。排他地持有凭据与工具,因此是唯一真正能够拒绝的层。相关机制已在一个你无法从这里查看的私有源码树中实现并测试 — 源码中存在并不等于受理、集成、部署、持久性或发布:失败即关闭的准入、封闭的任务生命周期、仅追加的事件链、按纪元单调的撤销、一次性随机数拒绝重放,以及没有具名的人做出决定就无法推进的特权操作类别。

  4. 更远处

    机群管理、证据留存与托管运营未端到端实现。没有任何可获取之物。

起支配作用的原则,也是免费层被刻意做成较弱那一层的原因:技能请求权限,只有运行时能够执行它。提示词或 Markdown 技能无法阻止绕过,任何告诉你相反说法的供应商,卖给你的是对控制的描述,而不是控制本身。

一切实际所处的位置

三种状态,之间没有任何中间地带。

已发布意味着现在即可安装、免费、MIT。存在于 Rust 源码中,未发布意味着它以代码和测试的形式存在于一个私有代码树中 — 源码中存在并不等于受理、集成、部署、持久性、验证或发布,而且你无法获取或查看其中任何一部分。未端到端实现意味着一个设计方向,没有任何可获取之物。

能力状态
写下授权书;对照它核查拟议操作已发布
给出 permit / deny / escalate 并指明所依据的条款,无匹配时给出最接近者已发布
哈希链式判断日志;验证链的完整性,并对照保留的头部检查末端截断已发布
当请求或授权书看起来含有可识别的凭据材料时返回 deny已发布
失败即关闭的准入存在于 Rust 源码中,未发布
拒绝未定义转换的封闭任务生命周期存在于 Rust 源码中,未发布
仅追加的事件链存在于 Rust 源码中,未发布
按纪元单调的撤销,无宽限期存在于 Rust 源码中,未发布
一次性随机数拒绝重放存在于 Rust 源码中,未发布
需要具名的人做出决定的特权操作类别存在于 Rust 源码中,未发布
真正拒绝一个操作 — 排他地持有凭据存在于 Rust 源码中,未发布
已公开的记录格式与独立的验证器未端到端实现
对混淆代理与提示注入的抵抗力未端到端实现
检测只在总体上才显现的漂移未端到端实现
救济:异议、申诉、补救未端到端实现
机群管理、证据留存、托管运营未端到端实现

中间一档的内容仅以源码和测试的形式存在,仅此而已。它不是产品,你无法部署它,也没有第三方验证过它。最下面一档的内容并不存在。

什么必须为真

反对意见,由我们自己陈述。

评估此事的运营者应当掂量真正缺失的东西,所以这里不待催促地列出:

存在的是一个可用的免费技能、一个经过测试的执行内核,以及关于哪一层必须持有凭据的一个明确论点。这是一个被诚实描述的早期立场,不是一个产品。

接下来会怎样。

技能已发布,今天就能用;安装只需一条命令,也不让你承担任何义务。 从那里开始 → · 现有边界 → · 源码 →

这个页面上没有任何东西可供购买,也没有任何名单可加入。如果你想知道这件事是否已经与你相关,答案已经在这个页面上:重读反对意见。无论如何都是同一份清单,而那正是我们必须能够逐条划掉的东西。

不提供服务、业务、试点或商业关系。不提供服务或受理渠道;评估咨询的联系方式见现有边界