Μετάβαση στο κύριο περιεχόμενο

Ρύθμιση Cordis

Η ενσωματωμένη μηχανή χρησιμοποιεί δύο έγγραφα και μεταβλητές περιβάλλοντος. Τα έγγραφα βρίσκονται αρχικά δίπλα στο backend· τα LIBRE_CORDIS_CONFIG και LIBRE_CORDIS_SETTINGS αλλάζουν θέση.

ΈγγραφοΙδιοκτήτηςΜορφήΣκοπός
cordis.patch.ymlCordis LoaderYAML array ανώτατου επιπέδουΕγγραφές plugins που φορτώνουν μηχανή
cordis.config.ymlHost Libre WebUIYAML mappingΠάροχος, πηγή διαπιστευτηρίων και διακόπτες

Είναι χωριστά επειδή το Cordis Include διαβάζει τη σύνθεση και δέχεται μόνο array ανώτατου επιπέδου. Οι ρυθμίσεις host δεν χωρούν στο ίδιο αρχείο.

Ενεργοποίηση

Επιλογή Cordis Engine στα Settings, δίπλα στην επιλογή Agents.

Ο διαχειριστής ενεργοποιεί από Settings → User Management → Access & policies → Cordis Engine. Η αλλαγή ισχύει αμέσως: η ενεργοποίηση ξεκινά τη μηχανή στο επόμενο αίτημα, η απενεργοποίηση την αποδεσμεύει. Δεν χρειάζεται restart.

Δύο πηγές εγκατάστασης δεσμεύουν την τιμή και κλειδώνουν τον διακόπτη αντί να υπερκαλύπτονται σιωπηρά:

ΠηγήΑποτέλεσμα
LIBRE_CORDIS_ENABLED μεταβλητή περιβάλλοντοςtrue/false καθορίζει τη δυνατότητα για την εγκατάσταση
features.enabled στο cordis.config.ymlΡητή τιμή δεσμεύει την επιλογή· χωρίς κλειδί αποφασίζει διαχειριστής

Απαιτείται και σύνθεση. Ξεκινήστε με τα παρεχόμενα παραδείγματα:

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

Ο host διαβάζει cordis.patch.yml, συγχωνεύει defaults στην εγγραφή γέφυρας και γράφει <DATA_DIR>/cordis-runtime/cordis.composed.yml. Το παραγόμενο αρχείο είναι αναλώσιμο και δεν το επεξεργάζεστε· αυθεντικό είναι το cordis.patch.yml του operator.

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

Κλειδιά ανώτατου επιπέδου

ΚλειδίΤύποςΠροεπιλογήΣημασία
tracebooleanfalseΚαταγραφή κάθε μετάβασης ενεργοποίησης
modelmappingΕπιλογή adapter μοντέλου· δείτε παρακάτω
featuresmappingΔιακόπτες δυνατοτήτων· δείτε παρακάτω

features

ΚλειδίΤύποςΠροεπιλογήΣημασία
enabledbooleanfalseΦόρτωση μηχανής· ανενεργή επιστρέφει 503 παντού.
streamingbooleantrueΑποδοχή γύρων με ροή απάντησης
toolsbooleantrueΕργαλεία μηχανής και προβολή μητρώου
persistencebooleantrueΕνεργοποίηση και απαίτηση JSONL· συνεδρίες επιζούν restart

Το features.enabled είναι ο μόνος διακόπτης που απαιτείται για ενεργοποίηση. Ανώτατο enabled δεν διαβάζεται· όλα τα switches βρίσκονται στο features, σε ένα σημείο.

model

ΚλειδίΤύποςΠροεπιλογήΣημασία
providerσυμβολοσειράlibre-webuilibre-webui, deepseek, pi-ai ή none
apiKeyEnvσυμβολοσειράOPENAI_API_KEYΌνομα μεταβλητής περιβάλλοντος με το κλειδί
routeσυμβολοσειράlibre-webuiΔιαδρομή παρόχου που ζητά η μηχανή
modelσυμβολοσειρά''ID μοντέλου. Ορίστε το για χειροκίνητη διαδρομή
baseUrlσυμβολοσειρά''Παράκαμψη endpoint· κενό χρησιμοποιεί default adapter
providersmapping{}Χειροκίνητες διαδρομές ανά όνομα

Προέλευση μοντέλων της μηχανής

Η μηχανή δεν έχει ανεξάρτητη ρύθμιση παρόχων. Χρησιμοποιεί τους υπάρχοντες LWUI μέσω libre-webui, καταχωρισμένου από το libre-webui-llm-adapter. Ό,τι χρησιμοποιείτε σε Chat είναι διαθέσιμο στη μηχανή: κατεβάζοντας μοντέλο στο UI, το βλέπει με ήδη ρυθμισμένα credentials και endpoint.

Ορίστε model.provider: libre-webui, την παρεχόμενη προεπιλογή. Διαπιστευτήρια και διευθύνσεις παραμένουν στις ρυθμίσεις LWUI.

Το model ονομάζει το ζητούμενο μοντέλο. Κενό σημαίνει προεπιλογή εφαρμογής· χωρίς προεπιλογή επιλέγεται το πρώτο chat model των παρόχων, προτιμώντας διαθέσιμα τοπικά. Embedding μοντέλα αποκλείονται. Οι εσωτερικές διαδρομές κρατούν μοντέλο και πάροχο: lwui:ollama:<encoded-model> ή lwui:plugin:<encoded-provider>:<encoded-model>. Ίδια ονόματα ή διακοπή Ollama δεν ανακατευθύνουν τοπικό αίτημα σε απομακρυσμένο πάροχο. Ρητή μη διαθέσιμη επιλογή αποτυγχάνει, χωρίς σιωπηλή αλλαγή.

Κενό model είναι ασφαλές μόνο στο libre-webui. Διαδρομή πακέτου παρόχου απαιτεί ρητό μοντέλο: το dsh-llm-pi-ai επιλύει ερωτήσεις καταλόγου, αλλά δεν καταφεύγει στην πρώτη εγγραφή. Χειροκίνητη διαδρομή χωρίς model αρνείται γύρο με:

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

Ορίστε model από τη λίστα models. Το παράδειγμα συνδυάζει route: ollama και model: llama3.2, που αντιστοιχεί στο δηλωμένο llama3.2.

Το provider επιλέγει φορτωμένο πακέτο adapter:

  • Το libre-webui χρησιμοποιεί το επίπεδο παρόχων της εγκατάστασης· είναι η υποστηριζόμενη προεπιλογή.
  • Το none ξεκινά χωρίς πρόσβαση μοντέλου. Εργαλεία απαριθμούνται και συνεδρίες δουλεύουν, αλλά γύρος δεν απαντάται· χρήσιμο για έλεγχο σύνθεσης.
  • Τα deepseek και pi-ai φορτώνουν πακέτο άμεσα. Δεν είναι εξαρτήσεις του backend: όλα τα SDK πρόσθεταν 59 μεταβατικά πακέτα, με παρωχημένα για δυνατότητες που δεν χρησιμοποιούνται. Εγκαταστήστε το επιθυμητό πακέτο και εγγραφή· ο host ονομάζει ό,τι λείπει.

Μια διαδρομή περιγράφεται με:

ΠεδίοΣημασία
displayNameΑναγνώσιμο όνομα
apiΠρωτόκολλο μεταφοράς, π.χ. openai-completions
baseURLΒάση endpoint
apiKeyEnvΜεταβλητή που περιέχει το κλειδί
modelsΛίστα μοντέλων· κάθε εγγραφή έχει id, name, contextWindow, maxTokens

Τα διαπιστευτήρια δεν γράφονται ποτέ στα έγγραφα. Το apiKeyEnv δίνει όνομα μεταβλητής που ο adapter διαβάζει ανά αίτημα· περιστροφή κλειδιού δεν χρειάζεται restart.

cordis.patch.yml

Array εγγραφών Cordis Loader ανώτατου επιπέδου. Το προτεινόμενο παράδειγμα φορτώνει εννέα εγγραφές.

- 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'

Πεδία εγγραφής

ΠεδίοΑπαιτείταιΣημασία
idόχιΣταθερό ID· αν λείπει προκύπτει από name
nameναιModule προς import· απαιτείται κυριολεκτικό string
configόχιΡύθμιση plugin· επιτρέπεται !!js
disabledόχιΠαράλειψη χωρίς αφαίρεση· επιτρέπεται !!js
injectόχιΕπιπλέον υπηρεσίες ή ρύθμιση intercept

Το name εισάγεται άμεσα, δεν αξιολογείται, άρα δεν μπορεί να είναι !!js. Το config επιτρέπει !!js, αξιολογούμενο αργότερα στο fiber της εγγραφής με το Loader context διαθέσιμο. process.env και ctx.get(...) λειτουργούν, import.meta όχι.

Οι σχετικοί προσδιοριστές επιλύονται ως προς τον κατάλογο του αρχείου σύνθεσης. Απλά ονόματα μέσω του backend πακέτου: το @deepseek-ai/dsh-tools βρίσκει το αντίγραφο στο backend/node_modules.

Η σειρά δεν καθορίζει φόρτωση. Cordis ενεργοποιεί όταν οι εξαρτήσεις υπάρχουν· η ομαδοποίηση βοηθά μόνο την ανάγνωση.

Απαιτούμενες εγγραφές

Για μηχανή που απαντά σε chat χρειάζονται όλα:

ΕγγραφήΠαρέχειΑπαιτείται από
dsh-llmllmβρόχος agent
dsh-sessionsessionsβρόχος agent, γέφυρα
dsh-session-projectionsessionProjectionsβρόχος agent
dsh-system-promptsystemPromptεργαλεία, βρόχος agent
dsh-toolstoolsβρόχος agent, γέφυρα
dsh-agentagentsγέφυρα
dsh-agent-loopοδηγός agentαπάντηση γύρων
εγγραφή γέφυραςlibreDshEngineόλες οι διαδρομές

Φόρτωση plugin εργαλείων, όπως @deepseek-ai/dsh-fs-sandbox με @deepseek-ai/dsh-tool-fs, κάνει το GET /api/cordis/tools να έχει αποτελέσματα. Μητρώο χωρίς tool plugins είναι σωστά κενό.

Μεταβλητές περιβάλλοντος

Κάθε ρύθμιση έχει override περιβάλλοντος. Η μεταβλητή υπερισχύει του εγγράφου, το έγγραφο της ενσωματωμένης προεπιλογής.

ΜεταβλητήΥπερισχύειΠροεπιλογή
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Διαδρομή εγγράφου σύνθεσης<cwd>/cordis.patch.yml
LIBRE_CORDIS_SETTINGSΔιαδρομή ρυθμίσεωνδίπλα στο έγγραφο σύνθεσης
LIBRE_CORDIS_WORKSPACEΠροεπιλεγμένος χώρος εργασίας<DATA_DIR>/cordis-workspace
LIBRE_CORDIS_SESSION_STOREΚατάλογος μόνιμων συνεδριών<DATA_DIR>/cordis-sessions

Οι boolean μεταβλητές δέχονται 1/true/yes/on και 0/false/no/off. Μη αναγνώσιμη τιμή επιστρέφει στο έγγραφο αντί εικασίας.

Τα παρεχόμενα !!js διαβάζουν και LIBRE_CORDIS_SESSION_STORE και LIBRE_CORDIS_WORKSPACE· γι’ αυτό εξάγονται από τον host πριν φορτωθεί το δέντρο.

Πρακτικά παραδείγματα

Τοπικό Ollama, πλήρως 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 αγνοεί το κλειδί, αλλά ο OpenAI client απαιτεί ένα. Εξάγετε OLLAMA_API_KEY=ollama χωρίς επινόηση μυστικού. Τίποτε δεν φεύγει από το μηχάνημα.

OpenAI-compatible gateway

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

Επίσημο DeepSeek

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

Ορίστε DEEPSEEK_API_KEY στο περιβάλλον backend.

Χωρίς πάροχο, μόνο εργαλεία

features:
enabled: true
model:
provider: none

Η μηχανή ξεκινά, δημιουργούνται συνεδρίες και το GET /api/cordis/tools δείχνει plugins. Η αποστολή μηνύματος αποτυγχάνει χωρίς adapter για το αίτημα.

Σημειώσεις μετάβασης

Η γέφυρα είναι πρόσθετη. Ανενεργή, όπως προεπιλεγμένα, δεν αλλάζει υπάρχουσα συμπεριφορά.

Αναβάθμιση εγκατάστασης. Δεν απαιτείται ενέργεια. Τα cordis.patch.example.yml και cordis.config.example.yml δεν χρησιμοποιούνται μέχρι αντιγραφή και ενεργοποίηση. Δεν τρέχει migration, δεν φτιάχνεται πίνακας και δεν αγγίζεται υπάρχων κατάλογος δεδομένων.

Πρώτη ενεργοποίηση. Αντιγράψτε τα παραδείγματα, ορίστε features.enabled: true· τα πακέτα είναι ήδη dependencies backend. Το πρώτο αίτημα δημιουργεί <DATA_DIR>/cordis-workspace, <DATA_DIR>/cordis-sessions και <DATA_DIR>/cordis-runtime, κάτω από τον υπάρχοντα κατάλογο δεδομένων. Backup ή restore εκείνου καλύπτει και αυτά.

Αναβάθμιση μηχανής. Οι εκδόσεις καταγράφονται σε package-lock.json, με alpha-compatible ranges στο backend/package.json. Αναβαθμίστε συνειδητά και ελέγξτε συμβάσεις παρόχων και συνεδριών μετά το npm install. Νέο peer dependency αναφέρεται στην εγκατάσταση, όχι στη φόρτωση. Μορφές μοντέλων και συνεδριών ανήκουν στο DSH· οι αλλαγές τους είναι σημειώσεις DSH, όχι migrations LWUI.

Αναίρεση. Θέστε features.enabled: false και επανεκκινήστε ή αφαιρέστε τη γέφυρα από cordis.patch.yml. Το libreDshEngine, ο listener και οι agents αποσύρονται. Τα αρχεία μένουν ως δεδομένα· διαγράψτε sessionStorePath για χώρο. Αφαίρεση πακέτων είναι προαιρετική και δεν επηρεάζει άλλες δυνατότητες.

Υπάρχον Chat και Work. Το Chat αποκτά επιλογή DSH μόνο για διαχειριστές, με προσωρινές συνεδρίες και υπάρχον ιστορικό. Το Work αποκτά χωριστή μηχανή, απομονωμένο οδηγό και την υφιστάμενη διαδρομή εγκρίσεων/sandbox. Οι παλιές επιλογές μοντέλων δεν αλλάζουν.

Με libre-webui, το Agents του Chat περιλαμβάνει συγκεκριμένες επιλογές DSH παρόχου-μοντέλου και βασικό προφίλ. Οι συγκεκριμένες διατηρούν πλήρη ταυτότητα· η βάση χρησιμοποιεί την προεπιλογή ενεργής σύνθεσης. Τίτλοι και περιλήψεις καλούν τον πάροχο απευθείας, χωρίς εργαλεία. Custom adapter κρατά μόνο τη βάση και χρειάζεται χωριστό Ollama ή plugin task model για αυτές τις λειτουργίες.

Το DSH σέβεται τον διακόπτη Ollama. Αν είναι κλειστό, τα μοντέλα δεν εμφανίζονται ούτε ελέγχονται και ρητή επιλογή αποτυγχάνει χωρίς άλλον πάροχο. Μη πλήρως προσδιορισμένα ονόματα του operator χρειάζονται επίσης κατάλογο Ollama για ασφαλή επίλυση. Για plugin-only εγκατάσταση χρησιμοποιήστε lwui:plugin:<plugin>:<model>.

Λειτουργικά όρια

  • Host Engine και Chat είναι μόνο για διαχειριστές και solo. Η σελίδα είναι κοινή κονσόλα με τοπικό JSONL, όχι για team. Το Work χρησιμοποιεί τα υπάρχοντα SQL repositories.
  • Το μοντέλο χρησιμοποιεί τον αυθεντικοποιημένο καλούντα. Διαδραστικοί γύροι χρησιμοποιούν τα δικά του credentials και default μοντέλο. Έμπιστη μη διαδραστική σύνθεση μπορεί να ορίσει LIBRE_CORDIS_USER σε ενεργό διαχειριστή. Δεν επιλέγεται σιωπηλά ο παλαιότερος διαχειριστής.
  • Τα host αρχεία περιορίζονται στο workspace. Ανάγνωση/γραφή ελέγχουν canonical στόχο· συνεδρία δεν επιλέγει κατάλογο έξω από τη ρίζα. Ισχύουν οι περιορισμοί DSH. Επιπλέον operator plugins είναι έμπιστος κώδικας server.
  • Τα host εργαλεία χρησιμοποιούν πολιτικές DSH. Engine δίνει read-only/workspace-write και εφάπαξ approvals χωρίς παράκαμψη ορίου. Headless Chat αρνείται ερωτήσεις που δεν δείχνονται. Το Work χρησιμοποιεί δικές του εγκρίσεις και containers, χωρίς host filesystem tools.
  • Οι ροές περιέχουν ζωντανό κείμενο και διαθέσιμο reasoning. Τα μόνιμα μηνύματα κρατούν την τελική συνομιλία χωρίς δεύτερη αποστολή κειμένου.
  • Restart και διαγραφή χρησιμοποιούν αποθηκευμένες συνεδρίες. Άδειες και ολοκληρωμένες επιζούν restart. Διαγραφή JSONL σταματά writer και αφαιρεί αρχείο· άλλες υλοποιήσεις χρειάζονται σωστό deletion adapter.
  • Παλιά αλλοιωμένα logs απαιτούν ρητή επισκευή. Μηνύματα χωρίς ID αρνούνται από τον αυστηρό reader αντί να απορρίπτονται. Δείτε Αντιμετώπιση προβλημάτων.
  • Οι τίτλοι παράγονται τοπικά. Το πρώτο ανθρώπινο μήνυμα γίνεται σύντομος τίτλος· άδεια συνεδρία δεν έχει παραγόμενο τίτλο.

Σύνδεση μοντέλων από ενεργή εγκατάσταση DSH

Το προαιρετικό dsh-native-provider εκθέτει τα ήδη ρυθμισμένα μοντέλα και συνδέσεις άλλης εγκατάστασης, π.χ. της τοπικής web app στη θύρα 3080. Εγκαταστήστε το στο υπάρχον προφίλ. Καλεί μόνο ctx.llm: τα κλειδιά μένουν DSH, δεν δημιουργεί συνεδρίες, δεν τρέχει agents, δεν διαβάζει native attachments και δεν εκτελεί native εργαλεία.

Οι διεργασίες χρειάζονται ίδιο Unix host και OS account. Ρητά ρυθμισμένο Unix socket χρησιμοποιεί φυσικό φάκελο του account με 0700 και socket 0600. Δεν προσθέτει TCP listener ούτε επαναχρησιμοποιεί/αποδυναμώνει browser authentication DSH. Windows και απομακρυσμένοι DSH hosts δεν υποστηρίζονται.

Το OS account είναι τοπικό όριο πρόσβασης: άλλες διεργασίες του μπορούν να χρησιμοποιήσουν το socket. Δεν παρέχονται χωριστά native credentials ή απομόνωση εφαρμογών που μοιράζονται λογαριασμό.

Εγκατάσταση ανεξάρτητου plugin

Στο DSH → Plugins → Add plugin, επικολλήστε το δημόσιο URL στο Package name or address και επιλέξτε Install:

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

Ενεργοποιήστε το component όταν ζητηθεί. Το δημόσιο πακέτο 0.1.1, Apache-2.0, περιέχει έτοιμο runtime και bundle patch. Δεν απαιτεί τοπικό build, installation scripts ή npm runtime dependencies. Το @libre-webui/dsh-native-provider δεν είναι δημοσιευμένο στο npm· χρησιμοποιήστε το GitHub URL.

Το bundle διαλέγει <DSH home>/lwui-provider/llm.sock, κανονικά $HOME/.dsh/lwui-provider/llm.sock, με προτεραιότητα στο DSH_HOME. Ο ιδιωτικός φάκελος δημιουργείται αν λείπει. Χρησιμοποιήστε μία ενεργή γέφυρα ανά DSH home ή άλλο socket στο user cordis.patch.yml για επιπλέον προφίλ. Το πλήρες path πρέπει να χωρά σε 100 UTF-8 bytes και να μην έχει symlink components. Ο ξεχωριστός οδηγός περιγράφει overrides.

Προαιρετική ισοδύναμη CLI εντολή:

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

Αντικαταστήστε το web με το ενεργό προφίλ. Μετά από CLI εγκατάσταση επανεκκινήστε το· εγκατάσταση από live UI μπορεί να ενεργοποιήσει άμεσα. Ακολουθήστε ειδοποιήσεις restart DSH. Δεν χρειάζονται αλλαγές DSH source ή αντίγραφα κλειδιών.

Προετοιμασία bundle από Libre WebUI

Το LWUI περιέχει script προετοιμασίας. Από source checkout, χτίστε backend και νέο output directory:

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

Οι npm διανομές έχουν ήδη έτοιμο backend και script· εκτελέστε τις δύο τελευταίες εντολές από τον κατάλογο εγκατάστασης χωρίς build. Μετά κάντε restart του επιλεγμένου προφίλ. Και οι δύο μέθοδοι αρνούνται υπάρχον output και περιλαμβάνουν metadata, άδεια και οδηγίες.

Σύνδεση Libre WebUI

Δείξτε το cordis.config.yml στο ίδιο απόλυτο socket. Για την προεπιλογή, αντικαταστήστε /absolute/home με το πραγματικό home:

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

Εναλλακτικά ορίστε LIBRE_DSH_PROVIDER_SOCKET. Κενή μεταβλητή απενεργοποιεί τη σύνδεση ακόμη και με path στο αρχείο. Ενεργοποιήστε Cordis Engine. Ενεργοί διαχειριστές επιλέγουν native μοντέλα στο DeepSeek Harness του Work, στη σελίδα Engine και στο Agents του Chat, που απαιτεί επίσης Agent CLI models. Το Work κρατά αρχικό μοντέλο και provider ID ως providerType: dsh· υπάρχουσες LWUI εργασίες κρατούν αρχικό πάροχο και engine marker.

Ο κατάλογος διαβάζεται live. Αλλαγές παρόχου ή credentials ακυρώνουν τη γενιά σύνδεσης και ενεργά αιτήματα. Μη διαθέσιμο socket, μοντέλο ή πάροχος σταματά το αίτημα χωρίς fallback. Τίτλοι/περιλήψεις καλούν απευθείας το LLM χωρίς εργαλεία. Η πρώτη έκδοση δέχεται κείμενο, reasoning και tool messages, όχι native image/file references.

Τα credentials ανήκουν στον operator DSH, άρα η σύνδεση είναι admin-only ακόμη και με ευρύτερο Work. Τα αιτήματα μπορεί να φύγουν από host σύμφωνα με τον πάροχο DSH· το Work δείχνει remote disclosure. Σε team κάθε worker πρέπει να φτάνει την τοπική σύνδεση· απουσία της απαγορεύει εκτέλεση. Απενεργοποίηση Cordis ή αφαίρεση socket αποσύρει πρόσβαση αλλά κρατά εργασίες. Αν crash αφήσει socket, σταματήστε την ιδιοκτήτρια εγκατάσταση και αφαιρέστε μόνο το παλιό socket πριν restart· το plugin δεν αντικαθιστά υπάρχουσα καταχώριση filesystem.

Αναβάθμιση ή αφαίρεση plugin

Ολοκληρώστε ή ακυρώστε native αιτήματα πριν αλλαγή. Για παλιό τοπικό bundle 0.0.0/0.1.0, κάντε Uninstall, επιστρέψτε Add plugin και εγκαταστήστε το GitHub URL. Διατηρήστε custom socket με υποστηριζόμενο user profile override. Native συνεδρίες και credentials διατηρούνται.

Η εγκατάσταση από GitHub αναβαθμίζεται και από CLI:

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

Μετά επανεκκινήστε και ελέγξτε έκδοση. Ανενεργό plugin μένει ανενεργό· ελέγξτε πριν τη δοκιμή. Για pin ή rollback χρησιμοποιήστε github:libre-webui/dsh-native-provider#<commit>. Τοπικό custom bundle πρέπει να χτιστεί σε νέο directory και να προστεθεί ξανά· ενημέρωση τοπικής dependency δεν τραβά GitHub.

Για αφαίρεση, πρώτα αφαιρέστε nativeProvider.socketPath από LWUI ή αδειάστε LIBRE_DSH_PROVIDER_SOCKET, έπειτα:

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

Επανεκκινήστε το προφίλ. Οι LWUI εργασίες μένουν, αλλά native αιτήματα αποτυγχάνουν μέχρι επαναφορά της ίδιας ρητής σύνδεσης. Δεν διαγράφονται providers ή credentials DSH. Σβήστε παλιά bundle directories μόνο όταν δεν είναι πια εγκατεστημένα.

Χρήση εγγενούς παρόχου

Τα αιτήματα εμφανίζονται στο Provider Usage ως DeepSeek Harness · provider, με αρχικό μοντέλο. Κάθε πραγματικό αίτημα μετρά μία φορά, μαζί με γύρους εργαλείων, τίτλους και περιλήψεις. Ο πίνακας δείχνει επιτυχίες, σφάλματα, ακυρώσεις, latency και tokens DSH. Cached input μετρά μία φορά· ελλιπής χρήση μένει αμέτρητη, όχι εκτιμώμενη. Τα ID dsh-native:<percent-encoded-native-provider-id> χρησιμοποιούν υπάρχοντες κανόνες τιμών και κόστους. Άγνωστη τιμή μένει ατιμολόγητη.

DSH μέσω LWUI κρατά τις εγγραφές των παρόχων. Catalog reads και απορρίψεις πριν το inference δεν δημιουργούν πρόσθετα calls. Η μέτρηση αρχίζει με εγκατάσταση αυτής της έκδοσης, δεν επινοεί ιστορικό. Αποθηκεύει ταυτότητα, κατάσταση, χρόνο και μετρητές, χωρίς prompts, απαντήσεις, credentials, endpoints ή κείμενο σφαλμάτων παρόχου.

Έλεγχος ρύθμισης

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 με code: CORDIS_UNAVAILABLE σημαίνει μη φορτωμένη σύνθεση. Το error δίνει αιτία και το LIBRE_CORDIS_TRACE=true το activation log. Δείτε Αντιμετώπιση προβλημάτων για συνηθισμένες αιτίες.