Que fait baton ?
Utilisez le moteur Python fourni comme registre de tâche local faisant autorité. Exécutez les commandes explicitement ; cette compétence ne démarre pas de démon, ne détecte pas les limites d'utilisation du modèle et ne contacte pas d'autres agents automatiquement.
Interpréter les actions de chat
Les utilisateurs invoquent normalement cette compétence dans le chat, comme /baton handover TASK-01 to pc1-codex, $baton continue TASK-01, ou /baton:baton status, selon l'hôte. Interprétez les mots restants comme une demande d'action et exécutez la commande moteur correspondante pour l'utilisateur. Il s'agit de demandes adressées à cette seule compétence, et non de commandes enregistrées séparément ou de commandes terminal.
| Action demandée | Action moteur |
|---|---|
init | Amorcer si nécessaire ; inspecter le projet ; InitFresh seulement pour un nouveau tableau. |
join | JoinExisting. |
status, tasks, packet TASK | Status, Tasks, WebPacket. |
add TASK "Titre" with files ... | AddTask, avec dépendances le cas échéant. |
start TASK, claim TASK | SilentHandshake ; utiliser --git-branch pour le travail Git et un worktree isolé si demandé. Ensuite, implémenter seulement si l'utilisateur a demandé une implémentation. |
checkpoint TASK with message ... | Checkpoint ; ajouter --push uniquement dans le cadre de l'autorisation de téléversement de l'utilisateur. |
progress TASK to 60 percent | UpdateProgress, avec un chiffre de progression véridique et des notes. |
handover TASK to AGENT, handoff TASK to AGENT | AtomicHandoff ; inclure l'invite actuelle, les modifications et le travail restant de la conversation. |
continue TASK, resume TASK | CheckOrContinue ; agir sur sa décision de propriété avant d'éditer. |
done TASK | Exécuter les vérifications de projet pertinentes, puis Done lorsque l'implémentation est prête. |
review TASK | Inspecter les modifications épinglées et les vérifications pertinentes en tant qu'agent différent, puis SubmitReview. |
reopen TASK, merge TASK, release TAG, revert TASK, recover TAG | ReopenTask, MergeTask, ReleaseTag, RevertTask, RecoverTag respectivement. |
release files ... from TASK | ReleaseFiles pour les revendications spécifiées. |
resolve recovery | ResolveRecovery ; conserver le travail non résolu et son journal si refusé. |
abandon recovery | ResolveRecovery --abandon-recovery seulement lorsque l'abandon est explicitement demandé. Signaler les réparations restantes. |
selftest | SelfTest. |
reset workspace | ResetWorkspace --confirm-reset uniquement pour une réinitialisation explicite autorisée par le chef. |
Résoudre les identifiants de tâche et les chemins à partir de la demande et du tableau actuel. Demander les informations réellement manquantes, comme la clé d'un nouveau projet ou une identité de collaborateur ambiguë. Toujours passer l'identifiant de collaborateur de cette conversation explicitement aux actions moteur qui en nécessitent un ; un autre agent peut avoir changé l'identifiant sauvegardé de la session locale partagée. Respecter l'autorisation antérieure dans la conversation. MergeTask et ReleaseTag tentent un téléversement distant, ne pas les utiliser contre un dépôt distant configuré lorsque la demande de l'utilisateur interdit le téléversement.
Configurer un projet
Prérequis : Python 3.10+ et Git. Sélectionner un interpréteur Python 3 disponible (python3, python, ou py -3 sur Windows) ; ne pas supposer que l'alias Windows python3 fonctionne.
Avant la première commande moteur dans un projet, localiser le script scripts/bootstrap.py de cette compétence et l'exécuter avec l'interpréteur choisi et --project <chemin-absolu-du-projet>. Il copie le moteur fourni dans .collab/collab_engine.py et ajoute /.collab/ au .gitignore du projet. Il n'initialise pas le registre et ne remplace pas un moteur existant différent. Résoudre une mise à niveau séparément si elle est refusée.
Les commandes ci-dessous s'exécutent depuis la racine du projet. Remplacer python3 par l'interpréteur sélectionné si nécessaire. Pour les tâches basées sur Git, vérifier d'abord que le projet est un dépôt Git avec un commit de base et une identité Git configurée. Utiliser sa branche de base réelle avec --base-branch <branche> lorsqu'elle n'est pas main.
Établir la propriété avant d'éditer
- Exécuter
Status. Rejoindre l'espace de travail initialisé avec un identifiant de collaborateur distinct ; obtenir la clé du projet via le contexte local autorisé de l'utilisateur. Pour un nouvel espace de travail, utiliserInitFreshavec le chef choisi et une clé de projet. Garder la clé et la session locale hors de Git. - Ajouter une tâche avec ses chemins de fichiers prévus et ses dépendances si elle n'existe pas.
- Exécuter
SilentHandshakeavant d'éditer. UnBUSY_REDIRECTest un refus de revendiquer cette tâche ; choisir une alternative éligible. Utiliser--use-worktreepour les tâches simultanées avec branche partageant le même projet. - Point de contrôle (
Checkpoint) sur les progrès significatifs. Lors du transfert de propriété, utiliserAtomicHandoff; l'agent récepteur exécuteCheckOrContinue. Un agent qui a transféré doit respecterSKIP_ALREADY_HANDED_OFF. - Exécuter
Donelorsque l'implémentation est prête, puis faire examiner le commit épinglé par un agent différent. Une véritable revue signifie inspecter les modifications et les vérifications pertinentes avant de soumettre le verdict.
Respecter le périmètre de l'utilisateur et l'autorisation existante pour les commits, téléversements, fusions et publications. L'approbation par un pair n'autorise pas en soi une publication externe. N'envoyer aucun message à d'autres agents ou personnes sans autorisation ; les enregistrements de transfert peuvent être consommés par l'agent suivant lorsqu'il s'exécute.
Commandes moteur
Préfixer chaque ligne avec python3 .collab/collab_engine.py --local-path .. Fournir un --collaborator-id <agent> stable le cas échéant.
| Action | Arguments et comportement |
|---|---|
InitFresh | --project-key <clé> --collaborator-id <chef> ; refuse un registre existant. |
JoinExisting | --project-key <clé> --collaborator-id <agent> --device-cluster-id <cluster> --same-device true pour une collaboration sur le même PC. |
Status / Tasks | Inspecter la propriété, la progression et la livraison. Status accepte --render-format CLI ou Markdown. |
AddTask | --task-id T1 --task-title "Implémenter la fonctionnalité" --files src/feature.py ; optionnel --depends-on T0. |
SilentHandshake | --task-id T1 --collaborator-id <propriétaire> --git-branch ; optionnel --use-worktree. |
Checkpoint | --task-id T1 --collaborator-id <propriétaire> --commit-message "point de contrôle : progrès significatif" ; optionnel --push. Valide les fichiers actuellement possédés. |
ReleaseFiles | --task-id T1 --collaborator-id <propriétaire> --files <chemins> pour la libération intentionnelle de revendication. |
AtomicHandoff | --task-id T1 --collaborator-id <propriétaire> --target-agent-id <récepteur> --reason "Continuer l'implémentation" ; ajouter du contexte avec --last-prompt, --changes-summary, --remaining-todo ; optionnel --push. |
CheckOrContinue | --task-id T1 --collaborator-id <agent> ; charger le transfert ou respecter la garde de reprise-skip. |
Done | --task-id T1 --collaborator-id <propriétaire> ; épingle un travail propre pour revue ; optionnel --push. |
SubmitReview | `--task-id T1 --collaborator-id --review-verdict APPROUVÉ |
ReopenTask | --task-id T1 --collaborator-id <propriétaire-ou-chef> pour réviser un travail en attente ou annulé. |
MergeTask | --task-id T1 --collaborator-id <agent> --squash ; tente un push. Utiliser --use-worktree pour préserver le checkout partagé d'une autre tâche ; --reapply réapplique explicitement le travail annulé. |
ReleaseTag | --tag v1.0.0 --tag-message "Jalon accepté" --collaborator-id <agent> ; étiquette la branche de base vérifiée et tente le téléversement. |
RevertTask | --task-id T1 --collaborator-id <agent> ; crée un commit d'annulation ; optionnel --push et --use-worktree. |
RecoverTag | --tag v1.0.0 --recovery-branch recover/v1.0.0 pour créer une branche à partir d'un jalon. |
ResolveRecovery | Résoudre seulement après réparation du checkout affecté. --abandon-recovery archive explicitement le journal et liste les réparations manuelles ; il n'effectue pas ces réparations. |
SelfTest | Exécuter la suite de 42 étapes du moteur dans des fixtures jetables. |
Pour une tâche basée sur une branche utilisant un worktree, éditer et exécuter les vérifications de projet à l'intérieur du worktreePath enregistré de la tâche.
Limites et récupération
- Les revendications sont des vérifications coopératives au niveau du moteur ; les éditeurs et les commandes Git arbitraires peuvent les contourner. Les identifiants de collaborateur sont des étiquettes, pas des identités authentifiées.
- Le tableau d'un PC est l'autorité locale. Des PC séparés utilisent des branches et la synchronisation Git ; les répliques de tableau synchronisées ne fournissent pas de verrou distribué. Ne pas traiter un dossier partagé de disque comme un registre transactionnel partagé.
--backup-path <dossier-local-synchronisé>écrit un instantané unidirectionnel du tableau. Le client de synchronisation gère le téléversement cloud ; le moteur n'a pas d'adaptateur natif pour Drive, OneDrive ou TeraBox.- L'approbation de la revue marque la tâche comme terminée et libère ses revendications ; la fusion/livraison vérifiée est une opération distincte. Signaler
LIVRAISON : COMPLÈTEuniquement lorsque le moteur vérifie lepushdistant ; conserverLOCAL_ONLYouINCOMPLETElorsqu'il est retourné. - Si la récupération signale
UNRESOLVED, conserver le journal et les fichiers locaux. Inspecter le checkout nommé, sauvegarder les modifications pertinentes et réessayer après nettoyage. Ne pas utiliser l'abandon comme substitut à la préservation des fichiers. ResetWorkspacearchive le tableau et nécessite l'identité du chef plus--confirm-reset; l'utiliser seulement lorsque la réinitialisation de l'espace de travail fait partie de la demande de l'utilisateur.
La compétence nécessite un agent de codage avec accès au système de fichiers et au shell. Utiliser l'invocation de compétence réelle de l'hôte ; /baton n'est pas une commande de terminal ou d'API de chat universellement enregistrée.