Guías

Blocked e interrupted

Qué hacer cuando un soldier hace una pregunta, o desaparece.

Blocked: el soldier preguntó algo

Un soldier que se detiene a hacerte una pregunta termina como blocked. La pregunta se guarda como un decision estructurado en la tarea (la pregunta, las opciones si las ofreció, y cuándo se hizo) y se despierta al commander.

vx status
vx decide <task-id> "Use the existing helper"

decide entrega tu respuesta al pane todavía abierto del soldier y la registra contra la decision. Si la pregunta vino del selector de preguntas de Claude Code, pasá el texto exacto de una opción o su número (desde 1); se entrega como una sola pulsación de tecla, como si la hubieras elegido vos. La tarea vuelve a running, o termina de nuevo si el soldier acaba o hace otra pregunta enseguida.

Un soldier de Pi no tiene selector de preguntas. Pregunta con una herramienta ask_user que vexillum le da, y tu respuesta (el texto exacto de una opción o su número, o cualquier texto) se escribe en el archivo que esa herramienta espera; no se teclea nada en su pane. Cuando preguntó con una línea needs-decision: común, la respuesta se escribe como texto: escribí la respuesta misma, no un número de opción. Ver Usar Pi.

Un soldier de OpenCode se responde con pulsaciones de tecla en las pantallas que vexillum reconoce (un prompt de permiso, un formulario de preguntas) y como texto en las demás; always allow nunca se elige por vos. Ver Usar OpenCode.

Solo una tarea blocked puede responderse. Si su pane en realidad ya no está, decide la marca interrupted y se niega.

Una tarea bloqueada por error

Una tarea solo se marca blocked cuando el soldier de verdad preguntó: el selector de preguntas de Claude Code, o una línea needs-decision: escrita en su último turno con texto real. Si una queda bloqueada igual y no hay nada que responder, limpiala sin mandarle nada al soldier:

vx decide <task-id> --dismiss

La tarea pasa a ser lo que dice su pane: running si el soldier sigue trabajando, done (o unconfirmed) si ya terminó, interrupted si el pane no está. Si el pane de verdad está bloqueado en una pregunta, --dismiss se niega y la respondés. La pregunta descartada queda en la tarea, marcada dismissed, y no la vuelve a bloquear. vx prompt y vx ship se niegan ante una tarea blocked y nombran este comando en su error.

Interrupted: el soldier desapareció

interrupted significa que vexillum perdió al soldier mismo (se cerró su pane, o herdr se reinició) mientras seguía trabajando. No significa que el soldier haya fallado. Antes de hacer cualquier otra cosa, mirá dentro de su camp:

git -C <camp path> log --oneline
git -C <camp path> status

El trabajo que ya había commiteado sigue ahí. Si importa, aterrizalo primero con vx land <task-id>.

Después, solo si querés rehacer la tarea:

vx redispatch <task-id>

Esto es re-dispatch, no reanudación. Descarta el camp viejo (cambios sin commitear y commits sin aterrizar incluidos), crea uno nuevo y relanza el prompt original. No se recupera nada del trabajo parcial ni de la sesión del soldier muerto. Como es destructivo, el commander te cuenta lo que encontró en el camp y pregunta antes de correrlo. Solo las tareas interrupted pueden re-despacharse. Redispatch no toca el navegador: si un soldier manejó tu navegador (por ejemplo con una extensión de Chrome), las pestañas que abrió se quedan ahí hasta que las cierres.

Unconfirmed: idle sin prueba

unconfirmed significa que el soldier quedó idle sin ningún commit por delante de su base (o sin reporte, para un scout) y sin una pausa válida declarada. El pane sigue ahí, así que mirá el camp vos mismo.

El output de la tarea termina con una nota que explica el estado, y trae la lectura del pane tomada cuando se marcó la tarea. Si el soldier había declarado una pausa antes y ese archivo ya no está, la nota lo dice: el soldier despertó de su espera, borró su archivo de pausa y terminó su turno sin entregar. No está esperando nada.

No juzgues si el soldier está vivo con un herdr pane read: el viewport puede estar viejo y mostrar una pantalla antigua de "sigue corriendo". Revisá los hechos: si pauses/<agent>.md existe y es reciente (escrito en los últimos 30 minutos), el agent_status del pane en herdr pane list, y el output de la tarea en vx status junto con git log en el camp. Sin pausa reciente, con el pane idle y sin commit ni reporte, el soldier se detuvo sin entregar. Mandale el siguiente paso con vx prompt.

En esta página