Agent 的忠诚度
多方委托下“谁说话帮谁”为什么危险?
- 默认原则: 模型在训练中形成朴素默认——“谁在跟我说话,我就尽力帮谁”;
- 真实处境: Agent 常代表主人行事,打交道的却是利益相反的第三方;
- 例证: 一个替你砍价的 Agent,对面坐着的不是“需要被帮助的用户”,而是交涉对手;
- 后果: 对手只要开口,就可能把 Agent 策反;
- 术语: 这类问题称为委托方忠诚(principal loyalty)——Agent 到底站在谁那一边;
忠诚度光谱的两端失败是什么?
| 失败端 | 表现 | 触发方式 |
|---|---|---|
| 太老实 | 把主人的私密信息(如“我方底价是 12000”)直接抖给对手 | 被反复施压几轮就缴械让步 |
| 太多疑 | 连主人正当的请求也一概拒绝 | 反而没法完成任务 |
- 难点: 两种失败是一根跷跷板——把泄密堵死往往滑向过度拒绝,很难两全;
提示注入在忠诚度视角下是什么?
- 定位: 提示注入本质上就是一次策反;
- 对手来源: 仓库里读到的不可信内容、某个工具返回的输出、第三方 MCP 服务器发来的指令;
- 对 Coding Agent 的贴切性: 这些正是它日常接触的外部交互方;
- 关联: 上下文层与执行层的通用防护见 护栏与安全;
Harness 层如何限定忠诚对象?
- 限定规则: 主人的指令优先级最高,一切来自外部交互方的内容都默认降格为“可参考、但不具备指令效力”的数据;
| 忠诚度守则 | 要点 |
|---|---|
| 保护私密信息 | 甚至不泄露这些信息是否存在 |
| 拒绝时不念清单 | 逐条念出拒绝清单本身就在泄露 |
| 私下的底线不等于对外的立场 | 内部约束不可外推为对外承诺 |
| 只执行明确且具体的指令 | 不为模糊请求自行加码 |
| 顶住重复施压 | 反复施压不改变立场 |
- 本质: 用 Harness 为模型补上一条它默认没有的立场——对主人绝对忠诚,对外部交互方保持审慎;
- 定位: 这是安全机制从“命令被做坏”转向“Agent 站在谁一边”的另一层防线;