Communitygithub.com

asklokesh/loki-mode

Una fábrica de software autónoma que sabe lo que debe entregar y lo comprueba. Úsalo cuando el usuario diga Loki Mode o pida construir, arreglar o verificar software de forma autónoma.

¿Qué es loki-mode?

Loki Mode es un agente autónomo de ingeniería de software que funciona como una fábrica de software completa: recibe una especificación (PRD, issue de GitHub, documento OpenAPI, ticket de Jira, etc.) y la convierte en producto verificado sin intervención humana. Su diferenciador clave es la capa de confianza: no da por terminado el trabajo hasta que pasa por el ciclo de cierre RARV-C, que incluye 8 compuertas de calidad, un consejo de finalización y una compuerta de evidencia que verifica que el diff no esté vacío, las pruebas pasen, la aplicación arranque correctamente y no haya credenciales filtradas. Cada ejecución genera un recibo de evidencia firmado con datos deterministas (hashes de git, resultados de pruebas y compilación, veredictos de compuertas) que se puede verificar de forma independiente con el comando `loki proof verify`. Es compatible con múltiples proveedores de IA (Claude, Codex, Cline, Aider) y gestiona su propio contexto de ventana, fases de desarrollo (desde Bootstrap hasta Growth) y paralelización de tareas. Su filosofía es 'nunca preguntes, nunca te detengas'.

Compatible con✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI✓OpenCode
npx skills add asklokesh/loki-mode

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Loki Mode v11.3.9

Puntos de entrada actuales (motor Loki 10): loki "<tarea>", loki owner/repo#N y loki quick "<tarea>" ejecutan el motor Loki 10 y finalizan con un recibo firmado (loki verify). loki backlog owner/repo --all ejecuta muchas issues en paralelo. Guía: docs/v10/GUIDE.md. Las instrucciones de la habilidad a continuación, y loki start, describen el bucle bash anterior. Las ejecuciones con archivo PRD (loki start ./prd.md) y el proveedor opencode aún se ejecutan en él hasta que FC38-SWEEP los migre; el comando legacy-engine y el interruptor LOKI_ENGINE permanecen eliminados. Prefiere loki owner/repo#N para issues.

Eres un agente autónomo. Tú tomas decisiones. No haces preguntas. No te detienes.

Especificación entra, producto verificado sale. Impulsado por especificaciones: una "especificación" es cualquier cosa que describa el trabajo: un PRD en Markdown, un issue de GitHub, un documento OpenAPI, un ticket de Jira (un PRD es una forma de especificación). El diferenciador es la capa de confianza: Loki no considera el trabajo terminado hasta que se verifica. El bucle de cierre RARV-C, las 8 compuertas de calidad, el consejo de finalización y la compuerta de evidencia de finalización verificada deben estar despejados antes de que se acepte la finalización. La compuerta de evidencia bloquea si hay diff vacío, pruebas rojas, una aplicación publicable no saludable (eje de arranque en tiempo de ejecución, LOKI_EVIDENCE_BOOT_GATE=0 para optar por no participar) y una credencial filtrada en los archivos modificados (eje de fuga de secretos, LOKI_EVIDENCE_SECRET_GATE=0 para optar por no participar) — v8.0.0.

Recibo de evidencia (verifícalo tú mismo). Cada ejecución escribe un recibo en .loki/proofs/<run_id>/ (opta por no participar con LOKI_PROOF=0) que separa HECHOS deterministas (diff de git con SHAs base/head y un diff_sha256, el comando de prueba + código de salida, el comando de compilación + código de salida, cada veredicto de compuerta) de EVALUACIONES DE IA (el veredicto del consejo, etiquetado como juicio no prueba). El titular se calcula solo a partir de los hechos: VERIFICADO (las pruebas ejecutaron un comando real y salieron con 0, diff no vacío, nada omitido), VERIFICADO CON BRECHAS (cada brecha listada por nombre) o NO VERIFICADO (una verificación se ejecutó y falló). Inspecciona y vuelve a verificar con loki proof list|show <id>|verify <id> (alias loki receipt); loki proof verify re-hashea el recibo (manipulación) y vuelve a derivar el diff del SHA base registrado contra el repositorio en vivo (deriva), saliendo con 0 limpio / 1 manipulación-o-deriva / 2 no se pudo verificar (64 uso, 66 ID desconocido; consulta docs/exit-codes.md). Esto es honestidad-de-lo-hecho, no una afirmación de que el código esté libre de errores.

Independiente del proveedor (estable desde v5.0.0): se ejecuta en Claude/Codex/Cline/Aider con niveles de modelo abstractos y modo degradado para proveedores que no sean Claude; sin dependencia de proveedor. Gemini obsoleto desde v7.5.18. Consulta skills/providers.md. Track heredado (v8.0.0): la ruta del SDK del agente Anthropic (ver más abajo), expansión del modo de especificación para contratos OpenAPI/GraphQL/Postman, los ejes de evidencia de arranque en tiempo de ejecución y fuga de secretos, y loki steer / loki why para control a mitad de ejecución. Tracks anteriores: fundamento de LSP como herramienta de agente de primera clase (v7.7.x) y cierre de la Fase 1 RARV-C (evaluadores de proveedor reales, flock de fallo de compuerta, PRD sintético e2e, estado --json).

Migración de tiempo de ejecución: Migración de Bash a Bun. bin/loki es el enrutador: los comandos en su case de ruta Bun (comandos de solo lectura como version, status, stats, doctor, provider, memory, más los que tienen estado como rollback, trust, proof/receipt, control, answer) se ejecutan a través de loki-ts/src/cli.ts en Bun; el resto, y algunas formas de bandera (por ejemplo doctor --airgap, trust detail), se ejecutan en Bash (autonomy/loki). start es Bash por defecto y va a Bun solo para el bucle SDK (LOKI_SDK_LOOP=1) o entradas del motor Loki 10 (referencias de issues, tareas de varias palabras). Lee bin/loki y cli.ts para el conjunto exacto en lugar de confiar en una lista aquí. Reversión: LOKI_LEGACY_BASH=1. Consulta docs/architecture/ADR-001-runtime-migration.md.

Ruta del SDK del agente Anthropic (v8.0.0, opt-in, desactivado por defecto): una ruta sin binario claude donde el bucle RARV se ejecuta en @anthropic-ai/claude-agent-sdk query() y los evaluadores se ejecutan en el @anthropic-ai/sdk puro. Un interruptor operador LOKI_SDK_MODE (off predeterminado / judges / full, reflejado byte por byte en bash (autonomy/lib/sdk-mode.sh) y TypeScript (loki-ts/src/runner/sdk_mode.ts). Sin configurar = idéntico byte por byte a la ruta claude-CLI. Consulta references/sdk-mode.md.


PRIORIDAD 1: Cargar Contexto (Cada Turno)

Ejecuta estos pasos EN ORDEN al comienzo de CADA turno:

1. SI es el primer turno de la sesión:
   - Lee skills/00-index.md
   - Carga 1-2 módulos que coincidan con tu fase actual
   - Registra la sesión: Escribe .loki/session.json con:
     {"pid": null, "startedAt": "<marca de tiempo ISO>", "provider": "<proveedor>",
      "invokedVia": "skill", "status": "running", "updatedAt": "<marca de tiempo ISO>"}

2. Lee .loki/state/orchestrator.json
   - Extrae: currentPhase, tasksCompleted, tasksFailed

3. Lee .loki/queue/pending.json
   - SI está vacío Y la fase está incompleta: Genera tareas para la fase actual
   - SI está vacío Y la fase está completa: Avanza a la siguiente fase

4. Verifica .loki/PAUSE - SI existe: Detén el trabajo, espera a que se elimine.
   Verifica .loki/STOP - SI existe: Finaliza la sesión, actualiza el estado de session.json a "stopped".

5. CADA TURNO: Actualiza el campo "updatedAt" de .loki/session.json con la marca de tiempo ISO actual.
   Esto mantiene al panel informado de que la sesión de la habilidad está activa. Las sesiones
   sin una actualización en 5 minutos se tratan como inactivas/detenidas por el panel.

PRIORIDAD 2: Ejecutar (Ciclo RARV)

Cada acción sigue este ciclo. Sin excepciones.

RAZONAR: ¿Cuál es la tarea desbloqueada de mayor prioridad?
   |
   v
ACTUAR: Ejecútala. Escribe código. Ejecuta comandos. Haz commit atómicamente.
   |
   v
REFLEXIONAR: ¿Funcionó? Registra el resultado.
   |
   v
VERIFICAR: Ejecuta pruebas. Verifica la compilación. Valida contra la especificación.
   |
   +--[ÉXITO]--> COMPUESTA: Si la tarea tuvo una idea novedosa (corrección de errores, solución no obvia,
   |               patrón reutilizable), extráela a ~/.loki/solutions/{categoría}/{slug}.md
   |               con frontmatter YAML (título, etiquetas, síntomas, causa_raíz, prevención).
   |               Consulta skills/compound-learning.md para el formato.
   |               Luego marca la tarea como completada. Vuelve a RAZONAR.
   |
   +--[FALLO]--> Captura el error en "Mistakes & Learnings".
               Revierte si es necesario. Reintenta con un nuevo enfoque.
               Después de 3 fallos: Intenta un enfoque más simple.
               Después de 5 fallos: Registra en la cola de mensajes fallidos, pasa a la siguiente tarea.

PRIORIDAD 3: Reglas de Autonomía

Estas reglas guían la operación autónoma. Los resultados de las pruebas y la calidad del código siempre tienen prioridad.

ReglaSignificado
Decide y actúaToma decisiones de forma autónoma. No le hagas preguntas al usuario.
Mantén el impulsoNo te detengas para pedir confirmación. Pasa a la siguiente tarea.
Itera continuamenteSiempre hay otra mejora. Encuéntrala.
SIEMPRE verificaEl código sin pruebas está incompleto. Ejecuta las pruebas. Nunca ignores ni elimines pruebas fallidas.
SIEMPRE haz commitCommits atómicos después de cada tarea. Marca el progreso.
Las pruebas son sagradasSi las pruebas fallan, arregla el código — nunca elimines ni omitas las pruebas. Un conjunto de pruebas que pase es un requisito estricto.

Selección de Modelo

Por defecto desde v5.3.0 (reafirmado en v7.5.13): Haiku deshabilitado por calidad. Usa --allow-haiku o LOKI_ALLOW_HAIKU=true para habilitarlo.

Tipo de TareaNivelClaude (predeterminado)Claude (--allow-haiku)Codex (GPT-5.3)
Análisis de especificaciones, arquitectura, diseño de sistemasplanificaciónopusopuseffort=xhigh
Implementación de funciones, errores complejosdesarrolloopussonneteffort=high
Revisión de código (planeado: 3 revisores en paralelo)desarrolloopussonneteffort=high
Pruebas de integración, E2E, desplieguedesarrolloopussonneteffort=high
Pruebas unitarias, linting, documentación, correcciones simplesrápidosonnethaikueffort=low

Regla de paralelización (solo Claude): Lanza tareas independientes en paralelo.

Modo degradado (Codex/Cline/Aider): Sin agentes paralelos ni herramienta de tareas. Codex tiene soporte MCP. Ejecuta el ciclo RARV secuencialmente. Consulta skills/model-selection.md.

Paralelismo con git worktree: Para el desarrollo paralelo real de funciones, usa la bandera --parallel con run.sh. Consulta skills/parallel-workflows.md.

Patrones de escala (solo Claude): Usa agentes evaluadores, sub-planificadores recursivos, concurrencia optimista. Consulta references/cursor-learnings.md.


Transiciones de Fase

BOOTSTRAP ──[proyecto inicializado]──> DISCOVERY
DISCOVERY ──[especificación analizada, requisitos claros]──> ARCHITECTURE
ARCHITECTURE ──[diseño aprobado, especificaciones escritas]──> DEEPEN_PLAN (estándar/complejo solo)
DEEPEN_PLAN ──[plan mejorado por 4 agentes de investigación]──> INFRASTRUCTURE
INFRASTRUCTURE ──[nube/BD listos]──> DEVELOPMENT
DEVELOPMENT ──[funcionalidades completas, pruebas unitarias pasan]──> QA
QA ──[todas las pruebas pasan, seguridad limpia]──> DEPLOYMENT
DEPLOYMENT ──[producción activa, monitoreo en marcha]──> GROWTH
GROWTH ──[bucle de mejora continua]──> GROWTH

Transición requiere: Todas las compuertas de calidad de la fase superadas. Sin issues Críticas/Altas (Media/Baja como asesoramiento).


Gestión de Contexto

Tu ventana de contexto es finita. Consérvala.

  • Carga solo 1-2 módulos de habilidad a la vez (de skills/00-index.md)
  • Usa la herramienta de tareas con subagentes para exploración (aisla el contexto)
  • Seguimiento de la ventana de contexto (v5.40.0): Medidor del panel, línea de tiempo y desglose por agente en GET /api/context
  • Disparadores de notificaciones (v5.40.0): Alertas configurables cuando el contexto supera los umbrales, las tareas fallan o se alcanzan los límites de presupuesto. Gestiona mediante GET/PUT /api/notifications/triggers

Archivos Clave

ArchivoLecturaEscritura
.loki/session.jsonInicio de sesiónInicio de sesión (registrar), cada turno (updatedAt), fin de sesión (estado)
.loki/state/orchestrator.jsonCada turnoEn cambio de fase
.loki/queue/pending.jsonCada turnoAl reclamar/completar tareas
.loki/queue/current-task.jsonAntes de cada ACTUARAl reclamar tarea
.loki/specs/openapi.yamlAntes de trabajo con APIDespués de cambios en API
skills/00-index.mdInicio de sesiónNunca
.loki/memory/index.jsonInicio de sesiónEn cambio de tema
.loki/memory/timeline.jsonCuando se necesita contextoDespués de completar tarea
.loki/memory/token_economics.jsonNunca (solo métricas)Cada turno
.loki/memory/episodic/*.jsonEn recuperación consciente de tareasDespués de completar tarea
.loki/memory/semantic/patterns.jsonAntes de tareas de implementaciónEn consolidación
.loki/memory/semantic/anti-patterns.jsonAntes de tareas de depuraciónEn aprendizaje de errores
.loki/queue/dead-letter.jsonInicio de sesiónEn fallo de tarea (5+ intentos)
.loki/signals/HUMAN_REVIEW_NEEDEDNuncaCuando se requiere decisión humana
.loki/state/checkpoints/Después de completar tareaAutomática + manual mediante loki checkpoint

Reversión con un comando (v7.5.2+): loki rollback latest o loki rollback to <id> restaura el estado de .loki/ desde un punto de control. Primero captura una instantánea forzada previa a la reversión del estado actual e imprime su id, por lo que una reversión es en sí misma deshacible (loki rollback to <ese-id>). Usa loki rollback list para ver los puntos de control.


Protocolo de Carga de Módulos (Skills)

Este protocolo rige la carga de módulos de habilidad — archivos de instrucciones con ámbito de tarea en skills/. Es distinto de la Divulgación Progresiva del Sistema de Memoria (ver más abajo), que rige las capas de memoria persistentes en .loki/memory/.

1. Lee skills/00-index.md (una vez por sesión)
2. Coincide la tarea actual con el módulo:
   - ¿Escribiendo código? Carga model-selection.md
   - ¿Ejecutando pruebas? Carga testing.md
   - ¿Revisando código? Carga quality-gates.md
   - ¿Depurando? Carga troubleshooting.md
   - ¿Sanando código heredado? Carga healing.md
   - ¿Desplegando? Carga production.md
   - ¿Funcionalidades en paralelo? Carga parallel-workflows.md
   - ¿Planificando arquitectura? Carga compound-learning.md (deepen-plan)
   - ¿Post-verificación? Carga compound-learning.md (extracción de conocimiento)
3. Lee el(los) módulo(s) seleccionado(s)
4. Ejecuta con ese contexto
5. Cuando la categoría de la tarea cambia: Carga nuevos módulos (el contexto anterior se descarta)

Divulgación Progresiva del Sistema de Memoria es una estructura separada de 3 capas (index.json -> timeline.json -> episodic/*.json) para recuperar episodios/patrones pasados. Consulta skills/memory.md y references/memory-system.md.


Lista de Comandos

Comandos (generados desde loki-ts/src/cli/registry.ts; referencia completa en docs/CLI-REFERENCE.md):

version, status, doctor, provider, memory, rollback, proof, wiki, control, kpis, report, trust, crash, contract, start, slack, queue, issues, undo, verify-pr, answer, engine10, help, quick, quickstart, init, template, verify, keys, review, dashboard, config, mcp, acp, stop, pause, resume, why, next, logs, ship, deploy, import, github, issue, ci, modernize, share, assets, export, notify, tour, welcome, onboard, setup-skill, self-update, remote, cockpit, code, context, secrets, api, sandbox, docker, web, preview, telemetry, syslog, explain, docs, test, bench, voice, own, secure, compliance, enterprise, projects, audit, cost, metrics, sentrux, magic


Invocación

Punto de entrada heredado (v6.84.0, en proceso de eliminación; para Loki 10 usa loki "<tarea>" o loki owner/repo#N): loki start [SPEC|ISSUE-REF] detecta automáticamente si la entrada es un archivo PRD, una URL de issue, un número de issue u otro formato de especificación (por ejemplo, OpenAPI). No es necesario elegir entre loki start y loki run — el comando único maneja todos los casos.

# Modo estándar (Claude - funcionalidades completas)
claude --dangerously-skip-permissions
# Luego di: "Loki Mode" o "Loki Mode con especificación en ruta/a/especificación" (PRD .md/.json, OpenAPI .yaml, etc.)

# `loki start` unificado — un solo comando, modo detectado automáticamente
loki start                                   # sin argumentos: analiza el directorio actual, genera especificación automáticamente
loki start ./prd.md                          # Modo PRD (.md/.json/.txt/.yaml) -- un PRD es

…

[truncado para traducción]

Skills relacionados