خطوات الكود (code_step)
بعض المنطق أخصّ من أن يُنفَّذ عبر operator compute، لكنه في الوقت نفسه أكثر حتميةً من أن يستدعي وكيل LLM: مطابقات متعدّدة المصادر، حسابات عمل مُفصَّلة، تطبيعات غريبة. ولهذه الحالات، تنفّذ عقدة code_step كودًا داخل sandbox، بلا استدعاء LLM وبإخراج متوقَّع.
يُحرَّر الكود مباشرةً، كأي حقل تهيئة آخر، ويعمل بمجرّد حفظه.
نموذج التنفيذ
ينفّذ code_step لغة Starlark — وهي لهجة من Python مصمَّمة للعزل: بلا وصول إلى نظام الملفات، بلا شبكة، بلا استيرادات حرّة، حتمية، ومحدودة بميزانية زمنية. ولا يرى الكود سوى:
- الـمدخلات التي تربطها به صراحةً (
input_paths). - الـأدوات التي تصرّح له باستدعائها (
allowed_tools).
وكل ما عدا ذلك بعيد المنال. فلا تستطيع خطوة كود الوصول إلى مورد لم تُسلّمه إليها.
التهيئة
| الحقل | الغرض |
|---|---|
| الكود | مصدر Starlark الذي يُنفَّذ، ويُحرَّر مباشرةً. |
المدخلات (input_paths) | ربط variable → selector. ولا تُعرَض على الكود سوى مفاتيح السياق هذه. وتُرفَض المفاتيح الداخلية (_*). |
| قائمة الأدوات المسموح بها | الأدوات القابلة للاستدعاء عبر tool(name, args). ويرث كل استدعاء ضمانات الأداة نفسها (حماية SSRF، الفوترة، التدقيق، مفتاح الإيقاف). |
| مفتاح الإخراج | مكان وضع النتيجة في السياق. وتقرأ العُقد اللاحقة هذا المفتاح. |
| ميزانية التنفيذ | سقف زمني (مللي ثانية)، مُقيَّد على جانب الخادم. والخطوة التي تتجاوزه تُقاطَع. |
أين حدّ الأمان
اللغة ليست التهديد: فـStarlark معزولة بحكم التصميم — فهي وحدها لا تستطيع قراءة ملف، ولا الوصول إلى الشبكة، ولا التكرار إلى ما لا نهاية. والحساب الصِّرف غير مؤذٍ.
القدرة الحقيقية الوحيدة هي جسر tool()، وهو محدود بـقائمة الأدوات المسموح بها المفروضة في وقت التشغيل: فلا يستطيع الكود استدعاء سوى الأدوات التي أدرجتها، ولكلٍّ منها ضماناتها الخاصة (حماية SSRF، الفوترة، التدقيق، مفتاح الإيقاف). وذلك — اختيار الأدوات — هو المكان الذي تحدّد فيه ما يُسمح للخطوة بفعله.
قائمة أدوات فارغة = بلا قدرة على أي أثر جانبي: تكتفي الخطوة بالحساب على مدخلاتها وإنتاج مخرج.
متى تستخدمها
- نعم: منطق حتمي يمكنك وصفه بدقّة، لكنه يتجاوز عمليات
computeالمدمجة (مطابقة عدّة قوائم، قواعد عمل مركّبة، صيغ خاصّة). - لا: عامل تصفية أو تجميع أو إسقاط بسيط ← يكفي operator
compute. - لا: مهمّة تتطلّب حكمًا أو كتابةً مفتوحة ← تلك مهمّة agent، لا كود.