Ir al contenido

Referencia de Configuración

FicheroPropósito
~/.karajan/kj.config.ymlConfiguración principal (o $KJ_HOME/kj.config.yml)
<proyecto>/.karajan.ymlOverrides de pricing a nivel de proyecto
<proyecto>/.karajan/roles/*.mdInstrucciones de roles a nivel de proyecto
<proyecto>/.karajan/plugins/*.jsPlugins a nivel de proyecto

Los flags CLI sobreescriben los valores del fichero de configuración. Los valores de configuración sobreescriben los defaults.


coder: claude # Agente IA que escribe código
reviewer: codex # Agente IA que revisa código
review_mode: standard # Perfil de exigencia de revisión
max_iterations: 5 # Máx iteraciones del bucle coder-reviewer
review_rules: ./review-rules.md # Ruta a reglas de revisión custom
coder_rules: ./coder-rules.md # Ruta a reglas del coder custom
base_branch: main # Rama base de git para diffs
max_budget_usd: null # Presupuesto máximo en USD (null = ilimitado)
CampoTipoDefaultDescripción
coderstringclaudeNombre del CLI del agente: claude, codex, gemini, aider, o un plugin custom
reviewerstringcodexNombre del CLI del agente para revisión de código
review_modeenumstandardparanoid | strict | standard | relaxed | custom
max_iterationsnumber5Máximo de iteraciones del bucle coder-reviewer (1-20)
review_rulesstring./review-rules.mdRuta al fichero de instrucciones del reviewer
coder_rulesstring./coder-rules.mdRuta al fichero de instrucciones del coder
base_branchstringmainRama de git usada para comparar diffs
max_budget_usdnumber | nullnullTope de presupuesto estimado por sesión en USD (basado en pricing equivalente a API). null = ilimitado

Override de provider y modelo por rol:

roles:
coder:
provider: claude
model: claude-opus-4-6
reviewer:
provider: codex
model: null
planner:
provider: null
model: null
refactorer:
provider: null
model: null
solomon:
provider: null
model: null
researcher:
provider: null
model: null
tester:
provider: null
model: null
security:
provider: null
model: null
triage:
provider: null
model: null
discover:
provider: null
model: null
hu-reviewer:
provider: null
model: null
architect:
provider: null
model: null
audit:
provider: null
model: null
impeccable:
provider: null
model: null
commiter:
provider: null
model: null
RolPropósito
coderEscribe código y tests
reviewerRevisa código: calidad, seguridad, corrección
plannerGenera planes de implementación antes de codificar
refactorerRefactoriza código tras la aprobación
solomonResuelve conflictos entre coder y reviewer
researcherAnaliza el codebase antes de planificar
testerAudita la calidad de los tests tras la revisión
securityAuditoría de seguridad OWASP
triageClasifica la complejidad de la tarea
discoverDetección de gaps pre-ejecución
hu-reviewerCertificación de historias de usuario
architectDiseño de arquitectura de solución
auditAuditoría de salud del codebase de solo lectura
impeccableAuditoría automatizada de diseño UI/UX
commiterAutomatización git

Activar o desactivar roles opcionales:

pipeline:
planner:
enabled: false
refactorer:
enabled: false
solomon:
enabled: false
researcher:
enabled: false
tester:
enabled: false
security:
enabled: false
triage:
enabled: false
reviewer:
enabled: true
discover:
enabled: false
hu-reviewer:
enabled: false
architect:
enabled: false
audit:
enabled: false
impeccable:
enabled: false
commiter:
enabled: false

Todos los roles opcionales están desactivados por defecto. Actívalos con flags CLI --enable-<rol> o en la configuración.


development:
methodology: tdd
require_test_changes: true
test_file_patterns:
- /tests/
- /__tests__/
- .test.
- .spec.
source_file_extensions:
- .js
- .jsx
- .ts
- .tsx
- .py
- .go
- .java
- .rb
- .php
- .cs
CampoTipoDefaultDescripción
methodologyenumtddtdd (exigir tests primero) o standard (tests opcionales)
require_test_changesbooleantrueEn TDD, exigir cambios en tests junto con cambios en código fuente
test_file_patternsstring[]Ver arribaPatrones para identificar ficheros de test
source_file_extensionsstring[]Ver arribaExtensiones de ficheros fuente a monitorizar para TDD

coder_options:
model: null
auto_approve: true
CampoTipoDefaultDescripción
modelstring | nullnullOverride de modelo para el coder (ej: claude-opus-4-6)
auto_approvebooleantruePermitir al coder auto-aprobar su output si el reviewer aprueba

reviewer_options:
output_format: json
require_schema: true
model: null
deterministic: true
retries: 1
fallback_reviewer: codex
CampoTipoDefaultDescripción
output_formatstringjsonFormato de salida del reviewer (siempre JSON para revisión estructurada)
require_schemabooleantrueValidar que la salida del reviewer coincida con el schema esperado
modelstring | nullnullOverride de modelo para el reviewer
deterministicbooleantrueUsar modo determinista para revisiones reproducibles
retriesnumber1Reintentos del reviewer ante errores de parseo
fallback_reviewerstringcodexProvider de respaldo si el reviewer principal falla

sonarqube:
enabled: true
host: http://localhost:9000
external: false
container_name: karajan-sonarqube
network: karajan_sonar_net
token: null
project_key: null
admin_user: admin
admin_password: null
quality_gate: true
enforcement_profile: pragmatic
max_scan_retries: 3
gate_block_on:
- new_reliability_rating=E
- new_security_rating=E
- new_maintainability_rating=E
- new_coverage<80
- new_duplicated_lines_density>5
fail_on:
- BLOCKER
- CRITICAL
ignore_on:
- INFO
volumes:
data: karajan_sonar_data
logs: karajan_sonar_logs
extensions: karajan_sonar_extensions
timeouts:
healthcheck_seconds: 5
compose_up_ms: 300000
compose_control_ms: 120000
logs_ms: 30000
scanner_ms: 900000
coverage:
enabled: false
command: null
timeout_ms: 300000
block_on_failure: true
lcov_report_path: null
scanner:
sources: "src,public,lib"
exclusions: "**/node_modules/**,**/dist/**,**/build/**,**/*.min.js"
test_inclusions: "**/*.test.js,**/*.spec.js,**/tests/**,**/__tests__/**"
coverage_exclusions: "**/tests/**,**/__tests__/**,**/*.test.js,**/*.spec.js"
disabled_rules:
- "javascript:S1116"
- "javascript:S3776"
CampoTipoDefaultDescripción
enabledbooleantrueActivar escaneo SonarQube
hoststringhttp://localhost:9000URL del servidor SonarQube
externalbooleanfalseSi true, asumir SonarQube externo (no gestionar Docker)
tokenstring | nullnullToken de autenticación. Preferir la variable KJ_SONAR_TOKEN
quality_gatebooleantrueComprobar estado del quality gate tras el escaneo
enforcement_profileenumpragmaticpragmatic (bloquear solo en ERROR) o paranoid (bloquear en cualquier estado distinto de OK)
max_scan_retriesnumber3Reintentar escaneos fallidos
SeveridadSignificado
BLOCKERCrash de la aplicación, pérdida de datos
CRITICALAgujero de seguridad, error lógico
MAJORProblema de calidad que afecta funcionalidad
MINORCode smell, inconsistencia
INFOConvención, clarificación

git:
auto_commit: false
auto_push: false
auto_pr: false
auto_rebase: true
branch_prefix: feat/
CampoTipoDefaultDescripción
auto_commitbooleanfalseHacer commit de todos los cambios tras aprobación
auto_pushbooleanfalsePush de la rama a origin tras el commit
auto_prbooleanfalseCrear pull request hacia base_branch
auto_rebasebooleantrueRebase sobre base_branch antes de push
branch_prefixstringfeat/Prefijo para nombres de rama (ej: feat/, fix/)

El flujo de automatización Git tras aprobación: rebase (si está activo) → commit → push → PR.


session:
max_iteration_minutes: 15
max_total_minutes: 120
max_planner_minutes: 60
max_agent_silence_minutes: 20
fail_fast_repeats: 2
repeat_detection_threshold: 2
max_sonar_retries: 3
max_reviewer_retries: 3
max_tester_retries: 1
max_security_retries: 1
expiry_days: 30
CampoTipoDefaultDescripción
max_iteration_minutesnumber15Tiempo límite por ciclo coder-reviewer
max_total_minutesnumber120Tiempo límite total de sesión
max_planner_minutesnumber60Límite duro de runtime para planificación (kj_plan/kj plan)
max_agent_silence_minutesnumber20Finaliza la ejecución si no hay salida del agente durante estos minutos
fail_fast_repeatsnumber2Salir tras N fallos idénticos repetidos
repeat_detection_thresholdnumber2Iteraciones antes de detectar patrones repetidos
max_sonar_retriesnumber3Máx reintentos de escaneo SonarQube
max_reviewer_retriesnumber3Máx reintentos del reviewer ante error de parseo
max_tester_retriesnumber1Máx reintentos de auditoría de tests
max_security_retriesnumber1Máx reintentos de auditoría de seguridad
expiry_daysnumber30Auto-limpieza de sesiones más antiguas que esto

budget:
warn_threshold_pct: 80
currency: usd
exchange_rate_eur: 0.92
pricing:
claude:
input_per_million: 0.003
output_per_million: 0.015
CampoTipoDefaultDescripción
warn_threshold_pctnumber80Avisar cuando el gasto estimado alcance este % de max_budget_usd
currencyenumusdMoneda de visualización: usd o eur
exchange_rate_eurnumber0.92Tipo de cambio EUR a USD
pricingobjectBuilt-inTarifas de pricing por agente para estimación (input_per_million, output_per_million)

La sección pricing también puede definirse en el fichero .karajan.yml a nivel de proyecto para sobrescribir tarifas de estimación por proyecto.


retry:
max_attempts: 3
initial_backoff_ms: 1000
max_backoff_ms: 30000
backoff_multiplier: 2
jitter_factor: 0.1
CampoTipoDefaultDescripción
max_attemptsnumber3Máx reintentos para errores transitorios de API
initial_backoff_msnumber1000Delay inicial de backoff (1 segundo)
max_backoff_msnumber30000Delay máximo de backoff (30 segundos)
backoff_multipliernumber2Multiplicador exponencial de backoff
jitter_factornumber0.1Jitter aleatorio como fracción del backoff (10%)

output:
report_dir: ./.reviews
log_level: info
CampoTipoDefaultDescripción
report_dirstring./.reviewsDirectorio para informes y logs de sesión
log_levelenuminfoNivel de logging: debug | info | warn | error

Integración con Planning Game — un sistema de gestión de proyectos ágil (metodología XP) disponible como servidor MCP.

planning_game:
enabled: false
project_id: null
codeveloper: null
CampoTipoDefaultDescripción
enabledbooleanfalseActivar integración con Planning Game MCP
project_idstring | nullnullID del proyecto en Planning Game
codeveloperstring | nullnullID del developer para el campo codeveloper

becaria:
enabled: false
review_event: becaria-review
comment_event: becaria-comment
comment_prefix: true
CampoTipoDefaultDescripción
enabledbooleanfalseActivar BecarIA Gateway — publica resultados del pipeline como comentarios/reviews en PRs vía GitHub App
review_eventstringbecaria-reviewTipo de evento repository_dispatch de GitHub para reviews formales (APPROVE/REQUEST_CHANGES)
comment_eventstringbecaria-commentTipo de evento repository_dispatch de GitHub para comentarios de agentes
comment_prefixbooleantruePrefijar comentarios con [Agente] (ej: [Reviewer], [Sonar])

Cuando enabled: true, Karajan establece automáticamente git.auto_commit, git.auto_push y git.auto_pr a true. Ver Flujos del Pipeline para la arquitectura completa de BecarIA.


serena:
enabled: false
CampoTipoDefaultDescripción
enabledbooleanfalseActivar integración con Serena para contexto con conocimiento del codebase

model_selection:
enabled: true
tiers: {}
role_overrides: {}
CampoTipoDefaultDescripción
enabledbooleantrueActivar selección inteligente de modelo basada en complejidad de la tarea
tiersobject{}Tiers con nombre y asignación de modelo (ej: fast, balanced, powerful)
role_overridesobject{}Overrides de modelo por rol que saltan la selección por tier

Ejemplo con tiers:

model_selection:
enabled: true
tiers:
fast:
model: claude-sonnet-4-6
balanced:
model: claude-opus-4-6
role_overrides:
reviewer:
model: claude-opus-4-6

Desactivar con el flag CLI --no-smart-models.


failFast:
repeatThreshold: 2
CampoTipoDefaultDescripción
repeatThresholdnumber2Detener el pipeline tras este número de fallos idénticos consecutivos

Esto es independiente de session.fail_fast_repeatsfailFast aplica a la detección global de repeticiones del orquestador entre todas las etapas.


VariablePropósitoDefault
KJ_HOMESobreescribir directorio de configuración de Karajan~/.karajan
KJ_SONAR_TOKENToken de autenticación de SonarQubeDesde config
KJ_SONAR_ADMIN_USERUsuario admin de SonarQubeadmin
KJ_SONAR_ADMIN_PASSWORDContraseña admin de SonarQubeDesde config
KJ_SONAR_PROJECT_KEYSobreescribir project key de SonarQubeDesde config
VISUAL / EDITOREditor para kj config --editvi

Las variables de entorno tienen precedencia sobre los valores del fichero de configuración para los campos que mapean.


El ajuste review_mode controla la exigencia del reviewer al evaluar código:

  • Prioridad: Seguridad → Corrección → Tests → Arquitectura → Estilo
  • Bloquean: Problemas de seguridad, errores lógicos, tests rotos, sobreescritura de ficheros
  • No bloquean: Sugerencias de estilo
  • Filosofía: Todo cambio es sospechoso hasta que se demuestre seguro
  • Prioridad: Seguridad → Corrección → Tests → Integridad de datos → Arquitectura → Estilo
  • Bloquean: Todas las comprobaciones de seguridad, falta de manejo de errores, falta de validación de inputs, falta de tests, sobreescritura de ficheros
  • Umbral de confianza: Aprobar solo si confianza > 0.85. Default a RECHAZO
  • Prioridad: Seguridad → Corrección → Tests → Arquitectura → Estilo
  • Bloquean: Todos los problemas de seguridad, errores lógicos, cobertura de tests insuficiente, falta de manejo de errores para llamadas externas
  • Umbral de confianza: Rechazar si confianza < 0.80
  • Filosofía: Preferir aprobar con sugerencias
  • Prioridad: Seguridad crítica → Bugs claros → Tests de rutas críticas
  • Bloquean: Solo seguridad crítica (secrets, SQL injection, XSS) y errores lógicos claros
  • Umbral de confianza: Rechazar si confianza < 0.60

Usa el fichero base reviewer.md (a nivel de proyecto, global o built-in) sin un perfil predefinido. Control total a través de tu fichero review-rules.md.


Las instrucciones de rol se resuelven en este orden (el primero encontrado gana):

  1. Proyecto: <proyecto>/.karajan/roles/{rol}.md
  2. Global: ~/.karajan/roles/{rol}.md
  3. Built-in: templates/roles/{rol}.md (incluido con Karajan)

Los perfiles de modo de revisión siguen el mismo patrón:

  1. .karajan/roles/reviewer-{modo}.md
  2. ~/.karajan/roles/reviewer-{modo}.md
  3. templates/roles/reviewer-{modo}.md

Los plugins se cargan de todas las ubicaciones (no first-wins):

  1. <proyecto>/.karajan/plugins/*.js
  2. ~/.karajan/plugins/*.js

~/.karajan/ # Config global ($KJ_HOME)
├── kj.config.yml # Configuración principal
├── roles/ # Instrucciones de roles globales
│ ├── coder.md
│ ├── reviewer.md
│ ├── reviewer-paranoid.md
│ └── ...
├── plugins/ # Plugins globales
│ └── my-agent.js
├── sessions/ # Logs de sesión
│ └── session-{id}/
└── docker-compose.sonar.yml # Config Docker de SonarQube
<proyecto>/
├── .karajan/ # Overrides a nivel de proyecto
│ ├── roles/ # Instrucciones de roles del proyecto
│ │ └── reviewer.md
│ └── plugins/ # Plugins del proyecto
│ └── my-plugin.js
├── .karajan.yml # Overrides de pricing del proyecto
├── coder-rules.md # Directrices del coder
└── review-rules.md # Directrices de revisión

review_mode: paranoid
development:
methodology: tdd
sonarqube:
enabled: true
enforcement_profile: paranoid
quality_gate: true
pipeline:
security:
enabled: true
tester:
enabled: true
max_iterations: 5
git:
auto_commit: false