أفضل إضافات DeepSeek Harness التي تستحق التثبيت
تعرّف إلى 5 إضافات لـ DeepSeek Harness تضبط سقف الإنفاق، وأذونات الأدوات، وفحص الحقن، والذاكرة الدائمة، والوصول عبر الشبكة المحلية على VPS.
ما إضافات DeepSeek Harness التي تستحق التثبيت
إضافات DeepSeek Harness هي شيفرات من جهات خارجية تعمل داخل وكيلك، وبالامتيازات نفسها التي يملكها وكيلك، على جهاز تدفع تكلفته. تضم قائمة المجتمع أكثر من عشرين فئة وأكثر من ألف إدخال. على خادم افتراضي خاص مستأجر (VPS)، تحتاج إلى خمس إضافات: dsh-budget لوضع حدود للإنفاق، وdsh-permission-rules للتحكم في الأدوات، وdsh-defend لفحص الحقن والأسرار، وdsh-memory للحقائق التي تبقى بعد انتهاء الجلسة، وdsh-web-lan-access فقط بعد أن تقرر طريقة المصادقة التي ستستخدمها.
إن Harness هو dsh، وهو إطار الوكيل مفتوح المصدر من DeepSeek، وقد بُني بحيث تكون كل مكوّناته إضافة. يصفه ملف README الخاص به بأنه إصدار معاينة للمطورين، ويحذّر THERE WILL BE COMPATIBILITY-BREAKING CHANGES. هذه الحقيقة وحدها تحدد كل خيار أدناه. ثبّت الإصدارات التي تثبتها، وتوقّع أن يؤدي أي تحديث إلى تعطيلها، وأبقِ المجموعة صغيرة بما يكفي لتتمكن فعلياً من قراءة شيفرتها كاملة. إذا لم يكن Harness قيد التشغيل بعد، فابدأ بـ تثبيت DeepSeek Harness على VPS ثم عُد إلى هنا. وإذا كانت الأجزاء التي تتكامل معها هذه الإضافات، مثل حلقة الوكيل وأدواته وذاكرته، لا تزال غير واضحة، فاستوعب الأساسيات أولاً، لأن تقييم كل خيار أدناه يصبح أسهل عندما تعرف وظيفة كل طبقة.
كيف يثبّت dsh إضافة، وأين يضع الإعدادات
يبني dsh نفسه من إضافات Cordis، لذلك تكون النسخة قيد التشغيل شجرة من الإضافات، وليست برنامجاً واحداً. والـprofile هو تركيب مُسمّى لهذه الإضافات. القالبان هما web وheadless. تكون القيمة الافتراضية لـ$DSH_HOME هي ~/.dsh، ويوجد الـprofile في $DSH_HOME/profiles/<name>/، حيث يحتفظ بـpackage.json الخاص به، وبيان dsh.profile، وcordis.patch.yml.
dsh plugin --profile web list
dsh plugin --profile web add dsh-budget
dsh plugin --profile web remove dsh-budgetتعمل أربعة أشكال للمصدر: اسم حزمة npm مجرد، واسم ذي نطاق مثل @towzai/dsh-memory، ومرجع GitHub مثل github:PerryLink/dsh-budget#main، ومسار محلي باستخدام link: أو ./. استخدم صيغة GitHub، لأنك تستطيع استبدال #main بمعرّف commit والحصول على الشيفرة نفسها في الشهر المقبل.
dsh plugin --profile web add "github:PerryLink/dsh-budget#461d478"تُطبَّق الطبقات بترتيب ثابت: كل bundle وفق الترتيب المدرج في الـprofile، ثم cordis.patch.yml الخاص بالـprofile، ثم cordis.patch.yml على مستوى home، ثم أي تراكب --patch. الترتيب مهم لأن الطبقة اللاحقة تستطيع إعادة إعداد ما ضبطته طبقة سابقة أو إزالته. لذلك، عندما تبدو الإضافة مثبّتة لكنها لا تفعل شيئاً، افتح cordis.patch.yml الخاص بالـprofile وتحقق من أمرين: وجود كتلة الإدراج الخاصة بها، وعدم تعطيلها بواسطة طبقة لاحقة.
في 17 August 2026 كانت حزمة npm @deepseek-ai/dsh عند الإصدار 0.1.0-rc.7، بينما بُنيت الإضافات أدناه لسلسلة 0.1.0-rc. يعلن dsh-permission-rules وdsh-defend التوافق مع 0.1.0-rc.5 إلى 0.1.0-rc.6، ويعلن dsh-budget عن 0.1.0-rc.6 فقط، ويضبط dsh-memory نطاقات peer التي تبدأ عند ^0.1.0-rc.6 فقط، ولا يعلن dsh-web-lan-access عن أي إصدار من dsh. في 10 October 2026، يكون وسم latest على npm هو 0.2.0-rc.2، لذلك أصبحت الفجوة الآن أكبر مما كانت عليه عند اختيار هذه التثبيتات. هذه الفجوة طبيعية في هذا النظام، وهي السبب المعتاد لتوقف إضافة عن التحميل: يتحرك الـharness بسرعة أكبر من الإضافات المحيطة به. رقِّ الـharness عمداً، ثم اختبر إضافة واحدة في كل مرة.
اقرأ المكوّن الإضافي قبل الوثوق به
لا يعمل مكوّن dsh الإضافي داخل بيئة معزولة عن الـharness. بل يُحمَّل في شجرة Cordis نفسها، وفي العملية نفسها، وباسم مستخدم نظام التشغيل نفسه، مع إمكانية الوصول إلى بيانات اعتماد النموذج نفسها وشجرة العمل نفسها. تثبيته أقرب إلى تشغيل نص برمجي كتبه شخص آخر باستخدام sudo من إضافة امتداد إلى المتصفح. هذا هو سؤال الثقة نفسه الذي تثيره مكوّنات Claude Code الإضافية، والإجابة نفسها: اقرأ الشيفرة أو لا تثبّته.
تحقق من أربعة أمور، بهذا الترتيب:
- نقاط الامتداد التي يستخدمها. يعني
tools/pre-executeأنه يرى كل استدعاء أداة ويمكنه حظره. ويعنيagent/pre-stepأنه يرى رسائلك. ويعنيwebServer.tapIndexأنه يعيد كتابة الصفحة المقدَّمة إلى متصفحك. لا يستطيع المكوّن الإضافي الذي لا يستخدم أياً من هذه النقاط فعل الكثير؛ أما المكوّن الذي يستخدمها كلها فهو حد الأمان لديك. - ما إذا كان يتصل بالشبكة. ابحث في المصدر عن
fetchوhttpوأي اسم مضيف مضمّن مباشرة. فعداد التكلفة الذي يتصل بخادم خارجي يرسل نمط استخدامك إلى جهة ما. - ما إذا كان يقرأ بيانات الاعتماد. أي مكوّن يتعامل مع
credentials.*أو مع مفتاح موفّر يحتاج إلى سبب مذكور بوضوح في README. - الترخيص وتاريخ آخر commit. المكوّن الإضافي غير المرخّص، الذي لم يُحدَّث منذ أشهر، في منظومة تتغير أسبوعياً، يمثل مخاطرة تشغيلية.
بعد ذلك، ثبّته باستخدام commit بدلاً من branch، واقرأ كتلة الإدراج التي كتبها المثبّت في cordis.patch.yml. تسمّي هذه الكتلة معرّف المكوّن الإضافي والإعدادات التي سجّلها، وهي أقصر وصف صريح لما أضفته للتو. أبقِ مفاتيح الموفّرين بعيدة عن متناول المكوّن الإضافي حيثما يتيح لك الـharness ذلك، على غرار إبقاء الأسرار بعيدة عن وكلاء الذكاء الاصطناعي.
dsh-budget: كيف أوقف وكيلاً من الإنفاق طوال الليل؟
يعمل وكيل على VPS دون إشراف. هذا هو سبب وضعه هناك، وهو أيضاً مصدر الخطر. يقيس dsh-budget عدد الرموز والتكلفة المقدّرة لكل نموذج ولكل جلسة ولكل يوم، ويفرض حدوداً قصوى على هذه الإجماليات.
dsh plugin --profile web add "github:PerryLink/dsh-budget#461d478"إعداداته الافتراضية سخية: 10 USD لكل جلسة، و50 يومياً، و500 شهرياً. تناسب هذه القيم فريقاً ممولاً. لكنها مرتفعة على خادم شخصي إلى حد أن حلقة لا تنتهي قد تكتمل قبل تفعيل الحد، لذلك اخفضها في اليوم الأول.
البيانات وراء هذا الرسم البياني
[
{
"label": "Per session",
"plugin_default_usd": 10,
"suggested_start_usd": 2
},
{
"label": "Per day",
"plugin_default_usd": 50,
"suggested_start_usd": 5
},
{
"label": "Per month",
"plugin_default_usd": 500,
"suggested_start_usd": 40
}
]العمود المقترح نقطة بداية لمشغّل واحد على جهاز واحد، وليس رقماً منشوراً. ارفعه عندما توضح لك بيانات شهر كامل من الاستخدام ضرورة ذلك. حد شهري قدره 40 USD مع حد جلسة قدره 2 يفشل مبكراً وبوضوح، وهذا ما تريده أثناء تعلّمك مقدار استهلاك الأداة.
- id: budget
config:
budgets:
session: 2
daily: 5
monthly: 40
warnRatio: 0.8
overLimit: blockالإعداد الذي يغيّر سلوك الجهاز هو overLimit. قيمته الافتراضية هي alert، وهي تطبع تحذيراً وتواصل الإنفاق، لذلك يعمل هذا المكوّن الإضافي افتراضياً كلوحة معلومات. اضبطه على block، وعندها يرفض الـharness أي استدعاءات إضافية للنموذج بعد بلوغ أحد الحدود، ما يعني أن المهمة الليلية تتوقف بدلاً من الاستمرار في إصدار رسوم حتى الصباح. أما degrade فهو الوضع الثالث: يحظر الاستدعاء مع إرشادات تذكر نموذجاً أرخص من الخريطة degradation. يناسب ذلك المهمة التي يجب أن تكتمل لكنها لا تحتاج إلى أفضل نموذج لديك. القيمة الافتراضية لـwarnRatio هي 0.8، لذلك يصلك تنبيه عند بلوغ 80 بالمئة من الحد.
هناك حدّان يجب توضيحهما. تُحسب التكلفة من جدول أسعار مضمّن مدموج مع الأسعار التي توفرها، ويحذّر المشرف من أن الأسعار المضمّنة تتغير بمرور الوقت. يكون prices فارغاً افتراضياً. في commit المثبّت 461d478، تكون defaultPrice، وهي القيمة الاحتياطية للنموذج غير الموجود في أي من الجدولين، 1.0 USD لكل مليون رمز إدخال و3.0 لكل مليون رمز إخراج؛ أما في main الحالي، الذي جرى التحقق منه في 10 October 2026، فقيمتها الافتراضية صفر ويظهر النموذج على أنه بلا سعر. أدخل الأرقام الفعلية لنماذجك، وإلا فستكون لوحة المعلومات مجرد تخمين في هيئة قياس. الحد الثاني هو أنه عند 461d478 يجمع المكوّن الإضافي البيانات في العملية قيد التشغيل من تدفق أحداث الجلسة، لذلك تُصفّر الإجماليات عند إعادة تشغيل الـharness، كما أن حلقة الأعطال أو المشرف الذي يعيد تشغيل dsh يصفّر الحد اليومي. أما main الحالي فيحفظ حِزَم اليوم والشهر افتراضياً (persistence.enabled: true، مع أخذ لقطة كل 10 ثوانٍ) ويستعيدها عند بدء التشغيل، لذلك لا تؤدي إعادة التشغيل هناك إلى تصفير الحد اليومي أو الشهري، بشرط أن يوفّر الـharness نطاق التخزين؛ وبدونه يبقى التجميع محلياً للعملية. يستهدف main أيضاً سطر الـharness 0.2، لذلك يعني تغيير الـpin تغيير الـharness كذلك. في كلتا الحالتين، تعامل مع dsh-budget كحاجز حماية ضد مهامك أنت، واحتفظ بحد إنفاق في حساب المزوّد باعتباره السقف الفعلي. وهذا هو جوهر الحجة الأوسع في التحكم في تكلفة وكيل الذكاء الاصطناعي على VPS.
تستخدم يومياً /budget لعرض الملخص، و/budget models لعرض التفاصيل حسب النموذج، و/budget unblock <scope> لرفع الحظر بعد أن تقرر المتابعة.
قواعد صلاحيات dsh: ما استدعاءات الأدوات التي يجب ألا تُشغَّل مطلقاً؟
يضع dsh-permission-rules قواعد تصريحية في مسار tools/pre-execute، لذلك تُقيَّم القاعدة قبل تشغيل الأداة. توجد ثلاثة إجراءات. يمرّر allow الاستدعاء، ويحظره deny ويعيد سبباً يستطيع النموذج قراءته، بينما يوجّه ask الاستدعاء إلى مسار الموافقة الرسمي.
dsh plugin --profile web add "github:PerryLink/dsh-permission-rules#b30b4fb"توجد القواعد في .dsh/rules.yaml نسبةً إلى دليل العمل الخاص بالجلسة، مع fallbackPath عام وsearchUp اختياري للصعود نحو جذر نظام الملفات.
يشمل التطابق أنماط glob لأسماء الأدوات، وأنماط glob لمفاتيح المعاملات وقيمها، وأنماط glob للمسارات النسبية إلى مساحة العمل، ومحددات الوكلاء مثل main أو subagent، وأهداف الشبكة.
rules:
- match: { tools: [bash], params: { command: "rm -rf*" } }
action: deny
reason: "No recursive deletes"
- match: { tools: [edit, write], paths: ["**/.env*", "**/secrets/**"] }
action: ask
reason: "Secret files need confirmation"
- match: { tools: ["mcp__*"] }
action: ask
reason: "MCP tools need confirmation"يُطبَّق أول تطابق، لذلك يلغي allow واسع النطاق قرب بداية الملف بهدوء كل قاعدة أكثر تحديداً تحته. اكتب قواعد الرفض أولاً، ثم القواعد المسموح بها في النهاية. يغطي نمط glob الخاص باسم الأداة mcp__*، وهذه هي طريقة تقييد الأدوات التي جاءت من خادم model context protocol (MCP) بدلاً من أن تأتي من الـharness نفسه. ويصبح ذلك مهماً فور تشغيل خوادم MCP على VPS.
خطّط لسلوك واحد مهم: يحتاج ask إلى مجيب. قد لا يراقب أحد ملف تعريف headless، كما أن ask بلا إجابة لا ينتظر ظهور شخص ما. إذا لم يوجد مجيب مُعدّ، تفشل سلسلة الموافقة في الـharness بالرفض، ويُرفض الاستدعاء. لذلك يتصرف شرط ask على خادم غير مراقَب مثل deny لم تكتبه عن قصد. استخدم deny لأي شيء لن توافق عليه مطلقاً، وأبقِ ask لملف التعريف الذي تجلس أمامه. وإذا أردت أن تعمل الموافقات دون مراقبة، فأنت تحتاج إلى مسار إجابة فعلي، وهذا هو موضوع تقييد إجراءات وكيل الذكاء الاصطناعي بالموافقات.
dsh-defend: ماذا عن حقن الأوامر وتسريب الأسرار؟
يفحص dsh-defend الرسائل الواردة عند agent/pre-step، ومعاملات الأدوات عند tools/pre-execute، بما في ذلك الحماية من الحذف التدميري، ونتائج الأدوات عند tools/post-execute. النقطة الأخيرة مهمة، لأنها المكان الذي يُفحص فيه المحتوى الذي جُلب من صفحة ويب قبل أن يتصرف النموذج بناءً عليه.
dsh plugin --profile web add "github:PerryLink/dsh-defend#7ba3427"الإعدادات الافتراضية حذرة وليست صارمة: تكون detection.injectionAction وdetection.jailbreakAction وdetection.secretAction جميعها ask، بينما تكون detection.secretBlockCritical هي true، ولذلك يُحظر السر الحرج مهما كانت الإعدادات الأخرى. على خادم غير مراقَب، غيّر الإجراءات التي تهمك إلى block، لأن ask من دون شخص يُسأل ليس قراراً.
يستحق تصميم التدقيق الإشادة. تسجل أحداث defend/detection معرّف القاعدة، والعائلة، والفئة، ومستوى الخطورة، والقرار، وحقائق الفحص، ولا تسجل النص المطابق مطلقاً؛ إذ تُسجل الأسرار حسب النوع فقط. لذلك، لا يؤدي تفعيل سجل التدقيق إلى إنشاء نسخة ثانية من بيانات الاعتماد التي كنت تحاول حمايتها.
كن واضحاً بشأن ما يوفّره هذا النظام. يعتمد الاكتشاف على القواعد، ويوضح README صراحةً أن الصياغات الجديدة والهجمات متعددة الخطوات قد تتجاوز النظام. وهو يقلل معدل الهجمات الواضحة. لكنه لا يجعل توجيه الوكيل إلى محتوى غير موثوق آمناً، لذلك أبقِ قواعد الأذونات تحته.
dsh-memory: ماذا يتذكر الوكيل غداً؟
يوجد مكوّنان إضافيان مختلفان باسم dsh-memory، ومن المهم معرفة ذلك قبل كتابة أمر التثبيت. ثبّت المكوّن باستخدام المصدر المحدد صراحةً، حتى تحصل على المكوّن الذي قرأت عنه.
المكوّن الذي سأثبّته على خادم صغير هو إصدار SQLite. يسجّل نفسه باسم memory، ويحفظ ملفاً واحداً في $DSH_HOME/memory/memory.db مشتركاً بين الملفات الشخصية، ويعرض memory_write وmemory_search وmemory_forget. يعتمد البحث على الكلمات المفتاحية ضمن النصوص والوسوم المخزّنة. لا توجد خدمة embeddings، ولا حاجة إلى API key، ولا إلى عملية إضافية.
dsh plugin --profile web add "github:ben7am1n/dsh-memory#def7c6a"إعدادات هذا المكوّن قليلة: path لملف قاعدة البيانات، وpromptRecentCount (القيمة الافتراضية 10) لتحديد عدد الذكريات غير المثبّتة التي تُدرج، وpromptMaxChars (القيمة الافتراضية 2000) لتحديد ميزانية العرض. ويعتمد على node:sqlite، الذي ما زال Node 22 و24 يضعانه في الحالة التجريبية. لذلك يجب اختبار ترقية Node، لا افتراض نجاحها.
إليك ما تغيّره الذاكرة فعلياً في الجهاز: تُدرج الذكريات داخل system prompt في كل دورة. تمثّل promptMaxChars حداً أقصى للقسم المعروض، وليست حجماً ثابتاً. لكن عندما تملأ الذكريات المخزّنة هذا الحد، تعني ميزانية قدرها 2000 حرف إضافة بضع مئات من input tokens في كل طلب، إلى الأبد. هذا يظهر فعلياً في الفاتورة، ولذلك يجب أن يسبق dsh-budget تثبيت dsh-memory على الخادم. اجعل promptMaxChars منخفضاً، ونظّف الذكريات باستخدام memory_forget بدلاً من السماح للملف بالنمو.
يخزّن الإصدار البديل الذكريات في ملف YAML، وينفّذ بحث embeddings مع الإدراج التلقائي في prompt، ويُثبّت باستخدام dsh plugin --profile web add github:towzai/dsh-memory. يحتاج بحث embeddings إلى نسخة ollama محلية وإلى نموذج embeddings، وهو qwen3-embedding:0.6b افتراضياً، ويمكن تغييره باستخدام DSH_MEMORY_EMBED_MODEL. من دون ollama، يعود المكوّن إلى البحث بالكلمات المفتاحية فقط. يكون الاسترجاع الدلالي أفضل من استرجاع الكلمات المفتاحية. لكنه يعني أيضاً تشغيل خدمة ثانية ووجود مجموعة من أوزان النماذج في الذاكرة على الخادم نفسه. وفي الخطة الصغيرة، تستهلك هذه الذاكرة الموارد التي استأجرت الخادم لتنفيذ العمل من أجلها. اختر هذا الإصدار عندما تتوفر لديك RAM إضافية. يشرح الذاكرة المحلية للوكلاء المفاضلة العامة بين جودة الاسترجاع والتكلفة المقيمة.
dsh-web-lan-access: هل ينبغي لواجهة الويب الاستماع خارج loopback؟
يقدّم npx @deepseek-ai/dsh web الواجهة على 127.0.0.1:3080. لا تتيح المتصفحات crypto.randomUUID() إلا ضمن سياق آمن، لذلك يفشل تحميل الصفحة نفسها عبر HTTP عادي من جهاز آخر. يعالج dsh-web-lan-access ذلك باستخدام webServer.tapIndex لحقن polyfill صغير، ويغيّر ربط الخادم إلى 0.0.0.0.
اقرأ التحذير الخاص به قبل تثبيته. عند الإصدار المشار إليه هنا، e27e909، ذكر README أن ربط 0.0.0.0 يجعل الوكيل قابلاً للوصول دون مصادقة لأي شخص على شبكة المنطقة المحلية (LAN) نفسها، وعلى خادم ذي عنوان IP عام يجعله متاحاً للإنترنت بأكمله، مع تثبيت قائمة قصيرة من الأساليب الحساسة (settings.* وcredentials.* وllm.discoverModels) على loopback وإرجاع 403 من مصادر بعيدة. تغيّر ذلك. تعتمد إصدارات harness الحالية، التي جرى التحقق منها في 10 October 2026، على مصادقة المتصفح: يُبادَل launch token الموجود في URL المطبوع بملف تعريف ارتباط جلسة موقّع، وتتطلبه كل مسارات Host API وكل stream. يصف README الحالي للإضافة trustedHosts بأنه حاجز Origin/Host، وليس هوية، ويذكر أن ربط 0.0.0.0 يعرّض سطح المصادقة على كل واجهة يمكن الوصول إليها، كما يفعّل الآن إعدادات Host لصفحة بعيدة تمت مصادقتها. لذلك يستطيع متصفح بعيد سجّل الدخول في الإصدارات الحالية الوصول إلى إعدادات Host أيضاً. انتقل الخطر بدلاً من أن يختفي: يستطيع كل من يمكنه الوصول إلى المنفذ فحص تسجيل الدخول، ويُعد URL المطبوع نفسه وسيلة اعتماد، وعبر HTTP العادي يعبر ذلك الرمز الشبكة بنص واضح.
في معظم الحالات لا تحتاج إلى هذه الإضافة أصلاً. مرّر المنفذ عبر SSH بدلاً من ذلك.
ssh -N -L 3080:127.0.0.1:3080 you@your-serverثم افتح http://127.0.0.1:3080 في متصفحك المحلي. يواصل harness الاستماع على loopback فقط، لذلك لا يتعرض أي شيء، وبما أن المتصفحات تتعامل مع 127.0.0.1 على أنه مصدر آمن، تصبح crypto.randomUUID() متاحة ولا تحتاج إلى polyfill. أمر واحد، ومن دون إضافة أو سطح هجوم جديد.
ثبّت الإضافة فقط عندما لا يكفي port forwarding، مثلما يحدث عندما يجب على هاتف موجود على الشبكة نفسها الوصول إلى الواجهة. إذا فعلت ذلك، فاربطها خلف واجهة شبكة خاصة، وأبقِ قاعدة جدار ناري لا تسمح إلا بتلك الواجهة، وأدرج الأسماء التي ستستخدمها ضمن trustedHosts في إدخال web-runtime. للوصول الحقيقي من عدة مستخدمين، يتوفر dsh-passwords، إذ يضيف أذونات للمستخدمين الفرعيين، وحصصاً بالساعة للرموز لكل مستخدم فرعي، وحصصاً يومية للوقت، وشهادات TLS (أمان طبقة النقل) تلقائية عبر Let's Encrypt، وسجل تدقيق مشفراً. قيّمه باعتباره منصة لا إضافة: فهو يحتاج إلى المنفذين 80 و443، ويأتي مع installer خاص به، كما أن المسار السريع الموثق يمرر shell script من الشبكة مباشرة إلى bash. فضّل npm install -g dsh-passwords ثم dsh-passwords install، حتى يبقى الكود على القرص حيث يمكنك قراءته قبل تشغيله.
كيفية إزالة إضافة بشكل سليم
تتكون عملية إلغاء التثبيت من خطوتين، لكن كثيراً من الأشخاص يتخطون الخطوة الثانية.
dsh plugin --profile web remove dsh-budget
dsh plugin --profile web listيجب ألا يعرض list الإضافة بعد الآن. ثم افتح $DSH_HOME/profiles/web/cordis.patch.yml واحذف أي كتلة إدراج متبقية تذكر اسم تلك الإضافة، لأن هذا الإدخال هو الذي يحمّلها في الشجرة. أعد تشغيل الـharness لإعادة بناء الشجرة؛ فالإضافة التي حُمّلت بالفعل تظل محمّلة إلى أن تفعل ذلك. وأخيراً، تذكّر أن البيانات تبقى بعد إزالة الكود. تظل $DSH_HOME/memory/memory.db و.dsh/rules.yaml موجودتين بعد إلغاء التثبيت. احذفهُما بنفسك إذا كان الهدف هو إزالة البيانات.
ما قرأته ومتى
كل مرجع هنا هو commit، وليس branch، لأن main سيكون شيفرة مختلفة بحلول الوقت الذي تقرأ فيه هذا النص. قرأت كل ذلك في 17 أغسطس 2026، وكان الـharness نفسه عند 0.1.0-rc.7 على npm في ذلك اليوم. أعدت التحقق من الإعدادات الافتراضية والسلوك الموضحين أعلاه مقابل المصادر الأساسية في 10 أكتوبر 2026، عندما كانت العلامة latest على npm هي 0.2.0-rc.2.
الـcommits الدقيقة التي تستند إليها هذه القائمة المختصرة
- قائمة community plugins عند
f2918fb، في 17 أغسطس 2026. أدرجت الرابط مرة واحدة عن قصد. إنها directory، والـdirectory ليست توصية. - dsh-budget عند
461d478، في 17 أغسطس 2026. بترخيص Apache 2.0. يعلن عن dsh0.1.0-rc.6، وNode 22.19 أو 24 والإصدارات الأحدث. - dsh-permission-rules عند
b30b4fb، في 17 أغسطس 2026. بترخيص Apache 2.0. يعلن عن dsh من0.1.0-rc.5إلى0.1.0-rc.6. - dsh-defend عند
7ba3427، في 17 أغسطس 2026. بترخيص Apache 2.0. يعلن عن dsh من0.1.0-rc.5إلى0.1.0-rc.6. - dsh-memory عند
def7c6a، في 13 أغسطس 2026. بترخيص MIT. يستخدم SQLite build. لا يحتوي على حقل توافق مع dsh، بل على peer ranges فقط بدءاً من^0.1.0-rc.6. - dsh-web-lan-access عند
e27e909، في 16 أغسطس 2026. بترخيص MIT. لا يحتوي على حقل توافق مع dsh.
أعد التحقق من هذه الـpins قبل نسخ أي command. في منظومة developer preview، يكون رقم الإصدار المرتبط بتاريخ هو النوع الوحيد الذي يحمل معنى فعلياً.
FAQ
ما إضافات DeepSeek Harness التي ينبغي أن تثبّتها أولاً على VPS؟
ثبّت dsh-budget وdsh-permission-rules قبل أي شيء آخر. تمنع ميزانية مضبوطة باستخدام overLimit: block التشغيل غير المراقب من الإنفاق طوال الليل، ويمنع ملف .dsh/rules.yaml استدعاء أداة لم تكن لتوافق عليه. أضف dsh-defend عندما يقرأ الوكيل أي شيء من الويب العام، وأضف dsh-memory عندما تلاحظ أنك تلصق السياق نفسه في كل جلسة. تجاوز السمات ومؤشرات الحالة؛ فهي تضيف تعليماً برمجياً يعمل بامتيازات الوكيل دون أن تغيّر ما يفعله الجهاز.
هل تعمل إضافات dsh ضمن بيئة معزولة عن harness؟
لا. تُحمَّل الإضافة في شجرة Cordis نفسها التي يعمل فيها harness، وفي العملية نفسها، وباسم مستخدم نظام التشغيل نفسه، وببيانات اعتماد النموذج نفسها، وشجرة العمل نفسها. ترى إضافة تستخدم tools/pre-execute كل استدعاء أداة، ويمكنها حجبه؛ بينما ترى إضافة تستخدم agent/pre-step رسائلك. لذلك اقرأ المصدر، وتحقق من الترخيص وتاريخ آخر commit، وثبّت الإضافة وفق commit بدلاً من branch حتى لا يتغير الرمز البرمجي دون علمك.
هل سيوقف dsh-budget الوكيل فعلياً أم سيحذّرني فقط؟
يعتمد ذلك على overLimit. الإعداد الافتراضي هو alert، وهو يحذّر عند warnRatio ويواصل الإنفاق. يرفض block استدعاءات النموذج الإضافية عند بلوغ الحد، ويرفع /budget unblock <scope> هذا الحظر عندما تختار المتابعة. يحظر degrade التنفيذ مع إرشادات تسمّي نموذجاً أقل تكلفة من خريطة degradation. يوجد قيد مهم: عند commit المثبّت 461d478، تُجمَّع الإجماليات في العملية قيد التشغيل، لذلك تؤدي إعادة تشغيل harness إلى تصفيرها، ويمكن لحلقة إعادة التشغيل تجاوز الحد اليومي. يحفظ main الحالي مجموعات اليوم والشهر عبر عمليات إعادة التشغيل افتراضياً. في كلتا الحالتين، أبقِ حد إنفاق مضبوطاً في حساب المزوّد ليكون السقف الفعلي.
كيف أزيل إضافة dsh بالكامل؟
شغّل dsh plugin --profile web remove <package-name>، وأكّد باستخدام dsh plugin --profile web list، ثم افتح $DSH_HOME/profiles/web/cordis.patch.yml واحذف أي كتلة إدراج متبقية لهذه الإضافة، لأن هذا الإدخال هو الذي يحمّلها. أعد تشغيل harness لإعادة إنشاء شجرة الإضافات. تبقى البيانات التي كتبتها الإضافة على القرص: يظل كل من $DSH_HOME/memory/memory.db و.dsh/rules.yaml موجوداً بعد إلغاء التثبيت إلى أن تحذفه بنفسك.
هل من الآمن إتاحة واجهة الويب الخاصة بـ dsh عبر الشبكة؟
ليس بمفردها. يستمع dsh web على 127.0.0.1:3080، ويغيّر dsh-web-lan-access هذا الربط إلى 0.0.0.0. عند commit المشار إليه هنا، ذكر ملف README أن ذلك يجعل الوكيل قابلاً للوصول دون مصادقة لأي شخص على الشبكة نفسها، مع إبقاء settings.* وcredentials.* وllm.discoverModels فقط مرتبطاً بـ loopback. إصدارات harness الحالية، التي جرى التحقق منها في 10 October 2026، تصادق على جلسة المتصفح باستخدام launch token الموجود في URL المطبوع وsigned session cookie، لكن سطح تسجيل الدخول يصبح مكشوفاً على كل الواجهات، ويرسل عنوان HTTP عادي ذلك الرمز بنص واضح. استخدم إعادة توجيه منفذ SSH، أو ssh -N -L 3080:127.0.0.1:3080 you@your-server، أو ضع المنفذ خلف واجهة شبكة خاصة مع قاعدة جدار ناري، وأبقِ TLS أمام أي خدمة يمكن الوصول إليها من الخارج.