harness-kit wiki

Autonomía

Estado: live (v5). La stage intake y la disposición resolver-marcar-continuar están desplegadas en todas las stages (prd, prp, plan, dev, test, pr y system-design). La forma canónica vive en .claude/shared/pipeline-pattern.md. Algunos refinamientos siguen (planned) y están marcados en el texto: model tiering a Haiku para chequeos baratos, y el llenado del context-library/repos.md de cada organización a partir de la plantilla que ya viene en el repo.

El diseño original de harness-kit se detiene y le pide inputs al humano antes de cada artefacto: el agent de PRD pregunta squad, problema, clientes, hipótesis y link de la apuesta; el agent de PRP pregunta las rutas del repo. Cada pregunta es un punto donde la corrida se detiene. El trabajo de autonomía elimina las preguntas triviales sin eliminar las decisiones reales, para que un solo comando lleve una idea de punta a punta y solo se detenga donde el humano realmente aporta criterio.

Las preguntas son falta de contexto disfrazada

Un agent pregunta cuando no tiene contexto para avanzar. Hay dos maneras de eliminar la pregunta:

  1. Borrarla y dejar que el agent adivine. Eso produce artefactos seguros de sí mismos y equivocados: un squad alucinado, una métrica inventada, un cliente verosímil pero falso. Peor que preguntar.
  2. Darle al agent una forma de encontrar la respuesta por su cuenta. El repositorio, su historial y la context library ya contienen casi todo lo que las preguntas intentaban pescar. Léelos primero, pregunta solo lo que es genuinamente externo.

harness-kit toma el segundo camino. Es lo mismo que pasa cuando se suelta a un coding agent en un repositorio bien estructurado, sin ninguna configuración a medida: lee el código, el README, los commits recientes, e infiere la intención. El trabajo de autonomía vuelve ese paso de lectura explícito y obligatorio, para que la inferencia ocurra antes de que surja cualquier pregunta.

En términos de harness engineering, esto es un cambio de feedback a feedforward (ver Ingeniería de harness). Preguntarle al humano a mitad de la corrida es feedback: el agent produce un hueco y espera una corrección. Cosechar contexto al inicio es feedforward: al agent se le entrega lo que necesita antes de empezar, y el hueco nunca se forma.

La stage de intake

La autonomía se apoya en una nueva primera stage, intake, que corre antes de prd. Es un subagent cuyo único trabajo es reunir contexto y volcarlo en un solo artefacto que lee el resto del pipeline.

intake  →  prd  →  prp  →  plan  →  dev  →  test  →  pr
  │
  └─ reads:  target repo (code, README, recent commits, open PRs/issues)
             context-library/ (business-info, squads/, metrics/, decisions/)
             git remotes and repo registry
  └─ emits:  .claude/runtime/outputs/intake/{feature_id}.md
             { squad, problem, customers[], hypothesis, repos[], metrics, unknowns[] }

Como es un subagent, intake corre en un contexto aislado. Su exploración pesada, potencialmente cientos de archivos leídos, nunca contamina el contexto de las stages que siguen. Ellas reciben solo el intake.md destilado, no la búsqueda cruda.

El artefacto de intake es la fuente única de las respuestas que el agent de PRD solía pedir. El agent de PRD ya no interroga al humano; lee el intake.md.

Resolver, marcar, continuar

Cada input que el pipeline necesita tiene una de tres disposiciones. Esto reemplaza el binario preguntar-o-bloquear.

Disposición Cuándo Qué pasa
Resolver La respuesta está en el repo o en la context library Intake escribe el valor en intake.md. Cero contacto humano.
Marcar La respuesta es genuinamente imposible de deducir del contexto disponible (por ejemplo, un link de apuesta, la meta de un ejecutivo) Intake escribe NOT FOUND - NEEDS REVIEW: {detail} y lo agrega a unknowns[]. La corrida continúa.
Continuar Siempre El pipeline nunca se bloquea por un input faltante a mitad de la corrida. Los desconocidos aparecen en la siguiente gate, no como interrupción.

Los evals ya toleran una cantidad acotada de markers sin resolver (prp-context-quality solo bloquea por encima de cinco markers NEEDS REVIEW/TBD). La autonomía se apoya en esa tolerancia que ya existe: unos pocos desconocidos honestos son aceptables y visibles; no son razón para detenerse.

La regla en una línea: resuelve desde el contexto, marca lo que no puedas, nunca te detengas a preguntar.

Autonomía con gates: humanos supervisando el loop, no dentro de él

La autonomía total no es el objetivo. Generar sin supervisión y sin ningún checkpoint humano es peligroso y caro de deshacer. El objetivo es mover al humano de dentro del loop (respondiendo un input antes de cada artefacto) a por encima del loop (aprobando la dirección en los puntos donde revisar es barato y equivocarse es caro), una distinción tomada de los textos de harness engineering de Böckeler.

harness-kit pone gates humanas solo en fronteras de alto apalancamiento y baja reversibilidad:

intake → prd → [ GATE: approve direction ] → prp → plan →
dev → test → [ GATE: approve PR before it opens ] → pr

Todo lo que hay entre las gates corre sin interrupción. Dos decisiones, no una docena de preguntas.

Una flag --yolo elimina incluso esas gates para flujos confiables y de bajo riesgo, colapsando el pipeline entero en un solo comando sin supervisión. La respeta el orquestador /pipeline:run.

Qué sigue siendo determinístico

No toda pregunta eliminada necesita un LLM. Algunas son una consulta, y una consulta debería ser código, no inferencia:

Mantener esto en código lo hace barato y confiable, y reserva los agents para las partes que realmente requieren criterio.

Cómo se enchufa al harness existente

La autonomía agrega una stage y cambia la disposición de los inputs. No reemplaza la maquinaria de gating:

El pipeline se vuelve más independiente sin volverse menos gobernado. Las gates que hacen confiable el resultado siguen exactamente donde estaban.

Ver también

Traducción manual de Autonomía, la página original en inglés en la wiki.