外部系统工具实战:数据库、API、浏览器与代码执行
四大类高频工具的实现要点与安全边界:SQL 只读、REST 封装、浏览器自动化、代码解释器。
① 数据库工具:只读是底线
- 只授 SELECT 权限账号;执行前校验语句;默认 LIMIT;
- 把表结构 + 字段业务含义("GMV=成交总额")作为工具描述的一部分或独立 describe_schema 工具;
- 参考本站《实战:代码助手与 SQL 问答》。
② REST API 工具:包装而不是透传
- 不直接暴露"通用 HTTP 请求工具"(模型会乱传 URL),而是按业务封装成 create_ticket、get_user 等具体工具;
- 鉴权 Key 在工具内部管理,绝不作为模型可见参数;
- 返回值裁剪到任务所需字段。
③ 浏览器自动化工具
- 用 Playwright 封装 open_page / read_content / click 等原子工具;
- 网页内容是不可信输入:返回前剥离脚本与隐藏文本,防提示注入(见《MCP 安全》课);
- 限定可访问域名白名单。
④ 代码执行工具(Code Interpreter)
- 最能放大能力的工具,也最危险——必须沙箱;
- 复用本站「Java 在线沙箱」的思路:独立目录、超时强杀、禁网络、限制内存;Python 生态用容器隔离更彻底;
- 返回 stdout + 运行状态,报错原样返回让模型修代码重试。
通用安全公式
每个工具上线前回答:它最坏能造成什么损失?然后把这个损失用权限、白名单、沙箱、审批圈到可接受范围。
📝 课后练习
quiz-1 给 Agent 提供数据库查询工具的安全底线是?