أفضل إضافات 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 وتحقق من أمرين: وجود كتلة insert الخاصة بها، وعدم تعطيلها في أي طبقة لاحقة.
اعتباراً من 17 August 2026، تكون حزمة npm @deepseek-ai/dsh عند الإصدار 0.1.0-rc.7، بينما تعلن كل إضافة أدناه توافقها مع 0.1.0-rc.5 إلى 0.1.0-rc.6. هذا الفرق طبيعي في هذا النظام، وهو السبب المعتاد لتوقف إضافة عن التحميل: إذ يتقدم الـ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: كيف أوقف agent من الإنفاق طوال الليل؟
يعمل agent على VPS دون إشراف. هذا هو الهدف من وضعه هناك، وهو أيضاً مصدر الخطر. يقيس dsh-budget عدد الرموز والتكلفة المقدّرة لكل model ولكل session ولكل day، ويفرض حدوداً على هذه الإجماليات.
dsh plugin --profile web add "github:PerryLink/dsh-budget#461d478"إعداداته الافتراضية سخية: 10 USD لكل session، و50 لكل day، و500 لكل month. تناسب هذه القيم فريقاً ممولاً. أما على خادم شخصي، فهي مرتفعة بما يكفي لكي تنتهي loop خارجة عن السيطرة قبل تفعيل الحد، لذلك اخفضها في اليوم الأول.
The data behind this chart
[
{
"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
}
]القيمة المقترحة في العمود هي نقطة بداية لمشغّل واحد على جهاز واحد، وليست رقماً منشوراً. ارفعها عندما تخبرك usage فعلي لشهر كامل بذلك. يفشل حد شهري قدره 40 USD مع حد session قدره 2 بصوت واضح وفي وقت مبكر. وهذا ما تريده أثناء تعلّمك مقدار الاستهلاك الذي يسببه tool.
- id: budget
config:
budgets:
session: 2
daily: 5
monthly: 40
warnRatio: 0.8
overLimit: blockالإعداد الذي يغيّر سلوك الجهاز هو overLimit. قيمته الافتراضية هي alert، وهي تطبع تحذيراً وتواصل الإنفاق، لذلك يكون هذا plugin افتراضياً لوحة معلومات. اضبطه على block، وعندها يرفض harness أي model calls إضافية فور بلوغ أحد الحدود. وهذا يعني أن job تعمل طوال الليل تتوقف بدلاً من مواصلة الفوترة حتى الصباح. أما degrade فهو الوضع الثالث: يستبدل model بآخر أرخص من الخريطة degradation. يناسب ذلك job يجب أن تكتمل، لكنها لا تحتاج إلى أفضل model لديك. تكون قيمة warnRatio الافتراضية 0.8، لذلك يصلك تنبيه عند بلوغ 80 بالمئة من الحد.
هناك حدّان يجب توضيحهما. تُحسب التكلفة من الأسعار التي تزودها بها: تكون prices فارغة افتراضياً، وتستخدم defaultPrice قيمة احتياطية قدرها 1.0 USD لكل مليون input tokens و3.0 لكل مليون output. أدخل الأرقام الفعلية الخاصة بـmodels لديك، وإلا فستكون لوحة المعلومات مجرد تقدير يبدو كأنه قياس. ثانياً، يجمع plugin البيانات في العملية قيد التشغيل من session event stream، لذلك تُصفّر الإجماليات عند إعادة تشغيل harness. تؤدي crash loop، أو supervisor يعيد تشغيل dsh، إلى تصفير الحد اليومي. تعامل مع dsh-budget على أنه حاجز حماية من jobs التي تشغّلها أنت، واحتفظ بحد إنفاق على حساب provider باعتباره السقف الفعلي. وهذه هي الحجة الأوسع في التحكم في تكلفة AI agent على VPS.
تستخدم يومياً /budget لعرض الملخص، و/budget models لعرض التفاصيل حسب model، و/budget unblock <scope> لإزالة الحظر بعد أن تقرر المتابعة.
dsh-permission-rules: ما استدعاءات الأدوات التي يجب ألا تُنفَّذ مطلقاً؟
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 اختياري للصعود نحو جذر نظام الملفات. تشمل المطابقة أنماط أسماء الأدوات، وأنماط مفاتيح المعلمات وقيمها، وأنماط المسارات النسبية إلى مساحة العمل، ومحددات الوكلاء مثل 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 واسعة النطاق بالقرب من بداية الملف بصمت كل قاعدة أضيق تأتي بعدها. اكتب قواعد المنع أولاً، ثم القواعد المسموح بها في النهاية. يغطي نمط اسم الأداة mcp__*، وهذه هي الطريقة التي تتحكم بها في الأدوات القادمة من خادم بروتوكول سياق النموذج (MCP) بدلاً من الأدوات الموجودة في الـharness نفسه. ويصبح ذلك مهماً فور تشغيل خوادم MCP على VPS.
هناك سلوك يجب التخطيط له: يحتاج ask إلى مجيب. في ملف تعريف headless، قد لا يكون أحد يراقب الجلسة، لذلك يمكن لقاعدة ask أن توقف التشغيل إلى أن يحضر شخص ما. استخدم 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 أو عملية إضافية.
dsh plugin --profile web add "github:ben7am1n/dsh-memory#def7c6a"الإعدادات التي ستعدّلها قليلة: path لملف قاعدة البيانات، وpromptRecentCount (القيمة الافتراضية 10) لتحديد عدد الذكريات غير المثبّتة التي تُحقن، وpromptMaxChars (القيمة الافتراضية 2000) لتحديد ميزانية العرض. يعتمد هذا المكوّن على node:sqlite، الذي ما زال Node 22 و24 يوسمانه بأنه تجريبي. لذلك يجب اختبار ترقية Node بدلاً من افتراض نجاحها.
إليك ما تغيّره الذاكرة فعلياً على الخادم: تُدرج الذكريات المحقونة في system prompt في كل دورة. تعادل ميزانية من 2000 محرف بضع مئات من رموز الإدخال الإضافية في كل طلب، باستمرار. يظهر ذلك فعلياً في فاتورتك، ولذلك يجب أن يكون dsh-budget على الخادم قبل dsh-memory. اجعل promptMaxChars محدوداً، ونظّف الذكريات باستخدام memory_forget بدلاً من السماح للملف بالنمو.
يخزّن الخيار البديل الذكريات في ملف YAML، وينفّذ بحث embeddings مع الحقن التلقائي في prompt، ويُثبّت باستخدام dsh plugin --profile web add github:towzai/dsh-memory. يحتاج إلى نسخة محلية من ollama وإلى نموذج embeddings، وهو qwen3-embedding:0.6b افتراضياً، ويمكن تغييره باستخدام DSH_MEMORY_EMBED_MODEL. تكون الاستعادة الدلالية أفضل من الاستعادة المعتمدة على الكلمات المفتاحية. لكن ذلك يعني أيضاً تشغيل خدمة ثانية ووجود أوزان نموذج في الذاكرة على الخادم نفسه. في الخطة الصغيرة، تُقتطع هذه الذاكرة من الموارد التي استأجرت الخادم لتنفيذ عملك. اختر هذا الخيار عندما تتوفر لديك 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.
اقرأ التحذير الخاص به قبل تثبيته. يجعل الربط على 0.0.0.0 الوكيل متاحاً دون مصادقة لأي شخص على شبكة المنطقة المحلية (LAN) نفسها، وهذا يعني الإنترنت بالكامل إذا كان الخادم يملك عنوان IP عاماً. تبقى قائمة قصيرة من الأساليب الحساسة (settings.* وcredentials.* وllm.discoverModels) مرتبطة بـloopback، وتعيد 403 من المصادر البعيدة، مما يحد من الضرر. لكنه لا يمنعه، لأن واجهة استدعاء الأدوات تظل مفتوحة أمام أي شخص يعثر على المنفذ.
في معظم الحالات، لا تحتاج إلى هذه الإضافة أصلاً. بدلاً من ذلك، مرّر المنفذ عبر 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. أمر واحد، بلا إضافة، ومن دون سطح هجوم جديد.
ثبّت الإضافة فقط عندما لا يكفي التمرير، مثلاً عندما يجب أن يصل هاتف على الشبكة نفسها إلى الواجهة. إذا فعلت ذلك، فاربطها خلف واجهة شبكة خاصة، واحتفظ بقاعدة جدار ناري لا تسمح إلا بتلك الواجهة، وأدرج الأسماء التي ستستخدمها ضمن trustedHosts في إدخال web-runtime. وللوصول الحقيقي من عدة مستخدمين، يتوفر dsh-passwords، إذ يضيف أذونات للمستخدمين الفرعيين، وحصصاً لكل مستخدم فرعي لعدد الرموز المميزة بالساعة وللزمن اليومي، وشهادات TLS (أمان طبقة النقل) تلقائية عبر Let's Encrypt، وسجل تدقيق مشفراً. قيّمه باعتباره منصة لا إضافة: فهو يحتاج إلى المنفذين 80 و443، ويشحن أداة التثبيت الخاصة به، كما أن المسار السريع الموثّق يمرّر 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 August 2026، وكان harness نفسه عند 0.1.0-rc.7 على npm في ذلك اليوم.
الـcommitات الدقيقة وراء هذه القائمة المختصرة
- قائمة الإضافات المجتمعية عند
f2918fb، في 17 August 2026. أدرجت الرابط مرة واحدة عن قصد. فهي directory، والـdirectory ليست توصية. - dsh-budget عند
461d478، في 17 August 2026. بترخيص Apache 2.0. يعلن dsh0.1.0-rc.6، وNode 22.19 أو 24 وما بعده. - dsh-permission-rules عند
b30b4fb، في 17 August 2026. بترخيص Apache 2.0. يعلن dsh من0.1.0-rc.5إلى0.1.0-rc.6. - dsh-defend عند
7ba3427، في 17 August 2026. بترخيص Apache 2.0. يعلن dsh0.1.0-rc.6. - dsh-memory عند
def7c6a، في 13 August 2026. بترخيص MIT. إصدار SQLite. - dsh-web-lan-access عند
e27e909، في 16 August 2026. بترخيص MIT.
تحقق من تلك التثبيتات مرة أخرى قبل نسخ أي أمر. في منظومة 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. هناك قيد مهم: تُجمّع الإجماليات في العملية قيد التشغيل من تدفق أحداث الجلسة، لذلك تؤدي إعادة تشغيل Harness إلى تصفيرها، كما أن حلقة إعادة التشغيل ستتجاوز الحد اليومي. أبقِ حد إنفاق مضبوطاً على حساب موفّر الخدمة ليكون السقف الفعلي.
كيف أزيل إضافة 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. يذكر README الخاص به أن هذا يجعل الوكيل قابلاً للوصول دون مصادقة لأي شخص على الشبكة نفسها، وعلى عنوان IP عام يعني ذلك الإنترنت. تبقى بعض الطرق (settings.* وcredentials.* وllm.discoverModels) مرتبطة بـ loopback وتُرجع 403 من المصادر البعيدة، ما يقلل الضرر دون منعه. استخدم إعادة توجيه منفذ SSH، أو ssh -N -L 3080:127.0.0.1:3080 you@your-server، أو ضع المنفذ خلف واجهة شبكة خاصة مع قاعدة جدار ناري، وأضف مصادقة فعلية قبل إتاحة أي شيء من خارج الشبكة.