لقد اكتشفت للتو كيفية أتمتة سير عمل الوكيل الخاص بي بشكل أكبر باستخدام بعض سحر tmux. الآن بعد أن أستخدم مشروع بريد وكيل mcp الخاص بي للحصول على مجموعة من الوكلاء للتحدث مع بعضهم البعض حول تنفيذ خطة (وكذلك التنسيق باستخدام مشروع الخرز لإدارة المهام) ، ما زلت بحاجة إلى "إطعام" الوكلاء عن طريق وضع مجموعة من الرسائل في قائمة الانتظار في المخطوطة لإبقائهم مشغولين. يتضمن ذلك الانتقال واحدا تلو الآخر عبر أجزاء tmux المختلفة (واحد لكل مثيل مخطوط) ولصق بعض الرسائل الجاهزة أو الضغط على السهم لأعلى عدة مرات لإعادة استخدام الرسائل السابقة ، مثل: "اختر الخرزة التالية التي يمكنك فعلها بشكل مفيد الآن وابدأ في الترميز عليها على الفور. قم بتوصيل ما تفعله إلى الوكلاء الآخرين عبر بريد الوكيل ". إنه شعور سخيف وغير فعال بعض الشيء للقيام بذلك ، على الرغم من أن الأمر لا يستغرق وقتا طويلا لإعطاء كل وكيل تعليمات كافية لإبقائه مشغولا لأكثر من ساعة. لكنني أدركت الآن أنه يمكنني وضع مجموعة من الرسائل تلقائيا في قائمة الانتظار في كل جزء 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 مفاتيح الإرسال -t $pane Enter لأن أنا في {1..4}; فعل tmux send-keys -t $pane -l "استمر ، قم بعمل مفيد! والتواصل! النوم 0.1 tmux مفاتيح الإرسال -t $pane Enter منجز tmux send-keys -t $pane -l "رائع ، الآن أريدك أن تقرأ بعناية جميع التعليمات البرمجية الجديدة التي كتبتها للتو والتعليمات البرمجية الأخرى الموجودة التي قمت بتعديلها للتو ب "عيون جديدة" تبحث بعناية فائقة عن أي أخطاء واضحة أو أخطاء أو مشاكل أو ارتباك ، وما إلى ذلك. النوم 0.1 tmux مفاتيح الإرسال -t $pane Enter tmux send-keys -t $pane -l 'تأكد من التحقق من بريد الوكيل الخاص بك والرد على الفور إذا لزم الأمر على أي رسائل; بعد ذلك ، تابع الخطة بدقة ، وقم بجميع مهامك المتبقية غير المكتملة بشكل منهجي واستمر في تدوين تقدمك في الخط في مستند الخطة ، عبر الخرز ، وعبر رسائل بريد الوكيل. لا تتعثر في "مطهر الاتصالات" حيث لا يتم فعل أي شيء. كن استباقيا بشأن بدء المهام التي يجب القيام بها ، ولكن أبلغ زملائك الوكلاء عبر الرسائل عند القيام بذلك وقم بتدوين ذلك في مستند الخطة. عندما لا تكون متأكدا حقا مما يجب القيام به ، اختر الخرزة التالية التي يمكنك العمل عليها بشكل مفيد والبدء. النوم 0.1 tmux مفاتيح الإرسال -t $pane Enter tmux send-keys -t $pane -l 'حسنا ، هل يمكنك الآن تحويل انتباهك إلى مراجعة الكود الذي كتبه زملائك الوكلاء والتحقق من أي مشكلات أو أخطاء أو أخطاء أو مشاكل أو أوجه قصور أو مشاكل أمنية أو مشكلات موثوقية ، وما إلى ذلك ، وتشخيص أسبابها الجذرية الأساسية بعناية باستخدام تحليل المبدأ الأول وبعد ذلك إصلاحها أو مراجعتها إذا لزم الأمر؟ لا تقصر نفسك على أحدث الالتزامات ، وألق شبكة أوسع واذهب عميقا للغاية! النوم 0.1 tmux مفاتيح الإرسال -t $pane Enter منجز --- هذا البرنامج النصي: الحصول على الأجزاء: البحث عن جميع أجزاء tmux، باستثناء أول 2 وآخر 2 يرسل 8 رسائل إلى كل جزء محدد: "اختر الخرزة التالية ..." - يخبر الوكلاء ببدء العمل على المهمة التالية "استمر..." × 4 - التشجيع المتكرر لمواصلة العمل "اقرأ بعناية ..." - يوجه مراجعة الكود الجديد "تحقق من بريد الوكيل ..." - رسالة طويلة حول التنسيق ، وتجنب شلل الاتصال ، والحفاظ على الإنتاجية "مراجعة الكود الذي كتبه زملائه الوكلاء ..." - مراجعة رمز الأقران للأخطاء / المشكلات يتم إرسال كل رسالة حرفيا (-lflag) مع تأخير 0.1 ثانية قبل Enter لضمان معالجة Codex CLI لها بشكل صحيح.
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
قد تحتاج إلى زيادة وقت النوم إذا كان جهازك بطيئا. أنا أكره مدى صعوبة كل شيء. سأجد طريقة أكثر موثوقية للقيام بذلك.
‏‎26.97‏K