Przejdź do głównej zawartości

Konfiguracja Cordis

Wbudowany silnik Cordis/DSH konfiguruje się dwoma dokumentami i zmiennymi środowiskowymi. Domyślnie dokumenty leżą obok backendu; LIBRE_CORDIS_CONFIG i LIBRE_CORDIS_SETTINGS zmieniają ich położenie.

DokumentWłaścicielStrukturaCel
cordis.patch.ymlCordis LoaderTablica YAML najwyższego poziomuWiersze wtyczek ładujące silnik
cordis.config.ymlHost Libre WebUIMapa YAMLDostawca, źródło poświadczeń i flagi funkcji

Potrzebne są dwa dokumenty, ponieważ Cordis Include sam czyta kompozycję i wymaga tablicy najwyższego poziomu. Ustawienia hosta nie mogą więc zajmować tego samego pliku.

Włączanie

Opcja Silnik Cordis w Ustawieniach obok opcji Agentów.

Administrator włącza silnik w Ustawienia → Zarządzanie użytkownikami → Dostęp i zasady → Silnik Cordis. Zmiana działa od razu: włączenie uruchamia silnik przy następnym żądaniu, a wyłączenie go zwalnia. Restart nie jest potrzebny.

Dwa źródła wdrożeniowe mogą wymusić wartość. Oba blokują przełącznik zamiast zostać po cichu nadpisane:

ŹródłoSkutek
LIBRE_CORDIS_ENABLED zmienna środowiskowatrue/false wymusza stan dla wdrożenia
features.enabled w cordis.config.ymlJawna wartość wymusza stan; pominięcie klucza pozostawia decyzję administratorowi

Silnik potrzebuje także kompozycji. Zacznij od dostarczonych przykładów:

cd backend
cp cordis.patch.example.yml cordis.patch.yml
cp cordis.config.example.yml cordis.config.yml

Host odczytuje cordis.patch.yml, scala swoje wartości domyślne z wierszem mostu i zapisuje <DATA_DIR>/cordis-runtime/cordis.composed.yml. Plik wynikowy można odtworzyć i nie wolno go edytować; źródłem prawdy jest cordis.patch.yml operatora.

cordis.config.yml

trace: false

model:
provider: libre-webui
# Empty selects the authenticated caller's configured default/fallback route.
model: ''

features:
# Omit enabled to let the administrator use the Settings toggle.
streaming: true
tools: true
persistence: true

# Optional absolute paths; defaults live under Libre WebUI's data directory.
# workspacePath: /absolute/path/to/workspace
# sessionStorePath: /absolute/path/to/sessions

Klucze najwyższego poziomu

KluczTypDomyślnieZnaczenie
tracelogicznyfalseRejestrowanie każdej zmiany aktywacji Cordis
modelmapaWybór adaptera modelu; zobacz niżej
featuresmapaPrzełączniki funkcji; zobacz niżej

features

KluczTypDomyślnieZnaczenie
enabledlogicznyfalseZaładowanie silnika; wyłączenie daje 503 na wszystkich trasach.
streaminglogicznytruePrzyjmowanie tur strumieniujących wynik modelu
toolslogicznytrueZezwolenie na narzędzia silnika i udostępnienie rejestru
persistencelogicznytrueWłączenie i wymaganie usługi zapisu JSONL; sesje przeżywają restart

features.enabled to jedyny przełącznik konieczny do włączenia mostu. Klucz enabled na najwyższym poziomie nie jest czytany: wszystkie przełączniki w features dają jedno miejsce do sprawdzenia aktywnych funkcji.

model

KluczTypDomyślnieZnaczenie
providertekstlibre-webuilibre-webui, deepseek, pi-ai albo none
apiKeyEnvtekstOPENAI_API_KEYNazwa zmiennej środowiskowej z kluczem
routetekstlibre-webuiTrasa dostawcy wskazywana przez silnik w żądaniach
modeltekst''ID żądanego modelu. Ustaw dla ręcznie deklarowanej trasy
baseUrltekst''Nadpisanie adresu; pusta wartość używa domyślnej adaptera
providersmapa{}Ręcznie zadeklarowane trasy według nazw

Skąd pochodzą modele silnika

Silnik nie ma własnej konfiguracji dostawców. Wywołuje dostawców już obecnych w Libre WebUI przez trasę libre-webui, rejestrowaną przez wiersz libre-webui-llm-adapter. Używa tych samych modeli co czat w interfejsie: pobrany tam model staje się dostępny wraz z gotowymi poświadczeniami i adresem.

Ustaw model.provider: libre-webui, czyli dostarczoną wartość domyślną. Poświadczenia i adresy pozostają w istniejących ustawieniach Libre WebUI.

model określa żądany model. Pusta wartość oznacza domyślny model aplikacji; bez niego silnik bierze pierwszy model czatu zgłoszony przez warstwę dostawców, preferując dostępne modele lokalne. Modele embeddingów są wykluczone. Wewnętrzne trasy zachowują dostawcę i model: lwui:ollama:<encoded-model> albo lwui:plugin:<encoded-provider>:<encoded-model>. Dzięki temu zbieżne nazwy lub awaria Ollama nie przekierowują lokalnego żądania do zdalnego dostawcy. Jawnie wybrany niedostępny dostawca powoduje błąd, bez cichego zastępowania.

Pusty model jest bezpieczny tylko dla libre-webui. Trasa pakietu dostawcy potrzebuje nazwanego modelu: dsh-llm-pi-ai rozwiązuje katalog dla zapytań katalogowych, ale nie wybiera pierwszego wpisu jako zastępstwa. Ręczna trasa bez model nie przyjmuje tury i zgłasza:

provider "<route>" resolves no models; the installed catalog does not describe
this route, so its models must be listed in configuration

Ustaw model na ID z listy models trasy. Przykład łączy route: ollama z model: llama3.2, odpowiadającym zadeklarowanemu wpisowi llama3.2.

provider wybiera ładowany pakiet adaptera:

  • libre-webui korzysta z własnej warstwy dostawców wdrożenia. To tryb wspierany i domyślny.
  • none uruchamia silnik bez modelu. Lista narzędzi i sesje działają, lecz tura nie otrzyma odpowiedzi; przydaje się to do testowania kompozycji.
  • deepseek i pi-ai ładują pakiet dostawcy bezpośrednio. Nie są one zależnościami backendu: wszystkie SDK wciągały 59 pakietów pośrednich, również przestarzałych, dla możliwości niewykorzystywanych przez silnik. Zainstaluj wybrany pakiet i dodaj jego wiersz; host wskaże brakujący pakiet.

Trasę dostawcy opisują pola:

PoleZnaczenie
displayNameCzytelna nazwa
apiProtokół transmisji, np. openai-completions
baseURLBazowy adres punktu końcowego
apiKeyEnvZmienna środowiskowa z kluczem
modelsLista modeli; wpisy przyjmują id, name, contextWindow, maxTokens

Poświadczenia nigdy nie są zapisywane w tych dokumentach. apiKeyEnv wskazuje zmienną środowiskową odczytywaną dla każdego żądania, więc rotacja klucza nie wymaga restartu.

cordis.patch.yml

Tablica wpisów Loadera Cordis najwyższego poziomu. Przykład ładuje dziewięć wierszy i jest zalecanym punktem wyjścia.

- id: llm
name: '@deepseek-ai/dsh-llm'

- id: session
name: '@deepseek-ai/dsh-session'

- id: session-projection
name: '@deepseek-ai/dsh-session-projection'

- id: session-persistence
name: '@deepseek-ai/dsh-session-persistence-jsonl'
config:
# The host supplies the resolved sessionStorePath.

- id: system-prompt
name: '@deepseek-ai/dsh-system-prompt'
config:
personaPrefix: ''

- id: tools
name: '@deepseek-ai/dsh-tools'

- id: agent
name: '@deepseek-ai/dsh-agent'

- id: agent-loop
name: '@deepseek-ai/dsh-agent-loop'
config:
agents: []

- id: libre-webui-bridge
name: './dist/cordis/dsh/engine-plugin.js'

Pola wpisu

PoleWymaganeZnaczenie
idnieStałe ID do wskazania wiersza; domyślnie z name
nametakSpecyfikator modułu importowany przez Loader; musi być literałem
confignieKonfiguracja wtyczki; obsługuje !!js
disabledniePominięcie wiersza bez usuwania; obsługuje !!js
injectnieDodatkowe usługi wymagane lub konfiguracja przechwytywania wiersza

Loader importuje name bezpośrednio i go nie oblicza, więc nie może to być wyrażenie !!js. Wartości config mogą zawierać !!js; są obliczane później we włóknie właściciela z dostępnym kontekstem Loadera. process.env i ctx.get(...) działają, import.meta nie.

Ścieżki względne są rozwiązywane względem katalogu samego pliku kompozycji. Nazwy pakietów przez pakiet backendu: @deepseek-ai/dsh-tools znajdzie kopię w backend/node_modules.

Kolejność wierszy nie wyznacza ładowania. Cordis aktywuje je po udostępnieniu zadeklarowanych usług; grupowanie powyżej służy wyłącznie czytelności.

Wymagane wiersze

Silnik odpowiadający na czat potrzebuje wszystkich poniższych elementów:

WierszDostarczaWymaga
dsh-llmllmpętla agenta
dsh-sessionsessionspętla agenta, most
dsh-session-projectionsessionProjectionspętla agenta
dsh-system-promptsystemPromptnarzędzia, pętla agenta
dsh-toolstoolspętla agenta, most
dsh-agentagentsmost
dsh-agent-loopsterownik agentaodpowiedzi na tury
wiersz mostulibreDshEnginekażda trasa

Dopiero dodanie wtyczki narzędzi, np. @deepseek-ai/dsh-fs-sandbox razem z @deepseek-ai/dsh-tool-fs, zapewnia wyniki GET /api/cordis/tools. Rejestr bez takich wtyczek jest poprawnie pusty.

Zmienne środowiskowe

Każde ustawienie ma nadpisanie środowiskowe. Zmienna ma pierwszeństwo przed dokumentem, a dokument przed wartością wbudowaną.

ZmiennaZastępujeDomyślnie
LIBRE_CORDIS_ENABLEDfeatures.enabledfalse
LIBRE_CORDIS_STREAMINGfeatures.streamingtrue
LIBRE_CORDIS_TOOLSfeatures.toolstrue
LIBRE_CORDIS_PERSISTENCEfeatures.persistencetrue
LIBRE_CORDIS_TRACEtracefalse
LIBRE_CORDIS_MODEL_PROVIDERmodel.providerlibre-webui
LIBRE_CORDIS_MODEL_ROUTEmodel.routelibre-webui
LIBRE_CORDIS_MODELmodel.model''
LIBRE_CORDIS_API_KEY_ENVmodel.apiKeyEnvOPENAI_API_KEY
LIBRE_CORDIS_BASE_URLmodel.baseUrl''
LIBRE_CORDIS_CONFIGŚcieżka dokumentu kompozycji<cwd>/cordis.patch.yml
LIBRE_CORDIS_SETTINGSŚcieżka dokumentu ustawieńobok dokumentu kompozycji
LIBRE_CORDIS_WORKSPACEDomyślny obszar silnika<DATA_DIR>/cordis-workspace
LIBRE_CORDIS_SESSION_STOREKatalog zapisanych sesji<DATA_DIR>/cordis-sessions

Zmienne logiczne akceptują 1/true/yes/on i 0/false/no/off. Nieczytelna wartość powoduje powrót do dokumentu zamiast zgadywania.

Wyrażenia !!js dostarczonej kompozycji odczytują też LIBRE_CORDIS_SESSION_STORE i LIBRE_CORDIS_WORKSPACE, dlatego host eksportuje je przed załadowaniem drzewa.

Pełne przykłady

Lokalna Ollama, całkowicie offline

features:
enabled: true
model:
provider: pi-ai
route: ollama
model: llama3.2
apiKeyEnv: OLLAMA_API_KEY
providers:
ollama:
api: openai-completions
baseURL: http://127.0.0.1:11434/v1
apiKeyEnv: OLLAMA_API_KEY
models:
- id: llama3.2
contextWindow: 131072
maxTokens: 4096

Ollama ignoruje klucz, lecz klient OpenAI wymaga jego ustawienia. Eksportuj OLLAMA_API_KEY=ollama, bez tworzenia fikcyjnego sekretu. Nic nie opuszcza maszyny.

Brama zgodna z OpenAI

features:
enabled: true
model:
provider: pi-ai
route: gateway
model: acme-large
apiKeyEnv: ACME_GATEWAY_API_KEY
providers:
gateway:
displayName: Acme Gateway
api: openai-completions
baseURL: https://gateway.acme.example/v1
apiKeyEnv: ACME_GATEWAY_API_KEY
models:
- id: acme-large
contextWindow: 65536
maxTokens: 4096

Oficjalny DeepSeek

features:
enabled: true
model:
provider: deepseek
route: deepseek
apiKeyEnv: DEEPSEEK_API_KEY

Ustaw DEEPSEEK_API_KEY w środowisku backendu.

Bez dostawcy, tylko narzędzia

features:
enabled: true
model:
provider: none

Silnik startuje, sesje można tworzyć, a GET /api/cordis/tools listuje skonfigurowane wtyczki. Wysłanie wiadomości zawiedzie, ponieważ żaden adapter nie może jej obsłużyć.

Uwagi o migracji

Most jest dodatkiem. Gdy jest wyłączony — jak domyślnie — nie zmienia istniejącego zachowania.

Aktualizacja istniejącego wdrożenia. Nic nie trzeba robić. Pliki cordis.patch.example.yml i cordis.config.example.yml nie są używane do ich skopiowania i włączenia funkcji. Nie ma migracji, nowych tabel ani zmian istniejących katalogów danych.

Pierwsze włączenie. Skopiuj oba przykłady i ustaw features.enabled: true. Dalsza instalacja nie jest potrzebna: pakiety silnika są zależnościami backendu. Przy pierwszym żądaniu powstają <DATA_DIR>/cordis-workspace, <DATA_DIR>/cordis-sessions i <DATA_DIR>/cordis-runtime. To nowe katalogi w istniejącym katalogu danych; kopia lub odtworzenie obejmujące cały katalog obejmie je także.

Aktualizacja silnika. Rozwiązane wersje zapisuje package-lock.json, a backend/package.json deklaruje zakresy zgodne z alpha. Aktualizuj świadomie i sprawdź kontrakty dostawców i sesji po npm install. Nową zależność peer npm zgłosi przy instalacji, nie podczas ładowania. Formaty modeli i sesji należą do DSH; ich zmiana wymaga uwag o wydaniu DSH, a nie migracji Libre WebUI.

Wycofanie. Ustaw features.enabled: false i zrestartuj albo usuń wiersz mostu z cordis.patch.yml. Usługa libreDshEngine zostanie wycofana, odbiornik zwolniony, agenci usunięci. Pliki sesji pozostają danymi; usuń katalog sessionStorePath, aby odzyskać miejsce. Odinstalowanie pakietów jest opcjonalne i nie wpływa na inne funkcje.

Istniejący Czat i Work. Czat zyskuje DeepSeek Harness wyłącznie dla administratorów, z sesjami tymczasowymi i istniejącą historią. Work otrzymuje osobny wybór silnika DSH ze sterownikiem w pamięci i istniejącym potokiem zatwierdzeń/piaskownicy. Wcześniejsze wybory modeli zachowują zwykłe działanie.

Przy adapterze libre-webui wybór Agentów w Czacie obejmuje konkretne pary dostawca-model DSH oraz profil bazowy. Konkretne wybory zachowują kwalifikowaną tożsamość, a baza używa modelu działającej kompozycji. Tytuły i podsumowania rozumowania wywołują dostawcę bezpośrednio, bez narzędzi agenta. Własna trasa adaptera zachowuje tylko bazowy wpis i wymaga oddzielnego modelu zadań Ollama lub wtyczki do tych funkcji.

DSH respektuje przełącznik Ollama administratora. Po wyłączeniu modele nie są listowane ani odpytywane; jawny wybór Ollama zawiedzie bez zmiany dostawcy. Niekwalifikowane nazwy przypięte przez operatora także wymagają katalogu Ollama dla bezpiecznego rozstrzygnięcia. Dla wdrożenia tylko z wtyczkami użyj lwui:plugin:<plugin>:<model>.

Granice operacyjne

  • Silnik hosta i Czat są tylko dla administratorów w trybie solo. Strona Silnika jest wspólną konsolą z lokalnym JSONL i nie może działać w team. Work używa istniejących repozytoriów SQL.
  • Wywołania modeli korzystają z uwierzytelnionego użytkownika. Tury interaktywne używają poświadczeń i preferencji modelu tego administratora. Zaufana kompozycja nieinteraktywna może jawnie ustawić LIBRE_CORDIS_USER na ID aktywnego administratora. Nie ma automatycznego wyboru najstarszego administratora.
  • Narzędzia plikowe hosta są ograniczone do obszaru. Odczyt i zapis sprawdzają kanoniczny cel; sesja nie może wybrać katalogu poza korzeniem. Ograniczenia modyfikacji DSH nadal obowiązują. Dodatkowe wtyczki operatora to zaufany kod serwera.
  • Narzędzia hosta używają zasad DSH. Silnik ma osobne tryby odczytu/zapisu i jednorazowe zgody, które nie omijają granicy obszaru. Czat bez interfejsu odrzuca niewyświetlalne pytania. Sterownik Work stosuje zgody Work i izolację kontenera bez plikowych narzędzi hosta.
  • Strumienie zawierają tekst na żywo i ujawnione rozumowanie. Trwałe wiadomości zachowują pełną rozmowę; klient nie dostaje drugiej kopii tekstu.
  • Restart i usuwanie używają zapisanych sesji. Puste i zakończone sesje przeżywają restart. Usunięcie sesji JSONL mostu zatrzymuje zapis i usuwa plik; inne backendy muszą dostarczyć odpowiedni adapter usuwania.
  • Dawne błędne logi wymagają jawnej naprawy. Starsze wersje zapisywały wiadomości bez wymaganych ID. Ścisły czytnik je odrzuca zamiast pomijać. Zobacz Rozwiązywanie problemów.
  • Tytuły są wyznaczane lokalnie. Pierwsza ludzka wiadomość daje krótki tytuł; puste sesje nie mają tytułu pochodnego.

Podłączanie modeli działającej instancji DSH

Opcjonalna wtyczka dsh-native-provider udostępnia modele i połączenia już skonfigurowane w innej instancji DSH, np. aplikacji lokalnej na porcie 3080. Zainstaluj ją w istniejącym profilu. Wywołuje tylko ctx.llm: klucze pozostają w DSH; połączenie nie tworzy sesji, nie uruchamia agentów ani narzędzi natywnych i nie czyta natywnych załączników.

Oba procesy muszą działać na tym samym hoście Unix i koncie systemowym. Jawnie ustawione gniazdo Unix wymaga fizycznego katalogu tego konta w trybie 0700 oraz gniazda 0600. Nie dodaje nasłuchu TCP i nie wykorzystuje ani nie osłabia uwierzytelniania przeglądarkowego DSH. Windows i zdalne hosty DSH nie są obsługiwane.

Konto systemowe jest lokalną granicą dostępu: inne jego procesy mogą używać gniazda. Połączenie nie zapewnia osobnych poświadczeń natywnych ani izolacji aplikacji dzielących konto.

Instalacja osobnej wtyczki

W DSH → Plugins → Add plugin wklej publiczny adres repozytorium do Package name or address i kliknij Install:

https://github.com/libre-webui/dsh-native-provider

Włącz komponent na żądanie DSH. Publiczny pakiet 0.1.1 na licencji Apache-2.0 zawiera gotowy runtime i patch bundle. Nie wymaga lokalnej kompilacji, skryptów instalacyjnych ani zależności wykonawczych npm. Nazwa @libre-webui/dsh-native-provider nie jest opublikowana w npm; użyj adresu GitHub.

Bundle wybiera <DSH home>/lwui-provider/llm.sock, zwykle $HOME/.dsh/lwui-provider/llm.sock; ustawione DSH_HOME ma pierwszeństwo. Prywatny katalog jest tworzony, jeśli nie istnieje. Używaj jednego aktywnego mostu na katalog domowy DSH albo nadpisz gniazdo w użytkowym cordis.patch.yml dodatkowych profili. Pełna ścieżka musi mieścić się w 100 bajtach UTF-8 i nie zawierać dowiązań symbolicznych. Nadpisania opisuje przewodnik konfiguracji osobnego pakietu.

Opcjonalny odpowiednik CLI:

dsh plugin --profile web add https://github.com/libre-webui/dsh-native-provider

Zastąp web faktycznie działającym profilem. Po instalacji CLI zrestartuj profil; instalacja z aktywnego interfejsu może od razu włączyć wtyczkę. Przestrzegaj komunikatów restartu DSH. Nie trzeba zmieniać źródeł DSH ani kopiować kluczy dostawców.

Przygotowanie bundle z Libre WebUI

Libre WebUI dostarcza też skrypt przygotowujący. W repozytorium źródłowym zbuduj backend i nowy katalog wynikowy:

npm run build:backend
node scripts/prepare-dsh-provider.mjs /absolute/dsh-provider-bundle /absolute/private-directory/provider.sock
dsh plugin --profile web add /absolute/dsh-provider-bundle

Dystrybucje npm mają już zbudowany backend i skrypt; wykonaj tylko ostatnie dwa polecenia z katalogu instalacji. Potem zrestartuj wybrany profil DSH. Obie ścieżki przygotowania odrzucają istniejące katalogi wynikowe i dodają metadane, licencję oraz instrukcję instalacji.

Połączenie Libre WebUI

Wskaż w cordis.config.yml tę samą bezwzględną ścieżkę gniazda. Dla standardu publicznego zastąp /absolute/home rzeczywistym katalogiem domowym:

nativeProvider:
socketPath: /absolute/home/.dsh/lwui-provider/llm.sock

Możesz też ustawić LIBRE_DSH_PROVIDER_SOCKET na tę ścieżkę. Pusta wartość środowiskowa wyłącza połączenie, nawet gdy plik zawiera ścieżkę. Włącz Silnik Cordis w LWUI. Aktywni administratorzy wybiorą natywne modele w silniku DeepSeek Harness Work, na stronie Silnika i w grupie Agenci Czatu, która wymaga także Modele agentów CLI. Work zapisuje surowy model i ID dostawcy jako providerType: dsh; istniejące zadania DSH przez LWUI zachowują dostawcę i znacznik silnika.

Katalog natywny jest czytany na żywo. Zmiana konfiguracji lub poświadczeń unieważnia generację połączenia i anuluje aktywne wywołania. Niedostępne gniazdo, model lub dostawca zatrzymują żądanie; brak zastępowania przez Ollama czy innego dostawcę. Tytuły i podsumowania używają bezpośrednio wybranego LLM bez narzędzi. Ta pierwsza wersja połączenia przyjmuje tekst, rozumowanie i wiadomości narzędzi; natywne odwołania do obrazów i plików są odrzucane.

Poświadczenia należą do operatora DSH, więc połączenie jest tylko dla administratorów nawet przy szerszym dostępie do Work. Żądania mogą opuszczać host zgodnie z konfiguracją dostawcy DSH; Work pokazuje informację o dostawcy zdalnym. W team każdy worker obsługujący takie zadania potrzebuje dostępu do skonfigurowanego połączenia lokalnego; brak dostępu blokuje wykonanie. Wyłączenie Cordis lub usunięcie ustawienia gniazda cofa dostęp natywny, zachowując zadania. Po awarii DSH pozostawiającej gniazdo zatrzymaj instancję właściciela i usuń tylko nieaktualne gniazdo przed restartem; wtyczka nie zastępuje istniejących wpisów systemu plików.

Aktualizacja lub usunięcie wtyczki

Przed zmianą zakończ lub anuluj aktywne żądania natywne. Aby zastąpić stary lokalny bundle 0.0.0/0.1.0 w interfejsie DSH, użyj Uninstall, wróć do Add plugin i zainstaluj podany adres GitHub. Zachowaj własną ścieżkę przez wspierane nadpisanie profilu użytkownika. Natywne sesje i poświadczenia pozostają zachowane.

Instalację już pochodzącą z GitHub można aktualizować przez CLI:

dsh plugin --profile web update @libre-webui/dsh-native-provider

Po aktualizacji CLI zrestartuj i sprawdź wersję. Wyłączona wtyczka pozostaje wyłączona, więc przed testem sprawdź jej stan. Aby przypiąć lub wycofać wersję, użyj github:libre-webui/dsh-native-provider#<commit>. Dla własnych lokalnych bundle zbuduj nowy katalog i dodaj go ponownie; aktualizacja lokalnej zależności nie pobiera GitHub.

Aby usunąć połączenie, najpierw usuń nativeProvider.socketPath z LWUI lub ustaw puste LIBRE_DSH_PROVIDER_SOCKET, a potem wykonaj:

dsh plugin --profile web remove @libre-webui/dsh-native-provider

Zrestartuj profil DSH. Zadania LWUI pozostają, ale ich żądania natywne zawodzą do przywrócenia tego samego jawnego połączenia. Usunięcie wtyczki nie usuwa dostawców ani poświadczeń DSH. Stare wygenerowane katalogi bundle usuwaj dopiero, gdy nie są już zainstalowane.

Użycie natywnych dostawców

Żądania natywne pojawiają się w Użycie dostawców pod DeepSeek Harness · provider z surową nazwą wybranego modelu. Każde rzeczywiste żądanie liczy się raz, również rundy narzędzi, tytuły i podsumowania. Panel pokazuje sukcesy, błędy, anulowania, opóźnienie i tokeny zgłoszone przez DSH. Wejście z cache liczy się raz; brakujące dane pozostają niezmierzone, bez szacowania. ID dsh-native:<percent-encoded-native-provider-id> używa istniejących reguł taryf i kosztów. Nieznane taryfy pozostają bez wyceny.

DSH przez dostawców LWUI zachowuje ich istniejące rekordy. Odczyt katalogu i odrzucone żądania, które nie docierają do inferencji, nie tworzą dodatkowych wywołań. Pomiar zaczyna się od instalacji tej wersji; nie tworzy fikcyjnej historii. Zapis obejmuje tożsamość, stan, czas i liczniki, bez promptów, odpowiedzi, poświadczeń, adresów i tekstów błędów dostawcy.

Sprawdzanie konfiguracji

curl -s http://127.0.0.1:3001/api/cordis/health | jq
{
"success": true,
"enabled": true,
"ready": true,
"services": [
{ "name": "llm", "state": "ready" },
{ "name": "systemPrompt", "state": "ready" },
{ "name": "sessions", "state": "ready" },
{ "name": "tools", "state": "ready" },
{ "name": "agents", "state": "ready" }
]
}

503 z code: CORDIS_UNAVAILABLE oznacza nieudaną kompozycję. Pole error zawiera przyczynę, a LIBRE_CORDIS_TRACE=true dodaje dziennik aktywacji. Typowe przyczyny opisuje Rozwiązywanie problemów.