关于遗留系统的论断
更有用的框架是:遗留系统编码了数十年来针对人类速率交互校准的信任假设。这些假设并未被写成策略;它们隐含在超时设置中,在缺乏速率限制中,在「无人使用」的未记录端点中,在拥有宽泛动词的服务账户中,在假定操作员会注意到错误结果的批处理接口中。Agent 并不会创建新的权限。它行使现有权限,却无需那些曾使这些权限可被容忍的摩擦。
这一区别之所以重要,是因为它改变了补救方式。如果问题是目标,答案是边界加固:更多检查、更多签名、更多分段。如果问题是能力错配,答案是在协议边界处限定 agent 被允许做什么,独立于端点技术上支持什么。
当调用方是 agent 时,什么发生了变化
人类操作员会自我节流。他们会感到无聊、怀疑或疲惫。他们在几次失败尝试后就会停止,因为继续的成本上升而预期收益下降。他们不会在表单中枚举每一种参数组合,因为表单很繁琐。他们跳过未记录的端点,因为他们不知道它们存在。这些不是安全控制;它们是人类认知的行为副作用,而遗留资产多年来一直默默依赖它们。
Agent 没有这些副作用。它们穷举枚举并确定性地重试。一个人类会抽样的宽松端点,对 agent 来说变成了一个搜索问题:迭代参数空间,观察响应,缩小集合。该接口是为已知的操作员群体、已知的交互速率而设计的。它没有系统性地探测的调用方的概念,因为在接口被规范时,这样的调用方并不存在。
一个具体的机制使这一点变得可见。考虑一个遗留的 SOAP 或基于表单的服务,它暴露一个查找动词。该服务接受一个标识符,返回一条记录,并记录调用。对于人类操作员,标识符是从工单中键入的。对于 agent,标识符是循环中的一个变量。该服务没有速率限制,因为原始设计假定键盘前有一个人;日志被写入但未被聚合;响应按标识符缓存,这意味着 agent 可以区分「未找到」与「找到但为空」,并将这一差异用作预言机。这一切都不需要 agent 破坏任何东西。它只需要 agent 按规范使用接口,以接口从未预料到的速率。
同样的模式出现在工业和政府资产中:接受作业标识符并返回状态的批处理提交端点,本意用于计划任务但可从服务账户访问的管理动词,在同一网段上解析且没有身份验证的「内部」端点,因为该网段被假定为可信。Agent 不需要聪明。它需要持久,而持久对它来说很廉价。

设计规则:在协议边界处限定能力范围
解决这一问题的控制不是更好的边界。而是在遗留层之前的能力边界,以 agent 实际使用的协议来表达。三条规则使其具体化。
枚举 agent 合法需要的动词,而非端点支持的动词。 一个遗留端点可能支持读取、写入、删除以及一组管理操作。一个汇总记录的 agent 需要对一个定义子集的读取权限。允许列表源自任务,而非端点的表面。不在列表上的任何内容都不可达,即使底层服务会接受它。
将每个动词绑定到速率和爆炸半径,而不仅仅是身份。 基于身份的访问控制回答「谁在调用」。它不回答「调用多少次」或「在什么范围内」。限定到单条记录的读取动词与限定到表扫描的读取动词是不同的能力,尽管两者都是读取。边界应同时携带两者:每个动词的最大调用速率,以及每次调用的最大结果集或受影响记录数。当 agent 超过任一限制时,调用被拒绝而非静默节流,因为静默节流会将能力违规变成 agent 会重试的超时。
将未记录的端点视为对 agent 不存在,即使它们可解析。 遗留资产包含可达但未列出的端点。对于人类操作员,未记录的端点实际上是不可见的。对于枚举的 agent,它是一个候选。边界应拒绝路由到不在 agent 能力清单中的端点,无论网络是否会传递该请求。这是「agent 无法到达它」与「agent 不被允许到达它」之间的区别;后者在网络变化中依然成立。
一个最小清单使形态清晰:
agent_capabilities:
- verb: read_record
endpoint: /legacy/lookup
max_rate: 5/s
max_scope: 1 record
- verb: submit_job
endpoint: /legacy/batch
max_rate: 1/min
max_scope: 1 job
requ

## 这对迁移项目意味着什么
现代化路线图假定威胁模型是人类。它们按业务价值、技术债务和依赖顺序来安排工作。Agent 就绪性是一个独立的工作流,有自己的清单:哪些端点可解析,它们接受哪些动词,哪些服务账户可到达它们,以及其中哪些动词是 agent 为合法任务所需要的。该清单与攻击面地图不同,因为它限定于预期用途而非可达性。
诚实的权衡是,能力范围限定增加了一个必须维护的边界。每个新的 agent 任务都需要更改清单;每次清单更改都是一次审查。这是摩擦,而这正是重点。替代方案是让 agent 继承遗留资产的隐含信任假设,这意味着资产的容忍度变成了 agent 的权限。摩擦就是控制。
第二个权衡是覆盖范围。遗留层之前的能力边界保护遗留层。它不保护 agent 自己的工具、其凭据,或 agent 下游写入的系统。在边界处限定范围是必要的,但不充分;它是解决此处描述的特定错配的最廉价控制。
最廉价的近期控制是遗留层之前的出口和动词允许列表。它不需要重写遗留系统,也不需要迁移先完成。它需要一份 agent 用途的清单,以及一个强制执行它的边界。这比迁移的工作量更小,而它正是决定迁移关于人类速率交互的假设能否在与 agent 接触后依然成立的那一部分。
## 应保留的框架
遗留系统并非因为 agent 存在而新近脆弱。它们因为 agent 存在而被新近行使,而这种行使揭示了始终存在的假设。修复之道不是围绕静态目标加固边界。而是在边界处,以 agent 使用的协议,限定 agent 能做什么,将速率和爆炸半径附加到动词而非仅身份。这是一个能力问题,而且无需等待迁移即可解决。
_封面照片:panumas nikhomkhai / Pexels。_
