dsh-think-translate 1.2.8 → 1.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.de.md +115 -111
- package/README.es.md +115 -111
- package/README.fr.md +115 -111
- package/README.ja.md +115 -111
- package/README.ko.md +115 -111
- package/README.md +117 -113
- package/README.ru.md +115 -111
- package/README.zh-CN.md +115 -111
- package/lib/client.js +2655 -2623
- package/lib/index.js +1645 -1597
- package/package.json +74 -74
package/README.de.md
CHANGED
|
@@ -1,112 +1,116 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
|
|
3
|
-
# 🐋 dsh-think-translate
|
|
4
|
-
|
|
5
|
-
**Sprachen:** [English](README.md) · [中文](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Español](README.es.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md)
|
|
6
|
-
|
|
7
|
-
[](https://www.npmjs.com/package/dsh-think-translate)
|
|
8
|
-
[](LICENSE)
|
|
9
|
-
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
10
|
-
|
|
11
|
-
<img src="demo/demo.gif?v=2" width="46%" alt="dsh-think-translate demo" style="border:1px solid #4D6BFE;border-radius:8px;margin:4px" /> <img src="demo/demo2.gif?v=2" width="41%" alt="dsh-think-translate demo 2" style="border:1px solid #4D6BFE;border-radius:8px;margin:4px" />
|
|
12
|
-
|
|
13
|
-
</div>
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
Übersetzung auf Anzeigeebene für die Web-Oberfläche von [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness): Die **Gedankenkette (Think-Zeile), Aufgabenkarten und der Antworttext** werden in der gewählten Zielsprache angezeigt, während die Originale im Verlauf unverändert bleiben und der übersetzte Text **nie in den Modellkontext gelangt**.
|
|
18
|
-
|
|
19
|
-
## ✨ Funktionen
|
|
20
|
-
|
|
21
|
-
Modelle der DeepSeek-Familie denken oft auf Chinesisch — oder in der Sprache, in der sie gerade denken. dsh-think-translate zeigt die Think-Zeile, Aufgabenkarten und die Antwort live in *Ihrer* Sprache an, wie Untertitel für das Denken des Modells.
|
|
22
|
-
|
|
23
|
-
- **🕵️ Jede Gedankenkette lesbar** — Reasoning, Gedankenkette, Aufgabenkarten und Antworten in Echtzeit übersetzt, in Stapeln gestreamt
|
|
24
|
-
- **8 Zielsprachen** — 中文 / English / 日本語 / 한국어 / Español / Français / Deutsch / Русский
|
|
25
|
-
- **Einsprachige Oberfläche** — Einstellungsbereich, Denkzeilen und Aufgabenkarten folgen der Zielsprache (kein zh/en-Gemisch); die Auswahl bleibt erhalten
|
|
26
|
-
- **Lokales
|
|
27
|
-
- **🧠 Null Kontextkosten** — reine Anzeigeschicht: das Modell sieht weiterhin den Originaltext, und übersetzter Text verbraucht niemals das Kontextfenster
|
|
28
|
-
- **Google / Bing-Fallback** — automatische Umschaltung, wenn das lokale Modell nicht verfügbar ist (google nutzt einen Node-CONNECT-Tunnel über den Systemproxy)
|
|
29
|
-
- **Code-Artefakte übersprungen** — Pfade, Befehle, URLs, Regexes und reine Codezeilen werden nie übersetzt
|
|
30
|
-
- **Satzweise Batch-Übersetzung** — lange Denkketten werden in kleinen Sätzen übersetzt, damit lokale kleine Modelle Qualität behalten
|
|
31
|
-
- **🧩 Absatz- und satzweise Zerlegung** — lange Denkketten werden an Leerzeilen geteilt (Absatzstruktur bleibt erhalten) und zusätzlich satzweise gebündelt, damit kleine lokale Modelle Qualität behalten
|
|
32
|
-
- **Streaming-Ausgabe** — Übersetzungen erscheinen während des Denkens batchweise; Think-Zeile aufklappen zum Vergleich mit dem Original
|
|
33
|
-
- **🎚️ Einstellbarer Übersetzungszeitpunkt** — alles vorübersetzen / alte Ketten lazy laden (Standard) / nur beim Aufklappen
|
|
34
|
-
- **🔗 Dynamische Anbieter-Kette** — die Listenreihenfolge ist die Ausführungsreihenfolge: ziehen zum Sortieren, jede Zeile einzeln ein-/ausschalten. Integriert google gtx / bing / lokales Ollama plus beliebige eigene Endpunkte
|
|
35
|
-
- **🔌 Eigene Anbieter (OpenAI & Anthropic)** — im Panel jeden OpenAI-kompatiblen Endpunkt (`/v1/chat/completions`) oder die **Anthropic Messages API** (Claude) hinzufügen: Typ, Vorlage, Basis-URL, API-Schlüssel, Modell
|
|
36
|
-
- **🪄 DSH-konfigurierte Anbieter übernehmen** — liest schreibgeschützte DSH-Zeilen aus `settings.yaml` (`llm-pi-ai.providers`); eine Schaltfläche liest neu ein und fügt alle der Kette hinzu. Der Schlüssel wird pro Anfrage aus `.credentials.yaml` aufgelöst und nie in der Plugin-Konfiguration gespeichert. Auch die eigene Standardroute des Harness zählt: zeigt `agent-default-model` auf `deepseek-official`, erscheint die offizielle DeepSeek-API als weitere DSH-Zeile
|
|
37
|
-
- **⏱️ Robust** —
|
|
38
|
-
|
|
39
|
-
## 📦 Installation
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
# Option 1: npm (empfohlen)
|
|
43
|
-
dsh plugin --profile web add dsh-think-translate
|
|
44
|
-
# dann web neu starten
|
|
45
|
-
|
|
46
|
-
# Option 2: GitHub
|
|
47
|
-
dsh plugin --profile web add github:UncleK/dsh-think-translate
|
|
48
|
-
|
|
49
|
-
# Option 3: manuell (Junction + Patch)
|
|
50
|
-
# 1. Paket in das node_modules des Profils verlinken
|
|
51
|
-
New-Item -ItemType Junction -Path "$HOME\.dsh\profiles\node_modules\dsh-think-translate" `
|
|
52
|
-
-Target "<Repository-Pfad>"
|
|
53
|
-
# 2. zu "$HOME\.dsh\profiles\web\cordis.patch.yml" hinzufügen:
|
|
54
|
-
# - insert:
|
|
55
|
-
# - id: dsh-think-translate
|
|
56
|
-
# name: dsh-think-translate
|
|
57
|
-
# 3. web neu starten
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## 🧯 Nach einem DSH-Upgrade
|
|
61
|
-
|
|
62
|
-
Client-Plugins von Drittanbietern werden über den Client-Modulgraphen von DSH geladen, und dieser Graph wird **pro Prozess nur einmal** zusammengesetzt – eine fehlgeschlagene Komposition bleibt bis zum Neustart im Speicher. Deshalb passieren direkt nach einem Upgrade meist diese drei Dinge.
|
|
63
|
-
|
|
64
|
-
- **Der Start aus einem Source-Checkout schlägt fehl** mit `client bundles not found; run \`pnpm run build\` before launch` —— die neuen Client-Pakete sind nicht gebaut: führe `pnpm run build` im Harness-Checkout aus und starte `dsh web` erneut.
|
|
65
|
-
- **Die Plugin-Oberfläche ist verschwunden** (keine übersetzte Think-Zeile, kein Abschnitt *Übersetzung der Gedankenkette* in den Einstellungen) —— **starte `dsh web` einmal neu**; ein bloßes Neuladen der Seite reicht manchmal nicht.
|
|
66
|
-
- **Die Liste der lokalen Modelle ist leer** —— der `ollama`-Dienst bedient dieses Modellverzeichnis nicht: prüfe `ollama list` (oder `GET /api/tags`) und das `OLLAMA_MODELS`, das der laufende Dienst tatsächlich verwendet. Liegen die Modelldateien auf einem anderen Laufwerk, kann ein Verzeichnis-Junction das Standardverzeichnis des Dienstes dorthin zeigen lassen.
|
|
67
|
-
|
|
68
|
-
Am Plugin ist nichts zu konfigurieren: Es deklariert keine Reihenfolge-Abhängigkeit zu DSH-Interna (es bindet nur den `slots`-Dienst und optional `@deepseek-ai/dsh-client-ui-primitives`) und läuft daher sowohl auf älterem DSH (≤ 0.1.1-rc) als auch auf der aktuellen Linie (≥ 0.1.2-alpha.1, inklusive 0.1.5-rc.1).
|
|
69
|
-
|
|
70
|
-
Für DSH **0.2.0-rc.2** verwenden Sie **dsh-think-translate 1.2.5 oder neuer**. Version 1.2.5 behebt den Registrierungskonflikt des Slots `todo_write` und deklariert den Peer-Versionsbereich 0.2. Führen Sie `dsh plugin --profile web add dsh-think-translate@latest` aus und starten Sie DSH neu; eine Versionsausnahme ist nicht nötig.
|
|
71
|
-
|
|
72
|
-
**1.2.6** behebt doppelt angezeigte Gedanken und Antworten in DSH 0.2: Der Renderer und die Originaltext-Anzeige bei Fehlern beachten die Gruppen reasoning/response.
|
|
73
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# 🐋 dsh-think-translate
|
|
4
|
+
|
|
5
|
+
**Sprachen:** [English](README.md) · [中文](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Español](README.es.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md)
|
|
6
|
+
|
|
7
|
+
[](https://www.npmjs.com/package/dsh-think-translate)
|
|
8
|
+
[](LICENSE)
|
|
9
|
+
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
10
|
+
|
|
11
|
+
<img src="demo/demo.gif?v=2" width="46%" alt="dsh-think-translate demo" style="border:1px solid #4D6BFE;border-radius:8px;margin:4px" /> <img src="demo/demo2.gif?v=2" width="41%" alt="dsh-think-translate demo 2" style="border:1px solid #4D6BFE;border-radius:8px;margin:4px" />
|
|
12
|
+
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
Übersetzung auf Anzeigeebene für die Web-Oberfläche von [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness): Die **Gedankenkette (Think-Zeile), Aufgabenkarten und der Antworttext** werden in der gewählten Zielsprache angezeigt, während die Originale im Verlauf unverändert bleiben und der übersetzte Text **nie in den Modellkontext gelangt**.
|
|
18
|
+
|
|
19
|
+
## ✨ Funktionen
|
|
20
|
+
|
|
21
|
+
Modelle der DeepSeek-Familie denken oft auf Chinesisch — oder in der Sprache, in der sie gerade denken. dsh-think-translate zeigt die Think-Zeile, Aufgabenkarten und die Antwort live in *Ihrer* Sprache an, wie Untertitel für das Denken des Modells.
|
|
22
|
+
|
|
23
|
+
- **🕵️ Jede Gedankenkette lesbar** — Reasoning, Gedankenkette, Aufgabenkarten und Antworten in Echtzeit übersetzt, in Stapeln gestreamt
|
|
24
|
+
- **8 Zielsprachen** — 中文 / English / 日本語 / 한국어 / Español / Français / Deutsch / Русский
|
|
25
|
+
- **Einsprachige Oberfläche** — Einstellungsbereich, Denkzeilen und Aufgabenkarten folgen der Zielsprache (kein zh/en-Gemisch); die Auswahl bleibt erhalten
|
|
26
|
+
- **Lokales Ollama** — vorhandene Installation und Modelle werden wiederverwendet. Steht aktiviertes Ollama an erster Stelle oder wird Test angeklickt, startet der Dienst bei Bedarf und lädt das Modell. Fehlende Software/Modelle werden erst über die Vorbereitungsschaltfläche installiert/heruntergeladen, mit Fortschrittsanzeige
|
|
27
|
+
- **🧠 Null Kontextkosten** — reine Anzeigeschicht: das Modell sieht weiterhin den Originaltext, und übersetzter Text verbraucht niemals das Kontextfenster
|
|
28
|
+
- **Google / Bing-Fallback** — automatische Umschaltung, wenn das lokale Modell nicht verfügbar ist (google nutzt einen Node-CONNECT-Tunnel über den Systemproxy)
|
|
29
|
+
- **Code-Artefakte übersprungen** — Pfade, Befehle, URLs, Regexes und reine Codezeilen werden nie übersetzt
|
|
30
|
+
- **Satzweise Batch-Übersetzung** — lange Denkketten werden in kleinen Sätzen übersetzt, damit lokale kleine Modelle Qualität behalten
|
|
31
|
+
- **🧩 Absatz- und satzweise Zerlegung** — lange Denkketten werden an Leerzeilen geteilt (Absatzstruktur bleibt erhalten) und zusätzlich satzweise gebündelt, damit kleine lokale Modelle Qualität behalten
|
|
32
|
+
- **Streaming-Ausgabe** — Übersetzungen erscheinen während des Denkens batchweise; Think-Zeile aufklappen zum Vergleich mit dem Original
|
|
33
|
+
- **🎚️ Einstellbarer Übersetzungszeitpunkt** — alles vorübersetzen / alte Ketten lazy laden (Standard) / nur beim Aufklappen
|
|
34
|
+
- **🔗 Dynamische Anbieter-Kette** — die Listenreihenfolge ist die Ausführungsreihenfolge: ziehen zum Sortieren, jede Zeile einzeln ein-/ausschalten. Integriert google gtx / bing / lokales Ollama plus beliebige eigene Endpunkte
|
|
35
|
+
- **🔌 Eigene Anbieter (OpenAI & Anthropic)** — im Panel jeden OpenAI-kompatiblen Endpunkt (`/v1/chat/completions`) oder die **Anthropic Messages API** (Claude) hinzufügen: Typ, Vorlage, Basis-URL, API-Schlüssel, Modell
|
|
36
|
+
- **🪄 DSH-konfigurierte Anbieter übernehmen** — liest schreibgeschützte DSH-Zeilen aus `settings.yaml` (`llm-pi-ai.providers`); eine Schaltfläche liest neu ein und fügt alle der Kette hinzu. Der Schlüssel wird pro Anfrage aus `.credentials.yaml` aufgelöst und nie in der Plugin-Konfiguration gespeichert. Auch die eigene Standardroute des Harness zählt: zeigt `agent-default-model` auf `deepseek-official`, erscheint die offizielle DeepSeek-API als weitere DSH-Zeile
|
|
37
|
+
- **⏱️ Robust** — fehlgeschlagene Übersetzungen werden 30 Sekunden im Arbeitsspeicher zwischengespeichert und danach automatisch erneut versucht; jede Anbieterzeile hat eine Test-Schaltfläche
|
|
38
|
+
|
|
39
|
+
## 📦 Installation
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Option 1: npm (empfohlen)
|
|
43
|
+
dsh plugin --profile web add dsh-think-translate
|
|
44
|
+
# dann web neu starten
|
|
45
|
+
|
|
46
|
+
# Option 2: GitHub
|
|
47
|
+
dsh plugin --profile web add github:UncleK/dsh-think-translate
|
|
48
|
+
|
|
49
|
+
# Option 3: manuell (Junction + Patch)
|
|
50
|
+
# 1. Paket in das node_modules des Profils verlinken
|
|
51
|
+
New-Item -ItemType Junction -Path "$HOME\.dsh\profiles\node_modules\dsh-think-translate" `
|
|
52
|
+
-Target "<Repository-Pfad>"
|
|
53
|
+
# 2. zu "$HOME\.dsh\profiles\web\cordis.patch.yml" hinzufügen:
|
|
54
|
+
# - insert:
|
|
55
|
+
# - id: dsh-think-translate
|
|
56
|
+
# name: dsh-think-translate
|
|
57
|
+
# 3. web neu starten
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## 🧯 Nach einem DSH-Upgrade
|
|
61
|
+
|
|
62
|
+
Client-Plugins von Drittanbietern werden über den Client-Modulgraphen von DSH geladen, und dieser Graph wird **pro Prozess nur einmal** zusammengesetzt – eine fehlgeschlagene Komposition bleibt bis zum Neustart im Speicher. Deshalb passieren direkt nach einem Upgrade meist diese drei Dinge.
|
|
63
|
+
|
|
64
|
+
- **Der Start aus einem Source-Checkout schlägt fehl** mit `client bundles not found; run \`pnpm run build\` before launch` —— die neuen Client-Pakete sind nicht gebaut: führe `pnpm run build` im Harness-Checkout aus und starte `dsh web` erneut.
|
|
65
|
+
- **Die Plugin-Oberfläche ist verschwunden** (keine übersetzte Think-Zeile, kein Abschnitt *Übersetzung der Gedankenkette* in den Einstellungen) —— **starte `dsh web` einmal neu**; ein bloßes Neuladen der Seite reicht manchmal nicht.
|
|
66
|
+
- **Die Liste der lokalen Modelle ist leer** —— der `ollama`-Dienst bedient dieses Modellverzeichnis nicht: prüfe `ollama list` (oder `GET /api/tags`) und das `OLLAMA_MODELS`, das der laufende Dienst tatsächlich verwendet. Liegen die Modelldateien auf einem anderen Laufwerk, kann ein Verzeichnis-Junction das Standardverzeichnis des Dienstes dorthin zeigen lassen.
|
|
67
|
+
|
|
68
|
+
Am Plugin ist nichts zu konfigurieren: Es deklariert keine Reihenfolge-Abhängigkeit zu DSH-Interna (es bindet nur den `slots`-Dienst und optional `@deepseek-ai/dsh-client-ui-primitives`) und läuft daher sowohl auf älterem DSH (≤ 0.1.1-rc) als auch auf der aktuellen Linie (≥ 0.1.2-alpha.1, inklusive 0.1.5-rc.1).
|
|
69
|
+
|
|
70
|
+
Für DSH **0.2.0-rc.2** verwenden Sie **dsh-think-translate 1.2.5 oder neuer**. Version 1.2.5 behebt den Registrierungskonflikt des Slots `todo_write` und deklariert den Peer-Versionsbereich 0.2. Führen Sie `dsh plugin --profile web add dsh-think-translate@latest` aus und starten Sie DSH neu; eine Versionsausnahme ist nicht nötig.
|
|
71
|
+
|
|
72
|
+
**1.2.6** behebt doppelt angezeigte Gedanken und Antworten in DSH 0.2: Der Renderer und die Originaltext-Anzeige bei Fehlern beachten die Gruppen reasoning/response.
|
|
73
|
+
|
|
74
74
|
**1.2.7 lokale Vorbereitung:** Aktiviertes Ollama an erster Stelle oder dessen Test findet vorhandene Installationen und startet/lädt das Modell. Fehlende Software und Modelle werden erst über die Vorbereitungsschaltfläche installiert/heruntergeladen, mit Fortschritt je Phase. Automatische Softwareinstallation unter Windows, sonst offizielle Anleitung. Der aktuelle Anbieter folgt der Priorität aktivierter, geprüfter Anbieter.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
1.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
→
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
75
|
+
|
|
76
|
+
**1.2.8 Übertragung und Wiederaufnahme:** Normale HTTP/HTTPS-Übersetzungen nutzen die nativen Netzwerkfunktionen von Node statt eines curl-Prozesses pro Textpaket. SOCKS-Proxys und der Ollama-Installer verwenden weiterhin curl. Fehler bleiben 30 Sekunden im Arbeitsspeicher; danach werden Denk- und Antwortübersetzungen automatisch erneut versucht. Die Zeitlimits berücksichtigen das Laden lokaler Modelle und alternative Anbieter.
|
|
77
|
+
|
|
78
|
+
**1.2.9 Sprachkorrekturen:** Japanische Vokabelhinweise gelten nur für Japanisch; OpenAI/Anthropic erhalten den vollständigen Sprachnamen. Bing nutzt `auto-detect` und `zh-Hans`/`zh-Hant`. Die Erkennung chinesischer Prosa blendet Pfade, Code und JSON aus: vereinfachte Prosa wird übersprungen, häufige traditionelle Schriftzeichen lösen eine Übersetzungsanfrage aus, japanische/koreanische Prosa wird übersetzt. Alte Übersetzungen werden einmalig aus dem Cache entfernt; Einstellungen bleiben erhalten.
|
|
79
|
+
|
|
80
|
+
## 🚀 Verwendung
|
|
81
|
+
|
|
82
|
+
1. **Einstellungen → Übersetzung der Gedankenkette** öffnen
|
|
83
|
+
2. Die **Zielsprache** wählen (z. B. Deutsch) — Einstellungen, Denkzeilen und Karten wechseln in diese Sprache
|
|
84
|
+
3. Die **Anbieterkette** verwalten (ziehen zum Sortieren, ankreuzen zum Aktivieren):
|
|
85
|
+
- Integriert: **google gtx / bing** (kostenlos, über den Systemproxy) und **lokales Ollama**; vorhandene Software/Modelle werden wiederverwendet. Fehlende Komponenten werden erst über die Vorbereitungsschaltfläche installiert/heruntergeladen, mit Fortschritt (7b/14b oder eigenes Modell)
|
|
86
|
+
- **DSH-Anbieter**: in `settings.yaml` konfigurierte Endpunkte erscheinen automatisch (schreibgeschützt; ankreuzen fügt sie der Kette hinzu). Die Schaltfläche **Aus DSH-Konfiguration übernehmen** direkt unter der Liste liest die Konfiguration neu ein und fügt alle auf einmal hinzu – keine baseURL und kein Schlüssel zum Neutippen, denn der Schlüssel wird aus den DSH-Credentials aufgelöst
|
|
87
|
+
- Der Schlüssel wird eingetippt oder kommt als **`apiKeyEnv`** aus einer Vorlage bzw. einer DSH-Zeile: diese Zeile zeigt das `env:NAME`-Abzeichen, und der Schlüssel wird pro Anfrage aufgelöst und nie in `config.json` geschrieben. Das Bearbeitungsformular hat kein Feld für die Umgebungsvariable (der Wert bleibt erhalten), aber ein geleertes Feld wird wirklich gelöscht (als explizite Löschung gesendet)
|
|
88
|
+
- Abgewählte Anbieter werden übersprungen. Details stehen in [README.md](README.md)
|
|
89
|
+
4. Nachricht senden und die Think-Zeile aufklappen, um die Übersetzung zu sehen
|
|
90
|
+
|
|
91
|
+
## ⚙️ Funktionsweise
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
Browser → POST /_xlate/translate (gleiche Origin, kein CORS)
|
|
95
|
+
→ Anbieterkette im Host (fail-open, umsortierbar):
|
|
96
|
+
chain: [provider1, provider2, ...] ← Reihenfolge per Drag in den Einstellungen
|
|
97
|
+
google / bing / OpenAI-kompatibel / Anthropic
|
|
98
|
+
Fallback-Kette (optional, standardmäßig aus, in der Config aktivierbar)
|
|
99
|
+
→ direkter Browser-Fallback
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
- Die **Anbieter-Konfiguration** liegt in `config.json` (zur Laufzeit erzeugt, gitignoriert): `chain` (geordnete IDs), `fallback` (enabled + chain, nur Datei), `providers` (je Anbieter `type`/`enabled`/`baseURL`/`apiKey`/`apiKeyEnv`/`model`). Alte `priority`-Konfigurationen werden automatisch migriert; ein Anbieter mit `apiKeyEnv` löst seinen Schlüssel pro Anfrage aus dieser Umgebungsvariable auf (der literale `apiKey` bleibt als Rückfall) und kein aufgelöster Schlüssel wird je in `config.json` zurückgeschrieben; ein `null` in einem Patch löscht das Feld — so leert die Oberfläche eines
|
|
103
|
+
- Die **DSH-Erkennung** liest beim Laden `settings.yaml` (`llm-pi-ai.providers`) und `.credentials.yaml` (`refs`) des Harness; erkannte Anbieter tragen `source: "dsh"`, aufgelöste Schlüssel bleiben im Speicher (nie in `config.json`), und die Route `/_xlate/dsh-scan` liest sie bei Bedarf neu ein
|
|
104
|
+
- **Host-Hälfte** (`lib/index.js`): Anbieteradapter, LRU-Cache (600), `/_xlate/models`, `/_xlate/model/pull` + `pull-status` (automatische Konfiguration am Ende)
|
|
105
|
+
- **Client-Hälfte** (`lib/client.js`): 8-sprachige UI, satzweise Batch-Übersetzung, Streaming-Think-Zeilen, localStorage-Persistenz
|
|
106
|
+
- Reine Anzeigeschicht: Originale bleiben im Verlauf und im Modellkontext erhalten
|
|
107
|
+
|
|
108
|
+
## 🛠 Entwicklung
|
|
109
|
+
|
|
110
|
+
- Kein Build-Schritt: `lib/client.js` ist das Browser-Bundle (Quelle = Artefakt); `lib/index.js` ist das Host-ESM
|
|
111
|
+
- Client-Änderungen greifen nach dem Aktualisieren; Host-Änderungen erfordern einen Web-Neustart
|
|
112
|
+
- Die 8-sprachigen Texte stehen im `UI_TEXT`-Wörterbuch in `lib/client.js`
|
|
113
|
+
|
|
114
|
+
## 📄 Lizenz
|
|
115
|
+
|
|
116
|
+
MIT
|
package/README.es.md
CHANGED
|
@@ -1,112 +1,116 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
|
|
3
|
-
# 🐋 dsh-think-translate
|
|
4
|
-
|
|
5
|
-
**Idiomas:** [English](README.md) · [中文](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Español](README.es.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md)
|
|
6
|
-
|
|
7
|
-
[](https://www.npmjs.com/package/dsh-think-translate)
|
|
8
|
-
[](LICENSE)
|
|
9
|
-
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
10
|
-
|
|
11
|
-
<img src="demo/demo.gif?v=2" width="46%" alt="dsh-think-translate demo" style="border:1px solid #4D6BFE;border-radius:8px;margin:4px" /> <img src="demo/demo2.gif?v=2" width="41%" alt="dsh-think-translate demo 2" style="border:1px solid #4D6BFE;border-radius:8px;margin:4px" />
|
|
12
|
-
|
|
13
|
-
</div>
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
Traducción en la capa de visualización para la interfaz web de [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness): la **cadena de pensamiento (fila Think), las tarjetas de tareas y el texto de respuesta** se muestran en el idioma de destino elegido, mientras los originales permanecen intactos en la transcripción y el texto traducido **nunca entra en el contexto del modelo**.
|
|
18
|
-
|
|
19
|
-
## ✨ Características
|
|
20
|
-
|
|
21
|
-
Los modelos de la familia DeepSeek suelen razonar en chino — o en el idioma en que les da por pensar. dsh-think-translate muestra la fila Think, las tarjetas de tareas y la respuesta en *tu* idioma mientras miras, como subtítulos del pensamiento del modelo.
|
|
22
|
-
|
|
23
|
-
- **🕵️ Lee cualquier cadena de pensamiento** — razonamiento, cadena de pensamiento, tarjetas de tareas y respuestas traducidos en tiempo real, por lotes
|
|
24
|
-
- **8 idiomas de destino** — 中文 / English / 日本語 / 한국어 / Español / Français / Deutsch / Русский
|
|
25
|
-
- **Interfaz en un solo idioma** — panel de ajustes, filas de pensamiento y tarjetas de tareas siguen el idioma de destino (sin mezclar zh/en); la elección persiste
|
|
26
|
-
- **
|
|
27
|
-
- **🧠 Coste de contexto cero** — capa de visualización pura: el modelo sigue viendo el texto original y el texto traducido nunca consume la ventana de contexto
|
|
28
|
-
- **Respaldo Google / Bing** — cambio automático si el modelo local no está disponible (google usa un túnel CONNECT de Node con el proxy del sistema)
|
|
29
|
-
- **Artefactos de código omitidos** — rutas, comandos, URL, regex y líneas de código puro nunca se traducen
|
|
30
|
-
- **Traducción por lotes de frases** — las cadenas largas se traducen en lotes pequeños para mantener la calidad en modelos locales pequeños
|
|
31
|
-
- **🧩 Fragmentación por párrafos y frases** — las cadenas largas se dividen por líneas en blanco (se conserva la estructura de párrafos) y luego por frases, para que un modelo local pequeño mantenga la calidad
|
|
32
|
-
- **Salida en streaming** — las traducciones aparecen lote a lote mientras piensa; expande la fila Think para comparar con el original
|
|
33
|
-
- **🎚️ Momento de traducción ajustable** — pre-traducir todo / carga diferida de cadenas antiguas (por defecto) / solo al expandir
|
|
34
|
-
- **🔗 Cadena de proveedores dinámica** — el orden de la lista es el orden de uso: arrastra para reordenar y activa o desactiva cada fila. Integrados google gtx / bing / Ollama local más cualquier endpoint personalizado
|
|
35
|
-
- **🔌 Proveedores personalizados (OpenAI y Anthropic)** — añade desde el panel cualquier endpoint compatible con OpenAI (`/v1/chat/completions`) o la **Anthropic Messages API** (Claude): tipo, preajuste, URL base, clave de API y modelo
|
|
36
|
-
- **🪄 Hereda los proveedores configurados en DSH** — detecta filas DSH de solo lectura desde `settings.yaml` (`llm-pi-ai.providers`) y un botón reescanea y las añade todas a la cadena; la clave se resuelve en cada petición desde `.credentials.yaml` y nunca se guarda en la config del plugin. La ruta por defecto del propio harness también cuenta: si `agent-default-model` apunta a `deepseek-official`, la API oficial de DeepSeek aparece como una fila DSH más
|
|
37
|
-
- **⏱️ Resistente** —
|
|
38
|
-
|
|
39
|
-
## 📦 Instalación
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
# Opción 1: npm (recomendado)
|
|
43
|
-
dsh plugin --profile web add dsh-think-translate
|
|
44
|
-
# luego reinicia web
|
|
45
|
-
|
|
46
|
-
# Opción 2: GitHub
|
|
47
|
-
dsh plugin --profile web add github:UncleK/dsh-think-translate
|
|
48
|
-
|
|
49
|
-
# Opción 3: manual (junction + patch)
|
|
50
|
-
# 1. enlaza el paquete en el node_modules del perfil
|
|
51
|
-
New-Item -ItemType Junction -Path "$HOME\.dsh\profiles\node_modules\dsh-think-translate" `
|
|
52
|
-
-Target "<ruta del repositorio>"
|
|
53
|
-
# 2. añade a "$HOME\.dsh\profiles\web\cordis.patch.yml":
|
|
54
|
-
# - insert:
|
|
55
|
-
# - id: dsh-think-translate
|
|
56
|
-
# name: dsh-think-translate
|
|
57
|
-
# 3. reinicia web
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## 🧯 Después de actualizar DSH
|
|
61
|
-
|
|
62
|
-
Los plugins de cliente de terceros se cargan a través del grafo de módulos de cliente de DSH, y ese grafo se compone **una sola vez por proceso**: una composición fallida permanece en memoria hasta reiniciar. Por eso, justo después de actualizar suelen aparecer estas tres cosas.
|
|
63
|
-
|
|
64
|
-
- **Arrancar desde un checkout del código falla** con `client bundles not found; run \`pnpm run build\` before launch` —— los paquetes de cliente nuevos vienen sin compilar: ejecuta `pnpm run build` en el checkout del harness y vuelve a iniciar `dsh web`.
|
|
65
|
-
- **La interfaz del plugin desaparece** (la fila Think sin traducción, sin la sección *Traducción de cadena de pensamiento* en Ajustes) —— **reinicia `dsh web`**; a veces no basta con recargar la página.
|
|
66
|
-
- **La lista de modelos locales está vacía** —— el servicio `ollama` no está sirviendo ese directorio de modelos: revisa `ollama list` (o `GET /api/tags`) y el `OLLAMA_MODELS` que usa realmente el servicio en ejecución. Si los modelos están en otra unidad, un enlace de directorio (junction) puede apuntar el directorio predeterminado del servicio hacia ellos.
|
|
67
|
-
|
|
68
|
-
No hay nada que configurar en el plugin: no declara dependencia de orden con los paquetes internos de DSH (solo se enlaza al servicio `slots` y, opcionalmente, a `@deepseek-ai/dsh-client-ui-primitives`), así que funciona tanto en DSH antiguo (≤ 0.1.1-rc) como en la línea actual (≥ 0.1.2-alpha.1, incluida 0.1.5-rc.1).
|
|
69
|
-
|
|
70
|
-
Para DSH **0.2.0-rc.2**, usa **dsh-think-translate 1.2.5 o posterior**. La versión 1.2.5 corrige el conflicto de registro del slot `todo_write` y declara el rango peer 0.2. Ejecuta `dsh plugin --profile web add dsh-think-translate@latest` y reinicia DSH; no hace falta una excepción de versión.
|
|
71
|
-
|
|
72
|
-
**1.2.6** corrige la duplicación del razonamiento y las respuestas en DSH 0.2: el renderizador y su texto original de respaldo respetan los grupos reasoning/response.
|
|
73
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# 🐋 dsh-think-translate
|
|
4
|
+
|
|
5
|
+
**Idiomas:** [English](README.md) · [中文](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Español](README.es.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md)
|
|
6
|
+
|
|
7
|
+
[](https://www.npmjs.com/package/dsh-think-translate)
|
|
8
|
+
[](LICENSE)
|
|
9
|
+
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
10
|
+
|
|
11
|
+
<img src="demo/demo.gif?v=2" width="46%" alt="dsh-think-translate demo" style="border:1px solid #4D6BFE;border-radius:8px;margin:4px" /> <img src="demo/demo2.gif?v=2" width="41%" alt="dsh-think-translate demo 2" style="border:1px solid #4D6BFE;border-radius:8px;margin:4px" />
|
|
12
|
+
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
Traducción en la capa de visualización para la interfaz web de [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness): la **cadena de pensamiento (fila Think), las tarjetas de tareas y el texto de respuesta** se muestran en el idioma de destino elegido, mientras los originales permanecen intactos en la transcripción y el texto traducido **nunca entra en el contexto del modelo**.
|
|
18
|
+
|
|
19
|
+
## ✨ Características
|
|
20
|
+
|
|
21
|
+
Los modelos de la familia DeepSeek suelen razonar en chino — o en el idioma en que les da por pensar. dsh-think-translate muestra la fila Think, las tarjetas de tareas y la respuesta en *tu* idioma mientras miras, como subtítulos del pensamiento del modelo.
|
|
22
|
+
|
|
23
|
+
- **🕵️ Lee cualquier cadena de pensamiento** — razonamiento, cadena de pensamiento, tarjetas de tareas y respuestas traducidos en tiempo real, por lotes
|
|
24
|
+
- **8 idiomas de destino** — 中文 / English / 日本語 / 한국어 / Español / Français / Deutsch / Русский
|
|
25
|
+
- **Interfaz en un solo idioma** — panel de ajustes, filas de pensamiento y tarjetas de tareas siguen el idioma de destino (sin mezclar zh/en); la elección persiste
|
|
26
|
+
- **Ollama local** — reutiliza la instalación y los modelos existentes. Si Ollama está habilitado en primera posición o pulsas Probar, inicia el servicio y carga el modelo cuando sea necesario. El software o los modelos que falten solo se instalan/descargan mediante el botón de preparación, con progreso en tiempo real
|
|
27
|
+
- **🧠 Coste de contexto cero** — capa de visualización pura: el modelo sigue viendo el texto original y el texto traducido nunca consume la ventana de contexto
|
|
28
|
+
- **Respaldo Google / Bing** — cambio automático si el modelo local no está disponible (google usa un túnel CONNECT de Node con el proxy del sistema)
|
|
29
|
+
- **Artefactos de código omitidos** — rutas, comandos, URL, regex y líneas de código puro nunca se traducen
|
|
30
|
+
- **Traducción por lotes de frases** — las cadenas largas se traducen en lotes pequeños para mantener la calidad en modelos locales pequeños
|
|
31
|
+
- **🧩 Fragmentación por párrafos y frases** — las cadenas largas se dividen por líneas en blanco (se conserva la estructura de párrafos) y luego por frases, para que un modelo local pequeño mantenga la calidad
|
|
32
|
+
- **Salida en streaming** — las traducciones aparecen lote a lote mientras piensa; expande la fila Think para comparar con el original
|
|
33
|
+
- **🎚️ Momento de traducción ajustable** — pre-traducir todo / carga diferida de cadenas antiguas (por defecto) / solo al expandir
|
|
34
|
+
- **🔗 Cadena de proveedores dinámica** — el orden de la lista es el orden de uso: arrastra para reordenar y activa o desactiva cada fila. Integrados google gtx / bing / Ollama local más cualquier endpoint personalizado
|
|
35
|
+
- **🔌 Proveedores personalizados (OpenAI y Anthropic)** — añade desde el panel cualquier endpoint compatible con OpenAI (`/v1/chat/completions`) o la **Anthropic Messages API** (Claude): tipo, preajuste, URL base, clave de API y modelo
|
|
36
|
+
- **🪄 Hereda los proveedores configurados en DSH** — detecta filas DSH de solo lectura desde `settings.yaml` (`llm-pi-ai.providers`) y un botón reescanea y las añade todas a la cadena; la clave se resuelve en cada petición desde `.credentials.yaml` y nunca se guarda en la config del plugin. La ruta por defecto del propio harness también cuenta: si `agent-default-model` apunta a `deepseek-official`, la API oficial de DeepSeek aparece como una fila DSH más
|
|
37
|
+
- **⏱️ Resistente** — los fallos se guardan en memoria durante 30 segundos para evitar reintentos continuos y después se reintentan automáticamente; cada proveedor tiene su botón de prueba
|
|
38
|
+
|
|
39
|
+
## 📦 Instalación
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Opción 1: npm (recomendado)
|
|
43
|
+
dsh plugin --profile web add dsh-think-translate
|
|
44
|
+
# luego reinicia web
|
|
45
|
+
|
|
46
|
+
# Opción 2: GitHub
|
|
47
|
+
dsh plugin --profile web add github:UncleK/dsh-think-translate
|
|
48
|
+
|
|
49
|
+
# Opción 3: manual (junction + patch)
|
|
50
|
+
# 1. enlaza el paquete en el node_modules del perfil
|
|
51
|
+
New-Item -ItemType Junction -Path "$HOME\.dsh\profiles\node_modules\dsh-think-translate" `
|
|
52
|
+
-Target "<ruta del repositorio>"
|
|
53
|
+
# 2. añade a "$HOME\.dsh\profiles\web\cordis.patch.yml":
|
|
54
|
+
# - insert:
|
|
55
|
+
# - id: dsh-think-translate
|
|
56
|
+
# name: dsh-think-translate
|
|
57
|
+
# 3. reinicia web
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## 🧯 Después de actualizar DSH
|
|
61
|
+
|
|
62
|
+
Los plugins de cliente de terceros se cargan a través del grafo de módulos de cliente de DSH, y ese grafo se compone **una sola vez por proceso**: una composición fallida permanece en memoria hasta reiniciar. Por eso, justo después de actualizar suelen aparecer estas tres cosas.
|
|
63
|
+
|
|
64
|
+
- **Arrancar desde un checkout del código falla** con `client bundles not found; run \`pnpm run build\` before launch` —— los paquetes de cliente nuevos vienen sin compilar: ejecuta `pnpm run build` en el checkout del harness y vuelve a iniciar `dsh web`.
|
|
65
|
+
- **La interfaz del plugin desaparece** (la fila Think sin traducción, sin la sección *Traducción de cadena de pensamiento* en Ajustes) —— **reinicia `dsh web`**; a veces no basta con recargar la página.
|
|
66
|
+
- **La lista de modelos locales está vacía** —— el servicio `ollama` no está sirviendo ese directorio de modelos: revisa `ollama list` (o `GET /api/tags`) y el `OLLAMA_MODELS` que usa realmente el servicio en ejecución. Si los modelos están en otra unidad, un enlace de directorio (junction) puede apuntar el directorio predeterminado del servicio hacia ellos.
|
|
67
|
+
|
|
68
|
+
No hay nada que configurar en el plugin: no declara dependencia de orden con los paquetes internos de DSH (solo se enlaza al servicio `slots` y, opcionalmente, a `@deepseek-ai/dsh-client-ui-primitives`), así que funciona tanto en DSH antiguo (≤ 0.1.1-rc) como en la línea actual (≥ 0.1.2-alpha.1, incluida 0.1.5-rc.1).
|
|
69
|
+
|
|
70
|
+
Para DSH **0.2.0-rc.2**, usa **dsh-think-translate 1.2.5 o posterior**. La versión 1.2.5 corrige el conflicto de registro del slot `todo_write` y declara el rango peer 0.2. Ejecuta `dsh plugin --profile web add dsh-think-translate@latest` y reinicia DSH; no hace falta una excepción de versión.
|
|
71
|
+
|
|
72
|
+
**1.2.6** corrige la duplicación del razonamiento y las respuestas en DSH 0.2: el renderizador y su texto original de respaldo respetan los grupos reasoning/response.
|
|
73
|
+
|
|
74
74
|
**1.2.7 preparación local:** Ollama habilitado en primera posición, o su botón de prueba, detecta la instalación existente y arranca/carga el modelo. La instalación y descarga requieren el botón de preparación y muestran progreso por etapas. La instalación automática del software admite Windows; otros sistemas enlazan la guía oficial. El proveedor en uso sigue la prioridad de los proveedores habilitados y verificados.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
1.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
→
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
75
|
+
|
|
76
|
+
**1.2.8 transporte y recuperación:** las traducciones HTTP/HTTPS normales usan la red nativa de Node en lugar de iniciar curl por cada lote de texto. Los proxies SOCKS y el instalador de Ollama conservan la compatibilidad con curl. Los fallos permanecen en memoria durante 30 segundos y después se reintentan automáticamente las traducciones del razonamiento y las respuestas. Los tiempos de espera permiten cargar modelos locales y probar proveedores alternativos.
|
|
77
|
+
|
|
78
|
+
**1.2.9 correcciones de idioma:** las pistas de vocabulario japonés solo se aplican al japonés; OpenAI/Anthropic reciben el nombre completo del idioma. Bing usa `auto-detect` y `zh-Hans`/`zh-Hant`. La detección del chino excluye rutas, código y JSON: omite la prosa ya simplificada, solicita conversión al detectar caracteres tradicionales frecuentes y traduce la prosa japonesa/coreana. Se elimina una vez la caché de traducciones anterior, conservando los ajustes.
|
|
79
|
+
|
|
80
|
+
## 🚀 Uso
|
|
81
|
+
|
|
82
|
+
1. Abre **Ajustes → Traducción de cadena de pensamiento**
|
|
83
|
+
2. Elige el **idioma de destino** (p. ej. Español) — el panel, las filas y las tarjetas cambian a ese idioma
|
|
84
|
+
3. Gestiona la **cadena de proveedores** (arrastra para ordenar, marca para activar):
|
|
85
|
+
- Integrados: **google gtx / bing** (gratis, mediante el proxy del sistema) y **Ollama local**; se reutilizan el software y los modelos existentes. Los componentes que falten requieren el botón de preparación, con progreso (7b/14b o un modelo personalizado)
|
|
86
|
+
- **Proveedores DSH**: los endpoints ya configurados en `settings.yaml` aparecen solos (solo lectura; márcalos para añadirlos a la cadena). El botón **Importar desde la config de DSH**, justo debajo de la lista, vuelve a escanear y los añade todos de una vez: ni baseURL ni clave que reescribir, porque la clave se resuelve desde las credenciales de DSH
|
|
87
|
+
- La clave se escribe a mano o llega como **`apiKeyEnv`** desde un preajuste o una fila DSH: esa fila muestra la insignia `env:NAME`, y la clave se resuelve en cada petición sin escribirse nunca en `config.json`. El formulario de edición no tiene campo de variable de entorno (el valor se conserva intacto), pero vaciar un campo lo elimina de verdad (se envía como borrado explícito)
|
|
88
|
+
- Si desmarcas uno, se omite. Los detalles están en [README.md](README.md)
|
|
89
|
+
4. Envía un mensaje y expande la fila Think para ver la traducción
|
|
90
|
+
|
|
91
|
+
## ⚙️ Cómo funciona
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
navegador → POST /_xlate/translate (mismo origen, sin CORS)
|
|
95
|
+
→ cadena de proveedores en el host (fail-open, reordenable):
|
|
96
|
+
chain: [provider1, provider2, ...] ← orden arrastrando en Ajustes
|
|
97
|
+
google / bing / compatible con OpenAI / Anthropic
|
|
98
|
+
cadena fallback (opcional, desactivada por defecto, se activa en el config)
|
|
99
|
+
→ respaldo directo desde el navegador
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
- La **configuración de proveedores** vive en `config.json` (generado en tiempo de ejecución, ignorado por git): `chain` (ids ordenados), `fallback` (enabled + chain, solo en el archivo), `providers` (por proveedor `type`/`enabled`/`baseURL`/`apiKey`/`apiKeyEnv`/`model`). Las configuraciones antiguas con `priority` se migran solas; un proveedor que declara `apiKeyEnv` resuelve la clave desde esa variable en cada petición (el `apiKey` literal queda como respaldo) y ninguna clave resuelta se escribe de vuelta en `config.json`; un `null` en un parche borra ese campo, que es como la interfaz vacía uno
|
|
103
|
+
- El **descubrimiento DSH** lee `settings.yaml` (`llm-pi-ai.providers`) y `.credentials.yaml` (`refs`) del harness al cargar; los proveedores detectados se marcan con `source: "dsh"`, las claves resueltas se quedan en memoria (nunca en `config.json`) y la ruta `/_xlate/dsh-scan` los relee cuando hace falta
|
|
104
|
+
- **Mitad host** (`lib/index.js`): adaptadores de proveedor, caché LRU (600), `/_xlate/models`, `/_xlate/model/pull` + `pull-status` (configura automáticamente al terminar)
|
|
105
|
+
- **Mitad cliente** (`lib/client.js`): UI en 8 idiomas, traducción por lotes, filas Think en streaming, persistencia en localStorage
|
|
106
|
+
- Capa de visualización pura: los originales permanecen en la transcripción y el contexto del modelo
|
|
107
|
+
|
|
108
|
+
## 🛠 Desarrollo
|
|
109
|
+
|
|
110
|
+
- Sin paso de compilación: `lib/client.js` es el bundle del navegador (fuente = artefacto); `lib/index.js` es el ESM del host
|
|
111
|
+
- Cambios en el cliente se aplican al refrescar; cambios en el host requieren reiniciar web
|
|
112
|
+
- Las cadenas de 8 idiomas viven en el diccionario `UI_TEXT` de `lib/client.js`
|
|
113
|
+
|
|
114
|
+
## 📄 Licencia
|
|
115
|
+
|
|
116
|
+
MIT
|