¿Qué hace Baton?
Usa el motor Python incluido como el libro de contabilidad local autorizado de tareas. Ejecuta los comandos explícitamente; esta habilidad no inicia un demonio, no detecta límites de uso del modelo ni se comunica con otros agentes automáticamente.
Interpretar acciones del chat
Los usuarios normalmente invocan esta habilidad en el chat, como /baton handover TASK-01 to pc1-codex, $baton continue TASK-01, o /baton:baton status, dependiendo del anfitrión. Interpreta las palabras restantes como una solicitud de acción y ejecuta el comando del motor correspondiente para el usuario. Estas son solicitudes dirigidas a esta única habilidad, no comandos registrados por separado ni comandos de terminal.
| Acción solicitada | Acción del motor |
|---|---|
init | Inicializar si es necesario; inspeccionar el proyecto; InitFresh solo para un tablero nuevo. |
join | JoinExisting. |
status, tasks, packet TASK | Status, Tasks, WebPacket. |
add TASK "Título" with files ... | AddTask, con dependencias cuando se proporcionen. |
start TASK, claim TASK | SilentHandshake; usa --git-branch para trabajo en Git y un árbol de trabajo aislado cuando se solicite. Luego implementa solo si el usuario pidió implementación. |
checkpoint TASK with message ... | Checkpoint; añade --push solo dentro de la autorización de carga del usuario. |
progress TASK to 60 percent | UpdateProgress, con una cifra de progreso veraz y notas. |
handover TASK to AGENT, handoff TASK to AGENT | AtomicHandoff; incluye el prompt actual, los cambios y el trabajo restante de la conversación. |
continue TASK, resume TASK | CheckOrContinue; actúa según su decisión de propiedad antes de editar. |
done TASK | Ejecuta las comprobaciones relevantes del proyecto, luego Done cuando la implementación esté lista. |
review TASK | Inspecciona los cambios fijados y las comprobaciones relevantes como un agente diferente, luego SubmitReview. |
reopen TASK, merge TASK, release TAG, revert TASK, recover TAG | ReopenTask, MergeTask, ReleaseTag, RevertTask, RecoverTag respectivamente. |
release files ... from TASK | ReleaseFiles para los reclamos especificados. |
resolve recovery | ResolveRecovery; conserva el trabajo no resuelto y su diario si se rechaza. |
abandon recovery | ResolveRecovery --abandon-recovery solo cuando se solicite explícitamente el abandono. Informa sobre las reparaciones restantes. |
selftest | SelfTest. |
reset workspace | ResetWorkspace --confirm-reset solo para un restablecimiento explícito autorizado por el líder. |
Resuelve los IDs y rutas de tareas a partir de la solicitud y el tablero actual. Pide información genuinamente faltante, como la clave de un nuevo proyecto o una identidad de colaborador ambigua. Pasa siempre el ID de colaborador de esta conversación explícitamente a las acciones del motor que requieren identidad; otro agente podría haber cambiado el ID guardado de la sesión local compartida. Respeta la autorización previa en la conversación. MergeTask y ReleaseTag intentan una subida remota, por lo que no las uses contra un remoto configurado cuando la solicitud del usuario prohíba la subida.
Configurar un proyecto
Requisitos: Python 3.10+ y Git. Selecciona un intérprete de Python 3 disponible (python3, python o py -3 en Windows); no supongas que el alias python3 de Windows funciona.
Antes del primer comando del motor en un proyecto, localiza el scripts/bootstrap.py propio de esta habilidad y ejecútalo con el intérprete elegido y --project <ruta-absoluta-del-proyecto>. Copia el motor empaquetado en .collab/collab_engine.py y añade /.collab/ al .gitignore del proyecto. No inicializa el libro de contabilidad ni reemplaza un motor existente diferente. Resuelve una actualización por separado si se niega.
Los comandos siguientes se ejecutan desde la raíz del proyecto. Reemplaza python3 con el intérprete seleccionado cuando sea necesario. Para tareas respaldadas por Git, primero verifica que el proyecto sea un repositorio Git con un commit base y una identidad Git configurada. Usa su rama base real con --base-branch <rama> cuando no sea main.
Establecer la propiedad antes de editar
- Ejecuta
Status. Únete al espacio de trabajo inicializado con un ID de colaborador distinto; obtén la clave del proyecto a través del contexto local autorizado del usuario. Para un espacio de trabajo nuevo, usaInitFreshcon el líder elegido y una clave de proyecto. Mantén la clave y la sesión local fuera de Git. - Añade una tarea con sus rutas de archivo previstas y dependencias si no existe.
- Ejecuta
SilentHandshakeantes de editar. Un BUSY_REDIRECT es una negativa a reclamar esa tarea; elige una alternativa elegible. Usa--use-worktreepara tareas simultáneas respaldadas por ramas que compartan el mismo proyecto. - Haz checkpoint del progreso significativo. Al transferir la propiedad, usa AtomicHandoff; el agente receptor ejecuta CheckOrContinue. Un agente que ha realizado un traspaso debe respetar SKIP_ALREADY_HANDED_OFF.
- Ejecuta Done cuando la implementación esté lista, luego haz que un agente diferente revise el commit fijado. Una revisión genuina significa inspeccionar los cambios y las comprobaciones relevantes antes de enviar el veredicto.
Respeta el alcance del usuario y la autorización existente para commits, cargas, fusiones y lanzamientos. La aprobación de un par no autoriza por sí sola la publicación externa. No envíes mensajes a otros agentes o personas sin autorización; los registros de traspaso pueden ser consumidos por el siguiente agente cuando se ejecute.
Comandos del motor
Prefija cada fila con python3 .collab/collab_engine.py --local-path .. Proporciona un --collaborator-id <agente> estable cuando corresponda.
| Acción | Argumentos y comportamiento |
|---|---|
InitFresh | --project-key <clave> --collaborator-id <líder>; rechaza un libro de contabilidad existente. |
JoinExisting | --project-key <clave> --collaborator-id <agente> --device-cluster-id <clúster> --same-device true para colaboración en el mismo PC. |
Status / Tasks | Inspecciona propiedad, progreso y entrega. Status acepta --render-format CLI o Markdown. |
AddTask | --task-id T1 --task-title "Implementar funcionalidad" --files src/feature.py; opcional --depends-on T0. |
SilentHandshake | --task-id T1 --collaborator-id <propietario> --git-branch; opcional --use-worktree. |
Checkpoint | --task-id T1 --collaborator-id <propietario> --commit-message "checkpoint: progreso significativo"; opcional --push. Confirma los archivos actualmente propiedad del agente. |
ReleaseFiles | --task-id T1 --collaborator-id <propietario> --files <rutas> para liberación intencional de reclamos. |
AtomicHandoff | --task-id T1 --collaborator-id <propietario> --target-agent-id <receptor> --reason "Continuar implementación"; añade contexto con --last-prompt, --changes-summary, --remaining-todo; opcional --push. |
CheckOrContinue | --task-id T1 --collaborator-id <agente>; carga el traspaso o respeta la protección de reanudación/salto. |
Done | --task-id T1 --collaborator-id <propietario>; fija el trabajo limpio para revisión; opcional --push. |
SubmitReview | `--task-id T1 --collaborator-id --review-verdict APPROVED |
ReopenTask | --task-id T1 --collaborator-id <propietario-o-líder> para revisar trabajo pendiente o revertido. |
MergeTask | --task-id T1 --collaborator-id <agente> --squash; intenta un push. Usa --use-worktree para preservar el checkout compartido de otra tarea; --reapply reaplica explícitamente el trabajo revertido. |
ReleaseTag | --tag v1.0.0 --tag-message "Hito aceptado" --collaborator-id <agente>; etiqueta la rama base verificada e intenta la subida. |
RevertTask | --task-id T1 --collaborator-id <agente>; crea un commit de deshacer; opcional --push y --use-worktree. |
RecoverTag | --tag v1.0.0 --recovery-branch recover/v1.0.0 para crear una rama a partir de un hito. |
ResolveRecovery | Resuelve solo después de que el checkout afectado esté reparado. --abandon-recovery archiva explícitamente el diario y enumera las reparaciones manuales; no realiza dichas reparaciones. |
SelfTest | Ejecuta la suite de 42 etapas del motor en fixtures desechables. |
Para una tarea respaldada por rama que use un árbol de trabajo, edita y ejecuta las comprobaciones del proyecto dentro del worktreePath registrado de la tarea.
Límites y recuperación
- Los reclamos son comprobaciones cooperativas a nivel del motor; los editores y comandos arbitrarios de Git pueden eludirlos. Los IDs de colaborador son etiquetas, no identidades autenticadas.
- El tablero de un PC es la autoridad local. PCs separados usan ramas y sincronización Git; las réplicas del tablero sincronizadas no proporcionan un bloqueo distribuido. No trates una carpeta compartida como un libro de contabilidad transaccional compartido.
--backup-path <carpeta-local-sincronizada>escribe una instantánea unidireccional del tablero. El cliente de sincronización maneja la subida a la nube; el motor no tiene un adaptador nativo de API de Drive, OneDrive o TeraBox.- La aprobación de revisión marca la tarea como completada y libera sus reclamos; la fusión/entrega verificada es una operación separada. Informa
DELIVERY: COMPLETEsolo cuando el motor verifique el push remoto; conserva LOCAL_ONLY o INCOMPLETE cuando se devuelva. - Si la recuperación informa UNRESOLVED, conserva el diario y los archivos locales. Inspecciona el checkout nombrado, guarda las ediciones relevantes y vuelve a intentar después de la limpieza. No uses el abandono como sustituto de la conservación de archivos.
- ResetWorkspace archiva el tablero y requiere identidad de líder más
--confirm-reset; úsalo solo cuando restablecer el espacio de trabajo esté dentro de la solicitud del usuario.
La habilidad requiere un agente de codificación con acceso al sistema de archivos y al shell. Usa la invocación real de la habilidad del anfitrión; /baton no es un comando de terminal o API de chatbot registrado universalmente.