Ich habe gerade herausgefunden, wie ich meinen Agenten-Workflow mit etwas tmux-Zauberei noch weiter automatisieren kann. Jetzt, wo ich mein mcp-Agenten-Mail-Projekt benutze, um eine Menge Agenten dazu zu bringen, miteinander über die Umsetzung eines Plans zu sprechen (und auch das Beads-Projekt für das Aufgabenmanagement zu koordinieren), muss ich die Agenten immer noch "füttern", indem ich eine Menge Nachrichten in Codex in die Warteschlange stelle, um sie beschäftigt zu halten. Das bedeutet, dass ich nacheinander durch die verschiedenen tmux-Pane (eine für jede Codex-Instanz) gehe und einige vorgefertigte Nachrichten einfüge oder ein paar Mal die Aufwärtstaste drücke, um frühere Nachrichten wiederzuverwenden, wie zum Beispiel: "Wähle die nächste Perle aus, die du jetzt tatsächlich nützlich verwenden kannst, und beginne sofort mit dem Programmieren; kommuniziere, was du tust, über die Agenten-Mail mit den anderen Agenten." Es fühlt sich ein bisschen albern und ineffizient an, das zu tun, obwohl es nicht lange dauert, jedem Agenten genügend Anweisungen zu geben, um sie über eine Stunde beschäftigt zu halten. Aber jetzt habe ich erkannt, dass ich automatisch eine Menge Nachrichten in jedem relevanten tmux-Pane auf einmal in die Warteschlange stellen kann, indem ich dies einfach in die Konsole außerhalb der tmux-Sitzung kopiere und einfüge (das wurde getestet und funktioniert in zsh): --- PANES=(${(f)"$(tmux list-panes -a -F '#S:#I.#P' | tail -n +3 | head -n -2)"}) for pane in $PANES; do tmux send-keys -t $pane -l 'Wähle die nächste Perle aus, die du jetzt tatsächlich nützlich verwenden kannst, und beginne sofort mit dem Programmieren; kommuniziere, was du'"'"'tust, über die Agenten-Mail mit den anderen Agenten.' sleep 0.1 tmux send-keys -t $pane Enter for i in {1..4}; do tmux send-keys -t $pane -l 'Mach weiter, arbeite nützlich! und kommuniziere!' sleep 0.1 tmux send-keys -t $pane Enter done tmux send-keys -t $pane -l 'Großartig, jetzt möchte ich, dass du den gesamten neuen Code, den du gerade geschrieben hast, und den anderen bestehenden Code, den du gerade geändert hast, sorgfältig mit "frischen Augen" durchliest und super sorgfältig nach offensichtlichen Fehlern, Problemen, Verwirrung usw. suchst.' sleep 0.1 tmux send-keys -t $pane Enter tmux send-keys -t $pane -l 'Stelle sicher, dass du deine Agenten-Mail überprüfst und umgehend auf Nachrichten antwortest, falls nötig; fahre dann sorgfältig mit dem Plan fort, indem du alle verbleibenden unerledigten Aufgaben systematisch abarbeitest und deinen Fortschritt in der Plan-Dokumentation, über Beads und über Agenten-Mail-Nachrichten festhältst. Lass dich nicht in "Kommunikations-Purgatorium" festsetzen, wo nichts erledigt wird; sei proaktiv beim Starten von Aufgaben, die erledigt werden müssen, informiere aber deine Mitagenten über Nachrichten, wenn du dies tust, und halte das in der Plan-Dokumentation fest. Wenn du wirklich nicht sicher bist, was zu tun ist, wähle die nächste Perle aus, an der du nützlich arbeiten kannst, und lege los.' sleep 0.1 tmux send-keys -t $pane Enter tmux send-keys -t $pane -l 'Ok, kannst du jetzt deine Aufmerksamkeit darauf richten, den von deinen Mitagenten geschriebenen Code zu überprüfen und nach Problemen, Fehlern, Ineffizienzen, Sicherheitsproblemen, Zuverlässigkeitsproblemen usw. zu suchen und sorgfältig deren zugrunde liegende Ursachen mit einer Analyse nach ersten Prinzipien zu diagnostizieren und sie gegebenenfalls zu beheben oder zu überarbeiten? Beschränke dich nicht auf die neuesten Commits, wirf ein breiteres Netz aus und gehe super tief!' sleep 0.1 tmux send-keys -t $pane Enter done --- Dieses Skript: Erhält Pane: Findet alle tmux-Panes, mit Ausnahme der ersten 2 und letzten 2 Sendet 8 Nachrichten an jedes ausgewählte Pane: "Wähle die nächste Perle..." - sagt den Agenten, dass sie mit der nächsten Aufgabe beginnen sollen "Mach weiter..." × 4 - wiederholte Ermutigung, weiterzuarbeiten "Sorgfältig durchlesen..." - Anweisung zur frischen Codeüberprüfung "Überprüfe die Agenten-Mail..." - lange Nachricht über Koordination, Vermeidung von Kommunikationslähmung, produktiv bleiben "Überprüfe den von Mitagenten geschriebenen Code..." - Peer-Code-Überprüfung auf Fehler/Probleme Jede Nachricht wird wörtlich gesendet (-l-Flag) mit einer Verzögerung von 0,1 Sekunden vor Enter, um sicherzustellen, dass die Codex-CLI sie ordnungsgemäß verarbeitet.
Actually, this is a better way to do it, by filtering on the name of the pane (in my case, it's "node" for the codex panes), and it has the initial 0.1 second sleep, without which it skips the first matching pane without sending the messages correctly: PANES=(${(f)"$(tmux list-panes -a -F '#S:#I.#P #{pane_current_command}' | rg ' node$' | cut -d' ' -f1)"}) for pane in $PANES; do sleep 0.1 # Initial sleep to ensure pane is ready tmux send-keys -t $pane -l 'pick the next bead you can actually do usefully now and start coding on it immediately; communicate what you'"'"'re doing to the other agents via agent mail.' sleep 0.1 tmux send-keys -t $pane Enter for i in {1..4}; do tmux send-keys -t $pane -l 'keep going, doing useful work! and communicate!' sleep 0.1 tmux send-keys -t $pane Enter done tmux send-keys -t $pane -l 'great, now I want you to carefully read over all of the new code you just wrote and other existing code you just modified with "fresh eyes" looking super carefully for any obvious bugs, errors, problems, issues, confusion, etc.' sleep 0.1 tmux send-keys -t $pane Enter tmux send-keys -t $pane -l 'Be sure to check your agent mail and to promptly respond if needed to any messages; thereafter proceed meticulously with the plan, doing all of your remaining unfinished tasks systematically and continuing to notate your progress in-line in the plan document, via beads, and via agent mail messages. Don'"'"'t get stuck in "communication purgatory" where nothing is getting done; be proactive about starting tasks that need to be done, but inform your fellow agents via messages when you do so and notate that in-line in the plan document. When you'"'"'re really not sure what to do, pick the next bead that you can usefully work on and get started.' sleep 0.1 tmux send-keys -t $pane Enter tmux send-keys -t $pane -l 'ok can you now turn your attention to reviewing the code written by your fellow agents and checking for any issues, bugs, errors, problems, inefficiencies, security problems, reliability issues, etc. and carefully diagnose their underlying root causes using first-principle analysis and thereafter fix or revise them if necessary? Dont restrict yourself to the latest commits, cast a wider net and go super deep!' sleep 0.1 tmux send-keys -t $pane Enter done
Möglicherweise müssen Sie die Schlafzeit erhöhen, wenn Ihre Maschine langsam ist. Ich hasse, wie wählerisch das alles ist; ich werde einen zuverlässigeren Weg finden, das zu tun.
25,89K