الانتقال إلى المحتوى الرئيسي

قياس التفكيك: لماذا تُعد تكلفة مسار الوكيل مقياسًا للمخطِّط

يُبلَّغ عن تكلفة التشغيل كإجمالي tokens، لكن المتغير المهيمن هو كيفية تفكيك المخطِّط للمهمة. محاسبة عُقد الخطة تحوّل وضع الميزانية إلى مُدخل جدولة.

صورة ماكرو للوحة دائرة كهربائية تُظهر المسارات ونقاط اللحام والمكوّنات بعمق ميداني ضحل.

التكلفة لا تأتي من النموذج

إجمالي tokens هو ناتج، وليس سببًا. عندما يختلف تشغيلان لوكيل على المهمة نفسها بمقدار رتبة من حيث استدعاءات الأدوات، فنادرًا ما يكون الفرق في النموذج. إنه في التفكيك: عدد المهام الفرعية التي أنشأها المخطِّط، ومدى ضيق نطاق كل منها، ومقدار السياق الذي طُلب من كل عقدة إعادة قراءته. الخطة التي تقسّم مهمة retrieval إلى خمس مهام فرعية متداخلة ستدفع ثمن المستند نفسه خمس مرات. والخطة التي تقسّمها إلى عقدة واحدة محددة النطاق جيدًا تدفع مرة واحدة.

تتجمّع أنماط الفشل. تتركّز إعادات المحاولة على المهام الفرعية التي لم يُحدَّد شرط نجاحها قط. وتتركّز إعادات قراءة السياق على العقد التي أُعطيت سطح أدوات واسعًا جدًا واضطرت إلى إعادة استنتاج ما كانت تعرفه بالفعل. وتظهر خطوات التحقق الزائدة عندما لا يستطيع المخطِّط تحديد ما إذا كانت المهمة الفرعية مكتملة، فيضيف عقدة فحص تكرّر العمل. لا شيء من هذا مرئي في إجمالي لكل تشغيل. يُنسب الإجمالي التكلفة إلى النموذج، لأن النموذج هو ما يسمّيه سطر الفوترة. أما الخطة فهي ما أنفق المال فعليًا.

محاسبة عُقد الخطة

الآلية مباشرة: امنح كل عقدة خطة معرّفًا مستقرًا، وأسند كل استدعاء نموذج واستدعاء أداة إلى العقدة التي أصدرته. معرّف العقدة ليس اسم span. إنه وحدة العمل الخاصة بالمخطِّط، تُحمَل عبر التشغيل كحقل في كل طلب صادر.

plan_node_id: "retrieve_policy_clauses"
parent_node:  "assemble_compliance_answer"
model_calls:  [...]
tool_calls:   [...]
status:       "retried"

جمّع عبر التشغيلات، وستكتسب كل عقدة توزيعًا: التكلفة، والزمن الاستجابة، ومعدل إعادة المحاولة، ومعدل الفشل. التوزيع هو المقصد. متوسط التكلفة لكل عقدة يخبرك بما تكلّفه العقدة عادةً. والذيل الأيمن الطويل يخبرك أي عقدة تنفجر أحيانًا. هاتان مشكلتان هندسيتان مختلفتان. الأولى مسألة ميزانية. والثانية عيب في التفكيك.

هنا تتوقف معظم مراقبة الوكيل. تُجمَع التتبعات، وتُعرَض الـ spans، ويكون عرض التكلفة إجماليًا لكل تشغيل مع تفصيل حسب النموذج. ذلك التفصيل يجيب عن سؤال لم يطرحه أحد: أي نموذج أنفق الـ tokens. السؤال المهم هو أي جزء من الخطة ولّد العمل. عرض على مستوى العقدة يجيب عنه، ويجيب عنه عبر التشغيلات، وهي الطريقة الوحيدة لفصل خطة سيئة عن يوم سيئ.

Aerial view of countryside with cultivated fields and a calm lake

ما يكشفه التوزيع

ثلاثة أنماط تتكرر.

عقدة بتكلفة متوسطة منخفضة وذيل ثقيل هي عادةً عقدة بشرط نجاح غير محدد بدقة. تنجح معظم الوقت وتدخل في حلقة أحيانًا. الحل ليس نموذجًا أرخص. الحل هو عقد أكثر إحكامًا على العقدة: ما يجب أن تعيده، وما يُعدّ إنجازًا.

عقدة بتكلفة متوسطة مرتفعة وتباين منخفض تقوم بعمل حقيقي. إنها مرشحة لسطح أدوات أضيق أو نموذج أرخص، لأن سلوكها متوقّع بما يكفي لتحسينه دون المخاطرة بالتشغيل.

عقدة بمعدل إعادة محاولة مرتفع وتكلفة ثابتة هي عقدة تفشل دائمًا بالطريقة نفسها ويعيد المخطِّط محاولتها لأنه لا يملك خيارًا أفضل. إضافة ميزانية هنا تجعل الفشل أكثر تكلفة. إعادة كتابة العقدة تزيله.

لا شيء من هذه الفروق يبقى بعد التجميع إلى إجمالي تشغيل. إنها تتطلب العقدة كوحدة حساب.

جعلها مُدخل جدولة

بمجرد أن تُنسب التكلفة إلى العقد، يمكن أن يرتبط الإنفاذ بالعقدة بدلًا من التشغيل. الحد الأقصى لكل تشغيل أداة صمّاء: عندما يُفعَّل، يموت المسار كله، بما في ذلك العقد التي كانت تتصرف بشكل سليم. أما الحد الأقصى لكل عقدة فيتيح إيقاف مهمة فرعية خارجة عن السيطرة، ووسمها بالفشل، وإبلاغ المخطِّط بها، الذي يمكنه حينها إعادة التخطيط حولها. ويستمر باقي التشغيل.

هذا يغيّر مهمة المخطِّط. المخطِّط الذي يتلقى تغذية راجعة بتكلفة على مستوى العقدة يمكنه اختيار التفكيكات على أساس التكلفة المتوقعة، وليس الصحة المتوقعة فقط. العقد ذات التباين المرتفع تحصل على أسطح أدوات أضيق، لأن السطح الأصغر يقلل مساحة الأشياء التي يمكن أن تخطئ فيها العقدة. والعقد التي تعيد المحاولة دائمًا تُعاد كتابتها قبل أن تحصل على ميزانية أكبر، لأن الميزانية ليست القيد. والعقد الرخيصة والموثوقةClose-up of bridge cables stretching toward a bright blue sky with fluffy clouds

يصبح إنفاذ الميزانية مُدخل جدولة. فبدلًا من مفاجأة شهرية، يكون القيد متاحًا في وقت التخطيط وعند كل حدّ عقدة. لم يعد المخطِّط يخمّن ما إذا كان يستطيع تحمّل تفكيك معيّن؛ بل لديه توزيع مسبق لتكاليف العقد من التشغيلات السابقة.

المقايضة حقيقية. تتطلب المحاسبة على مستوى العقدة أن يصدر المخطِّط معرّفات عقد مستقرة، ما يعني أن تفكيك المخطِّط يجب أن يكون قابلًا للملاحظة وإعادة الإنتاج. المخطِّطات التي تولّد تفكيكًا حرّ الشكل في كل تشغيل تنتج معرّفات لا تتجمع. يفرض القياس خيارًا: إما أن يكون التفكيك مستقرًا بما يكفي للقياس، أو لا يكون، وتبقى التكلفة غير قابلة للنسب. الفرق التي تريد النوع الثاني من المخطِّطات — حرّ الشكل بالكامل، وأقصى قدر من التكيّف — تدفع ثمنه بالتخلي عن حلقة التحكم. ذلك خيار مشروع. لكنه ليس مجانيًا.

ما الذي يحلّ هذا محلّه

لوحات التكلفة اللاحقة أثر تقريري. تخبرك بما حدث الشهر الماضي، في الإجمال، بعد إنفاق المال. إنها مفيدة للمالية وعديمة الفائدة للهندسة، لأنه بحلول الوقت الذي يصبح فيه الرقم مرئيًا يكون التشغيل قد انتهى والخطة التي سبّبته قد ذهبت.

محاسبة عُقد الخطة حلقة تحكم. تقيس عند الوحدة التي يتحكم بها المخطِّط فعليًا، وتجمّع عبر التشغيلات بحيث يكون التباين مرئيًا، وتغذّي التفكيك التالي. الفرق ليس في دقة الرسم البياني. إنه في ما إذا كان القياس قادرًا على تغيير التشغيل التالي.

الشكل العملي

التنفيذ الأدنى له أربعة أجزاء.

  • يصدر المخطِّط معرّفات العقد كجزء من تفكيكه، ويحملها وقت التشغيل في كل استدعاء نموذج وأداة.
  • مجمِّع يجمّع التكلفة والزمن الاستجابة وعدد إعادات المحاولة وحالة الفشل لكل عقدة عبر التشغيلات.
  • طبقة سياسات تقرأ التوزيع لكل عقدة وتطبّق الحدود القصوى واختيار النموذج وقيود سطح الأدوات عند حدّ العقدة.
  • يستهلك المخطِّط التوزيعات المسبقة لطبقة السياسات عند اختيار التفكيك التالي.

الجزء الصعب ليس التمديدات. إنه تقبّل أن التفكيك أثر هندسي له بصمة تكلفة، وأن قياسه هو الطريقة الوحيدة لجعل وضع الميزانية قرارًا تصميميًا بدلًا من حدث محاسبي.

مشاركةXLinkedInرابط دائم5 دقيقة قراءة

قراءات ذات صلة

الأسئلة التي يجيب عنها هذا

Why is a per-run token total insufficient for agent cost control?

It aggregates over the whole trajectory, so it cannot distinguish a node that is cheap and reliable from a node that occasionally explodes. It attributes cost to the model rather than to the decomposition that generated the work, which is the variable engineering can actually change.

What is a plan node identifier and why does it matter?

It is a stable label the planner assigns to each unit of work in its decomposition, carried on every model and tool call the node issues. Without it, calls cannot be aggregated per node across runs, and the cost distribution that reveals pathological decompositions is unavailable.

How does plan-node accounting change budget enforcement?

Caps attach to the node rather than the run. A runaway subtask is stopped and reported to the planner, which can re-plan around it, instead of the whole trajectory failing when a run-level cap trips.

What is the main trade-off of node-level cost instrumentation?

It requires the planner's decomposition to be stable and reproducible enough that node identifiers aggregate across runs. Fully free-form planners that generate a new decomposition every time give up that control loop in exchange for adaptability.