* 新增 tools 包:统一工具定义、注册表与 Server 接口,对齐 MCP 规范 * 新增 websocket 包:泛化连接管理、心跳、并发写锁与优雅关闭 * 新增参数读取工具函数,避免类型断言静默失败 * 新增 OSS 路径识别与 JSON 扁平映射还原工具 * 修复租户 SQL 条件插入位置,正确处理 GROUP BY 与 ORDER BY 同时出现的场景
27 lines
820 B
Go
27 lines
820 B
Go
package tools
|
|
|
|
import "context"
|
|
|
|
// Tool 对应 MCP 的 Tool 数据结构:name + description + inputSchema。
|
|
// 模型 function calling 通过 InputSchema 感知入参,推理中按需调用 Func。
|
|
// 若未来接远程 MCP Server,Func 由客户端统一实现,本结构不变。
|
|
type Tool struct {
|
|
Name string // 工具唯一标识
|
|
Description string // 用途说明(模型必读,用于决定何时调用)
|
|
Parameters map[string]any // 入参 JSON Schema
|
|
Func func(ctx context.Context, args map[string]any) (ToolResult, error)
|
|
}
|
|
|
|
// registry 工具注册表
|
|
var registry = make(map[string]*Tool)
|
|
|
|
// Register 注册工具,同名覆盖
|
|
func Register(list ...*Tool) {
|
|
for _, t := range list {
|
|
if t == nil || t.Name == "" {
|
|
continue
|
|
}
|
|
registry[t.Name] = t
|
|
}
|
|
}
|