ما هو إطار تشغيل الوكيل؟ الفرق عن النموذج والإطار
تعرّف إلى إطار تشغيل الوكيل: الحلقة والأدوات والأذونات وحالة الجلسة، ولماذا يختلف عن نموذج اللغة أو إطار العمل، مع مثال DeepSeek Harness.
ما هو إطار تشغيل الوكيل
إطار تشغيل الوكيل هو البرنامج الذي يعمل حول نموذج اللغة ويحوّله إلى وكيل. يحتفظ هذا الإطار بالحلقة التي تواصل استدعاء النموذج، وتعريفات الأدوات التي يُسمح للنموذج باستدعائها، وقواعد الأذونات التي تحدد أيّاً من هذه الاستدعاءات يُنفَّذ فعلياً، وحالة الجلسة التي تبقى بين الأدوار، ودليل العمل الذي تُنفَّذ فيه المهام. ويمكن تبديل النموذج داخله.
هذه هي الجملة الأهم التي ينبغي الاحتفاظ بها. يجيب النموذج بمفرده عن سؤال ثم ينساك. أما إطار التشغيل فيسأل النموذج عمّا ينبغي فعله تالياً، وينفّذ الأمر الذي طلبه النموذج، ويعيد النتيجة إليه، ثم يسأل مرة أخرى. هذا التكرار هو ما يقصده الناس عندما يقولون "وكيل". إذا كانت المصطلحات المحيطة لا تزال غير واضحة، فإن الفرق بين وكيل الذكاء الاصطناعي ونموذج LLM والمساعد يوضّح هذه المصطلحات قبل اختيار أداة.
الحِزمة ليست النموذج
يختلط الاثنان لأن المورّدين يطرحونهما تحت اسم تجاري واحد.
dsh وDeepSeek منتجان مختلفان. DeepSeek Harness، الذي نُشر في github.com/deepseek-ai/deepseek-harness بتاريخ 13 August 2026 بموجب ترخيص MIT، هو برنامج Node تثبّته على جهاز. أما نماذج DeepSeek فهي أوزان تُقدَّم عبر API (واجهة برمجة التطبيقات). وجّه dsh إلى نموذج من مورّد آخر، وسيواصل العمل، لأن الحِزمة تحتاج فقط إلى مكوّن يقبل الرسائل ويعيد استدعاءات الأدوات.
Claude Code وClaude زوج مماثل. Claude Code هو حِزمة: برنامج طرفية يتضمن حلقة تنفيذ، ونظام أذونات، وأدوات للملفات وshell. أما Claude فهو عائلة النماذج التي يستدعيها افتراضياً. وينطبق التقسيم نفسه على Codex وGemini CLI.
إليك الاختبار الذي يحسم الأمر في كل مرة. تثبّت حِزمة. ثم تستدعي نموذجاً. إذا كان للشيء إصدار على القرص وملف إعداد في مجلد home، فهو حِزمة. أما إذا كان سلسلة نصية داخل ملف الإعداد، مثل deepseek-chat، فهو النموذج.
ما الذي تفعله حلقة التشغيل فعلياً
تبدو دورة واحدة من حلقة harness على النحو التالي. اقرأها ببطء، لأن معظم الفروق بين أطر التشغيل تكمن داخل هذه الخطوات الخمس.
- يرسل harness المحادثة حتى الآن، إلى جانب قائمة بتعريفات الأدوات، إلى النموذج.
- يجيب النموذج بنص، أو يطلب استدعاء إحدى تلك الأدوات.
- يتحقق harness من الطلب مقابل قواعد الصلاحيات لديه، ثم ينفّذه أو يتوقف لطلب موافقتك.
- يشغّل harness الأداة، ويلتقط المخرجات ورمز الخروج، ويقتطع المخرجات إذا كانت طويلة جداً.
- يضيف harness النتيجة إلى المحادثة، ثم يعود إلى الخطوة 1.
الخطوة 3 هي موضع الاختلاف الأكبر بين أطر التشغيل في الاستخدام اليومي. يكون harness الذي يطلب الموافقة قبل كل أمر آمناً ومرهقاً. أما harness الذي لا يطلب الموافقة أبداً، فسوف يشغّل في النهاية أمراً مدمّراً على مسار أخطأ النموذج في تحديده. تتضمن أطر التشغيل الجادة حالياً إعداداً وسطياً: قائمة سماح بالأوامر التي تُنفَّذ دون طلب موافقة، ومطالبةً بالموافقة على كل ما عداها.
وتكمن بقية الاختلافات في الخطوة 1. يكتب harness أيضاً system prompt المرفق بكل طلب من تلك الطلبات، ويمنحك Claude Code هذا التحكم مباشرة، لأن نمط الإخراج يحرر system prompt الذي يرسله، وبذلك يغيّر كل رد يعود. تكبر المحادثة في كل دورة، وللنموذج نافذة سياق ثابتة، لذلك يجب أن يقرر harness ما الذي يحذفه، وما الذي يلخّصه، وما الذي يكتبه في ملف ثم يقرأه لاحقاً. ويمثل هذا القرار معظم سبب اختلاف جودة العمل بين harnessين يقودان النموذج نفسه. إذا بدت هذه الخطوات الخمس مجردة، فاكتب حلقة بدائية خاصة بك مرة واحدة؛ فهذا بالضبط ما يطلب منك مسار تعليمي مرحلي لوكلاء الذكاء الاصطناعي بناؤه في مرحلة مبكرة.
تربط معظم أطر التشغيل حالياً أدوات خارجية عبر MCP (بروتوكول سياق النموذج)، وهو أسلوب قياسي لإتاحة أداة لأي harness يدعمه، بحيث يصل تكامل واحد إلى عدة أطر تشغيل. يشرح تشغيل خوادم MCP على VPS هذا الجانب. يكون البحث على الويب عادةً أول أداة يضيفها المستخدمون، كما أن توجيه الوكيل إلى مثيل SearXNG الخاص بك يُبقي الاستعلامات خارج خدمات الجهات الخارجية، ويوضح في الوقت نفسه أن كل صفحة يقرأها الوكيل بعد ذلك هي مدخلات غير موثوقة تصل إلى داخل الحلقة.
الـAgent harness مقابل إطار عمل الوكلاء
يُطرح هذا السؤال كلما ظهر harness جديد، وتختلف الإجابات لأن المورّدين يختلفون أيضاً. إليك الصياغة التي تصمد أمام التدقيق.
إطار العمل هو مكتبة تستوردها. تكتب الحلقة بنفسك، وتحدد متى تستدعي النموذج، وتعالج نتائج الأدوات بنفسك. LangChain هو المثال المعروف: تحصل على مكوّنات أساسية، ثم تجمع الوكيل في التعليمات البرمجية.
أما الـharness فهو برنامج تشغّله. الحلقة مكتوبة مسبقاً، والأدوات موجودة مسبقاً، ونموذج الأذونات مضبوط افتراضياً. تحصل على وكيل يعمل منذ الأمر الأول، ثم تضبطه وفق احتياجاتك.
عادةً ما يحسم اختبار التثبيت الأمر. إذا ثبّتَّه ثم كتبت تعليمات برمجية، فهو إطار عمل. وإذا ثبّتَّه ثم تحدثت إليه، فهو harness.
الحد الفاصل محل خلاف فعلي، وأوضح دليل على ذلك توثيق LangChain نفسه. اعتباراً من August 2026، يصف Deep Agents بأنه إطار عمل "opinionated, batteries-included" مبني على LangGraph، بينما يصف مستودع langchain-ai/deepagents نفسه بأنه "the batteries-included agent harness". كلا الوصفين منصف. Deep Agents هو Python SDK (software development kit) تستورده، ولذلك يصنّفه اختبار التثبيت كمكتبة، لكنه يوفّر سلوكاً افتراضياً كافياً لاستخدامه مثل harness. أطلقت Microsoft harness ووكلاء مستضافين للتوافر العام في August 2026، ما يوضح أن المصطلح أصبح فئة من المنتجات، لا مجرد مصطلح تقني.
لذلك اطرح السؤال الذي يتنبأ بحجم العمل المطلوب منك. إذا كتبت الحلقة، فأنت مسؤول عنها: عن عمليات إعادة المحاولة، وتقليص السياق، ومطالبات الأذونات، وسجل ما حدث. وإذا كانت الحلقة جزءاً من المنتج، فأنت ترث إجابات شخص آخر عن كل هذه الأمور. هذا يسرّع البدء كثيراً، لكنه يجعل التغيير لاحقاً أصعب.
كيف يختلف الـharness عن نافذة الدردشة
تعرض نافذة الدردشة والـharness مخرجات النموذج. الفرق هو الجهاز الذي تُنفَّذ عليه الأعمال. في نافذة الدردشة، يُنفَّذ أي كود يشغّله النموذج داخل sandbox الخاص بالمورّد، وعلى الملفات التي حمّلتها، ويختفي عند انتهاء الجلسة. أما الـharness فيشغّل الأدوات على الجهاز الذي بدأته عليه، وبحساب المستخدم الذي بدأته به، ويتعامل مع ملفاتك الفعلية، باستخدام بيانات الاعتماد الفعلية الموجودة في بيئته.
هذه هي الفائدة كاملةً والمخاطرة كاملةً في جملتين. يستطيع الوكيل أخيراً تنفيذ العمل. لكنه يستطيع أيضاً حذف العمل.
الأدوات التي يستخدمها الناس فعلياً
هذه القائمة مؤرخة في 19 August 2026 عن قصد. يتغير هذا المجال أسبوعياً، وتصبح أي قائمة شاملة قديمة بسرعة.
- Claude Code وCodex أداتان توفرهما الجهة المصنّعة. تعتمدان على الطرفية أولاً، وترتبطان افتراضياً بنماذج الجهة المصنّعة، وتقدمان أكثر آليات إدارة الصلاحيات اكتمالاً. يشرح مقارنة Claude Code وCursor وCodex وCopilot هذه الأدوات بالتفصيل.
- DeepSeek Harness (
dsh) مرخّص بموجب MIT ومبني على فكرة واحدة: كل شيء عبارة عن plugin، ولذلك يمكن استبدال النماذج والأدوات والجلسات وبيئات العزل وواجهة المستخدم. يعمل كل plugin تثبّته بالصلاحيات الخاصة بالوكيل، لذا فإن التحقق من الموارد التي يمكن لـ dsh plugin الوصول إليها قبل إضافته أهم هنا من أداة ذات مجموعة أدوات ثابتة. بلغ عدد نجومه على GitHub نحو 166,800 في 19 August 2026، بعد ستة أيام من نشره. - Hermes، من Nous Research، وكيل عام مستقل، وليس أداة للبرمجة. أُصدر بموجب MIT في February 2026، ويحتفظ بذاكرته ومهاراته في قاعدة بيانات SQLite محلية على جهازك. يشرح استضافة Hermes ذاتياً على VPS طريقة تشغيله.
- Omnigent أداة meta-harness؛ فهي تشغّل أدوات أخرى، بما فيها Claude Code وCodex، من خلال API واحد مع جلسات مشتركة، وحدود للإنفاق، وبيئة عزل على مستوى نظام التشغيل. يوضح Omnigent كأداة متعددة الوكلاء ما الذي تحصل عليه من ذلك.
- OneCLI أداة معزولة تستهدف الفرق، وتستند إلى بوابة تحقن بيانات الاعتماد الحقيقية في الطلبات الصادرة، بحيث لا يرى الوكيل نفسه سوى مفاتيح نائبة.
تظهر ثلاث من هذه الأدوات في القائمة المختصرة نفسها كثيراً بما يكفي لجعل قراءة مقارنة DeepSeek Harness وClaude Code وOmnigent جنباً إلى جنب مفيدة لفهم اقتران النماذج، والترخيص، والنضج، وما يتطلبه تشغيل كل أداة على خادم.
تتكون البداية السريعة لـ dsh من أمر واحد، وتشغيله مرة واحدة هو أسرع طريقة لمعرفة ماهية أداة harness. تحتاج إلى Node.js على الجهاز.
npx @deepseek-ai/dsh webيشغّل ذلك واجهة الويب (واجهة المستخدم) على http://127.0.0.1:3080. اقرأ README قبل الاعتماد عليها، لأن dsh يصف نفسه بأنه إصدار معاينة للمطورين، ويذكر بوضوح أنه ستكون هناك تغييرات تكسر التوافق. إذا فشل الأمر الأول تماماً أو حمّل إصداراً لم تتوقعه، فعادةً ما يساعدك تثبيت إصدار محدد من dsh ومسح ذاكرة npx المؤقتة على المتابعة. يشرح تشغيل DeepSeek Harness على VPS تثبيت الخادم، بينما يشرح سبب بدء ذلك العنوان بـ 127.0.0.1 الإعداد الافتراضي لعنوان loopback.
تعمل Routers فوق طبقة الـharness
يعمل model router كوكيل محلي بين الـharness وواجهة API الخاصة بالمزوّد. ويُعد Claude Code Router المثال الشائع على ذلك: فهو يستمع افتراضياً على 127.0.0.1:3456، ويقبل الطلبات التي كان Claude Code سيرسلها إلى المزوّد الخاص به، ثم يوجّهها إلى أي مزوّد ضبطته. لا يعرف الـharness أن أي تغيير حدث.
توجد Routers لأن النموذج قابل للاستبدال، ولذلك فهي دليل واضح على الفكرة الرئيسية في هذا المنشور. لكنها تركّز المخاطر أيضاً، لأن الـproxy يرى كل prompt ويحتفظ بكل مفتاح مزوّد. تعامل معها كبنية تحتية، لا كوسيلة convenience. أين يحتفظ الـharness بمفاتيح API وإعدادات النماذج المشكلة نفسها، ولكن في طبقة أدنى.
ما الذي يتغير عند تشغيل harness على VPS
تتغير أربعة أمور عند نقل harness من حاسوبك المحمول إلى خادم تستأجره.
يستمر في العمل عند إغلاق غطاء الحاسوب. تستمر المهمة الطويلة أثناء تنقلك وبعد نفاد البطارية. ابدأ تشغيلها داخل tmux وافصل الجلسة عنها:
tmux new -s agent
# start the harness, then press Ctrl-b and then d to detach
tmux attach -t agentبالنسبة إلى أي مهمة يجب أن تعود بعد إعادة التشغيل، تكون خدمة المستخدم أفضل من جلسة طرفية:
loginctl enable-linger $USER
systemctl --user status my-agent.serviceloginctl enable-linger هو الجزء الذي يغفل عنه كثيرون. من دونه، يوقف systemd خدمات المستخدم فور إغلاق آخر جلسة SSH (secure shell)، لذلك يتوقف agent عند تسجيل الخروج من دون ظهور أي خطأ. يحتوي تشغيل dsh دون واجهة عبر systemd على ملف الوحدة. بعد وجود جلسة واحدة تعمل على ذلك الخادم، لا تكلّفك الجلسة الثانية شيئاً إضافياً، ويمكن لـجلستي Claude Code على الخادم نفسه تبادل الرسائل، لذلك يمكن للجلسة التي بدأتَها هذا الصباح تسليم مهمة إلى الجلسة الأخرى من دون نقلها يدوياً.
يحتفظ بمفاتيحك. يوجد مفتاح provider الآن في ملف إعداد على ذلك الخادم. تحقّق ممن يمكنه قراءته:
ls -l ~/.configيمكن لأي عملية تعمل باسم مستخدمك قراءة ذلك الملف، ويشمل ذلك agent وأي شيء يختار agent تشغيله.
يمكنه الوصول إلى أجهزتك الأخرى. يوفّر VPS الموجود على الشبكة الخاصة نفسها مع أجهزتك الأخرى مساراً إلى تلك الأجهزة أمام agent. وهذا هو الهدف تحديداً، لكنه أيضاً نطاق الضرر المحتمل.
يمكن الوصول إليه من أي مكان تكون فيه. يوفّر معظم harnesses واجهة ويب، ويربطها معظمها بعنوان loopback لسبب وجيه. تحقّق من إعدادك:
ss -tlnp | grep 3080يعني 127.0.0.1:3080 أن الخادم نفسه فقط يمكنه الاتصال. ويعني 0.0.0.0:3080 أن أي شخص يعثر على العنوان يمكنه الاتصال. يمكنك الوصول إلى واجهة loopback عبر نفق SSH بدلاً من تغيير عنوان الربط:
ssh -N -L 3080:127.0.0.1:3080 you@your-serverثم افتح http://127.0.0.1:3080 في المتصفح على حاسوبك المحمول. تمر حركة الشبكة داخل جلسة SSH، لذلك لا تُعرّض شيئاً جديداً للإنترنت.
كل واحدة من هذه الخصائص تمثل أيضاً حجة أمنية
اقرأ الخصائص الأربع مرة أخرى من منظور المهاجم.
يعمل دون إشراف، لذلك لا أحد يراقب اللحظة التي يسيء فيها النموذج قراءة مسار. يحتفظ بمفاتيحك، لذلك يكفي أن يكون ملف إعداد واحد قابلاً للقراءة للوصول إلى حسابك الكامل لدى مزود الخدمة. يمكنه الوصول إلى أجهزتك الأخرى، لذلك تؤدي عملية حقن في prompt، أي تعليمات مخفية في صفحة ويب أو ملف يقرأه الوكيل، إلى إنشاء مسار يصل إلى خادم قاعدة بياناتك. ويمكن الوصول إليه من أي مكان، لذلك تصبح واجهة ويب مرتبطة بالعنوان 0.0.0.0 من دون كلمة مرور shell متاحة على الإنترنت العام.
الحل في كل حالة بسيط وغير مثير، وهو الحل نفسه في كل مرة. امنح الوكيل حساب مستخدم خاصاً به من دون امتيازات بدلاً من استخدام حسابك:
sudo adduser --disabled-password --gecos "" agentأبقِ واجهة الويب على loopback، ووصل إليها عبر SSH. امنح الوكيل أضيق بيانات اعتماد تسمح له بإتمام المهمة، وهو ما توضحه إبقاء الأسرار خارج وكلاء الذكاء الاصطناعي على نحو صحيح. بالنسبة إلى أي شيء يعمل أثناء غيابك عن المراقبة، تتفوق آلة مؤقتة على آلة مُحكمة الإعداد: يتبع كل من تشغيل وكلاء البرمجة في VM مؤقتة وتشغيل Claude Code بأمان على VPS هذا النهج.
هل تحتاج إلى agent harness؟
إذا كان عملك يقتصر على سؤال واحد في كل مرة، فستكفيك نافذة محادثة، ولن يضيف الـharness سوى حلقة يتعين عليك الإشراف عليها. يبدأ الـharness في تحقيق فائدته عندما تتطلب المهمة خطوات كثيرة على ملفات فعلية، أو عندما يتعين عليه مواصلة العمل أثناء نومك.
لا يزال معظم هذا المجال حديثاً. يذكر dsh عبارة developer preview في ملف README الخاص به حتى August 2026، بينما تتطور الأدوات الأخرى بسرعة كافية لأن ملف إعداد تكتبه اليوم قد يحتاج إلى تعديل في الشهر المقبل. لذلك احرص على أن يكون إعدادك صغيراً وقابلاً لإعادة الإنتاج، وسجّل التغييرات التي أجريتها. وينطبق هذا الانضباط نفسه داخل الحلقة، إذ إن المهارة التي تدفع agent إلى إجراء أصغر تغيير ينجح تترك لك diff يمكنك قراءته فعلياً في نهاية التشغيل غير الخاضع للإشراف. ابدأ بـharness واحد على خادم واحد، وامنحه مهمة واحدة ومفتاحاً محدود الصلاحيات، ولا توسّع وصوله إلا بعد أن تبقى المهمة الأولى رتيبة لمدة أسبوع. تُعد الـagents المستضافة ذاتياً التي تستحق التشغيل اليوم نقطة مناسبة لاختيار الأول.
FAQ
ما المقصود بـ agent harness بعبارات بسيطة؟
هو البرنامج المحيط بالنموذج. يُنتج النموذج نصاً وطلبات لاستخدام الأدوات. يشغّل الـharness الحلقة التي تواصل إرسال الطلبات، وينفّذ الأدوات التي يطلبها النموذج، ويفرض القواعد التي تحدد الأدوات التي يمكنها العمل دون إذن، ويحافظ على حالة الجلسة والملفات بين الأدوار. إذا استبدلت النموذج، يظل الـharness يعمل. وهذه أوضح علامة على أنّهما شيئان منفصلان.
هل Claude Code نموذج أم harness؟
Claude Code هو harness. وهو برنامج طرفية يتضمن حلقة ونظام أذونات وأدوات مضمّنة للملفات وshell. أما Claude فهو عائلة النماذج التي يستدعيها افتراضياً. وينطبق الفصل نفسه على DeepSeek Harness (dsh)، وهو برنامج Node تثبّته، وعلى نماذج DeepSeek التي تُقدَّم عبر API. تثبّت الـharness على جهاز. وتستدعي النموذج عبر الشبكة.
ما الفرق بين agent harness وagent framework؟
الـframework مكتبة تستوردها وتكتب التعليمات البرمجية التي تتعامل معها، لذلك تكون أنت مسؤولاً عن الحلقة وإعادة المحاولة ومعالجة السياق. أما الـharness فهو برنامج تشغّله، ولذلك تأتي هذه الوظائف كلها مع إعدادات افتراضية تضبطها بدلاً من كتابتها. الخط الفاصل بينهما غير واضح عملياً: فـDeep Agents من LangChain هو SDK قابلاً للاستيراد، ويصفه مستودعه نفسه بأنّه agent harness متكامل، وذلك اعتباراً من August 2026. اسأل نفسك ما إذا كنت ستكتب الحلقة بنفسك. تحدد إجابة هذا السؤال المصطلح المناسب لحالتك.
هل أحتاج إلى VPS لتشغيل agent harness؟
لا. يعمل كل harness مذكور هنا على laptop. يغيّر الخادم أربعة أمور: يواصل الـagent العمل عند إغلاق الغطاء، ويحفظ مفاتيحك على جهاز يعمل دائماً، ويمكنه الوصول إلى خوادمك الأخرى، ويتيح لك العودة إلى الجلسة نفسها من أي جهاز. وكل واحدة من هذه الميزات تمثل أيضاً اعتباراً أمنياً، لذلك امنح الـagent حساب مستخدم خاصاً به، وأبقِ أي واجهة ويب مرتبطة بـ 127.0.0.1.
هل يمكنني استخدام نموذج مختلف داخل الـharness نفسه؟
نعم، عادةً، وهذه هي الخاصية الأساسية للـharness. تقبل معظم الـharnesses اسم النموذج وbase URL في إعداداتها، لذلك يصبح توجيه أحدها إلى موفّر آخر تعديلاً بدلاً من إعادة كتابة البرنامج. وإذا كان الـharness يقيّد ذلك، فيمكن لموجّه محلي مثل Claude Code Router أن يعمل بين الـharness والموفّر، ويترجم الطلبات، ويرتبط بـ 127.0.0.1:3456 افتراضياً. تعامل مع ذلك الـproxy بحذر، لأنّه يرى كل prompt ويحتفظ بكل key.