Problem:思路对了,如何使用工具精准执行
Claude 本身只会生成文字。工具系统解决的问题是:让生成的文字变成真实的电脑操作。
没有工具系统,Claude 只能说"你应该执行 git commit -m 'fix bug'"——用户还要自己去做。有了工具系统,Claude 可以直接执行,结果回传给 Claude,Claude 继续思考下一步。
这套机制面临三个互相冲突的要求:
- 统一:Claude 有几十种工具(Bash、文件读写、搜索、浏览器……),每种实现完全不同,但 Claude 调用它们的方式必须一致
- 安全:不同操作危险程度不一样,
cat file.txt和rm -rf /不能用同一套权限规则 - 灵活:用户可以通过 MCP 协议接入自定义工具,系统不能对工具的内部结构做强假设
工具系统用一个统一接口 Tool 解决了第一个问题,用接口上的若干"安全属性"解决了第二个,用动态注册机制解决了第三个。