امنح وكيلك البرمجي مزيداً من الاستقلالية
TL;DR
تأخذ مهارتي SDD-flow ميزةً من المواصفة حتى كود يعمل، مع إيقاف الأذونات، فلا أوافق على كل خطوة على حدة. ثم أحفظ تلك الجلسات في LangSmith وأعود لأقرأ الـ traces.
ثلاث فوائد: سجلّ موضوعي لما فعله الوكيل بينما لم أكن أراقب، وعمليات eval تختبر نموذجاً جديداً على عملي أنا لا على ملاحظات الإصدار، وحلقة يراجع فيها الوكيل سلوكه ويخبرني أين انحرف إعدادي. لا شيء من هذا غريب، وكله يعمل على الباقة المجانية.
السجلّ الذي لا تملكه بغير ذلك
قبل فترة كتبتُ تدوينة متحمّسة عن بنائي لهذا الخط، وإطفاء الأذونات، وإنجاز الميزات بضربة واحدة. ما زلت أقف خلف تلك النشوة. هذه هي المتابعة الرصينة، وتبدأ بحقيقة مملّة: حين يعمل وكيل والأذونات مُطفأة، أنت لا تراقب. هذا هو كامل المغزى، وهو في الوقت نفسه كامل المشكلة.
الوكيل الذي يصمت يترك أثراً واحداً: الـ trace. إن لم تقرأه، فأنت تراهن على أن غياب الخطأ يعني أن شيئاً لم يسؤ.
والأمور قد تسوء فعلاً يا جماعة! إليك حالتين التقطتهما traces خاصتي:
- وكيلٌ فرعي (subagent) أُطلق برسالة فارغة ردّ، بدل أن يفشل: «يبدو أن رسالتك وصلت فارغة.» لهذا شكل الإجابة. لكنه ليس إجابة. في تشغيل ذاتي يمضي هكذا إلى الخطوة التالية وكأن عملاً قد جرى.
- مُعرّفٌ لا وجود له،
poliva83، تولّد بثقة تامة وجرى وصله داخل الإعدادات. اسمي على المنصة هوpablooliva. أماpoliva83فليس أحداً.
افحص نموذجاً جديداً قبل أن تثق به
ما إن تملك ذلك السجلّ، حتى يصير المادة الخام لعمليات eval.
النموذج الافتراضي في Claude Code يتبدّل من تحتي. تنشر Anthropic ما ينبغي توقّعه من نموذج جديد، وأنا أقرأ تلك الملاحظات. لكن ذلك هو الحالة الوسطى عبر استخدام الجميع. أما عن استخدامي أنا فلا تقول شيئاً.
إعدادي فيه مهارات مُفصّلة خصيصاً، وكومة من قواعد CLAUDE.md، وسير عمل يتّكئ على تصرّف النموذج بطريقة بعينها. يمكن لنموذج أن يفوز بكل benchmark منشور ومع ذلك يسوء بهدوء في الشيء الغريب الوحيد الذي أعتمد عليه، لأن ملاحظات الإصدار لا تعرف شيئاً عن شيئي الغريب الوحيد. ولأكون واضحاً، لا شيء غريب في إعدادي. الناس تقول إنه أفضل إعداد. لا أحد غيري يملك إعداداً كهذا.
عمليات eval تؤكّد بدل أن تتمنّى. خذ حفنة من مهامك الحقيقية أنت — تلك التي استخرجتها من traces خاصتك — اكتب كيف تبدو النتيجة الجيدة، وأعد تشغيلها حين يصل النموذج الجديد. إن صمدت الدرجة، تمضي بثقة. إن هبطت الدرجة، تشير الحالات الفاشلة مباشرة إلى أي حالة استخدام تراجعت، قبل أن تكلّفك في عمل حقيقي. التوقّعات المنشورة هي الفرضية المسبقة؛ وعمليات eval خاصتك هي التأكيد. لأي شيء تعتمد عليه، تريد الاثنين معاً.
ارفع سقف ما تتركه يفعله دون مراقبة
هذه هي الفائدة التي أتمنّى أكثر من غيرها لو يسرقها مني أحد.
تشغيل SDD-flow لدورة تطوير كاملة دون مراقبة لا ينجح إلا بقدر ما يبقى الوكيل داخل القواعد التي أعطيته إياها: أعراف CLAUDE.md، والمهارات التي تنطلق حين ينبغي، والإضافات التي تتصرّف بأدب. وكلما زادت ثقتي بذلك، فوّضت أكثر دون أن أراقب. فالسؤال ليس «هل الاستقلالية آمنة؟»، بل «كيف أواصل رفع المقدار الذي أستطيع تفويضه بمسؤولية؟» — وعلى الجواب أن يتفوّق على مجرّد التمنّي بأن القواعد ما زالت قائمة.
الـ traces تُغلق تلك الحلقة بالوكيل نفسه. الباقة المجانية في LangSmith تحتفظ بنحو 14 يوماً، فمرّة كل أسبوعين أوجّه Claude إلى سجلّه هو وأطلب منه أن يراجع كيف تصرّف. هل اتّبع CLAUDE.md؟ هل انطلقت المهارات والإضافات بالطريقة المفترضة؟ أين انحرف؟
وحين يجد شيئاً، يقترح التغيير. قاعدة تُتجاهَل مراراً، تُعاد صياغتها لتصل. وصف مهارة ينطلق في غير محلّه، يُحكَم شدّه. عُرف غامض، يُجعَل صريحاً. يضع الوكيل سلوكه هو في مواجهة القواعد التي يُفترض أن يتّبعها، ويخبرني أين افترق الاثنان.
مثال ملموس. طوال معظم العام الماضي، كان Claude Code يسمح بمستوى واحد فقط من الوكلاء الفرعيين، فلا يستطيع وكيل أن يُطلق آخر، وكنت قد خبزتُ ذلك في تعريفات وكلائي بوصفه حقيقة: «أداة Agent معطّلة بداخلك.» ثم فعّل إصدار صغير الوكلاء الفرعيين المتداخلين بهدوء، وبين عشية وضحاها صارت تعليماتي تؤكّد شيئاً عن المنصّة لم يعد صحيحاً. التقطتُ ذلك بمحض الحظ، إذ صادفتُ تغريدة عن الوكلاء الفرعيين المتداخلين فأخذت أنبش. الإصلاح كان سهلاً: تحويل حقيقة قابلة للانتهاء إلى قاعدة لها سبب. أما الالتقاط فكان الجزء الصعب، وقد توقّف على رؤيتي للتغريدة الصحيحة. حلقة المراجعة هي كيف تجد هذا النوع من الانحراف حين لا يحالفك الحظ.
وهذا يتراكم. كل مرور يشدّ الإعداد قليلاً، فيبدأ التشغيل الذاتي التالي من أرض أصلب، فأفوّض أكثر قليلاً. الـ traces ليست مجرّد شبكة أمان تحت الاستقلالية. بل هي الطريقة التي تكسب بها مزيداً منها.
ما الذي يتطلّبه هذا فعلاً
أقل مما يبدو. شغّل الـ tracing، متغيّر بيئة واحد، أو دع مهارات LangSmith CLI من LangChain تتولّى التوصيل عنك: أمرٌ واحد يُدخل trace وdataset وevaluator مباشرةً إلى Claude Code، وهي تقابل الفوائد الثلاث المذكورة أعلاه.
npx skills add langchain-ai/langsmith-skills --agent claude-code --skill '*' --yes --global
اقرأه وفق جدول ثابت بدل أن تترك الـ dashboard يصير تبويباً لا تفتحه أبداً. اسحب حفنة من المهام الحقيقية إلى eval set كي يصطدم ترقّي النموذج التالي بشيء من المقاومة. ثم دع الوكيل يراجع traces خاصته هو ويسلّمك الـ diffs لتعديل إعدادك.
ما زلت أعمل والحواجز مُطفأة. الفرق أنني لم أعد أعامل تشغيلاً صامتاً كأنه تشغيل نظيف، وصار لديّ وكيل يساعدني على اكتشاف أين لم يكن كذلك. الوكيل يصحّح نفسه، وأنا أتفرّغ للاسترخاء وإطلاق نِكات عن Trump... أفضل النِكات، لا أحد عنده نِكات أفضل.