外观
第六课:安全边界
目标
理解模型只能提出行动,真正的执行权必须由程序控制。
源码:
运行:
bash
npm run lesson:06审批流程
正在绘制流程图…
敏感工具声明:
typescript
const sendEmailTool: Tool = {
name: "send_email",
requiresApproval: true,
async execute(arguments_) {
return "邮件已发送";
},
};运行时审批:
typescript
approve: async (call) => {
console.log(call.arguments);
return false;
}默认拒绝
typescript
const approved =
(await options.approve?.(decision.call)) ?? false;没有明确的批准函数时,敏感工具默认不执行。
其他安全边界
- 工具白名单:模型只能请求程序提供的工具。
- 参数检查:批准时要查看收件人、金额等具体参数。
- 错误处理:工具失败后把错误交还模型,而不是直接崩溃。
- 最大轮数:超过执行限制后强制停止。
- 权限隔离:不同 Agent 只能看到职责范围内的工具。
常见风险分级
| 工具 | 通常策略 |
|---|---|
| 查询公开天气 | 可直接执行 |
| 读取内部资料 | 检查身份和权限 |
| 发送邮件、发布消息 | 通常要求确认 |
| 修改或删除数据 | 强制确认 |
| 支付和转账 | 强制确认并再次校验 |
| 执行系统命令 | 严格限制或隔离 |
本课结论
用户提出目标,模型提出行动,程序拥有最终执行权。