AddTool 添加新工具
(tool tools.Tool, source string, deferred bool)
| 225 | |
| 226 | // AddTool 添加新工具 |
| 227 | func (tm *ToolManager) AddTool(tool tools.Tool, source string, deferred bool) error { |
| 228 | tm.mu.Lock() |
| 229 | defer tm.mu.Unlock() |
| 230 | |
| 231 | name := tool.Name() |
| 232 | |
| 233 | // 添加到索引 |
| 234 | if err := tm.index.IndexTool(tool, source, deferred); err != nil { |
| 235 | return fmt.Errorf("failed to index tool: %w", err) |
| 236 | } |
| 237 | |
| 238 | if deferred { |
| 239 | entry := tm.index.GetTool(name) |
| 240 | if entry != nil { |
| 241 | tm.deferredTools[name] = *entry |
| 242 | } |
| 243 | } else { |
| 244 | tm.activeTools[name] = tool |
| 245 | } |
| 246 | |
| 247 | return nil |
| 248 | } |
| 249 | |
| 250 | // AddToolEntry 添加工具条目(用于 MCP 延迟加载) |
| 251 | func (tm *ToolManager) AddToolEntry(entry search.ToolIndexEntry) error { |