Ρύθμιση Cordis
Η ενσωματωμένη μηχανή χρησιμοποιεί δύο έγγραφα και μεταβλητές περιβάλλοντος. Τα έγγραφα βρίσκονται αρχικά δίπλα στο backend· τα LIBRE_CORDIS_CONFIG και LIBRE_CORDIS_SETTINGS αλλάζουν θέση.
| Έγγραφο | Ιδιοκτήτης | Μορφή | Σκοπός |
|---|---|---|---|
cordis.patch.yml | Cordis Loader | YAML array ανώτατου επιπέδου | Εγγραφές plugins που φορτώνουν μηχανή |
cordis.config.yml | Host Libre WebUI | YAML mapping | Πάροχος, πηγή διαπιστευτηρίων και διακόπτες |
Είναι χωριστά επειδή το Cordis Include διαβάζει τη σύνθεση και δέχεται μόνο array ανώτατου επιπέδου. Οι ρυθμίσεις host δεν χωρούν στο ίδιο αρχείο.
Ενεργοποίηση
Ο διαχειριστής ενεργοποιεί από 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
Κλειδιά ανώτατου επιπέδου
| Κλειδί | Τύπος | Προεπιλογή | Σημασία |
|---|---|---|---|
trace | boolean | false | Καταγραφή κάθε μετάβασης ενεργοποίησης |
model | mapping | – | Επιλογή adapter μοντέλου· δείτε παρακάτω |
features | mapping | – | Διακόπτες δυνατοτήτων· δείτε παρακάτω |
features
| Κλειδί | Τύπος | Προεπιλογή | Σημασία |
|---|---|---|---|
enabled | boolean | false | Φόρτωση μηχανής· ανενεργή επιστρέφει 503 παντού. |
streaming | boolean | true | Αποδοχή γύρων με ροή απάντησης |
tools | boolean | true | Εργαλεία μηχανής και προβολή μητρώου |
persistence | boolean | true | Ενεργοποίηση και απαίτηση JSONL· συνεδρίες επιζούν restart |
Το features.enabled είναι ο μόνος διακόπτης που απαιτείται για ενεργοποίηση. Ανώτατο enabled δεν διαβάζεται· όλα τα switches βρίσκονται στο features, σε ένα σημείο.
model
| Κλειδί | Τύπος | Προεπιλογή | Σημασία |
|---|---|---|---|
provider | συμβολοσειρά | libre-webui | libre-webui, deepseek, pi-ai ή none |
apiKeyEnv | συμβολοσειρά | OPENAI_API_KEY | Όνομα μεταβλητής περιβάλλοντος με το κλειδί |
route | συμβολοσειρά | libre-webui | Διαδρομή παρόχου που ζητά η μηχανή |
model | συμβολοσειρά | '' | ID μοντέλου. Ορίστε το για χειροκίνητη διαδρομή |
baseUrl | συμβολοσειρά | '' | Παράκαμψη endpoint· κενό χρησιμοποιεί default adapter |
providers | mapping | {} | Χειροκίνητες διαδρομές ανά όνομα |
Προέλευση μοντέλων της μηχανής
Η μηχανή δεν έχει ανεξάρτητη ρύθμιση παρόχων. Χρησιμοποιεί τους υπάρχοντες 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-llm | llm | βρόχος agent |
dsh-session | sessions | βρόχος agent, γέφυρα |
dsh-session-projection | sessionProjections | βρόχος agent |
dsh-system-prompt | systemPrompt | εργαλεία, βρόχος agent |
dsh-tools | tools | βρόχος agent, γέφυρα |
dsh-agent | agents | γέφυρα |
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_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 | Διαδρομή εγγράφου σύνθεσης | <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. Δείτε Αντιμετώπιση προβλημάτων για συνηθισμένες αιτίες.