我剛剛弄清楚如何利用 tmux 的一些技巧,進一步實現代理工作流程的自動化。 現在我正在使用我的 mcp 代理郵件專案讓一群代理互相交流,討論如何實施計劃(同時使用 beads 專案進行任務管理進行協調),我仍然需要透過在 codex 中排隊發送大量訊息來「餵養」代理,讓他們保持忙碌。 這需要逐一瀏覽各個 tmux 窗格(每個 codex 實例對應一個窗格),貼上一些預設訊息,或按幾次向上箭頭鍵來重複使用先前的訊息,例如: “選擇你現在能實際操作的下一個任務,立即開始編寫代碼;通過代理人郵件將你的工作內容告知其他代理人。” 這樣做感覺有點傻,效率也不高,儘管給每個代理人足夠的指示,讓他們忙碌一個多小時並不需要花費太多時間。 但現在我意識到,只需將以下程式碼複製並貼上到 tmux 會話之外的控制台中,就可以一次自動將大量訊息添加到所有相關的 tmux 窗格中(已在 zsh 中測試並有效): --- PANES=(${(f)"$(tmux list-panes -a -F '#S:#I.#P' | tail -n +3 | head -n -2)"}) 對於 $PANES 中的每個窗格;執行 tmux send-keys -t $pane -l '選擇你現在可以實際做的下一個任務,並立即開始編寫代碼;透過代理郵件將你正在做的事情告知其他代理。 ' 睡眠 0.1 tmux send-keys -t $pane Enter for i in {1..4}; do tmux send-keys -t $pane -l '繼續,做有用的工作!並進行交流! ' 睡眠 0.1 tmux send-keys -t $pane Enter 完畢 tmux send-keys -t $pane -l '很好,現在我希望你用“全新的視角”仔細閱讀你剛剛編寫的所有新代碼以及你剛剛修改的其他現有代碼,非常仔細地查找任何明顯的錯誤、漏洞、問題、疑點、令人困惑的地方等等。 ' 睡眠 0.1 tmux send-keys -t $pane Enter tmux send-keys -t $pane -l '請務必查看您的代理郵件,如有需要,請及時回復任何消息;之後,請一絲不苟地執行計劃,系統地完成所有剩餘的未完成任務,並持續在計劃文檔中、通過珠子以及代理郵件記錄您的進度。不要陷入“溝通煉獄”,導致一事無成;積極主動地開始需要完成的任務,並在完成任務後通過訊息通知其他代理,並在計劃文件中記錄。如果您真的不知道該做什麼,請選擇下一個您可以著手處理的珠子並開始工作。 ' 睡眠 0.1 tmux send-keys -t $pane Enter tmux send-keys -t $pane -l '好的,現在請你把注意力轉移到審查其他特工編寫的程式碼上,檢查是否存在任何問題、漏洞、錯誤、效率低下、安全問題、可靠性問題等等,並使用第一原理分析仔細診斷其根本原因,然後在必要時進行修復或修改。不要侷限於最新的提交,要擴大範圍,深入挖掘! ' 睡眠 0.1 tmux send-keys -t $pane Enter 完畢 --- 這段腳本: 取得窗格:尋找所有 tmux 窗格,排除前兩個和後兩個窗格。 向每個選定的窗格發送 8 則訊息: “挑選下一顆珠子…” 通知代理人開始執行下一個任務 「繼續…」×4—一再鼓勵繼續工作 「仔細閱讀…」—指導新程式碼審查 「請查看代理人郵件…」—這是一封關於協調、避免溝通癱瘓、保持高效工作的長篇郵件。 「審查其他特工編寫的程式碼…」—同儕程式碼審查,尋找漏洞/問題 每個訊息都會原樣發送(-l 標誌),並在 Enter 鍵前延遲 0.1 秒,以確保 Codex CLI 正確處理它們。
實際上,這是一種更好的方法,透過篩選窗格名稱(在我的例子中,程式碼庫窗格的名稱是「node」),而且它有初始的 0.1 秒休眠,如果沒有這個休眠,它會跳過第一個符合的窗格,而無法正確傳送訊息: PANES=(${(f)"$(tmux list-panes -a -F '#S:#I.#P #{pane_current_command}' | rg ' node$' | cut -d' ' -f1)"}) 對於 $PANES 中的每個窗格;執行 休眠 0.1 秒 # 初始休眠以確保面板準備就緒 tmux send-keys -t $pane -l '選擇你現在可以實際做的下一個任務,並立即開始編寫代碼;透過代理郵件將你正在做的事情告知其他代理。 ' 睡眠 0.1 tmux send-keys -t $pane Enter for i in {1..4}; do tmux send-keys -t $pane -l '繼續,做有用的工作!並進行交流! ' 睡眠 0.1 tmux send-keys -t $pane Enter 完畢 tmux send-keys -t $pane -l '很好,現在我希望你用“全新的視角”仔細閱讀你剛剛編寫的所有新代碼以及你剛剛修改的其他現有代碼,非常仔細地查找任何明顯的錯誤、漏洞、問題、疑點、令人困惑的地方等等。 ' 睡眠 0.1 tmux send-keys -t $pane Enter tmux send-keys -t $pane -l '請務必查看您的代理郵件,如有需要,請及時回復任何消息;之後,請一絲不苟地執行計劃,系統地完成所有剩餘的未完成任務,並持續在計劃文檔中、通過珠子以及代理郵件記錄您的進度。不要陷入“溝通煉獄”,導致一事無成;積極主動地開始需要完成的任務,並在完成任務後通過訊息通知其他代理,並在計劃文件中記錄。如果您真的不知道該做什麼,請選擇下一個您可以著手處理的珠子並開始工作。 ' 睡眠 0.1 tmux send-keys -t $pane Enter tmux send-keys -t $pane -l '好的,現在請你把注意力轉移到審查其他特工編寫的程式碼上,檢查是否存在任何問題、漏洞、錯誤、效率低下、安全問題、可靠性問題等等,並使用第一原理分析仔細診斷其根本原因,然後在必要時進行修復或修改。不要侷限於最新的提交,要擴大範圍,深入挖掘! ' 睡眠 0.1 tmux send-keys -t $pane Enter 完畢
