跳转到主要内容
Tool 是 Capsule 的即时视图。Capsule 是持久的可执行载荷。

1. 工具集 (Toolkit) 是什么

工具集 (Toolkit) 在工具名下分组 Capsule 与服务元数据。当你希望一组函数像本地 API、MCP 服务器或模型工具调用导出目标时,使用它。 持久模型有意保持精简:
  • Capsule:存储可执行函数 manifest
  • Tool:命名一个 Capsule(加可选 serializer Capsule),并暴露 run(...)run_to_str(...)
  • Toolkit:排序工具、保存引用并导出服务器
  • sys-toolkit:存储工具集 (Toolkit) manifest 与 Capsule 引用的持久实体行
每个持久化工具保留两个 Capsule 引用:主执行 Capsule 与 serializer Capsule。默认情况下 HeavenBase 使用共享 jstr_serializer Capsule,对 dict 与 list 结果应用紧凑 JSON 序列化。

2. 构建并注册工具集 (Toolkit)

toolkit.register(...) 保存每个工具的主 Capsule 与 serializer Capsule,再将工具集 (Toolkit) manifest 存为有序 Capsule 引用。加载工具集 (Toolkit) 会惰性恢复引用的 Capsule。 Toolkit.register(...) 默认为 overwrite=True。需要显式冲突处理时使用 on_conflict="raise"on_conflict="skip" 紧凑构造可传入 list、pair 或 mapping:

3. 从其他路径加载并运行

消费者无需导入创建工具集 (Toolkit) 的文件。它从注册表加载工具集 (Toolkit) manifest,再从各自 manifest 恢复每个 Capsule。 需要 MCP 与 Agent 客户端期望的序列化字符串边界时使用 run_to_str(...)
测试与应用可传入 registry_config=... 隔离注册表存储,同时保持相同公开 API。

4. 架构数据流

工具集 (Toolkit) 执行是 Capsule 上的薄层:
  1. Toolkit.add(callable) 将 callable 捕获为主 Capsule,并解析 serializer Capsule(默认 jstr_serializer)。
  2. toolkit.register() 持久化每个工具的两个 Capsule,再存储含有序 Capsule 引用的 sys-toolkit 行。
  3. Toolkit.load(...) 解析 manifest 并将每个引用的 Capsule 恢复为 Tool
  4. Toolkit.run(name, **kwargs) 本地调用所选主 Capsule,返回原始 Python 值。
  5. Toolkit.run_to_str(name, **kwargs) 运行工具并通过 serializer Capsule 传递结果。
  6. Toolkit.to_fastmcp() 用签名兼容的 FastMCP 函数包装每个 Tool,返回序列化字符串。
  7. Toolkit.to_anthropic_tools(...) 导出带 allowed_callers 的独立 Anthropic programmatic tool schema。

5. 通过 MCP 提供

也可打印客户端配置:
toolkit.serve(...) 阻塞或后台提供。默认位于 CM_HVNBheavenbase.mcp(transport、host、port、wait)。

6. 导入 MCP 服务器

FastMCP 客户端代理仅用于即时执行。它们无法用 register() 持久化,因为闭包持有 live 服务器句柄。

7. 工作区工具集 (Toolkit)

每个工作区仍可成为工具集 (Toolkit):
工作区工具集 (Toolkit) 组装已注册的工具集 family:核心工作区 family 暴露实体定义、目录 (Catalog) 发现、CRUD、count、查询 (Query) 与 explain 工具。 Family spec 与别名会作为 toolkit_family 行镜像到 sys-metaschema;即时工作区工具集 (Toolkit) 仍无法注册,因为闭包持有 live 工作区对象。

8. Demo

demo 创建持久数学工具集 (Toolkit),通过 Toolkit.load(...) 加载回来,展示 Capsule docstring 与格式转换,并检查 FastMCP 能否列出与调用工具。

进一步探索

相关资源: