tmux の魔法を使ってエージェントのワークフローをさらに自動化する方法を見つけました。 現在、MCP エージェント メール プロジェクトを使用して、多数のエージェントが互いに話し合って計画を実行するようにしています (また、タスク管理のためにビーズ プロジェクトを使用して調整しています)。エージェントを忙しくしておくために、コーデックスで大量のメッセージをキューに入れて、エージェントに「フィード」する必要があります。 これには、さまざまな tmux ペイン (各コーデックス インスタンスに 1 つずつ) を 1 つずつ確認し、いくつかの定型メッセージを貼り付けるか、上矢印を数回押して過去のメッセージを再利用することが含まれます。たとえば、 「今実際に役立つ次のビーズを選び、すぐにコーディングを開始してください。エージェント メールで他のエージェントに作業内容を伝えてください。」 各エージェントに 1 時間以上忙しくさせるのに十分な指示を与えるのにそれほど時間はかからないのに、これを行うのは少しばかげていて非効率的に感じます。 しかし、今では、これを tmux セッションの外部のコンソールにコピーして貼り付けるだけで、関連するすべての tmux ペインに大量のメッセージを一度に自動的にキューに入れることができることに気付きました (これは zsh でテストされ、動作しています)。 --- PANES=(${(f)"$(tmux list-panes -a -F '#S:#I.#P' | 末尾 -n +3 | 先頭 -n -2)"}) $PANESのペインに対して、 tmux send-keys -t $pane -l '今実際に役に立つ次のビーズを選択し、すぐにコーディングを開始します。エージェント メールで他のエージェントに実行中の作業内容を伝えます。' 睡眠0.1 tmux send-keys -t $pane 入力 i が {1..4} の場合; tmux send-keys -t $pane -l '引き続き、役立つ仕事をしてください! そしてコミュニケーションを取りましょう!' 睡眠0.1 tmux send-keys -t $pane 入力 終わり tmux send-keys -t $pane -l '素晴らしい。では、今書いた新しいコードと、今変更した既存のコード全体を「新鮮な目」で注意深く読み、明らかなバグ、エラー、問題、課題、混乱などがないか非常に注意深く見てください。' 睡眠0.1 tmux send-keys -t $pane 入力 tmux send-keys -t $pane -l 'エージェントメールを必ず確認し、必要に応じて速やかに返信してください。その後は、計画を綿密に進め、残っている未完了のタスクをすべて体系的に実行し、進捗状況を計画書、ビーズ、エージェントメールメッセージにインラインで記録し続けてください。何も終わらない「コミュニケーションの煉獄」に陥らないように注意してください。必要なタスクは積極的に開始してください。ただし、開始したら他のエージェントにメッセージで通知し、計画書にインラインで記録してください。何をすべきか本当にわからない場合は、次に取り組めるビーズを選んで作業を開始してください。' 睡眠0.1 tmux send-keys -t $pane 入力 tmux send-keys -t $pane -l 'さて、それでは仲間のエージェントが書いたコードをレビューして、問題点、バグ、エラー、問題、非効率性、セキュリティ問題、信頼性問題などがないか確認し、第一原理分析を用いて根本原因を慎重に診断し、必要に応じて修正または改訂してください。最新のコミットに限定せず、より広範囲に、そして徹底的に調査してください!' 睡眠0.1 tmux send-keys -t $pane 入力 終わり --- このスクリプト: ペインを取得: 最初の 2 つと最後の 2 つを除くすべての tmux ペインを検索します。 選択した各ペインに 8 つのメッセージを送信します。 「次のビーズを選んでください...」 - エージェントに次のタスクの作業を開始するよう指示します 「続けて…」×4 - 仕事を続けるための繰り返しの励まし 「注意深く読んでください...」 - 新しいコードレビューを指示します 「エージェントのメールを確認してください...」 - 調整、コミュニケーション麻痺の回避、生産性の維持に関する長いメッセージ 「同僚のエージェントが書いたコードをレビューする...」 - バグや問題に対するピアコードレビュー Codex CLI がメッセージを適切に処理できるように、各メッセージは Enter キーを押す前に 0.1 秒の遅延を伴って文字通り送信されます (-l フラグ)。
実際、これはペインの名前 (私の場合は、コーデックス ペインの場合は「ノード」) でフィルタリングするより良い方法です。これには最初の 0.1 秒のスリープがあり、これがないと、一致する最初のペインがスキップされ、メッセージが正しく送信されません。 PANES=(${(f)"$(tmux list-panes -a -F '#S:#I.#P #{pane_current_command}' | rg ' node$' | cut -d' ' -f1)"}) $PANESのペインに対して、 sleep 0.1 # ペインの準備を確実にするために初期スリープします tmux send-keys -t $pane -l '今実際に役に立つ次のビーズを選択し、すぐにコーディングを開始します。エージェント メールで他のエージェントに実行中の作業内容を伝えます。' 睡眠0.1 tmux send-keys -t $pane 入力 i が {1..4} の場合; tmux send-keys -t $pane -l '引き続き、役立つ仕事をしてください! そしてコミュニケーションを取りましょう!' 睡眠0.1 tmux send-keys -t $pane 入力 終わり tmux send-keys -t $pane -l '素晴らしい。では、今書いた新しいコードと、今変更した既存のコード全体を「新鮮な目」で注意深く読み、明らかなバグ、エラー、問題、課題、混乱などがないか非常に注意深く見てください。' 睡眠0.1 tmux send-keys -t $pane 入力 tmux send-keys -t $pane -l 'エージェントメールを必ず確認し、必要に応じて速やかに返信してください。その後は、計画を綿密に進め、残っている未完了のタスクをすべて体系的に実行し、進捗状況を計画書、ビーズ、エージェントメールメッセージにインラインで記録し続けてください。何も終わらない「コミュニケーションの煉獄」に陥らないように注意してください。必要なタスクは積極的に開始してください。ただし、開始したら他のエージェントにメッセージで通知し、計画書にインラインで記録してください。何をすべきか本当にわからない場合は、次に取り組めるビーズを選んで作業を開始してください。' 睡眠0.1 tmux send-keys -t $pane 入力 tmux send-keys -t $pane -l 'さて、それでは仲間のエージェントが書いたコードをレビューして、問題点、バグ、エラー、問題、非効率性、セキュリティ問題、信頼性問題などがないか確認し、第一原理分析を用いて根本原因を慎重に診断し、必要に応じて修正または改訂してください。最新のコミットに限定せず、より広範囲に、そして徹底的に調査してください!' 睡眠0.1 tmux send-keys -t $pane 入力 終わり
