SSD Nodes Learn Hosting plans →
Przewodniki Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-08-25

Najlepsze wtyczki DeepSeek Harness na serwer VPS

Poznaj pięć niezbędnych wtyczek dla DeepSeek Harness, które optymalizują pracę agenta. Dowiedz się, jak wdrożyć limity budżetowe, skanowanie iniekcji oraz trwałą pamięć sesji.

Które wtyczki DeepSeek Harness warto zainstalować

Wtyczki DeepSeek Harness to kod zewnętrzny, który działa wewnątrz agenta, z jego uprawnieniami, na opłacanej przez użytkownika maszynie. Lista społecznościowa obejmuje ponad dwadzieścia kategorii i przeszło tysiąc pozycji. Na wynajętym serwerze wirtualnym (VPS) wymaganych jest pięć: dsh-budget do limitów wydatków, dsh-permission-rules do kontroli dostępu do narzędzi, dsh-defend do skanowania pod kątem iniekcji i sekretów, dsh-memory do faktów wykraczających poza czas trwania sesji oraz dsh-web-lan-access, ale dopiero po podjęciu decyzji o sposobie uwierzytelniania.

Harness to dsh, otwartoźródłowy zestaw narzędzi agenta DeepSeek, zaprojektowany tak, aby każdy element był wtyczką. Własny plik README określa go jako wersję poglądową dla programistów i ostrzega THERE WILL BE COMPATIBILITY-BREAKING CHANGES. Ten jeden fakt determinuje każdy z poniższych wyborów. Należy przypinać wersje instalowanych wtyczek, liczyć się z tym, że aktualizacja może je uszkodzić oraz ograniczyć ich liczbę na tyle, aby możliwe było pełne przejrzenie kodu. Jeśli Harness jeszcze nie działa, należy zacząć od instalacji DeepSeek Harness na VPS i wrócić tutaj. Jeśli elementy, z którymi integrują się te wtyczki – pętla agenta, jego narzędzia, pamięć – są nadal niejasne, należy najpierw opanować podstawy, ponieważ każdy z poniższych wyborów jest łatwiejszy do oceny po zrozumieniu działania każdej warstwy.

Sposób instalacji wtyczki przez dsh oraz lokalizacja konfiguracji

dsh składa się z wtyczek Cordis, dlatego uruchomiona instancja stanowi drzewo wtyczek, a nie pojedynczy program. Profil to nazwany zestaw tych wtyczek. Dwa szablony to web oraz headless. $DSH_HOME domyślnie przyjmuje ~/.dsh, a profil znajduje się w $DSH_HOME/profiles/<name>/, przechowując własny package.json, manifest dsh.profile oraz cordis.patch.yml.

dsh plugin --profile web list
dsh plugin --profile web add dsh-budget
dsh plugin --profile web remove dsh-budget

Dostępne są cztery formy źródła: nazwa pakietu npm, nazwa z zakresem (scoped name), taka jak @towzai/dsh-memory, odwołanie do GitHub, takie jak github:PerryLink/dsh-budget#main, oraz ścieżka lokalna z link: lub ./. Zaleca się stosowanie formy GitHub, ponieważ pozwala ona zastąpić #main identyfikatorem commitu, co gwarantuje pobranie tego samego kodu w przyszłości.

dsh plugin --profile web add "github:PerryLink/dsh-budget#461d478"

Warstwy są nakładane w ustalonej kolejności: każdy pakiet zgodnie z listą w profilu, następnie cordis.patch.yml profilu, potem cordis.patch.yml na poziomie katalogu domowego, a na końcu dowolna nakładka --patch. Kolejność ma znaczenie, ponieważ późniejsza warstwa może zmienić konfigurację lub usunąć ustawienia wprowadzone przez warstwę wcześniejszą. Jeśli wtyczka wydaje się zainstalowana, ale nie działa, należy otworzyć cordis.patch.yml profilu i sprawdzić dwie kwestie: czy blok wstawiania (insert block) istnieje oraz czy żadna późniejsza warstwa go nie wyłącza.

Według stanu na 17 sierpnia 2026 pakiet npm @deepseek-ai/dsh znajduje się w 0.1.0-rc.7, podczas gdy każda wtyczka poniżej deklaruje zgodność z 0.1.0-rc.5 do 0.1.0-rc.6. Ta rozbieżność jest typowa dla tego ekosystemu i stanowi najczęstszą przyczynę problemów z ładowaniem wtyczek: środowisko uruchomieniowe (harness) rozwija się szybciej niż wtyczki. Należy celowo aktualizować środowisko, a następnie testować wtyczki pojedynczo.

Przeanalizuj wtyczkę przed jej zaufaniem

Wtyczka dsh nie jest odizolowana od środowiska uruchomieniowego. Ładuje się do tego samego drzewa Cordis, w tym samym procesie, jako ten sam użytkownik systemu operacyjnego, mając dostęp do tych samych poświadczeń modelu i tego samego drzewa roboczego. Instalacja wtyczki jest bardziej zbliżona do uruchomienia cudzego skryptu z sudo niż do dodania rozszerzenia przeglądarki. Jest to ten sam problem zaufania, który podnoszą wtyczki Claude Code, a odpowiedź pozostaje taka sama: przeczytaj kod lub nie instaluj wtyczki.

Cztery kwestie do sprawdzenia, w tej kolejności:

  • Punkty rozszerzeń, z których korzysta. tools/pre-execute oznacza, że wtyczka widzi każde wywołanie narzędzia i może je zablokować. agent/pre-step oznacza, że wtyczka widzi Twoje wiadomości. webServer.tapIndex oznacza, że wtyczka modyfikuje stronę serwowaną w Twojej przeglądarce. Wtyczka, która nie korzysta z żadnego z tych punktów, ma bardzo ograniczone możliwości; wtyczka korzystająca ze wszystkich wymienionych stanowi Twoją granicę bezpieczeństwa.
  • Czy wtyczka łączy się z siecią. Przeszukaj kod źródłowy pod kątem fetch, http oraz wszelkich zahardkodowanych nazw hostów. Licznik kosztów, który wysyła dane na zewnątrz, przesyła Twój wzorzec użytkowania do zewnętrznego podmiotu.
  • Czy wtyczka odczytuje poświadczenia. Wszystko, co dotyczy credentials.* lub klucza dostawcy, musi posiadać uzasadnienie w pliku README.
  • Licencja i data ostatniego commita. Nielicencjonowana wtyczka, nieaktualizowana od miesięcy w ekosystemie zmieniającym się co tydzień, stanowi zagrożenie.

Następnie zainstaluj wtyczkę, wskazując konkretny commit zamiast gałęzi, i przeczytaj blok wstawiony przez instalator do pliku cordis.patch.yml. Ten blok zawiera identyfikator wtyczki oraz zarejestrowaną przez nią konfigurację, co stanowi najbardziej zwięzły i rzetelny opis tego, co właśnie dodano. Jeśli środowisko na to pozwala, ogranicz wtyczce dostęp do kluczy dostawcy, zgodnie z zasadami przechowywania sekretów poza agentami AI.

dsh-budget: jak zapobiec całonocnemu zużyciu budżetu przez agenta?

Agent na serwerze VPS działa w trybie bezobsługowym. Jest to główny cel umieszczenia go na serwerze, ale wiąże się z tym również ryzyko. dsh-budget mierzy liczbę tokenów oraz szacowany koszt dla każdego modelu, sesji i dnia, a także wymusza limity dla tych sum.

dsh plugin --profile web add "github:PerryLink/dsh-budget#461d478"

Wartości domyślne są wysokie: 10 USD na sesję, 50 na dzień oraz 500 na miesiąc. Są one odpowiednie dla finansowanego zespołu. W przypadku serwera osobistego wartości te są na tyle wysokie, że zapętlony proces zakończy się, zanim limit zostanie osiągnięty, dlatego należy je obniżyć już pierwszego dnia.

Chartdsh-budget default caps and a lower starting point for one small VPS (USD)
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
  }
]

Sugerowana kolumna stanowi punkt wyjścia dla jednego operatora na jednej maszynie, a nie oficjalną wytyczną. Należy ją zwiększyć, gdy rzeczywisty miesiąc użytkowania dostarczy odpowiednich danych. Miesięczny limit w wysokości 40 USD z limitem sesji 2 powoduje wczesne i wyraźne powiadomienia, co jest pożądane podczas nauki zapotrzebowania narzędzia.

- id: budget
  config:
    budgets:
      session: 2
      daily: 5
      monthly: 40
    warnRatio: 0.8
    overLimit: block

Ustawieniem, które zmienia zachowanie maszyny, jest overLimit. Jego wartością domyślną jest alert, co powoduje wyświetlenie ostrzeżenia przy dalszym naliczaniu kosztów, więc w konfiguracji fabrycznej wtyczka pełni jedynie funkcję pulpitu nawigacyjnego. Ustawienie wartości block powoduje, że system odmawia dalszych wywołań modelu po osiągnięciu limitu, co oznacza, że nocne zadanie zostanie zatrzymane zamiast generować koszty do rana. degrade to trzeci tryb: zamienia on model na tańszy z mapy degradation, co jest właściwym rozwiązaniem, gdy zadanie musi zostać ukończone, ale nie wymaga użycia najlepszego modelu. warnRatio domyślnie wynosi 0.8, więc powiadomienie następuje po wykorzystaniu 80 procent limitu.

Istnieją dwa istotne ograniczenia. Koszt jest obliczany na podstawie cen podanych przez użytkownika: prices jest domyślnie puste, a defaultPrice przyjmuje wartość 1.0 USD za milion tokenów wejściowych i 3.0 za milion wyjściowych. Należy wprowadzić rzeczywiste dane dla używanych modeli, w przeciwnym razie pulpit nawigacyjny będzie jedynie przybliżeniem. Po drugie, wtyczka agreguje dane w uruchomionym procesie na podstawie strumienia zdarzeń sesji, więc sumy resetują się po restarcie systemu. Pętla awarii lub nadzorca restartujący dsh powoduje reset dziennego limitu. Należy traktować dsh-budget jako zabezpieczenie przed własnymi zadaniami, a jako faktyczny limit górny stosować ograniczenia wydatków na koncie dostawcy, co jest szerzej omówione w kontrolowanie kosztów agenta AI na serwerze VPS.

W codziennej pracy należy używać /budget do przeglądu ogólnego, /budget models do szczegółowego zestawienia według modeli oraz /budget unblock <scope> do zniesienia blokady po podjęciu decyzji o kontynuowaniu pracy.

dsh-permission-rules: which tool calls should never run?

dsh-permission-rules puts declarative rules on the tools/pre-execute waterfall, so a rule is evaluated before a tool runs. Three actions exist. allow passes the call through, deny blocks it and returns a reason the model can read, and ask routes it to the official approval seam.

dsh plugin --profile web add "github:PerryLink/dsh-permission-rules#b30b4fb"

Rules live in .dsh/rules.yaml relative to the session working directory, with a global fallbackPath and optional searchUp to walk up toward the filesystem root. Matching covers tool-name globs, parameter key and value globs, workspace-relative path globs, agent selectors such as main or subagent, and network targets.

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"

Evaluation is first match wins, so a broad allow near the top quietly cancels every narrower rule under it. Write the denials first and the permissive rules last. The tool-name glob covers mcp__*, which is how you gate tools that came from a model context protocol (MCP) server rather than from the harness itself, and that matters as soon as you are running MCP servers on a VPS.

One behaviour to plan for: ask needs an answerer. On a headless profile nobody may be watching, so an ask rule can hold a run up until someone appears. Use deny for anything you would never approve, keep ask for the profile you sit in front of, and if you want approvals to work unattended you need a real answering path, which is the subject of gating AI agent actions with approvals.

dsh-defend: co z prompt injection i wyciekiem sekretów?

dsh-defend skanuje w trzech punktach: wiadomości przychodzące na agent/pre-step, argumenty narzędzi na tools/pre-execute (w tym zabezpieczenie przed destrukcyjnym usuwaniem) oraz wyniki narzędzi na tools/post-execute. Ten ostatni punkt jest szczególnie istotny, ponieważ to tutaj treść pobrana ze strony WWW jest sprawdzana, zanim model podejmie na niej jakiekolwiek działania.

dsh plugin --profile web add "github:PerryLink/dsh-defend#7ba3427"

Ustawienia domyślne są ostrożne, a nie restrykcyjne: detection.injectionAction, detection.jailbreakAction oraz detection.secretAction mają wartość ask, podczas gdy detection.secretBlockCritical ma wartość true, więc krytyczny sekret zostanie zablokowany niezależnie od pozostałych ustawień. Na serwerze działającym bez nadzoru należy zmienić interesujące akcje na block, ponieważ ask w sytuacji, gdy nie ma kogo zapytać o zgodę, nie stanowi decyzji.

Projekt audytu zasługuje na uznanie. Zdarzenia defend/detection rejestrują identyfikator reguły, rodzinę, kategorię, poziom ważności, decyzję oraz fakty dotyczące skanowania, ale nigdy nie zapisują dopasowanego tekstu; sekrety są rejestrowane wyłącznie według typu. Włączenie dziennika audytu nie tworzy zatem drugiej kopii poświadczeń, które miały zostać zabezpieczone.

Należy jasno określić, co to rozwiązanie zapewnia. Wykrywanie opiera się na regułach, a plik README wprost informuje, że nowatorskie sformułowania i ataki wieloetapowe mogą je ominąć. Mechanizm ten zmniejsza częstotliwość oczywistych ataków. Nie sprawia on, że agent staje się bezpieczny w kontakcie z niezaufaną treścią, dlatego należy utrzymać restrykcyjne reguły uprawnień działające poniżej tego poziomu.

dsh-memory: co agent pamięta następnego dnia?

Istnieją dwie różne wtyczki o nazwie dsh-memory, o czym warto wiedzieć przed wpisaniem polecenia instalacji. Należy instalować je z jawnego źródła, aby otrzymać tę, o której czytasz.

Wersją, którą warto zainstalować na małym serwerze, jest build oparty na SQLite. Rejestruje się on jako memory, przechowuje jeden plik w $DSH_HOME/memory/memory.db współdzielony między profilami i udostępnia memory_write, memory_search oraz memory_forget. Wyszukiwanie opiera się na słowach kluczowych w zapisanych tekstach i tagach. Nie wymaga usługi embeddingu, klucza API ani dodatkowego procesu.

dsh plugin --profile web add "github:ben7am1n/dsh-memory#def7c6a"

Konfiguracja, którą będziesz edytować, jest niewielka: path dla pliku bazy danych, promptRecentCount (domyślnie 10) dla liczby nieprzypiętych wspomnień wstrzykiwanych do kontekstu oraz promptMaxChars (domyślnie 2000) dla budżetu renderowania. Rozwiązanie to opiera się na node:sqlite, co w Node 22 i 24 jest nadal oznaczone jako eksperymentalne, więc aktualizację Node należy przetestować, a nie zakładać jej działanie.

Oto jak pamięć faktycznie zmienia działanie maszyny: wstrzyknięte wspomnienia są dołączane do promptu systemowego przy każdym zapytaniu. Budżet 2000 znaków to kilkaset dodatkowych tokenów wejściowych przy każdym pojedynczym żądaniu, bez przerwy. To realny koszt na fakturze i dlatego dsh-budget powinno znaleźć się na serwerze przed dsh-memory. Utrzymuj promptMaxChars w ryzach i czyść dane za pomocą memory_forget, zamiast pozwalać plikowi na niekontrolowany wzrost.

Alternatywny build przechowuje wspomnienia w pliku YAML i wykonuje wyszukiwanie semantyczne (embedding) z automatycznym wstrzykiwaniem do promptu; instaluje się go za pomocą dsh plugin --profile web add github:towzai/dsh-memory. Wymaga lokalnej instancji ollama oraz modelu embeddingu, domyślnie qwen3-embedding:0.6b, z możliwością nadpisania przez DSH_MEMORY_EMBED_MODEL. Przywoływanie semantyczne jest skuteczniejsze niż wyszukiwanie po słowach kluczowych. Oznacza to jednak drugą usługę i zestaw wag modelu rezydujących na tym samym serwerze, co w przypadku małego planu oznacza pamięć RAM zabraną zadaniom, do których serwer został wynajęty. Wybierz to rozwiązanie, jeśli dysponujesz wolną pamięcią RAM. Ogólny kompromis między jakością przywoływania a kosztem zasobów omówiono w pamięć lokalna dla agentów.

dsh-web-lan-access: czy interfejs WWW powinien nasłuchiwać poza loopback?

npx @deepseek-ai/dsh web udostępnia interfejs na 127.0.0.1:3080. Przeglądarki udostępniają crypto.randomUUID() wyłącznie w bezpiecznym kontekście, dlatego ładowanie tej samej strony przez zwykły protokół HTTP z innej maszyny kończy się niepowodzeniem. dsh-web-lan-access rozwiązuje ten problem, wykorzystując webServer.tapIndex do wstrzyknięcia niewielkiego polyfillu i zmienia powiązanie serwera na 0.0.0.0.

Przed instalacją należy zapoznać się z ostrzeżeniem. Powiązanie 0.0.0.0 sprawia, że agent staje się dostępny bez uwierzytelniania dla każdego użytkownika w tej samej sieci lokalnej (LAN), a na serwerze z publicznym adresem IP oznacza to dostęp z całego Internetu. Krótka lista wrażliwych metod (settings.*, credentials.*, llm.discoverModels) pozostaje przypisana do loopback i zwraca błąd 403 dla żądań zdalnych, co ogranicza zakres potencjalnych szkód. Nie zapobiega to jednak zagrożeniu całkowicie, ponieważ interfejs wywoływania narzędzi pozostaje otwarty dla każdego, kto wykryje dany port.

W większości przypadków ta wtyczka nie jest potrzebna. Zamiast tego należy przekierować port przez SSH.

ssh -N -L 3080:127.0.0.1:3080 you@your-server

Następnie otwórz http://127.0.0.1:3080 w lokalnej przeglądarce. Mechanizm nadal nasłuchuje wyłącznie na loopback, więc nic nie jest wystawione na zewnątrz, a ponieważ przeglądarki traktują 127.0.0.1 jako bezpieczne źródło, crypto.randomUUID() jest dostępne bez potrzeby stosowania polyfillu. Jedno polecenie, brak wtyczki, brak nowej powierzchni ataku.

Wtyczkę należy instalować tylko wtedy, gdy przekierowanie nie wystarcza, na przykład gdy telefon w tej samej sieci musi uzyskać dostęp do interfejsu. W takim przypadku należy powiązać ją z prywatnym interfejsem sieciowym, utrzymać regułę firewalla zezwalającą na ruch tylko z tego interfejsu oraz wymienić nazwy, które będą używane, w sekcji trustedHosts przy wpisie web-runtime. Do rzeczywistego dostępu wieloużytkownikowego służy dsh-passwords, który dodaje uprawnienia dla podużytkowników, godzinowe tokeny i dzienne limity czasowe dla każdego z nich, automatyczne certyfikaty TLS (transport layer security) przez Let's Encrypt oraz zaszyfrowany dziennik audytu. Należy traktować to rozwiązanie raczej jako platformę niż wtyczkę: wymaga ono portów 80 i 443, posiada własny instalator, a udokumentowana szybka ścieżka instalacji przesyła skrypt powłoki bezpośrednio z sieci do bash. Zaleca się użycie npm install -g dsh-passwords, a następnie dsh-passwords install, aby kod znajdował się na dysku, gdzie można go przejrzeć przed uruchomieniem.

Jak poprawnie usunąć wtyczkę

Proces odinstalowania składa się z dwóch kroków, z których drugi jest często pomijany.

dsh plugin --profile web remove dsh-budget
dsh plugin --profile web list

list nie powinno już wyświetlać tej wtyczki. Następnie należy otworzyć $DSH_HOME/profiles/web/cordis.patch.yml i usunąć wszelkie pozostałe bloki typu insert wskazujące na tę wtyczkę, ponieważ to właśnie ten wpis odpowiada za jej ładowanie do drzewa. Należy zrestartować harness, aby drzewo zostało przebudowane; wtyczka załadowana przed restartem pozostanie aktywna do momentu jego wykonania. Na koniec należy pamiętać, że dane pozostają po usunięciu kodu. $DSH_HOME/memory/memory.db oraz .dsh/rules.yaml nie są usuwane automatycznie podczas odinstalowania. Należy usunąć je ręcznie, jeśli celem było całkowite wyczyszczenie danych.

Co przeczytałem i kiedy

Każde odniesienie w tym miejscu dotyczy konkretnego commita, a nie brancha, ponieważ main będzie zawierać inny kod w momencie, gdy będziesz to czytać. Całość przeanalizowano 17 sierpnia 2026 roku, a sam zestaw narzędzi (harness) znajdował się tego dnia w wersji 0.1.0-rc.7 w rejestrze npm.

Dokładne commity dla tej krótkiej listy
  • Lista wtyczek społeczności w wersji f2918fb, 17 sierpnia 2026. Link zamieszczono celowo tylko raz. Jest to katalog, a katalog nie stanowi rekomendacji.
  • dsh-budget w wersji 461d478, 17 sierpnia 2026. Licencja Apache 2.0. Deklaruje dsh 0.1.0-rc.6, Node 22.19 lub 24 i nowsze.
  • dsh-permission-rules w wersji b30b4fb, 17 sierpnia 2026. Licencja Apache 2.0. Deklaruje dsh od 0.1.0-rc.5 do 0.1.0-rc.6.
  • dsh-defend w wersji 7ba3427, 17 sierpnia 2026. Licencja Apache 2.0. Deklaruje dsh 0.1.0-rc.6.
  • dsh-memory w wersji def7c6a, 13 sierpnia 2026. Licencja MIT. Kompilacja SQLite.
  • dsh-web-lan-access w wersji e27e909, 16 sierpnia 2026. Licencja MIT.

Przed skopiowaniem polecenia sprawdź ponownie te przypięcia (pins). W ekosystemie wczesnego dostępu dla programistów (developer-preview) tylko numer wersji powiązany z datą ma jakiekolwiek znaczenie.

FAQ

Które wtyczki DeepSeek Harness należy zainstalować jako pierwsze na VPS?

Zainstaluj dsh-budget oraz dsh-permission-rules przed wszystkimi innymi. Budżet z overLimit: block zapobiega niekontrolowanemu zużyciu środków przez całą noc, a plik .dsh/rules.yaml blokuje wywołania narzędzi, których użytkownik nigdy by nie zatwierdził. Dodaj dsh-defend, gdy agent zacznie odczytywać dane z publicznej sieci, oraz dsh-memory, gdy zauważysz, że wklejasz ten sam kontekst do każdej sesji. Pomiń motywy i wskaźniki statusu: dodają one kod wykonywany z uprawnieniami agenta, nie zmieniając przy tym działania maszyny.

Czy wtyczki dsh są odizolowane od harnessa?

Nie. Wtyczka ładuje się do tego samego drzewa Cordis co harness, w tym samym procesie, jako ten sam użytkownik systemu operacyjnego, z tymi samymi poświadczeniami modelu i tym samym drzewem roboczym. Wtyczka korzystająca z tools/pre-execute widzi i może blokować każde wywołanie narzędzia; wtyczka korzystająca z agent/pre-step widzi wiadomości użytkownika. Należy zatem czytać kod źródłowy, sprawdzać licencję oraz datę ostatniego commita, a także instalować wtyczki według konkretnego commita, a nie gałęzi, aby kod nie mógł ulec nieoczekiwanej zmianie.

Czy dsh-budget faktycznie zatrzyma agenta, czy tylko wyświetli ostrzeżenie?

Zależy to od overLimit. Wartością domyślną jest alert, która ostrzega przy warnRatio i kontynuuje wydatki. block odmawia dalszych wywołań modelu po osiągnięciu limitu, a /budget unblock <scope> znosi go po podjęciu decyzji o kontynuacji. degrade przełącza na tańszy model z mapy degradation. Istotne jest jedno ograniczenie: sumy są agregowane w uruchomionym procesie na podstawie strumienia zdarzeń sesji, więc restart harnessa resetuje je, a pętla restartów może obejść limit dzienny. Należy utrzymywać limit wydatków na koncie dostawcy jako rzeczywiste zabezpieczenie.

Jak całkowicie usunąć wtyczkę dsh?

Uruchom dsh plugin --profile web remove <package-name>, potwierdź za pomocą dsh plugin --profile web list, a następnie otwórz $DSH_HOME/profiles/web/cordis.patch.yml i usuń pozostały blok wpisu dla tej wtyczki, ponieważ to on odpowiada za jej ładowanie. Zrestartuj harness, aby drzewo wtyczek zostało przebudowane. Dane zapisane przez wtyczkę pozostają na dysku: $DSH_HOME/memory/memory.db oraz .dsh/rules.yaml przetrwają odinstalowanie, dopóki nie zostaną usunięte ręcznie.

Czy bezpieczne jest wystawianie interfejsu web UI dsh w sieci?

Nie w takiej formie. dsh web nasłuchuje na 127.0.0.1:3080, a dsh-web-lan-access zmienia to powiązanie na 0.0.0.0. Dokumentacja README wyraźnie wskazuje, że czyni to agenta dostępnym bez uwierzytelniania dla każdego w tej samej sieci, a w przypadku publicznego adresu IP oznacza to dostęp z Internetu. Kilka metod (settings.*, credentials.*, llm.discoverModels) pozostaje przypisanych do interfejsu loopback i zwraca błąd 403 dla żądań zdalnych, co ogranicza ryzyko, ale go nie eliminuje. Należy użyć tunelowania SSH, ssh -N -L 3080:127.0.0.1:3080 you@your-server lub umieścić port za prywatnym interfejsem sieciowym wraz z regułą firewalla oraz dodać właściwe uwierzytelnianie, zanim jakikolwiek element stanie się dostępny z zewnątrz.