在 agent 系统里,工具不是中性的。
agent 会根据工具名称、描述、schema、参数说明和历史结果来选择工具。也就是说,工具注册表不只是“有哪些函数可以调用”的清单,它会影响 agent 的行动路径。
这就是为什么 tool registry 本质上是控制面。
工具描述会改变行为
一个人看到工具列表时,会带着常识判断风险。agent 看到工具列表时,主要依赖描述、上下文和模型推断。
如果一个工具把能力写得过宽,agent 可能误用它。
如果一个工具没有说明副作用,agent 可能把危险动作当成查询动作。
如果一个 MCP server 暴露了文件、网络、凭证或外部账号能力,agent 可能在不恰当的时机触发它。
如果工具描述被污染,agent 甚至可能被引导到错误 workflow。
所以工具描述本身不是文档细节,而是执行边界的一部分。
供应链边界已经扩大
传统软件供应链关心包管理器、依赖、构建脚本、CI 访问凭据和部署权限。AI agent 把这个边界继续扩大了。
现在需要被纳入治理的对象包括:
- MCP server;
- plugin 和 connector;
- 本地 shell 脚本;
- 自动下载的二进制工具;
- IDE extension;
- package install 和 postinstall;
- 模型 provider、访问配置和代理层;
- agent skill、AGENTS.md、hook 和 daemon;
- 工具 registry 中暴露给模型的描述文本。
这些东西共同决定 agent 能看到什么、能调用什么、会相信什么,以及能把动作推进到哪里。
一个最小 tool registry contract
成熟项目不一定需要很重的工具平台,但至少应该为 agent 可见工具建立 registry contract。
每个工具条目应该说明:
- 它解决什么问题;
- 谁是 owner;
- 读取哪些路径、网络或服务;
- 是否会写文件、发请求、发帖、部署、删除或修改外部状态;
- 是否需要凭证;
- 输出是否可以作为证据;
- 失败后应该 retry、rollback、ask 还是 halt;
- 使用它需要 allow、ask、block 还是只读模式;
- 什么时候不应该用它。
最后一条很重要。agent 需要知道工具的能力,也需要知道工具的边界。
MCP 不是天然安全边界
MCP 的价值是让工具集成更标准化。但标准化接口不等于安全边界。
一个 MCP server 可能只是只读查询工具,也可能能操作文件系统、调用外部 API、修改项目状态或触发业务动作。对 agent 来说,它们都可能以“工具”的形式出现。
因此治理重点不是“用了 MCP 就安全”,而是:
- 这个 MCP server 暴露了哪些能力?
- 这些能力是否被正确描述?
- 哪些参数会产生副作用?
- 是否有 path、domain、method 或 credential 限制?
- 调用结果是否进入 trace?
- 高风险调用是否经过 autonomy gate?
同理,插件、hooks、CLI 工具和本地脚本都应进入同一套视图。
对开源 agent 工程的含义
如果要把 issue-driven、autorun 或 project-specific harness 做成可复用项目,tool governance 不能是后补功能。
最小版本可以只做三件事:
- 把工具注册表写成机器可读 manifest;
- 给每个工具标注 side effects、risk level 和 evidence value;
- 让调度器或 worker 在执行前读取这些字段。
这比写一段“请谨慎使用工具”的 prompt 更稳定。
核心判断
agent 的工具面,就是 agent 的权力面。
当工具、MCP、插件、本地脚本和依赖都可以被模型调用或影响模型判断时,tool registry 就不再是开发便利设施。它是运行治理的一部分,也是 AI 软件供应链的一部分。
