5 תוספי DeepSeek Harness חיוניים לשרת VPS
גלו את חמשת התוספים המומלצים עבור DeepSeek Harness שמשנים את התנהגות השרת שלכם. המדריך מפרט פתרונות להגבלת תקציב, בקרת גישה לכלים, סריקת הזרקות, זיכרון עמיד וניהול גישת LAN.
אילו תוספי DeepSeek Harness כדאי להתקין
תוספי DeepSeek Harness הם קוד צד-שלישי המורץ בתוך ה-agent שלכם, עם ההרשאות של ה-agent, על מכונה שאתם משלמים עליה. רשימת הקהילה כוללת יותר מעשרים קטגוריות ומעל אלף פריטים. על שרת וירטואלי פרטי (VPS) שכור, אתם זקוקים לחמישה: dsh-budget להגבלת הוצאות, dsh-permission-rules לבקרת גישה לכלים, dsh-defend לסריקת הזרקות וסודות, dsh-memory לנתונים ששורדים מעבר לסשן, ו-dsh-web-lan-access רק לאחר שהחלטתם כיצד תבצעו אימות.
ה-harness הוא dsh, סביבת ה-agent בקוד פתוח של DeepSeek, הבנויה כך שכל רכיב בה הוא תוסף. ה-README שלו מגדיר אותו כגרסת תצוגה למפתחים ומזהיר THERE WILL BE COMPATIBILITY-BREAKING CHANGES. עובדה זו מעצבת כל בחירה להלן. קבעו גרסאות (pin) לכל מה שאתם מתקינים, צפו לכך ששדרוג ישבור את התוסף, ושמרו על קבוצה קטנה מספיק כדי שתוכלו לקרוא את כל הקוד שלה. אם ה-harness עדיין לא רץ, התחילו ב-התקנת DeepSeek Harness על VPS וחזרו לכאן. אם החלקים שאליהם תוספים אלו מתחברים – לולאת ה-agent, הכלים שלו, הזיכרון שלו – עדיין אינם ברורים, עבדו תחילה על עקרונות היסוד, כיוון שכל בחירה להלן קלה יותר לשיפוט ברגע שאתם יודעים מה כל שכבה מבצעת.
כיצד dsh מתקין תוסף והיכן נשמרת התצורה
dsh מורכב מתוספי Cordis, לכן מופע פעיל הוא עץ של תוספים ולא תוכנה אחת. פרופיל הוא הרכב בעל שם של תוספים אלו. שתי התבניות הן web ו-headless. ברירת המחדל של $DSH_HOME היא ~/.dsh, ופרופיל נשמר ב-$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 פשוט, שם עם scope כגון @towzai/dsh-memory, הפניה ל-GitHub כגון github:PerryLink/dsh-budget#main, ונתיב מקומי עם link: או ./. מומלץ להשתמש בצורת ה-GitHub, כיוון שניתן להחליף את #main ב-commit ולקבל את אותו הקוד בדיוק גם בחודש הבא.
dsh plugin --profile web add "github:PerryLink/dsh-budget#461d478"שכבות מוחלות בסדר קבוע: כל חבילה לפי הסדר הרשום בפרופיל, לאחר מכן ה-cordis.patch.yml של הפרופיל, אז ה-cordis.patch.yml ברמת ה-home, ולבסוף כל overlay מסוג --patch. לסדר יש חשיבות, כיוון ששכבה מאוחרת יותר יכולה להגדיר מחדש או לבטל הגדרות שנקבעו בשכבה מוקדמת. לכן, כאשר תוסף נראה מותקן אך אינו פועל, פתחו את ה-cordis.patch.yml של הפרופיל ובדקו שני דברים: שבלוק ה-insert שלו קיים, וששום שכבה מאוחרת יותר לא מבטלת אותו.
נכון ל-17 באוגוסט 2026, חבילת ה-npm @deepseek-ai/dsh נמצאת בגרסה 0.1.0-rc.7, בעוד שכל תוסף מצהיר על תאימות ל-0.1.0-rc.5 עד 0.1.0-rc.6. פער זה הוא תקין באקו-סיסטם הזה, והוא הסיבה הנפוצה לכך שתוסף מפסיק להיטען: ה-harness מתקדם מהר יותר מהתוספים שסביבו. שדרגו את ה-harness באופן יזום, ולאחר מכן בדקו תוסף אחד בכל פעם.
קראו תוסף לפני שאתם נותנים בו אמון
תוסף dsh אינו פועל בתוך ארגז חול (sandbox) מבודד מהמערכת המארחת. הוא נטען לאותו עץ Cordis, באותו תהליך, תחת אותו משתמש מערכת הפעלה, עם גישה לאותם פרטי הזדהות של המודל ולאותה עץ עבודה. התקנת תוסף דומה יותר להרצת סקריפט של מישהו אחר עם sudo מאשר להוספת תוסף לדפדפן. זו אותה שאלת אמון שתוספי Claude Code מעלים, והתשובה זהה: קראו את הקוד, או אל תתקינו אותו.
ארבעה דברים שיש לבדוק, לפי סדר זה:
- באילו נקודות הרחבה הוא משתמש.
tools/pre-executeאומר שהוא רואה כל קריאה לכלי ויכול לחסום אותה.agent/pre-stepאומר שהוא רואה את ההודעות שלכם.webServer.tapIndexאומר שהוא משכתב את הדף שמוגש לדפדפן שלכם. תוסף שאינו משתמש באף אחת מאלו יכול לעשות מעט מאוד; תוסף שמשתמש בכולן הוא גבול האבטחה שלכם. - האם הוא מתקשר עם הרשת. חפשו בקוד המקור את
fetch,http, וכל שם מארח (hostname) שמוגדר בתוך הקוד. מונה עלויות שמתקשר החוצה שולח את דפוסי השימוש שלכם למקום כלשהו. - האם הוא קורא פרטי הזדהות. כל דבר שנוגע ב-
credentials.*או במפתח של ספק דורש סיבה מוצהרת ב-README. - הרישיון ותאריך ה-commit האחרון. תוסף ללא רישיון, שלא עודכן חודשים, באקו-סיסטם שמשתנה מדי שבוע, הוא סיכון.
לאחר מכן, בצעו התקנה לפי commit ולא לפי branch, וקראו את בלוק ההוספה שהמתקין כתב לתוך cordis.patch.yml. בלוק זה מציין את מזהה התוסף ואת התצורה שהוא רשם, וזהו התיאור הכנה והקצר ביותר של מה שהוספתם כרגע. הרחיקו מפתחות של ספקים מהישג ידו של תוסף היכן שהמערכת מאפשרת זאת, בהתאם ל-שמירה על סודות מחוץ לסוכני AI.
dsh-budget: כיצד למנוע מסוכן (agent) לבצע פעולות לאורך כל הלילה?
סוכן על גבי VPS פועל ללא השגחה. זוהי מטרת השימוש בשרת, אך זהו גם הסיכון הכרוך בכך. dsh-budget מודד אסימונים (tokens) ועלות משוערת לפי מודל, לפי סשן ולפי יום, ואוכף מגבלות על סכומים אלו.
dsh plugin --profile web add "github:PerryLink/dsh-budget#461d478"ערכי ברירת המחדל שלו נדיבים: 10 דולר לסשן, 50 ליום, ו-500 לחודש. ערכים אלו מתאימים לצוות ממומן. בשרת אישי הם גבוהים מספיק כדי שלולאה שיוצאת משליטה תסתיים לפני שהמגבלה תופעל, לכן יש להנמיך אותם כבר ביום הראשון.
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
}
]העמודה המוצעת היא נקודת התחלה למפעיל יחיד על שרת יחיד, ולא נתון מחייב. העלו את הערכים כאשר חודש של שימוש בפועל יצביע על כך. מגבלה חודשית של 40 דולר עם מגבלת סשן של 2 דולר תגרום לכשל רועש ומוקדם, וזה בדיוק מה שאתם רוצים בזמן שאתם עדיין לומדים את צריכת המשאבים של הכלי.
- id: budget
config:
budgets:
session: 2
daily: 5
monthly: 40
warnRatio: 0.8
overLimit: blockההגדרה שמשנה את התנהגות המכונה היא overLimit. ברירת המחדל שלה היא alert, שמדפיסה אזהרה וממשיכה בהוצאות, כך שמהקופסה התוסף הזה מתפקד כלוח מחוונים בלבד. הגדירו אותה ל-block והמערכת תסרב לבצע קריאות נוספות למודל ברגע שתגיעו למגבלה; משמעות הדבר היא שמשימה שרצה בלילה תיעצר במקום להמשיך ולחייב אתכם עד הבוקר. degrade הוא המצב השלישי: הוא מחליף את המודל במודל זול יותר מתוך המיפוי של degradation, וזהו מצב מתאים כאשר משימה חייבת להסתיים אך אינה דורשת את המודל הטוב ביותר שלכם. warnRatio מוגדר כברירת מחדל ל-0.8, כך שתקבלו התראה ב-80 אחוזים מהמגבלה.
שתי מגבלות חשובות: העלות מחושבת לפי מחירים שאתם מספקים: prices ריק כברירת מחדל ו-defaultPrice משתמש בערך ברירת מחדל של 1.0 דולר למיליון אסימוני קלט ו-3.0 למיליון אסימוני פלט. הזינו את המספרים האמיתיים עבור המודלים שלכם, אחרת לוח המחוונים יהיה בגדר ניחוש בלבד. שנית, התוסף צובר נתונים בתהליך הרץ מתוך זרם אירועי הסשן, לכן הסכומים מתאפסים כאשר המערכת מאותחלת. לולאת קריסה (crash loop), או מנהל תהליכים שמפעיל מחדש את dsh, יאפסו את המגבלה היומית. התייחסו ל-dsh-budget כאל מעקה בטיחות מפני המשימות שלכם עצמכם, ושמרו על מגבלת הוצאות בחשבון הספק כחסם עליון אמיתי, נושא המורחב ב-בקרת עלויות של סוכן AI על גבי VPS.
ביום-יום תשתמשו ב-/budget לסקירה כללית, ב-/budget models לפירוט לפי מודל, וב-/budget unblock <scope> כדי להסיר חסימה לאחר שהחלטתם להמשיך בעבודה.
dsh-permission-rules: אילו קריאות לכלי עבודה אסור להריץ לעולם?
dsh-permission-rules מחיל חוקים דקלרטיביים על ה-waterfall של tools/pre-execute, כך שחוק מוערך לפני הרצת כלי. קיימות שלוש פעולות. allow מעביר את הקריאה כפי שהיא, deny חוסם אותה ומחזיר סיבה שהמודל יכול לקרוא, ו-ask מנתב אותה לתהליך האישור הרשמי.
dsh plugin --profile web add "github:PerryLink/dsh-permission-rules#b30b4fb"החוקים נמצאים ב-.dsh/rules.yaml ביחס לתיקיית העבודה של הסשן, עם fallbackPath גלובלי ו-searchUp אופציונלי כדי לעלות במעלה מבנה התיקיות לכיוון ה-root של מערכת הקבצים. ההתאמה מכסה תבניות (globs) של שמות כלים, מפתחות וערכים של פרמטרים, נתיבים יחסיים לסביבת העבודה, בוררי סוכנים כגון 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 (Model Context Protocol) ולא מה-harness עצמו; זה קריטי ברגע שאתם מריצים שרתי MCP על גבי VPS.
התנהגות אחת שיש לתכנן עבורה: ask דורש גורם מאשר. בפרופיל headless ייתכן שאף אחד לא צופה במסך, לכן חוק ask עלול לעכב הרצה עד שמישהו יופיע. השתמשו ב-deny עבור כל דבר שלעולם לא הייתם מאשרים, שמרו את ask עבור הפרופיל שאתם יושבים מולו, ואם אתם רוצים שאישורים יעבדו ללא השגחה, אתם זקוקים לנתיב מענה אמיתי, שהוא הנושא של בקרת פעולות של סוכני AI באמצעות אישורים.
dsh-defend: מה לגבי הזרקת הנחיות (prompt injection) ודליפת סודות?
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, כך שסוד קריטי נחסם ללא קשר להגדרות האחרות. בשרת ללא השגחה (unattended), שנו את הפעולות החשובות לכם ל-block, כיוון ש-ask ללא גורם אנושי שיאשר זאת אינו מהווה החלטה.
תכנון ה-audit ראוי להערכה. אירועי defend/detection מתעדים את מזהה הכלל, המשפחה, הקטגוריה, רמת החומרה, ההחלטה ועובדות הסריקה, אך לעולם לא את הטקסט התואם; סודות מתועדים לפי סוג בלבד. לכן, הפעלת ה-audit log אינה יוצרת עותק נוסף של פרטי הזיהוי שניסיתם להגן עליהם.
היו ברורים לגבי התועלת בכך. הזיהוי מבוסס על כללים, וה-README מציין במפורש שניסוחים חדשים והתקפות רב-שלביות עלולים לעקוף אותו. הכלי מפחית את שיעור ההתקפות המובנות מאליהן. הוא אינו הופך סוכן (agent) לבטוח לשימוש מול תוכן לא מהימן, לכן הקפידו על הגדרת הרשאות מתאימה ברמת התשתית.
dsh-memory: מה הסוכן זוכר מחר?
קיימים שני תוספים שונים שנקראים dsh-memory, כדאי לדעת זאת לפני שמריצים פקודת התקנה. בצעו התקנה לפי מקור מפורש כדי לוודא שאתם מקבלים את הגרסה שקראתם עליה.
הגרסה שאני ממליץ עליה לשרת קטן היא גרסת ה-SQLite. היא נרשמת כ-memory, שומרת קובץ אחד ב-$DSH_HOME/memory/memory.db המשותף לכל הפרופילים, וחושפת את memory_write, memory_search ו-memory_forget. החיפוש מבוסס מילות מפתח על הטקסט והתגיות שנשמרו. אין שירות embedding, אין צורך ב-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 בכל פנייה. תקציב של 2000 תווים מוסיף כמה מאות tokens של קלט לכל בקשה, באופן קבוע. מדובר בעלות ממשית בחשבונית שלכם, וזו הסיבה ש-dsh-budget צריך להיות מותקן על השרת לפני dsh-memory. שמרו על promptMaxChars מצומצם ובצעו ניקוי עם memory_forget במקום לאפשר לקובץ לגדול ללא הגבלה.
הגרסה החלופית שומרת זיכרונות בקובץ YAML ומבצעת חיפוש embedding עם הזרקת prompt אוטומטית, מותקנת באמצעות dsh plugin --profile web add github:towzai/dsh-memory. היא דורשת מופע מקומי של ollama ומודל embedding, כברירת מחדל qwen3-embedding:0.6b, הניתן להחלפה באמצעות DSH_MEMORY_EMBED_MODEL. שליפה סמנטית טובה יותר משליפת מילות מפתח. המשמעות היא שירות נוסף וסט משקולות מודל שיושבים על אותו שרת, מה שבתוכנית אירוח קטנה גוזל זיכרון מהעבודה שלשמה שכרתם את השרת. בחרו באפשרות זו רק אם יש לכם RAM פנוי. הפשרה הכללית בין איכות השליפה לבין צריכת המשאבים מכוסה ב-זיכרון מקומי לסוכנים.
dsh-web-lan-access: האם ממשק ה-Web צריך להאזין מחוץ ל-loopback?
npx @deepseek-ai/dsh web מגיש את הממשק ב-127.0.0.1:3080. דפדפנים חושפים את crypto.randomUUID() רק בהקשר מאובטח, לכן טעינת אותו דף דרך HTTP רגיל ממכונה אחרת תיכשל. dsh-web-lan-access פותר זאת על ידי שימוש ב-webServer.tapIndex להזרקת polyfill קטן, והוא משנה את ה-binding של השרת ל-0.0.0.0.
קראו את האזהרה שלו לפני ההתקנה. הגדרת binding ל-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. פקודה אחת, ללא תוסף, ללא משטח תקיפה חדש.
התקינו את התוסף רק כאשר העברה (forward) אינה מספיקה, למשל כאשר טלפון באותה רשת חייב לגשת לממשק. אם עשיתם זאת, בצעו binding מאחורי ממשק רשת פרטי, שמרו על חוק firewall שמאפשר גישה רק מאותו ממשק, וציינו את השמות שבהם תשתמשו תחת trustedHosts בערך web-runtime. עבור גישה מרובת משתמשים אמיתית קיים dsh-passwords, המוסיף הרשאות למשתמשי משנה, אסימוני גישה שעתיים ומכסות זמן יומיות לכל משתמש, תעודות TLS (אבטחת תעבורה) אוטומטיות דרך Let's Encrypt, ולוג ביקורת מוצפן. התייחסו אליו כאל פלטפורמה ולא כאל תוסף: הוא דורש את פורטים 80 ו-443, הוא מופץ עם מתקין משלו, והנתיב המהיר המתועד מזרים סקריפט shell מהרשת ישירות ל-bash. העדיפו npm install -g dsh-passwords ואחריו dsh-passwords install, כך שהקוד יישמר על הדיסק ותוכלו לקרוא אותו לפני ההרצה.
כיצד להסיר תוסף בצורה נקייה
הסרת התקנה מורכבת משני שלבים, ואנשים נוטים לדלג על השני.
dsh plugin --profile web remove dsh-budget
dsh plugin --profile web listlist לא אמור להציג אותו יותר. לאחר מכן, פתחו את $DSH_HOME/profiles/web/cordis.patch.yml ומחקו כל בלוק insert שנותר המציין את אותו תוסף, כיוון שרשומה זו היא הטוענת אותו לעץ. הפעילו מחדש את ה-harness כדי שהעץ ייבנה מחדש; תוסף שכבר נטען יישאר טעון עד שתעשו זאת. לבסוף, זכרו שנתונים שורדים מעבר לקוד. $DSH_HOME/memory/memory.db ו-.dsh/rules.yaml נשארים לאחר הסרת ההתקנה. מחקו אותם בעצמכם אם מטרת ההסרה הייתה מחיקת הנתונים.
מה קראתי ומתי
כל הפניה כאן היא ל-commit, ולא ל-branch, כיוון ש-main יכיל קוד שונה עד שתקראו זאת. קראתי את כל החומר ב-17 באוגוסט 2026, והתשתית עצמה הייתה בגרסה 0.1.0-rc.7 ב-npm באותו יום.
commits מדויקים מאחורי רשימה קצרה זו
- רשימת התוספים הקהילתית ב-
f2918fb, 17 באוגוסט 2026. מקושרת פעם אחת בכוונה. זוהי ספרייה, וספרייה אינה מהווה המלצה. - 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. מצהיר על dsh0.1.0-rc.5עד0.1.0-rc.6. - dsh-defend ב-
7ba3427, 17 באוגוסט 2026. רישיון Apache 2.0. מצהיר על dsh0.1.0-rc.6. - dsh-memory ב-
def7c6a, 13 באוגוסט 2026. רישיון MIT. בנייה מבוססת SQLite. - dsh-web-lan-access ב-
e27e909, 16 באוגוסט 2026. רישיון MIT.
בדקו שוב את ה-pins הללו לפני העתקת פקודה. באקו-סיסטם של 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 שניהם שורדים את הסרת ההתקנה עד שתמחקו אותם בעצמכם.
האם זה בטוח לחשוף את ממשק ה-web של dsh לרשת?
לא כשלעצמו. dsh web מאזין ל-127.0.0.1:3080, ו-dsh-web-lan-access משנה את ה-binding ל-0.0.0.0. ה-README של הכלי מציין במפורש שזה הופך את הסוכן לנגיש ללא אימות לכל מי שנמצא באותה רשת, ובכתובת IP ציבורית המשמעות היא האינטרנט. מספר שיטות (settings.*, credentials.*, llm.discoverModels) נשארות נעולות ל-loopback ומחזירות שגיאת 403 ממקורות מרוחקים, מה שמפחית את הנזק אך לא מונע אותו לחלוטין. השתמשו ב-SSH port forward, ב-ssh -N -L 3080:127.0.0.1:3080 you@your-server, או הציבו את הפורט מאחורי ממשק רשת פרטי בצירוף חוק firewall, והוסיפו אימות אמיתי לפני שכל דבר יהיה נגיש מבחוץ.