14 工具系统与策略管线
模块目标
理解为什么模型不会“无限制调用所有工具”,而是通过策略管线受控执行。
步骤一:实现拆解(执行链路)
- 工具集合构建:
src/agents/pi-tools.tssrc/agents/openclaw-tools.ts
- 策略解析:
src/agents/pi-tools.policy.tssrc/agents/tool-policy.ts
- 策略流水线应用:
src/agents/tool-policy-pipeline.ts
- 工具定义适配:
src/agents/pi-tool-definition-adapter.ts
步骤二:细粒度讲解(小白版)
- 工具来源分三类
- 基础 coding tools(read/write/edit/exec/process)
- OpenClaw 平台工具(message/sessions/browser/web/nodes 等)
- 插件工具(动态加载)
- 先构建,再过滤
- 不是“先猜应该有哪些工具”
- 而是先组装候选,再按策略一层层过滤
- 策略层次(从近到远)
- profile / provider profile
- 全局策略
- agent 策略
- group 策略
- sandbox 策略
- subagent 策略
- 关键安全点
- owner-only 工具(如敏感操作)
- apply_patch / exec 的模型与范围限制
- workspace root guard(防止越界写)
- before_tool_call / after_tool_call hook
- 工具错误不会直接炸进程
- adapter 捕获异常并转结构化 error 结果
- 仍可触发 after_tool_call hook,便于审计