Gestion de investigaciones
import { Aside } from ‘@astrojs/starlight/components’;
Que es una investigacion
Una investigacion es un contenedor persistente que agrupa:
- Evidencias: documentos, ficheros, resultados OSINT ingresados con SHA-256
- Entidades: personas, empresas, dominios, IPs… extraidas de las evidencias
- Claims: afirmaciones verificables con trazabilidad completa hasta la evidencia fuente
- Informes: documentos de 9 secciones generados al final
Todo persiste en SQLite + ChromaDB y sobrevive entre sesiones.
Estructura de directorios
investigaciones/<slug>/├── evidencias/ # Ficheros originales (con hash SHA-256 en el nombre)├── hallazgos/ # Outputs intermedios (resultados OSINT en JSON)├── informes/ # Informes generados (Markdown)└── metadata.json # Metadata de la investigacionCiclo de vida
1. Crear la investigacion
# Desde el CLI interactivoosint-agent investigation create "Caso Acme Corp" --goal "Due diligence"
# O con el skill de Claude Code/investigation-init "Caso Acme Corp" --goal "Due diligence"Crea la estructura de directorios, registra la investigacion en SQLite e inicializa la coleccion ChromaDB.
2. Ingestar evidencias
/evidence-ingest informe-registral.pdf/evidence-ingest contrato-2024.docx/evidence-ingest https://example.com/press-releaseEl pipeline completo:
Fichero/URL ↓ SHA-256 hash (dedup: si ya existe, salta) ↓ Extraccion de texto (PDF/TXT/HTML/MD) ↓ Chunking (fragmentos solapantes) ↓ Embeddings (sentence-transformers multilingue) ↓ Almacenamiento en ChromaDB ↓ Registro en SQLite con metadatos3. Investigar IOCs (y guardar como evidencia)
/osint-investigate "acme-corp.com"/osint-investigate "185.220.101.34"El resultado del agente OSINT se guarda automaticamente como evidencia en la investigacion activa.
4. Extraer entidades
/entity-extractExtrae y normaliza entidades de todas las evidencias ingresadas segun la ontologia FTM:
- Personas (con normalizacion de nombres espanoles, honorificos)
- Empresas (con normalizacion de CIF, formas legales)
- Dominios, IPs, emails, telefonos, cuentas bancarias (IBAN)
- Eventos, ubicaciones, documentos
5. Registrar y verificar claims
/claim-track "Acme Corp tiene sede registrada en Madrid segun informe registral"/verify-claimsCada claim se almacena con:
evidence_id: la evidencia que lo respaldachunk_id: el fragmento especificosnippet: el texto exacto de donde se extrajostatus: VERIFIED / DISPUTED / UNVERIFIED
6. Busqueda semantica
/memory-query "contratos con proveedores chinos"Busca en ChromaDB usando embeddings — encuentra informacion relevante aunque las palabras exactas no coincidan.
7. Generar informe
/report-generateGenera un informe de 9 secciones en investigaciones/<slug>/informes/:
- Resumen ejecutivo
- Objetivo y alcance
- Metodologia
- Hallazgos verificados
- Entidades identificadas
- Evidencias
- Analisis de riesgos
- Limitaciones y advertencias
- Proximos pasos recomendados
Investigacion activa
Solo puede haber una investigacion “activa” a la vez. Se guarda en data/.active:
osint-agent investigation use caso-acme# → escribe "caso-acme" en data/.activeLos skills de Claude Code leen data/.active automaticamente.
Gestion de multiples investigaciones
osint-agent investigation list # Lista todas las investigacionesosint-agent investigation use <slug> # Activa una investigacionosint-agent status # Estado de la investigacion activaosint-agent limits # Cuotas mensuales de operaciones| Variable | Default | Descripcion |
|---|---|---|
ACTIVE_INVESTIGATIONS_LIMIT | 5 | Maximas investigaciones activas simultaneas |
MONTHLY_OPERATIONS_LIMIT | 100 | Cuota mensual de operaciones |