产品思考:可借鉴的工具使用方法
-
buildTool()+ 默认值 = 失败关闭的安全基线:新工具默认不并发、不只读、权限放行——这个组合看似宽松,但配合外层的权限规则系统(见第B节),实际效果是:工具开发者无需重复实现通用安全检查,只需声明差异,权限由中央统一处理。 -
渲染层内置于工具接口:每个工具自带 UI 渲染方法,意味着添加新工具时产品体验是完整的——不需要单独维护一个"工具 ID → 渲染组件"的映射表。工具是自包含的单元。
-
BashTool 做 AST 解析而非字符串匹配:对最危险的工具用最严格的方式检查,防止规则绕过。这是安全性与可用性的权衡:字符串匹配更快,但用户很容易写出绕过它的命令。
-
REPL 模式只面向内部:批量工具调用减少 API 往返,提升内部开发效率;但 SDK 用户需要精确控制每个工具调用,所以 REPL 模式被明确排除在 SDK 入口之外。这体现了内部效率和外部 API 语义之间的平衡。
-
工具延迟加载 = token 经济学:当工具数量增长到几十个,全量加载的成本不可忽视。
shouldDefer/alwaysLoad是工具数量增长的基础设施,为未来接入更多 MCP 工具做好了铺垫。