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.
| Dokument | Właściciel | Struktura | Cel |
|---|---|---|---|
cordis.patch.yml | Cordis Loader | Tablica YAML najwyższego poziomu | Wiersze wtyczek ładujące silnik |
cordis.config.yml | Host Libre WebUI | Mapa YAML | Dostawca, ź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
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ło | Skutek |
|---|---|
LIBRE_CORDIS_ENABLED zmienna środowiskowa | true/false wymusza stan dla wdrożenia |
features.enabled w cordis.config.yml | Jawna 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
| Klucz | Typ | Domyślnie | Znaczenie |
|---|---|---|---|
trace | logiczny | false | Rejestrowanie każdej zmiany aktywacji Cordis |
model | mapa | – | Wybór adaptera modelu; zobacz niżej |
features | mapa | – | Przełączniki funkcji; zobacz niżej |
features
| Klucz | Typ | Domyślnie | Znaczenie |
|---|---|---|---|
enabled | logiczny | false | Załadowanie silnika; wyłączenie daje 503 na wszystkich trasach. |
streaming | logiczny | true | Przyjmowanie tur strumieniujących wynik modelu |
tools | logiczny | true | Zezwolenie na narzędzia silnika i udostępnienie rejestru |
persistence | logiczny | true | Włą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
| Klucz | Typ | Domyślnie | Znaczenie |
|---|---|---|---|
provider | tekst | libre-webui | libre-webui, deepseek, pi-ai albo none |
apiKeyEnv | tekst | OPENAI_API_KEY | Nazwa zmiennej środowiskowej z kluczem |
route | tekst | libre-webui | Trasa dostawcy wskazywana przez silnik w żądaniach |
model | tekst | '' | ID żądanego modelu. Ustaw dla ręcznie deklarowanej trasy |
baseUrl | tekst | '' | Nadpisanie adresu; pusta wartość używa domyślnej adaptera |
providers | mapa | {} | 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-webuikorzysta z własnej warstwy dostawców wdrożenia. To tryb wspierany i domyślny.noneuruchamia silnik bez modelu. Lista narzędzi i sesje działają, lecz tura nie otrzyma odpowiedzi; przydaje się to do testowania kompozycji.deepseekipi-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:
| Pole | Znaczenie |
|---|---|
displayName | Czytelna nazwa |
api | Protokół transmisji, np. openai-completions |
baseURL | Bazowy adres punktu końcowego |
apiKeyEnv | Zmienna środowiskowa z kluczem |
models | Lista 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
| Pole | Wymagane | Znaczenie |
|---|---|---|
id | nie | Stałe ID do wskazania wiersza; domyślnie z name |
name | tak | Specyfikator modułu importowany przez Loader; musi być literałem |
config | nie | Konfiguracja wtyczki; obsługuje !!js |
disabled | nie | Pominięcie wiersza bez usuwania; obsługuje !!js |
inject | nie | Dodatkowe 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:
| Wiersz | Dostarcza | Wymaga |
|---|---|---|
dsh-llm | llm | pętla agenta |
dsh-session | sessions | pętla agenta, most |
dsh-session-projection | sessionProjections | pętla agenta |
dsh-system-prompt | systemPrompt | narzędzia, pętla agenta |
dsh-tools | tools | pętla agenta, most |
dsh-agent | agents | most |
dsh-agent-loop | sterownik agenta | odpowiedzi na tury |
| wiersz mostu | libreDshEngine | każ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ą.
| Zmienna | Zastępuje | Domyślnie |
|---|---|---|
LIBRE_CORDIS_ENABLED | features.enabled | false |
LIBRE_CORDIS_STREAMING | features.streaming | true |
LIBRE_CORDIS_TOOLS | features.tools | true |
LIBRE_CORDIS_PERSISTENCE | features.persistence | true |
LIBRE_CORDIS_TRACE | trace | false |
LIBRE_CORDIS_MODEL_PROVIDER | model.provider | libre-webui |
LIBRE_CORDIS_MODEL_ROUTE | model.route | libre-webui |
LIBRE_CORDIS_MODEL | model.model | '' |
LIBRE_CORDIS_API_KEY_ENV | model.apiKeyEnv | OPENAI_API_KEY |
LIBRE_CORDIS_BASE_URL | model.baseUrl | '' |
LIBRE_CORDIS_CONFIG | Ścieżka dokumentu kompozycji | <cwd>/cordis.patch.yml |
LIBRE_CORDIS_SETTINGS | Ścieżka dokumentu ustawień | obok dokumentu kompozycji |
LIBRE_CORDIS_WORKSPACE | Domyślny obszar silnika | <DATA_DIR>/cordis-workspace |
LIBRE_CORDIS_SESSION_STORE | Katalog 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_USERna 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.