التطبيق كله، في الطرفية
منذ الإصدار 1.0.239 صار هناك أمرwolffish، وهو ليس وولفيش ثانياً أصغر. كلُّ أمرٍ فيه استدعاءٌ إلى الشيفرة نفسها التي تستدعيها نوافذ سطح المكتب — الإعدادات نفسها بعناوينها وأوصافها نفسها، بلغتك أنت، والعربية منها؛ والمحادثات نفسها؛ والوكيل نفسه. يبقى تطبيق سطح المكتب الطريقةَ الأولى للعيش مع وولفيش. أمّا الطرفية فهي التطبيق ذاته للمواضع التي لا تبلغها نافذة: جلسة SSH، أو نصّ برمجي، أو خادم بلا شاشة.
wolffish وحدها لجلسةٍ تفاعلية.
واجهة، لا تطبيق ثان
المهمّ هو ما تكونه الطرفية: واجهة عرض. يعمل وولفيش عمليةً في الخلفية والأمرُ يتّصل بها — فإن كان تطبيق سطح المكتب مفتوحاً اتّصلت الطرفية به هو، والأدوار التي تشغّلها من الصدفة تنساب إلى النافذة أيضاً. وإن لم يكن شيءٌ يعمل، فإنّ الأمر الأوّل يُقلع الوكيل بنفسه، بلا رأس، ثم يتّصل. ولهذا عواقب تستحقّ أن تستقرّ في الذهن:- المغادرة لا توقف شيئاً. أغلق الطرفية أو انقطعت وصلة SSH، فالدور يواصل عمله. عُد، وشغّل
wolffish، فيعاود الاتصال بما لا يزال يعمل. - الانفصال ليس إلغاءً. إيقاف تشغيلٍ فعلٌ متعمَّد قائم بذاته:
Ctrl-Cفي أثناء الدور، أوwolffish cancelمن أيّ مكان — وهو يوقف دوراً جارياً على أيّ قناة، بما في ذلك أتمتةٌ شاردة على جهازٍ بلا رأس. - الموافقات تنتظر في مكانها. استدعاء الأداة الذي ينتظر منك نعم أو لا حين تذهب الطرفية لا يخفق — بل يقف منتظراً، ويُعاد رسمه حين تعاود الاتصال (
/pending)، أو يُجاب عنه من هاتفك.
ثلاثة أوامر لا تُقلع الوكيل أبداً:
wolffish status وwolffish service وwolffish path. فهي تبلّغ عن حال الجهاز، ولذلك يجب أن تستطيع قول «لا يعمل» بدل أن تُقلع خفيةً عمليةً خلفية لتجيب عن السؤال. وكلُّ ما عداها يُحضر الوكيل عند الطلب.المحادثة
/help معجم الشرطة المائلة كلّه — وهذه أبرزه:
ويتبع
Ctrl-C قاعدةً واحدة — يوقف أقرب شيء: الدور الجاري أولاً، ثم المطالبة المتداخلة، ثم (بضغطتين) الجلسة نفسها، مصرّحاً في كلّ مرّة بما أوقف. وCtrl-D يغادر فوراً. والوكيل يواصل العمل من دونك في الحالين.
التطبيق، في الطرفية
المستوى الأعلى هو تنقّل التطبيق نفسه لا غير —conversations وprojects وprocedures وautomations وcustomizations وsettings — لأنّ تصنيفاً ثانياً يُحفظ عن ظهر قلب كان سيكون تطبيقاً ثانياً:
wolffish files لتصفّحها، وwolffish view <path> لقراءة ملفٍّ واحد (وبيانات الاعتماد محجوبة ما لم تمرّر --raw)، وwolffish edit <path> لتغيير واحد.
الإعدادات بثلاث طرق
أمرwolffish settings هو شاشة الإعدادات، تُمشى كما يمشيها التطبيق — صفحة ← بطاقة ← إعداد — والسطر الفارغ يعني دائماً «مستوى إلى الأعلى»، فثمّة مفتاحٌ واحد يُتعلَّم بدل مخرجٍ مختلف عند كلّ عمق. اقفز مباشرةً إلى بطاقة (wolffish settings channels telegram)، أو سمِّ وجهةً (wolffish settings notion)، أو اكتب أيّ كلمةٍ فتحصل على كلّ ما يطابقها أينما سكن.
والأشياء التي لم تكن يوماً قيمةً واحدة تجلس على بطاقاتها أيضاً: إدخال مفتاح مزوّد، واختيار الدماغ، ووصل Notion أو GitHub أو Google، وإضافة خادم MCP، واقتران هاتف، ووصل واتساب أو تيليجرام، وتشغيل تأمّلٍ الآن، وإعادة ضبط مساحة العمل. والمفاتيح تُكتب مخفيّة — فلا تحطّ في طرفيتك ولا في تاريخ صدفتك — وتُختبر قبل أن تُحفظ.
وللنصوص البرمجية، تجاوز التصفّح:
محرر يحضر في كل حال
تحريرُ طلبٍ أو وثيقة يفتح، بترتيب التفضيل: محرّرك أنت$EDITOR (أو $VISUAL، و$WOLFFISH_EDITOR يتقدّم عليهما)؛ وإلّا فمحرّرٌ مثبَّتٌ فعلاً — nano أو micro أو vim أو notepad — مع التصريح بأيّها فُتح؛ فإن خاب الاثنان، فثمّة محرّر أسطر مدمجٌ بلا اعتمادياتٍ البتّة، يعمل داخل جلسة SSH على جهازٍ لا شيء عليه: اكتب فيُلحق، و:s <n> <text> لاستبدال سطر، و:d <n> للحذف، و:show لإعادة الطباعة، و:save أو :cancel للمغادرة. نصفُ القائمة كان يسدّ من قبل عند no $EDITOR set — وهي الحال الافتراضية لدخولٍ جديد على خادم. أمّا اليوم فلا شيء يسدّ.
الموافقات والأمان
حين يريد الوكيل فعل شيءٍ تعلّم عليه اللوزة الدماغية، ترسم الطرفية بطاقة الموافقة:approve? [y]es / [n]o / [a]lways this tool — حيث a تدوم لهذه الجلسة وحدها. وخاصّتان أهمّ من ضغطات المفاتيح:
- التشغيلات غير التفاعلية تُغلق على الرفض. إن لم تكن ثمّة طرفيةٌ تسأل — مهمّة cron، أو أنبوب — رُفضت الموافقة ولم تُفترض. أعد التشغيل تفاعلياً، أو مرّر
--yesعن عمد. - و
--yesيعيد ما وجده إلى مكانه. يقلب تجاوزَ الموافقات على مستوى التطبيق للتشغيلة، ثم يعيد القيمة السابقة عند الخروج — حتى معCtrl-Cومع انقطاع الوصلة — فلا تستطيع تشغيلةٌ مبرمجة واحدة أن تترك كلّ الواجهات تعمل والموافقات مطفأة.
pass file paths instead: wolffish -f <path>). وعلى جهازٍ بلا شاشة، يطبع /open مكانَ الملف بدل أن يتظاهر بفتحه.
الطرفية قناة
المحادثة التي تبدأ من الطرفية محادثةٌ حقيقية على قناةٍ حقيقية — مُعرِّفهاcli وعنوانها Terminal. ترتدي شارة مصدرها الخاصة في سجلّ سطح المكتب وشريطه وعلى قوائم هاتفك، والتقييم الذي يُلقى هنا يُسجَّل آتياً من هنا، وجدولُ قنوات الوكيل نفسه يسمّي الطرفية طريقاً إليك، تماماً مثل تيليجرام وواتساب والهاتف. وتحمل الإعدادات ← القنوات ← CLI مقبضيها الاثنين: نتائج المهامّ المفصّلة، والإقلاع التلقائي — مع --tools / --clean لتجاوز الإسهاب لأمرٍ واحد.
وتجيب اللوحة أيضاً عن سؤال ما إذا كان أمر wolffish على PATH عندك — من PATH صدفتك أنت، لا PATH التطبيق — وتثبّته إن لم يكن، وتنزعه حين تريده أن يذهب، وتحذّر حين يتقدّم شيءٌ آخر اسمه wolffish عليه. ومن جهة الطرفية، تسكن الإجابات نفسها تحت wolffish path status وwolffish path install. وعلى لينكس، حزمتا .deb و.rpm تشحنان الأمر عند /usr/bin/wolffish، حاضراً لحظةَ ينتهي التثبيت؛ وعلى ويندوز يضعه المثبّت على PATH مستخدمك؛ وعلى macOS يطبع wolffish path install الواحد السطرَ الذي تضيفه.
الاقتران من الطرفية
القنوات الثلاث التي تحتاج مصافحةً تقترن كلّها من هنا — بُنيت للجهاز الذي لن تُفتح عليه نافذةٌ أبداً:المرجع
ورموز الخروج صادقة:
0 نجح الأمر، و1 أخفق الشيء أو ليس في الحال التي سألت عنها، و2 استعملت الأمر خطأً — والكلمة الواحدة المكتوبة خطأً تنال أتقصد كذا؟، بدل أن تُرسل إلى النموذج سؤالاً فتُنفق دوراً حقيقياً لتُخبَر أنّها لم تُفهم. وما لم يُتعرَّف عليه أمراً عومل طلباً.
النشر على خادم
الطرفية وُجدت للجهاز الذي لا شاشة له — تثبيتُ VPS متحقَّقٌ منه من طرفٍ إلى طرف على Ubuntu 24.04، يعمل خدمةً في الخلفية، وهاتفُك الواجهةُ اليومية.