工具使用原则
第二部分为智能体的每次调用提供了工作集,使注意力状态以已知成本得以维持,并提供了对照来源核验过的持久证据,但其中构建的一切都不会改变模型之外的世界。第三部分沿着提议转化为实际效果的路径展开:工具调用读取文件、重启服务或发送消息,由此为 H·S·A 中的权限暴露形成闭环。权限既涵盖操作可以读取和发送的内容,也涵盖其可以更改的内容。将客户记录返回到上下文中的只读工具,或具有开放网络路由的沙箱,即使不修改任何内容,也可能泄露数据,因此读取访问同样构成暴露。两个问题决定实际效果是否安全,本部分依次回答这两个问题。第一个问题是调用是否可以发生,以及一旦派发,是否恰好发生一次。第二个问题是,获准调用背后的代码一旦运行,其作用范围能延伸多远。
Principle 8: 类型化操作契约
推论:每个工具的模式、副作用类别及所需授权都存放在运行时拥有的描述符中,而不由发现该工具的协议持有。语法约束解码消除了解析失败,却不能替代验证或授权。被拒绝的提议会向模型返回结构化诊断信息,而跨越边界返回的观测结果在进入上下文之前,会受到范围限制并被赋予类型。
验证与授权决定调用是否可以派发,但它们并不说明派发超时时运行时应当如何处理。
Principle 9: 重试前先确定执行结果
推论:运行时只有在使用端点能够据以去重的幂等键时,或在只读探测表明环境仍处于派发前的状态后,才会重试非幂等操作。如果探测发现中间状态,就应停止自主操作,直至完成恢复;任何执行租约的有效期都必须长于其所保护的超时时限。
即使调用已经获得授权且执行结果已经确定,它运行的仍然是模型选择的代码,而且往往是模型编写的代码。
Principle 10: 在模型下层实施约束
推论:隔离边界的强度取决于其运行的代码、任务持有的权限,以及持有权限的时长。任意原生代码都需要在硬件虚拟化保护下使用独立的客户机内核,而纯计算则可以在无法直接发起系统调用的字节码沙箱中运行。在一条轨迹中,隔离边界内的能力只能逐步收窄;凭据保留在边界之外,由出口代理附加;网络出站访问仅能到达明确指定的目的地。隔离环境通过销毁或快照回滚来重置,绝不能通过原地清理来重置;其启动成本通过维护预备就绪的隔离环境池来摊销,而不是通过削弱边界来降低。
工具调用 将前两项原则融入工具调用循环:每个工具都有描述符,每次调用的授权由运行时决定,派发后先确定执行结果再重试,观测结果在进入上下文前先经过整形。智能体沙箱 从授权所能约束的范围之外展开,将第三项原则落实为能力、隔离边界、每条轨迹专属的工作区,以及出站访问与数据流控制,其代价体现为启动延迟和内存开销。这两章每次都只处理一个操作。一条轨迹会在数小时内串联数百个这样的操作,而在这一时间跨度内使其始终受到约束、获得批准并保持可恢复性,正是第四部分的任务。