我刚刚弄明白了如何利用 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 完毕
