الوثائق

خطوات الكود (Code Steps)

تنفّذ عقدة code_step منطقًا مخصّصًا في sandbox من نوع Starlark — قابلة للتحرير بحرّية، ومحدودة بقائمة أدوات مسموح بها.

خطوات الكود (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، لا كود.