UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

57 lines (56 loc) 1.96 kB
/** * ToolRegistry — 统一工具注册表 * * 管理 Agent 可调用的所有工具定义。 * 每个工具包含: name, description, parameters(JSON Schema), handler * * 设计原则: * - 所有 AI 能力均封装为 Tool,不再散落在各处 * - Tool handler 仅做参数整理 + 调用已有 Service,不含业务逻辑 * - 支持 Agent ReAct 循环调用(通过 LLM 推理决定工具调用) */ /** 工具定义输入 */ interface ToolDefinition { name: string; description: string; parameters?: Record<string, unknown>; handler: Function; } export declare class ToolRegistry { #private; constructor(); /** * 注册一个工具 * @param toolDef.name 工具唯一名称 (snake_case) * @param toolDef.description 给 LLM 看的工具描述 * @param toolDef.parameters JSON Schema 格式的参数定义 * @param toolDef.handler async (params, context) => result */ register(toolDef: ToolDefinition): void; /** 批量注册 */ registerAll(defs: ToolDefinition[]): void; /** * 获取工具定义(不含 handler,给 LLM prompt 使用) * @param [allowedTools] 限制返回的工具列表(不传则返回全部) * @returns >} */ getToolSchemas(allowedTools?: readonly unknown[] | null): { name: string; description: string; parameters: Record<string, unknown>; }[]; /** * 直接执行某个工具 * @param context { container, aiProvider, projectRoot, ... } */ execute(name: string, params: Record<string, unknown>, context?: Record<string, unknown>): Promise<unknown>; /** 检查工具是否存在 */ has(name: string): boolean; /** 移除一个已注册的工具(Forge TTL 回收用) */ unregister(name: string): boolean; /** 获取所有工具名 */ getToolNames(): string[]; /** 工具数量 */ get size(): number; } export default ToolRegistry;