f561f686c4
Se mueve la documentación de issues/tasks de .claude/tasks/ a dev/issues/ para separar la planificación de desarrollo de la configuración de Claude. Se añade dev/README.md como índice de la carpeta de desarrollo. Los issues completados se mueven a dev/issues/completed/. Esto permite que dev/ sea el punto central de documentación interna del proyecto. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.2 KiB
2.2 KiB
Plan: Herramientas para los bots
Objetivo
Permitir que los bots ejecuten herramientas reales (funciones Go) como respuesta a decisiones del LLM — patrón function calling / tool use.
Estado: COMPLETADO
Diseño
Capa pura (pkg/tools/)
- Definir
ToolSpeccon nombre, descripción y esquema JSON de parámetros - Definir
ToolCallActionenpkg/decision/— acción pura que contieneToolName stringyArgs map[string]any - El motor de reglas puede emitir
ToolCallActioncomo cualquier otra acción
Capa shell (shell/tools/)
Executorque mapea nombre → función Go real- Ejecuta la herramienta y devuelve
ToolResult{Output string, Err error} - El Runner de
shell/effects/llama al Executor cuando recibeToolCallAction
Integración LLM
shell/llm/anthropic.goyopenai.goya soportan tool_use / function_calling- Mapear
[]ToolSpecal formato nativo de cada proveedor - Parsear la respuesta del LLM para extraer llamadas a herramientas
Herramientas iniciales a implementar
| Herramienta | Descripción | Shell |
|---|---|---|
http_get |
GET a una URL, devuelve body | shell/tools/ |
http_post |
POST JSON a una URL | shell/tools/ |
ssh_command |
Ejecutar comando remoto por SSH | shell/ssh/ |
read_file |
Leer archivo local | shell/tools/ |
matrix_send |
Enviar mensaje a una sala Matrix | shell/matrix/ |
Archivos a crear/modificar
pkg/tools/spec.go— ToolSpec, ToolResultpkg/decision/actions.go— añadir ToolCallActionshell/tools/executor.go— registro y ejecución de herramientasshell/effects/runner.go— manejar ToolCallActionshell/llm/anthropic.go— emitir tools en el request, parsear tool_use blocksshell/llm/openai.go— idem para function_callingagents/<id>/agent.go— registrar herramientas por agente
Notas
- Las herramientas se declaran en
pkg/(pure spec) pero se implementan enshell/ - Un agente solo tiene acceso a las herramientas declaradas en su config
- Respetar
security.allowed_toolsdel config YAML