بيئة تنفيذ الوكيل
بيئة تنفيذ الوكيل هي قدرة التطوير الذاتي في Triggerfish -- مساحة عمل كود من الدرجة الأولى حيث يمكن للوكيل كتابة الكود وتنفيذه ومراقبة المخرجات والأخطاء وإصلاح المشكلات والتكرار حتى ينجح شيء ما. هذا ما يمكّن الوكيل من بناء التكاملات واختبار الأفكار وإنشاء أدوات جديدة بمفرده.
ليست البيئة المعزولة للإضافات
بيئة التنفيذ مختلفة جوهرياً عن البيئة المعزولة للإضافات. فهم الفرق مهم:
- البيئة المعزولة للإضافات تحمي النظام من كود جهات خارجية غير موثوقة
- بيئة التنفيذ تمكّن الوكيل من كتابة وتشغيل وتصحيح كوده الخاص
البيئة المعزولة دفاعية. بيئة التنفيذ إنتاجية. تخدمان أغراضاً متعاكسة ولها ملفات أمان مختلفة.
| الجانب | البيئة المعزولة للإضافات | بيئة تنفيذ الوكيل |
|---|---|---|
| الغرض | حماية النظام من كود غير موثوق | تمكين الوكيل من البناء |
| نظام الملفات | لا شيء (معزول بالكامل) | مجلد مساحة العمل فقط |
| الشبكة | نقاط نهاية مُعلنة فقط | قوائم سماح/رفض محكومة بالسياسة |
| تثبيت الحزم | غير مسموح | مسموح (npm، pip، deno add) |
| وقت التنفيذ | مهلة صارمة | مهلة سخية (قابلة للتكوين) |
| التكرار | تشغيل واحد | حلقات كتابة/تشغيل/إصلاح غير محدودة |
| الاستمرار | مؤقت | مساحة العمل تستمر عبر الجلسات |
حلقة التغذية الراجعة
عامل التمييز الأساسي في الجودة. هذا هو نفس النمط الذي يجعل أدوات مثل Claude Code فعّالة -- دورة كتابة/تشغيل/إصلاح محكمة حيث يرى الوكيل تماماً ما سيراه مطور بشري.
الخطوة 1: الكتابة
ينشئ الوكيل أو يعدّل ملفات في مساحة عمله باستخدام write_file. مساحة العمل هي مجلد نظام ملفات حقيقي محدد للوكيل الحالي.
الخطوة 2: التنفيذ
ينفذ الوكيل الكود عبر run_command، ويستقبل stdout وstderr وكود الخروج الكامل. لا يُخفى أو يُلخّص أي مخرج. يرى الوكيل تماماً ما ستراه في الطرفية.
الخطوة 3: المراقبة
يقرأ الوكيل المخرجات الكاملة. إذا حدثت أخطاء، يرى تتبع المكدس الكامل ورسائل الأخطاء والمخرجات التشخيصية. إذا فشلت الاختبارات، يرى أي اختبارات فشلت ولماذا.
الخطوة 4: الإصلاح
يعدّل الوكيل الكود بناءً على ما لاحظه، باستخدام write_file أو edit_file لتحديث ملفات محددة.
الخطوة 5: التكرار
ينفذ الوكيل مرة أخرى. تستمر هذه الحلقة حتى ينجح الكود -- يجتاز الاختبارات أو ينتج مخرجات صحيحة أو يحقق الهدف المحدد.
الخطوة 6: الحفظ
بمجرد النجاح، يمكن للوكيل حفظ عمله كـ مهارة (SKILL.md + ملفات داعمة)، وتسجيله كتكامل، وربطه بمهمة cron، أو جعله متاحاً كأداة.
خطوة الحفظ هي ما يجعل بيئة التنفيذ أكثر من مجرد
مسودة. الكود العامل لا يختفي فحسب -- يمكن للوكيل تعبئته في مهارة قابلة لإعادة الاستخدام تعمل وفق جدول أو تستجيب للمشغّلات أو تُستدعى عند الطلب. :::
الأدوات المتاحة
| الأداة | الوصف | المخرجات |
|---|---|---|
write_file | كتابة أو استبدال ملف في مساحة العمل | مسار الملف، البايتات المكتوبة |
read_file | قراءة محتويات ملف من مساحة العمل | محتويات الملف كنص |
edit_file | تطبيق تعديلات مستهدفة على ملف | محتويات الملف المحدّثة |
run_command | تنفيذ أمر shell في مساحة العمل | stdout، stderr، كود الخروج، المدة |
list_directory | عرض الملفات في مساحة العمل (تكراري اختياري) | قائمة الملفات مع الأحجام |
search_files | البحث في محتويات الملفات (مثل grep) | الأسطر المطابقة مع مراجع ملف:سطر |
هيكل مساحة العمل
كل وكيل يحصل على مجلد مساحة عمل معزول يستمر عبر الجلسات:
~/.triggerfish/workspace/
<agent-id>/ # مساحة عمل لكل وكيل
scratch/ # ملفات عمل مؤقتة
integrations/ # كود تكامل قيد التطوير
notion-sync/
index.ts
index_test.ts
package.json
salesforce-report/
main.py
test_main.py
skills/ # مهارات قيد التأليف
morning-briefing/
SKILL.md
briefing.ts
.exec_history # سجل التنفيذ للتدقيق
background/
<session-id>/ # مساحة عمل مؤقتة لمهام الخلفيةمساحات العمل معزولة بين الوكلاء. لا يمكن لوكيل الوصول إلى مساحة عمل وكيل آخر. مهام الخلفية (مهام cron، المشغّلات) تحصل على مساحة عمل مؤقتة خاصة بها محددة بالجلسة.
تدفق تطوير التكامل
عندما تطلب من الوكيل بناء تكامل جديد (مثلاً، "اتصل بـ Notion وزامن المهام")، يتبع الوكيل سير عمل تطوير طبيعي:
- الاستكشاف -- يستخدم
run_commandلاختبار نقاط نهاية API، والتحقق من المصادقة، وفهم أشكال الاستجابة - البناء -- يكتب كود التكامل باستخدام
write_file، وينشئ ملف اختبار بجانبه - الاختبار -- يشغّل الاختبارات بـ
run_command، يرى الفشل، يكرر - تثبيت التبعيات -- يستخدم
run_commandلإضافة الحزم المطلوبة (npm، pip، deno add) - التكرار -- حلقة كتابة، تشغيل، إصلاح حتى تنجح الاختبارات ويعمل التكامل من طرف إلى طرف
- الحفظ -- يحفظ كمهارة (يكتب SKILL.md مع البيانات الوصفية) أو يربطه بمهمة cron
- الموافقة -- المهارة المؤلفة ذاتياً تدخل حالة
PENDING_APPROVAL؛ تراجع وتوافق
دعم اللغات وبيئات التشغيل
تعمل بيئة التنفيذ على نظام المضيف (ليس في WASM)، مع وصول إلى بيئات تشغيل متعددة:
| بيئة التشغيل | متاحة عبر | حالة الاستخدام |
|---|---|---|
| Deno | تنفيذ مباشر | TypeScript/JavaScript (من الدرجة الأولى) |
| Node.js | run_command node | وصول نظام npm البيئي |
| Python | run_command python | علوم البيانات، التعلم الآلي، البرمجة |
| Shell | run_command sh / run_command bash | أتمتة النظام، سكربتات ربط |
يمكن للوكيل اكتشاف بيئات التشغيل المتاحة واختيار الأفضل للمهمة. تثبيت الحزم يعمل عبر سلسلة الأدوات القياسية لكل بيئة تشغيل.
حدود الأمان
بيئة التنفيذ أكثر تساهلاً من البيئة المعزولة للإضافات، لكنها لا تزال محكومة بالسياسة عند كل خطوة.
تكامل السياسة
- كل استدعاء
run_commandيُطلق خطافPRE_TOOL_CALLمع الأمر كسياق - قائمة السماح/الرفض للأوامر تُفحص قبل التنفيذ
- المخرجات تُلتقط وتمر عبر خطاف
POST_TOOL_RESPONSE - نقاط نهاية الشبكة المُستخدمة أثناء التنفيذ تُتتبع عبر النسب
- إذا وصل الكود إلى بيانات مصنّفة (مثلاً، قراءة من CRM API)، يتصاعد تلوث الجلسة
- سجل التنفيذ يُسجّل في
.exec_historyللتدقيق
حدود صارمة
هذه الحدود لا تُخترق أبداً، بغض النظر عن التكوين:
- لا يمكن الكتابة خارج مجلد مساحة العمل
- لا يمكن تنفيذ أوامر في قائمة الرفض (
rm -rf /،sudo، إلخ) - لا يمكن الوصول إلى مساحات عمل وكلاء آخرين
- جميع استدعاءات الشبكة محكومة بخطافات السياسة
- جميع المخرجات مصنّفة وتساهم في تلوث الجلسة
- حدود الموارد مفروضة: مساحة القرص، وقت CPU لكل تنفيذ، الذاكرة
أمان كل أمر يشغّله الوكيل يمر عبر
خطاف PRE_TOOL_CALL. يفحصه محرك السياسات مقابل قائمة سماح/رفض الأوامر قبل بدء التنفيذ. الأوامر الخطيرة تُحظر حتمياً -- لا يمكن لـ LLM التأثير على هذا القرار. :::
ضوابط المؤسسات
مسؤولو المؤسسات لديهم ضوابط إضافية على بيئة التنفيذ:
- تعطيل التنفيذ بالكامل لوكلاء أو أدوار محددة
- تقييد بيئات التشغيل المتاحة (مثلاً، السماح بـ Deno فقط، حظر Python وshell)
- تعيين حدود الموارد لكل وكيل (حصة القرص، وقت CPU، سقف الذاكرة)
- طلب الموافقة لجميع عمليات التنفيذ فوق عتبة تصنيف
- قائمة رفض أوامر مخصصة بعد قائمة الأوامر الخطيرة الافتراضية
