跳转到主要内容

概述

Shannon 的工具执行系统提供了一个安全、可扩展的框架,用于将外部功能集成到 AI 代理中。该架构支持三种工具类型,具有统一的执行语义。

工具类型

MCP 工具

遵循模型上下文协议的外部 HTTP API

OpenAPI 工具

从 OpenAPI 3.x 规范自动生成

内置工具

具有直接服务访问权限的 Python 工具
所有工具类型共享:
  • 统一的 JSON 模式参数
  • 一致的错误处理
  • 速率限制和熔断器
  • 成本跟踪和预算执行
  • 安全验证

架构分层

工具执行架构分层

工具注册表

注册

工具在服务启动时注册元数据:

发现

工具通过 HTTP API 暴露以供运行时发现:

WASI 沙箱

Python 代码在 WebAssembly 系统接口 (WASI) 沙箱中执行,以实现安全隔离。

架构

WASI 安全沙箱架构

安全边界

WASI 沙箱没有网络堆栈:
  • ✅ 可以计算、解析、转换数据
  • ❌ 不能发出 HTTP 请求
  • ❌ 不能打开套接字
  • ❌ 不能访问外部资源
用例: 安全执行用户提供的 Python 代码
文件系统以只读方式挂载:
  • ✅ 可以读取 Python 标准库
  • ✅ 可以读取允许的数据文件
  • ❌ 不能写入文件
  • ❌ 不能修改系统文件
用例: 防止数据泄露和篡改
每次执行的内存使用都有限制:
用例: 防止资源耗尽攻击
每次执行都有严格的时间限制:
用例: 防止无限循环和挂起进程

设置

OpenAPI 工具加载器

Shannon 从 OpenAPI 规范动态生成工具。

规范处理

1

获取规范

从 URL 或内联 YAML 检索 OpenAPI 规范:
2

验证与解析

验证 OpenAPI 版本和结构:
3

生成工具

为每个操作创建工具:
4

应用供应商适配器

如果已配置,加载特定于供应商的转换:

模式解析

不支持远程 $ref 解析(例如 https://example.com/schemas/Pet.json)。请将外部模式合并到单个规范文件中。

供应商适配器集成

供应商适配器为特定领域的 API 转换请求/响应,而无需修改 Shannon 的核心。

执行流程

供应商适配器执行序列

适配器加载

转换示例

字段别名:
会话上下文注入:
时间范围规范化:

速率限制

按工具速率限制

使用令牌桶算法实现:

全局速率限制

熔断器

防止外部服务不可用时发生级联故障。

配置

状态

熔断器状态机 Closed: 正常操作,允许所有请求 Open: 服务不可用,所有请求快速失败 Half-Open: 测试恢复,允许有限的请求

成本跟踪

每个工具执行都会跟踪成本以强制执行预算。

按工具成本

预算执行

配置

错误处理

错误类别

重试逻辑

性能优化

连接池

响应缓存

并行执行

配置:

安全考虑

始终验证工具输入并根据用户权限限制执行。

域名白名单

工具权限

OPA 策略可以控制访问:

API 密钥管理

监控与可观察性

指标

日志记录

追踪

后续步骤

添加自定义工具

了解如何添加 MCP、OpenAPI 和内置工具

供应商适配器

构建特定领域的集成

配置

完整的配置参考

安全最佳实践

加固您的 Shannon 部署