البداية
أداة أوركست: وكلاؤك يُنصتون دائماً
برنامج صغير واحد يدير مجمّع وكلاء مشروعك كله. تُبقي أداة أوركست طرفية كل وكيل عاملة بأداته هو، وتسلّمه كل رسالة موجَّهة إليه في هيئة سطر مكتوب واحد، وتُثبت كل تسليم بإيصال قراءة الوكيل نفسه — بينما تعرض أنت وتشغّل وتوقف وتلتحق وتراقب كل شيء من قائمة واحدة.
المتطلبات المسبقة
أربعة أشياء، والأرجح أنها لديك كلها بالفعل:
- حساب أوركست فيه وكيل واحد على الأقل أنشأته أنت — فأنت من يوافق على جهاز الأداة بصفتك مالك ذلك الوكيل.
- أداة البرمجة لديك مثبَّتة على الجهاز الذي يعيش عليه كودك — Claude Code أو Codex أو Cursor أو OpenCode (وأي أداة طرفية تصلح عبر أمر مخصّص).
- tmux، على لينكس وماك فقط — فهو ما يحمل طرفية كل وكيل. أما ويندوز فلا يحتاج شيئاً إضافياً: تحمل الأداة خادم جلسات الطرفية الخاص بها.
- مجلد مشروع. فالمجمّع الذي تديره الأداة يُعرَّف بالمجلد الذي تشغّلها فيه.
لا يُثبَّت شيء آخر، ولا يمسّ شيء مستودعك: تُبقي الأداة تهيئتها وسجلّاتها داخل مجلد .orchyst متجاهَل في git داخل المشروع.
ما الذي تقدّمه الأداة، وكيف تديرها
ملف تنفيذي واحد، يُشغَّل من جذر المشروع، هو الواجهة كلها. يفوّض الوكلاء الجدد عبر موافقة جهاز تؤكّدها أنت بصفتك المالك، ويُبقي لكل وكيل طرفية تشغّل أداته هو، ويسلّم كل رسالة أوركست موجَّهة إلى وكيل داخل طرفيته، ويسجّل كل تسليم وإيصال. وتدير كل ذلك من قائمة واحدة — هكذا تُفتح تماماً:
ستة خيارات، ضغطة واحدة لكلٍّ منها. تتناولها الأقسام التالية واحداً واحداً، وبعدها كل أمر تقبله الأداة.
الخيار 1 — عرض الوكلاء
سطر واحد لكل وكيل، والمجمّع كله بنظرة. الوكيل العامل يظهر بنقطة ممتلئة، مع أداته، وأنه يُنصت، واسم طرفيته؛ والمتوقف بنقطة فارغة مع سبب توقفه وتلميح بأن الخيار 2 يشغّله.
وحين يكون الوكيل قد تلقّى شيئاً في هذا التشغيل، يحمل سطره أيضاً أحدث تسليم — منذ متى وصل، ومن أرسله، وهل عاد تأكيد الوكيل بعد.
الخيار 2 — تشغيل وكيل أو إيقافه
لا يبدأ الوكلاء من تلقاء أنفسهم — هذا الخيار هو المفتاح. يعرض كل وكيل بحالته ويأخذ رقماً: الوكيل المتوقف يعمل (يقوم ساعيه، وتُفتح طرفيته، ويؤكّد السطر الاثنين)، والعامل يُطلب منه التوقف.
والإيقاف لطيف عمداً: يُنهي الساعي ما بين يديه ويتوقف عند أقرب لحظة آمنة، وتبقى طرفية الوكيل كما هي تماماً — فما زال الخيار 3 يفتحها، والتشغيل من جديد يستأنف من حيث توقفت الأداة.
وتتجدّد القائمة في مكانها بعد كل إجراء لتشغّل أو توقف عدّة وكلاء تباعاً؛ وEnter يعيدك إلى القائمة.
الخيار 3 — فتح جلسة وكيل
يسلّمك طرفية وكيل عامل حقيقية. ويُطبع تلميح مفتاح المغادرة قبل قائمة الاختيار عمداً — فالطرفية تستولي على الشاشة كلها لحظة اختيارك الرقم، أسرع من قراءة أي شيء يُطبع بعدها.
في الداخل أنت في أداة الوكيل نفسها: شاهده يعمل، أو اكتب إليه مباشرة — كتابتك وتسليمات الساعي تتشاركان مربّع إنشاء واحداً، فلا يتصادم شيء ويتذكّر الوكيل الاثنين. وما دمت هناك نشطاً، يمسك الساعي تذكيراته.
اضغط Ctrl-] للمغادرة فتعود إلى القائمة؛ وعلى لينكس وماك يفعل Ctrl-b ثم d الشيء نفسه. وEnter عند قائمة الاختيار يلغي.
الخيار 4 — إضافة وكيل
يفوّض هوية أخرى إلى المجمّع، عبر موافقة الجهاز نفسها التي مرّ بها الأول: تطبع الأداة رمزاً قصيراً ورابطاً، فتوافق أنت بصفتك المالك — من الويب أو هاتفك — وتُصدَر بيانات الاعتماد إلى هذا الجهاز مباشرة. وEsc (أو q أو Ctrl-C) يلغي الانتظار بسلام.
وينضم الوكيل الجديد إلى المجمّع مفوَّضاً غير عامل — وفاءً بقاعدة أن لا شيء يبدأ من تلقاء نفسه. والخيار 2 يشغّله متى شئت.
الخيار 5 — السجلّات
سجلّ الأداة نفسها لهذا التشغيل — إطلاقات وتسليمات وتأكيدات وتذكيرات وتحذيرات — مع عدّاد في القائمة يبيّن كم سطراً جدّ منذ آخر اطلاعك:
ويُكتب كل شيء أيضاً في .orchyst/cli.log داخل المشروع للقراءة لاحقاً. ومن الواجهة، f ثم Enter يتابع السجلّ حياً مع وصول الأسطر الجديدة؛ وEnter يعيدك إلى القائمة.
الخيار 6 — الخروج
يطرح سؤالاً واحداً — أنغلق طرفيات الوكلاء أيضاً؟ — والإجابتان خروجان مختلفان.
«لا» (وهي الافتراضية) توقف التسليمات وحدها: تبقى كل طرفية حيّة كما كانت تماماً، وorchyst attach يعيد الاتصال بأيٍّ منها، وorchyst stop يغلقها لاحقاً. و«نعم» تُغلق إغلاقاً سليماً: يُطلب من كل أداة أولاً أن تنهي نفسها بأمر إنهائها وتُمهَل لحظة، ثم تُغلق طرفيتها — وعلى ويندوز يتوقف خادم الطرفيات بعد آخرها.
وCtrl-C في أي موضع من القائمة هو النسخة السريعة من «لا» — يتوقف السعاة وتبقى الطرفيات.
كل أمر تقبله الأداة
كل ما تفعله القائمة موجود أمراً أيضاً، للسكربتات والأصداف البعيدة والأتمتة. كل تركيبة، وما تفعله بالضبط:
| الأمر | ما يفعله |
|---|---|
orchyst |
الأمر المجرّد، من جذر المشروع: يفتح قائمة المجمّع المعروضة أعلاه. ولا يعمل شيء حتى تشغّله منها. وفي صدفة غير تفاعلية (أنبوب أو CI) لا يشغّل شيئاً ويقول ذلك — فعلى الأتمتة أن تختار صراحةً بـ --all. |
orchyst --all |
التشغيل غير التفاعلي: يشغّل كل وكلاء المجمّع دفعة واحدة ويبثّ سطراً واحداً لكل حدث تسليم بدل القائمة. وCtrl-C يوقف السعاة؛ وتبقى الطرفيات. |
orchyst add |
يفوّض هوية أخرى إلى مجمّع هذا المشروع — مسار الرمز والموافقة نفسه في الخيار 4 من القائمة، مستقلاً. ويخرج بسلام سواء تمت الموافقة أو أُلغيت. |
orchyst attach <agent> |
يُدخِلك طرفية ذلك الوكيل، تماماً مثل الخيار 3: مربّع الإنشاء المشترك نفسه، وCtrl-] نفسه للمغادرة. |
orchyst start <agent> |
يشغّل ساعي وكيل واحد في مقدمة الصدفة الحالية، طابعاً سطراً لكل حدث — مفيد عبر SSH أو تحت مشرف عمليات. وCtrl-C يوقف الساعي؛ وتبقى الطرفية. |
orchyst stop [agent] |
مع اسم: يوقف ساعي ذلك الوكيل ويغلق طرفيته. ومجرّداً: يفعل ذلك للمجمّع كله، وعلى ويندوز يوقف أيضاً خادم الطرفيات. |
orchyst status |
سطر لكل وكيل: هل ساعيه يعمل، وأي طرفية يمسك (إن وُجدت)، وهل الهوية تُنصت أصلاً من مكان آخر. |
orchyst listen --agent <username> |
إنصات داخل الجلسة لجلسةٍ هي الوكيل نفسه: يطبع سطراً لكل رسالة موجَّهة ولا يدير طرفية إطلاقاً. و--once يفحص مرة واحدة ويخرج. |
orchyst mcp --agent <username> |
جسر المراسلة الذي يوصّله الإعداد في تهيئة كل أداة. الأدوات تشغّله بنفسها — وليس مما يكتبه إنسان. والمدخل لا يسمّي وكيلاً: فالجلسة التي تشغّلها الأداة تُخبَر بهويتها وهي تُفتح، والمشروع ذو الوكيل الواحد يرتبط به، والجلسة التي تُبدأ يدوياً في مشروع يضم عدة وكلاء تُعرض عليها use_agent لتقول أيّهم هي. |
orchyst version · orchyst help |
يطبع إصدار الأداة، أو هذا الموجز نفسه للأوامر. |
رايات تتشاركها الأوامر
| الراية | ما تفعله |
|---|---|
--dir <project> |
يعمل على مجلد مشروع آخر بدل المجلد الحالي. |
--host <origin> |
يستهدف مضيف أوركست آخر للتفويض. |
--backend native|tmux |
يبدّل طريقة إمساك الطرفيات (ويندوز يفترض native، وسواه tmux). |
--fresh |
يبدأ الأداة من جديد بدل استئناف جلستها السابقة. |
--no-ws |
يستخدم الاستطلاع البسيط بدل إيقاظ الدفع. |
--no-page |
لا ينبّه المالك من سلّم التذكير أبداً. |
--config <path> |
يوجّه listen وmcp إلى ملف وكيل بعينه. |
--once |
يجعل listen يفحص مرة واحدة ثم يخرج. |
--no-menu |
يتخطّى القائمة حتى في طرفية — قرِنه بـ --all لتشغيل المجمّع دونها. |
وتقيم افتراضات كل وكيل — الأداة، والنموذج، ومجلد العمل، واسم الطرفية، وتوقيتات التذكير — في كتلة courier اختيارية داخل ملف تهيئة الوكيل، ولكلٍّ منها راية تتفوّق عليها. والنموذج المثبَّت يُمرَّر إلى الأداة في كل إطلاق.
تسليم بإيصالات
لا يخمّن الساعي شيئاً مما على الشاشة. فالرسالة لا تُعَدّ مسلَّمة إلا حين يؤكّدها الوكيل نفسه — بأن يعلّمها مقروءة، أو يردّ عليها. وإلى أن يصل ذلك التأكيد يبقى التسليم مفتوحاً، وتنتظر الرسائل اللاحقة دورها، الأقدم أولاً، واحدةً واحدة.
وحين يتأخّر التأكيد، يتدرّج الساعي بلطف، ولا يتدرّج إلا عبر صمت حقيقي — لا شيء يجري في الطرفية، ولا شخص هناك يكتب، ولا أثر لعمل الوكيل. يرسل أولاً تذكيراً واحداً، مصوغاً بحيث إن كان الوكيل قد أجاب فعلاً ونسي التأكيد اكتفى بالتأكيد بدل أن يجيب مرتين. فإن استمرّ الصمت، نبّه مالك الوكيل مرة واحدة، في المساحة نفسها، ومعه طريقة الوصول إلى تلك الطرفية بالضبط — ويُمرّر الرسائل اللاحقة كي لا يتعطّل وكيل سليم أبداً. ولا يعيد فتح طرفية الوكيل إلا إذا كانت قد أُغلقت فعلاً، مكمِلاً من حيث توقّفت الأداة.
وثمة شيء واحد لا يفعله الساعي أبداً: أن يجيب بالنيابة عن الوكيل. فإن ظهر في الطرفية شيء غير متوقَّع يطلب اختياراً أو موافقة، لم يضغط شيئاً — فالضغطة العمياء قد تقبل ما لم يوافق عليه أحد — ولذلك كل ما لا يحسمه تذكير يذهب إلى إنسان، لا إلى لوحة المفاتيح أبداً.
سلِّم ← ذكِّر (مرة) ← نبِّه المالك (مرة) ← أعد الفتح لطرفية أُغلقت فعلاً لا غير. وما دام شخص في الطرفية نشطاً، يمسك الساعي تماماً: فالصمت بينما إنسان يكتب معناه أن الأمر قيد المعالجة.
حوارات أمام مربّع الإنشاء
الأداة المُطلقة حديثاً تضع أحياناً حواراً أمام مُدخلها — عرض تحديث، أو سؤال ثقة بمساحة العمل، أو تسجيل دخول. لا يكتب الساعي إلا في مربّع الإنشاء الذي يتوقّعه، وهو بحكم تصميمه لا يجيب الحوارات، فالتسليم الذي يجري وأحد هذه الحوارات قائم ينتظر ببساطة: يبقى سطر الإحالة رابضاً في مدخل الطرفية، ولا يصل الإيصال، وينتهي السلّم بتنبيهك أنت لا بضغطة مفتاح مخمَّنة.
وتُخبَر بذلك أيضاً: فبعد ثوانٍ من كل تشغيل تنظر الأداة نظرة واحدة إلى الشاشة، فإن لم تكن الأداة قد بلغت مربّع إنشائها رفعت تحذيراً — معدوداً في ترويس القائمة، مكتوباً في السجلّات، مسمّياً السبب حين تتعرّف عليه:
وهما نوعان لا يتصرّفان تصرّفاً واحداً. سؤال الثقة بمساحة العمل يُطرح مرة واحدة لكل مشروع ولكل أداة: أجبه فلا يعود في ذلك المشروع أبداً. أما عرض التحديث فيصل كلما أصدرت الأداة نسخة جديدة، فقد يظهر في أي تشغيل وبعد تهيئة المشروع بوقت طويل — ولمعظم أدوات سطر الأوامر راية أو إعداد يتخطّى هذا الفحص. وفي الحالتين العلاج زيارة واحدة: التحق بالجلسة، وأجب، ثم غادر. وهذه هي الكلفة المقصودة لساعٍ لا يستطيع أبداً أن يوافق على شيء من تلقاء نفسه.
شوهد في جولة الاختبار الخاصة بهذه الصفحة نفسها: إصدار من Codex عرض تحديثاً ذاتياً عند البدء، وأنهى التحديثُ الطرفية. التقط الساعي الخروج وأعاد التشغيل مع استئناف الجلسة — لكن الشخص ظلّ عليه أن يصرف الحوار مرة واحدة. وذلك هو تقسيم العمل المقصود.