5.4 动态发现与加载

本节介绍工具的动态发现和加载机制,包括延迟加载的决策、多级优先级加载策略、Schema缓存、MCP动态注册和上下文缓存等技术,阐明如何构建灵活高效的工具加载系统。

5.4.1 动态加载的必要性

静态工具列表的问题:

  • 无法适应运行时变化

  • 新工具需要重新部署

  • 无法根据上下文选择性加载

5.4.2 Claude Code 的 shouldDefer 机制

shouldDefer机制决定了工具是否需要延迟加载。下面的流程图展示了动态工具加载的完整流程:

图 5-3:shouldDefer延迟加载机制

核心实现如下:

5.4.3 OpenClaw 的 6 级技能加载优先级

实现的代码结构:

5.4.4 JSON Schema 缓存

具体的缓存实现:

5.4.5 MCP 动态注册

MCP(Model Context Protocol)支持动态工具注册:

⚠️ 注意:以下代码为概念示意,非真实 MCP 调用方式。真实 MCP 客户端使用 JSON-RPC 2.0 over stdio 或 Streamable HTTP,不使用 REST 风格的 /tools/list/tools/call 端点。详见第 9.3 节与 9.4 节 MCP 协议详解。

5.4.6 FileStateCache 上下文缓存

实现如下:

5.4.7 本节小结

动态工具加载是现代智能体系统的必需能力:

  1. shouldDefer 延迟加载:基于上下文决定是否加载工具

  2. 6 级优先级加载:系统 → 会话 → 用户 → 领域 → 内置 → 发现

  3. Schema 缓存:减少重复构建 Schema 的开销

  4. MCP 动态注册:支持第三方工具的即插即用

  5. FileStateCache:减少重复工具调用,提高性能

这些机制共同构成了一个灵活、高效、可扩展的工具加载系统。

最后更新于