diff --git a/knowledges/README.md b/knowledges/README.md new file mode 100644 index 0000000..9fba459 --- /dev/null +++ b/knowledges/README.md @@ -0,0 +1,63 @@ +# Shared Knowledge Base + +Esta carpeta contiene la **base de conocimiento compartida** entre todos los agentes del sistema. + +## Propósito + +Los agentes pueden leer, escribir y buscar documentos en esta carpeta usando las tools `shared_knowledge_*`. Esto permite que múltiples agentes colaboren acumulando y consultando conocimiento común. + +## Funcionamiento + +- **Documentos**: Los archivos `.md` en este directorio son los documentos de conocimiento compartidos entre agentes. +- **Índice FTS5**: Los documentos se indexan automáticamente en `data/knowledge.db` (SQLite con Full-Text Search). +- **Sincronización**: El índice se actualiza al arrancar cada agente con `Sync()`. +- **WAL mode**: El DB usa WAL (Write-Ahead Logging) para permitir lecturas y escrituras concurrentes entre múltiples procesos. + +## Tools disponibles + +Los agentes con `tools.shared_knowledge.enabled: true` tienen acceso a: + +- `shared_knowledge_search` — buscar documentos por query +- `shared_knowledge_read` — leer un documento por slug +- `shared_knowledge_write` — crear o actualizar un documento +- `shared_knowledge_list` — listar todos los documentos compartidos + +## Diferencia con knowledge privado + +Cada agente puede tener **dos bases de conocimiento**: + +1. **Knowledge privado** (`agents//knowledge/`): solo visible para ese agente, tools `knowledge_*` +2. **Knowledge compartido** (`knowledges/`): visible para todos los agentes con shared_knowledge habilitado, tools `shared_knowledge_*` + +## Ejemplo de flujo + +``` +1. agente-A recibe: "investiga X y guarda lo que encuentres" + → LLM usa shared_knowledge_write(slug: "investigacion-x", content: "...") + → Se escribe knowledges/investigacion-x.md + actualiza FTS5 + +2. agente-B recibe: "qué sabemos sobre X?" + → LLM usa shared_knowledge_search(query: "X") + → Encuentra el documento que escribió agente-A + → shared_knowledge_read(slug: "investigacion-x") + → Responde con la información +``` + +## Estructura + +``` +knowledges/ + ├── README.md ← este archivo + ├── *.md ← documentos compartidos (commiteados) + └── data/ + ├── knowledge.db ← índice SQLite FTS5 (no commiteado) + ├── knowledge.db-shm + └── knowledge.db-wal +``` + +## Notas + +- Los archivos `.md` se commitean en el repositorio (forman parte del conocimiento compartido del equipo). +- El directorio `data/` está en `.gitignore` — el índice se reconstruye automáticamente al arrancar. +- No hay control de acceso por agente: cualquier agente con shared_knowledge habilitado puede leer y escribir. +- Si dos agentes escriben el mismo slug, el último gana (sobreescritura).