الدرس 04 · تخطيط

فوّض المهام الكبيرة لوكيل جديد

«عزل العملية يمنحك عزل السياق مجاناً.» الوكيل الفرعي يتولى العمل المضني، والوكيل الأب يتلقى الملخص النظيف فقط.

⏱ ~10 د · 📝 3 مكونات تفاعلية · 🧑‍💻 مبني على shareAI-lab · s04_subagent.py

معضلة الوكيل الأب

تخيّل أنك تطلب من Claude Code «افهم كيف تتعامل هذه الـ codebase المؤلفة من 100,000 سطر Rust مع التزامنية». الطريقة المنطقية: يُشغّل ls وcat وgrep في السياق الرئيسي. المشكلة: هذه الجولة الاستكشافية ستُكدّس 30 tool_result في messages[]، كل منها آلاف الـ token. بحلول وقت كتابة الإجابة، امتلأ السياق بعملية الاستكشاف — وبعد خطوات قليلة إضافية سيبلغ الحد الأقصى ويتشتت الإخراج.

حل s04: إسناد مهمة الاستكشاف لوكيل جديد. يبدأ الوكيل الجديد من messages=[]، يستكشف بمفرده، ثم يُعيد للوكيل الأب الملخص النهائي فقط. سياق الأب يزيد بمقدار سطر واحد فقط: «استدعيت أداة task، والنتيجة هي XXX». نظيف ومرتب.

def run_subagent(prompt: str) -> str:
    sub_messages = [{"role":"user", "content": prompt}]  # 全新 context
    for _ in range(30):  # 安全上限,防失控
        response = client.messages.create(..., messages=sub_messages, tools=CHILD_TOOLS, ...)
        ...
    # 只返回最后的文字,中间推理全部丢弃
    return "".join(b.text for b in response.content if hasattr(b, "text"))

مقارنة سياق الأب والابن

يحاكي هذا المكوّن مهمة حقيقية: «أدرج جميع الأماكن التي تستخدم API قديم في هذا المستودع». يمكنك تشغيلها بنهجين: (أ) الوكيل الأب يقوم بها مباشرة؛ (ب) إطلاق subagent. قارن حجم الـ context النهائي على كلا الجانبين.

CHILD_TOOLS: ما الأدوات التي يملكها الوكيل الفرعي

في تطبيق s04 تفصيل يسهل إغفاله: الوكيل الفرعي لا يملك أداة task.

# 子 agent 只能用基础工具,不能再 spawn 孙子
CHILD_TOOLS = [bash, read_file, write_file, edit_file]

# 父 agent 多一个 task 工具
PARENT_TOOLS = CHILD_TOOLS + [task]

لماذا؟ لتجنب انفجار الإرسال التعاودي. وكيل فرعي يُطلق 4 وكلاء أحفاد، وهؤلاء يُطلقون المزيد — في جولات قليلة عشرات الاستدعاءات المتوازية، ولا الـ token ولا حدود API تتحمل ذلك. قاعدة s04: الإطلاق مسطّح، أب ← ابن طبقة واحدة لا أكثر. التطبيق الحقيقي لـ Claude Code يعمل كذلك — Task tool تمنع استدعاء Task tool بداخلها.

ما المرئي وما الخفي

لنُوضح المسؤوليات: الأسئلة التالية، أيها صحيح T وأيها خاطئ F؟

تفاعلي

Widget 1 · Parent vs Child · مقارنة حجم السياق

المهمة ذاتها بنهجين. اضغط Run وشاهد الطول النهائي لـ messages[] وإجمالي تقدير الـ token في كلا الجانبين.

🧠 الوكيل الأب يعمل بنفسه
messages: 0 · ~0 tokens
🎯 إطلاق subagent
messages: 0 · ~0 tokens
تفاعلي

Widget 2 · True or False · مسؤوليات الوكيل الأب والابن

6 أسئلة T/F لاختبار فهمك لحدود العزل.

أصبت في 0 / 6
تفاعلي

Widget 3 · When to spawn · أي المهام تناسب الإسناد لـ subagent؟

6 أوصاف لمهام، قرّر (أ) الوكيل الأب يقوم بها مباشرة أم (ب) يُطلق subagent. لا توجد إجابة «صواب مطلق»، لكن هناك أفضلية واضحة.

أصبت في 0 / 6