dsh-coding-subscription-oauth 0.6.2 → 0.6.3
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/CHANGELOG.md +222 -206
- package/CONTRIBUTING.md +129 -120
- package/INSTALL.md +218 -218
- package/LICENSE +19 -19
- package/NOTICE +11 -11
- package/README.de.md +289 -289
- package/README.es.md +290 -290
- package/README.fr.md +290 -290
- package/README.ja.md +290 -290
- package/README.ko.md +290 -290
- package/README.md +304 -304
- package/README.pt-BR.md +290 -290
- package/README.ru.md +290 -290
- package/README.zh-CN.md +302 -302
- package/compatibility/dsh-bom.json +0 -0
- package/cordis.patch.yml +13 -13
- package/docs/00-project-rules.md +212 -195
- package/docs/02-architecture.md +130 -130
- package/docs/02-architecture.zh-CN.md +130 -130
- package/lib/bin.js.map +1 -1
- package/lib/capability-settings.d.ts +8 -2
- package/lib/capability-settings.d.ts.map +1 -1
- package/lib/capability-tools.d.ts +7 -2
- package/lib/capability-tools.d.ts.map +1 -1
- package/lib/client.js +3 -3
- package/lib/client.js.map +2 -2
- package/lib/codex-images.d.ts +8 -0
- package/lib/codex-images.d.ts.map +1 -1
- package/lib/index.js +32 -7
- package/lib/index.js.map +2 -2
- package/lib/invariant.js.map +1 -1
- package/media/en/settings_accounts.png +0 -0
- package/media/en/settings_capabilities.png +0 -0
- package/media/en/settings_gateway.png +0 -0
- package/media/settings_accounts.png +0 -0
- package/media/settings_capabilities.png +0 -0
- package/media/settings_gateway.png +0 -0
- package/media/settings_overview.png +0 -0
- package/media/zh-CN/settings_accounts.png +0 -0
- package/media/zh-CN/settings_capabilities.png +0 -0
- package/media/zh-CN/settings_gateway.png +0 -0
- package/package.json +148 -148
- package/patches/dsh-agy@0.1.2.patch +25 -25
- package/scripts/release.mjs +186 -186
- package/scripts/smoke-deployed-routes.mjs +146 -146
- package/scripts/verify-deployed-catalog.mjs +87 -87
- package/src/adapter.ts +273 -273
- package/src/alias-adapter.ts +130 -130
- package/src/auth-routes.ts +921 -921
- package/src/auth.ts +67 -67
- package/src/bin.ts +350 -350
- package/src/capability-routes.ts +279 -279
- package/src/capability-runtime.ts +314 -313
- package/src/capability-settings.ts +671 -658
- package/src/capability-tools.ts +685 -666
- package/src/catalog.ts +271 -271
- package/src/client/GrokBuildSettings.tsx +771 -770
- package/src/client/api.ts +88 -88
- package/src/client/components/AboutTab.tsx +30 -30
- package/src/client/components/AccountsTab.tsx +241 -241
- package/src/client/components/Badge.tsx +33 -33
- package/src/client/components/CapabilitiesTab.tsx +265 -265
- package/src/client/components/CliPullPreview.tsx +116 -116
- package/src/client/components/CopyButton.tsx +57 -57
- package/src/client/components/GatewayTab.tsx +469 -469
- package/src/client/components/NoticeBanner.tsx +46 -46
- package/src/client/components/ProgressBar.tsx +53 -53
- package/src/client/components/ProviderCard.tsx +606 -606
- package/src/client/components/SettingsTabs.tsx +75 -75
- package/src/client/components/ToggleSwitch.tsx +71 -71
- package/src/client/constants.ts +230 -224
- package/src/client/display.ts +61 -61
- package/src/client/dshClientAdapter.ts +127 -127
- package/src/client/gatewaySnippets.ts +37 -37
- package/src/client/index.tsx +156 -156
- package/src/client/locales.ts +540 -535
- package/src/client/microStyles.ts +52 -52
- package/src/client/parsers.ts +398 -396
- package/src/client/styles.ts +325 -325
- package/src/client/types.ts +199 -197
- package/src/codex-http.ts +447 -447
- package/src/codex-images.ts +503 -485
- package/src/codex-model-capabilities.ts +320 -320
- package/src/codex-search.ts +245 -245
- package/src/codex-usage.ts +263 -263
- package/src/compatibility.ts +41 -41
- package/src/dsh-host-adapter.ts +173 -173
- package/src/gateway-anthropic-messages.ts +84 -84
- package/src/gateway-auth.ts +102 -102
- package/src/gateway-backend.ts +274 -274
- package/src/gateway-body.ts +49 -49
- package/src/gateway-config.ts +76 -76
- package/src/gateway-http.ts +104 -104
- package/src/gateway-openai-chat.ts +124 -124
- package/src/gateway-openai-responses.ts +53 -53
- package/src/gateway-parse.ts +224 -224
- package/src/gateway-protocol.ts +52 -52
- package/src/gateway-routes.ts +158 -158
- package/src/gateway.ts +258 -258
- package/src/grok-errors.ts +24 -24
- package/src/grok-imagine.ts +1627 -1627
- package/src/grok-import.ts +151 -151
- package/src/http-json.ts +82 -82
- package/src/ids.ts +59 -59
- package/src/imagine-routes.ts +463 -463
- package/src/index.ts +709 -709
- package/src/invariant.ts +17 -17
- package/src/kimi-errors.ts +26 -26
- package/src/media-store.ts +927 -927
- package/src/oauth-import-routes.ts +324 -324
- package/src/oauth-providers.ts +152 -152
- package/src/oauth-session.ts +183 -183
- package/src/oauth-sources.ts +1104 -1104
- package/src/oauth.ts +620 -620
- package/src/provider.ts +128 -128
- package/src/proxy.ts +11 -11
- package/src/redact.ts +72 -72
- package/src/session.ts +218 -218
- package/src/store.ts +217 -217
- package/src/web-origin.ts +296 -296
- package/src/web-routes.ts +38 -38
package/README.de.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
<!-- banner -->
|
|
3
|
-
<div align="center">
|
|
4
|
-
|
|
5
|
-
# 🔐 dsh-coding-subscription-oauth
|
|
6
|
-
|
|
7
|
-
**v0.6.
|
|
8
|
-
|
|
9
|
-
**OAuth-Plugin für Coding-Abonnements für [DeepSeek Harness](https://github.com/deepseek-ai/dsh).** Melden Sie sich einmal mit den Abonnements an, die Sie bereits bezahlen, und nutzen Sie die Modelle aus den Einstellungen oder der CLI von dsh. **Keine Tokens in den Chat einfügen.**
|
|
10
|
-
|
|
11
|
-
[](LICENSE)
|
|
12
|
-
[](CONTRIBUTING.md)
|
|
13
|
-
|
|
14
|
-
*[English](README.md) · [中文版](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Português (BR)](README.pt-BR.md) · [Español](README.es.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md)*
|
|
15
|
-
|
|
1
|
+
|
|
2
|
+
<!-- banner -->
|
|
3
|
+
<div align="center">
|
|
4
|
+
|
|
5
|
+
# 🔐 dsh-coding-subscription-oauth
|
|
6
|
+
|
|
7
|
+
**v0.6.3 · früher `dsh-grok-build`
|
|
8
|
+
|
|
9
|
+
**OAuth-Plugin für Coding-Abonnements für [DeepSeek Harness](https://github.com/deepseek-ai/dsh).** Melden Sie sich einmal mit den Abonnements an, die Sie bereits bezahlen, und nutzen Sie die Modelle aus den Einstellungen oder der CLI von dsh. **Keine Tokens in den Chat einfügen.**
|
|
10
|
+
|
|
11
|
+
[](LICENSE)
|
|
12
|
+
[](CONTRIBUTING.md)
|
|
13
|
+
|
|
14
|
+
*[English](README.md) · [中文版](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Português (BR)](README.pt-BR.md) · [Español](README.es.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md)*
|
|
15
|
+
|
|
16
16
|
</div>
|
|
17
17
|
|
|
18
18
|
---
|
|
@@ -20,284 +20,284 @@
|
|
|
20
20
|
> **Upgrade / 升级:** Follow the versioned steps in [`INSTALL.md`](INSTALL.md). Install into the existing `web` profile, keep profile/config/credential files, and restart one existing DSH Web process after all packages are updated. When Hub and Subscription are both used, `dsh-coding-oauth-core@0.1.0` is their shared npm dependency, not a separate DSH plugin.
|
|
21
21
|
|
|
22
22
|
---
|
|
23
|
-
|
|
24
|
-
## Namensänderung
|
|
25
|
-
|
|
26
|
-
Zuerst **`dsh-grok-build`** (nur Grok Build). Jetzt SuperGrok / Codex / Kimi / Claude / Antigravity.
|
|
27
|
-
| | Das verwenden | Funktioniert weiter |
|
|
28
|
-
|---|---|---|
|
|
29
|
-
| GitHub / `dsh plugin add` | [`dsh-coding-subscription-oauth`](https://github.com/lninghaha/dsh-coding-subscription-oauth) | `github:lninghaha/dsh-grok-build` (derselbe `main`) |
|
|
30
|
-
| npm | `dsh-coding-subscription-oauth@0.6.
|
|
31
|
-
| CLI | `dsh-coding-oauth` | `dsh-grok-build` |
|
|
32
|
-
| Cordis-Plugin-id | `llm-grok-build-oauth` | unverändert |
|
|
33
|
-
| Settings-HTTP-API | `/plugins/dsh-grok-build/*` | unverändert |
|
|
34
|
-
| Zugangsdateien | `$DSH_HOME/.grok-build-auth.json` und die anderen `*-oauth-auth.json` | unverändert |
|
|
35
|
-
|
|
36
|
-
## ✨ Funktionen
|
|
37
|
-
|
|
38
|
-
- 🧾 **Eigenes Abonnement mitbringen** — nutzen Sie die vorhandenen Coding-Pläne, die Sie bereits bezahlen, statt separater API-Keys.
|
|
39
|
-
- 🔑 **Lokales OAuth, ohne Key einzufügen** — in den Einstellungen oder der CLI autorisieren; Tokens gelangen nie in den Chat.
|
|
40
|
-
- 🧩 **Ein Plugin, fünf Anbieter** — Grok Build, Codex, Kimi, Claude und Google Antigravity.
|
|
41
|
-
- 🛡️ **Sicherheit by Design** — Zugangsdateien nur-eigentümer `0600`, atomares Schreiben, dateiübergreifende Prozesssperre.
|
|
42
|
-
- ⚙️ **Dynamischer Katalog** — der Wähler listet nur authentifizierte Routen, gekennzeichnet mit `(OAuth)`, einschließlich `xhigh` von grok-4.6.
|
|
43
|
-
- 🌐 **Proxy-bewusst** — nur geprüfte, vertrauenswürdige Abonnement-Domänen werden über den Proxy geleitet.
|
|
44
|
-
- 📥 **Manueller CLI-Pull** — die Einstellungen entdecken erlaubte offizielle Grok-/Codex-/Kimi-/Claude-CLI-OAuth-Dateien schreibgeschützt; nach Vorschau und Überschreibbestätigung ziehen Sie eine Einweg-Kopie.
|
|
45
|
-
- 🗂️ **Einstellungen mit Tabs** — Accounts, Gateway, Capabilities und About; Remote-Hosts bevorzugen Device-Code mit ruhigeren CLI-Missing-Hinweisen; angemeldete Karten bleiben eingeklappt, bis sie erweitert werden.
|
|
46
|
-
- 🎛️ **Optionale Funktionen, standardmäßig aus** — Codex-Suche, Nutzung/Kontingent, Bild erzeugen/bearbeiten, Fast und Grok Imagine wirken live beim Einschalten.
|
|
47
|
-
- 🔌 **Opt-in lokales API-Gateway** — standardmäßig ausgeschalteter Loopback-Server, OpenAI-/Anthropic-kompatibel; für Ihre eigenen Werkzeuge, niemals ein öffentliches Relay.
|
|
48
|
-
|
|
49
|
-
## Integrationsprobleme, die dieses Plugin löst
|
|
50
|
-
|
|
51
|
-
Diese Suchbegriffe und DSH-Fehler führen meist hierher.
|
|
52
|
-
|
|
53
|
-
| Gesucht / gesehen | Was kaputt war | Was das Plugin tut |
|
|
54
|
-
|---|---|---|
|
|
55
|
-
| SuperGrok / X Premium in DSH, Grok Build vs `api.x.ai` | Die eingebaute Route `xai` ist die Pay-as-you-go-API. Das Coding-Abo geht über `cli-chat-proxy.grok.com` | Route `grok-build` + CLI-Fingerabdruck-Header (`X-XAI-Token-Auth` usw.), damit kein stilles 403 entsteht |
|
|
56
|
-
| `API key is invalid` / `AUTH` | Die GUI mappt **jedes** AUTH auf diesen Text. Oft ist nur das kurze OAuth-Access-Token abgelaufen | Refresh **5 Min.** vor Ablauf; bei 401 Token invalidieren und den Step **wiederholen** |
|
|
57
|
-
| `INVALID_REPLAY_STATE` im 2. Codex/Kimi-Turn | Replay trug noch die native pi-ai-Provider-ID | Harness-Route-ID behalten und altes Replay heilen |
|
|
58
|
-
| grok-4.6 ohne **xhigh** | `/v1/models-v2` liefert bereits `reasoning_efforts`; das 4.5-Template versteckt xhigh | Live-Efforts einlesen. 4.6 hat xhigh; 4.5 bleibt low/medium/high |
|
|
59
|
-
| Kimi Code als Anthropic-`x-api-key` | OAuth-Token als Anthropic-Key gesendet | Nur `Authorization: Bearer` |
|
|
60
|
-
| Nicht angemeldete Modelle bleiben im Wähler | Alle registrierten Routen wurden gelistet | Nicht authentifizierte Routen sind leer; angemeldete Namen tragen `(OAuth)` |
|
|
61
|
-
| PKCE auf remote / headless DSH | Kein Weg zurück zu `localhost` | Device-Code für Grok/Codex/Kimi; Claude akzeptiert die eingefügte Redirect-URL |
|
|
62
|
-
| Proxy lässt Grok durch und legt Kimi in China lahm | Ein globales `HTTPS_PROXY` | Nur Allowlist; Kimi bleibt **direkt**, außer `proxyKimi: true` |
|
|
63
|
-
|
|
64
|
-
## Unterstützte Anbieter
|
|
65
|
-
|
|
66
|
-
| Anbieter | Route | Authentifizierung | Koexistiert mit |
|
|
67
|
-
|---|---|---|---|
|
|
68
|
-
| **xAI Grok Build** | `grok-build` | SuperGrok / X Premium OAuth | `xai` |
|
|
69
|
-
| **OpenAI Codex** | `codex-oauth` | ChatGPT Plus/Pro OAuth | `openai` |
|
|
70
|
-
| **Kimi Code** | `kimi-code-oauth` | Kimi Code OAuth | `kimi-coding` |
|
|
71
|
-
| **Claude Code** | `claude-code-oauth` | Claude Pro/Max OAuth | — |
|
|
72
|
-
| **Google Antigravity** | `agy` | `dsh-agy` Google OAuth | — |
|
|
73
|
-
|
|
74
|
-
> Der Geräte-Login von Grok Build, der dynamische `/v1/models-v2`-Katalog und das Responses-Streaming sind auf echten Deployments verifiziert. Codex/Kimi/Claude nutzen das native OAuth/Refresh von `@earendil-works/pi-ai`, anstatt die Anbieter-Flows neu zu implementieren.
|
|
75
|
-
|
|
76
|
-
## 🚀 Schnellstart
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
# 1. Plugin in das Web-Profil installieren (aktuelle npm-Version)
|
|
80
|
-
dsh plugin --profile web add dsh-coding-subscription-oauth@0.6.
|
|
81
|
-
|
|
82
|
-
# 2. optional — Google Antigravity (gepinnte, geprüfte Version)
|
|
83
|
-
dsh plugin --profile web add dsh-agy@0.1.2
|
|
84
|
-
|
|
23
|
+
|
|
24
|
+
## Namensänderung
|
|
25
|
+
|
|
26
|
+
Zuerst **`dsh-grok-build`** (nur Grok Build). Jetzt SuperGrok / Codex / Kimi / Claude / Antigravity.
|
|
27
|
+
| | Das verwenden | Funktioniert weiter |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| GitHub / `dsh plugin add` | [`dsh-coding-subscription-oauth`](https://github.com/lninghaha/dsh-coding-subscription-oauth) | `github:lninghaha/dsh-grok-build` (derselbe `main`) |
|
|
30
|
+
| npm | `dsh-coding-subscription-oauth@0.6.3` (aktuelle Version) | Es gab kein altes npm-Paket |
|
|
31
|
+
| CLI | `dsh-coding-oauth` | `dsh-grok-build` |
|
|
32
|
+
| Cordis-Plugin-id | `llm-grok-build-oauth` | unverändert |
|
|
33
|
+
| Settings-HTTP-API | `/plugins/dsh-grok-build/*` | unverändert |
|
|
34
|
+
| Zugangsdateien | `$DSH_HOME/.grok-build-auth.json` und die anderen `*-oauth-auth.json` | unverändert |
|
|
35
|
+
|
|
36
|
+
## ✨ Funktionen
|
|
37
|
+
|
|
38
|
+
- 🧾 **Eigenes Abonnement mitbringen** — nutzen Sie die vorhandenen Coding-Pläne, die Sie bereits bezahlen, statt separater API-Keys.
|
|
39
|
+
- 🔑 **Lokales OAuth, ohne Key einzufügen** — in den Einstellungen oder der CLI autorisieren; Tokens gelangen nie in den Chat.
|
|
40
|
+
- 🧩 **Ein Plugin, fünf Anbieter** — Grok Build, Codex, Kimi, Claude und Google Antigravity.
|
|
41
|
+
- 🛡️ **Sicherheit by Design** — Zugangsdateien nur-eigentümer `0600`, atomares Schreiben, dateiübergreifende Prozesssperre.
|
|
42
|
+
- ⚙️ **Dynamischer Katalog** — der Wähler listet nur authentifizierte Routen, gekennzeichnet mit `(OAuth)`, einschließlich `xhigh` von grok-4.6.
|
|
43
|
+
- 🌐 **Proxy-bewusst** — nur geprüfte, vertrauenswürdige Abonnement-Domänen werden über den Proxy geleitet.
|
|
44
|
+
- 📥 **Manueller CLI-Pull** — die Einstellungen entdecken erlaubte offizielle Grok-/Codex-/Kimi-/Claude-CLI-OAuth-Dateien schreibgeschützt; nach Vorschau und Überschreibbestätigung ziehen Sie eine Einweg-Kopie.
|
|
45
|
+
- 🗂️ **Einstellungen mit Tabs** — Accounts, Gateway, Capabilities und About; Remote-Hosts bevorzugen Device-Code mit ruhigeren CLI-Missing-Hinweisen; angemeldete Karten bleiben eingeklappt, bis sie erweitert werden.
|
|
46
|
+
- 🎛️ **Optionale Funktionen, standardmäßig aus** — Codex-Suche, Nutzung/Kontingent, Bild erzeugen/bearbeiten, Fast und Grok Imagine wirken live beim Einschalten. Ein zusätzlicher, standardmäßig deaktivierter Schalter erlaubt Nicht-Codex-Modellrouten die Codex-Bildwerkzeuge, ohne Codex-Anmeldung, Sitzung oder Anhangseigentum zu umgehen.
|
|
47
|
+
- 🔌 **Opt-in lokales API-Gateway** — standardmäßig ausgeschalteter Loopback-Server, OpenAI-/Anthropic-kompatibel; für Ihre eigenen Werkzeuge, niemals ein öffentliches Relay.
|
|
48
|
+
|
|
49
|
+
## Integrationsprobleme, die dieses Plugin löst
|
|
50
|
+
|
|
51
|
+
Diese Suchbegriffe und DSH-Fehler führen meist hierher.
|
|
52
|
+
|
|
53
|
+
| Gesucht / gesehen | Was kaputt war | Was das Plugin tut |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| SuperGrok / X Premium in DSH, Grok Build vs `api.x.ai` | Die eingebaute Route `xai` ist die Pay-as-you-go-API. Das Coding-Abo geht über `cli-chat-proxy.grok.com` | Route `grok-build` + CLI-Fingerabdruck-Header (`X-XAI-Token-Auth` usw.), damit kein stilles 403 entsteht |
|
|
56
|
+
| `API key is invalid` / `AUTH` | Die GUI mappt **jedes** AUTH auf diesen Text. Oft ist nur das kurze OAuth-Access-Token abgelaufen | Refresh **5 Min.** vor Ablauf; bei 401 Token invalidieren und den Step **wiederholen** |
|
|
57
|
+
| `INVALID_REPLAY_STATE` im 2. Codex/Kimi-Turn | Replay trug noch die native pi-ai-Provider-ID | Harness-Route-ID behalten und altes Replay heilen |
|
|
58
|
+
| grok-4.6 ohne **xhigh** | `/v1/models-v2` liefert bereits `reasoning_efforts`; das 4.5-Template versteckt xhigh | Live-Efforts einlesen. 4.6 hat xhigh; 4.5 bleibt low/medium/high |
|
|
59
|
+
| Kimi Code als Anthropic-`x-api-key` | OAuth-Token als Anthropic-Key gesendet | Nur `Authorization: Bearer` |
|
|
60
|
+
| Nicht angemeldete Modelle bleiben im Wähler | Alle registrierten Routen wurden gelistet | Nicht authentifizierte Routen sind leer; angemeldete Namen tragen `(OAuth)` |
|
|
61
|
+
| PKCE auf remote / headless DSH | Kein Weg zurück zu `localhost` | Device-Code für Grok/Codex/Kimi; Claude akzeptiert die eingefügte Redirect-URL |
|
|
62
|
+
| Proxy lässt Grok durch und legt Kimi in China lahm | Ein globales `HTTPS_PROXY` | Nur Allowlist; Kimi bleibt **direkt**, außer `proxyKimi: true` |
|
|
63
|
+
|
|
64
|
+
## Unterstützte Anbieter
|
|
65
|
+
|
|
66
|
+
| Anbieter | Route | Authentifizierung | Koexistiert mit |
|
|
67
|
+
|---|---|---|---|
|
|
68
|
+
| **xAI Grok Build** | `grok-build` | SuperGrok / X Premium OAuth | `xai` |
|
|
69
|
+
| **OpenAI Codex** | `codex-oauth` | ChatGPT Plus/Pro OAuth | `openai` |
|
|
70
|
+
| **Kimi Code** | `kimi-code-oauth` | Kimi Code OAuth | `kimi-coding` |
|
|
71
|
+
| **Claude Code** | `claude-code-oauth` | Claude Pro/Max OAuth | — |
|
|
72
|
+
| **Google Antigravity** | `agy` | `dsh-agy` Google OAuth | — |
|
|
73
|
+
|
|
74
|
+
> Der Geräte-Login von Grok Build, der dynamische `/v1/models-v2`-Katalog und das Responses-Streaming sind auf echten Deployments verifiziert. Codex/Kimi/Claude nutzen das native OAuth/Refresh von `@earendil-works/pi-ai`, anstatt die Anbieter-Flows neu zu implementieren.
|
|
75
|
+
|
|
76
|
+
## 🚀 Schnellstart
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# 1. Plugin in das Web-Profil installieren (aktuelle npm-Version)
|
|
80
|
+
dsh plugin --profile web add dsh-coding-subscription-oauth@0.6.3
|
|
81
|
+
|
|
82
|
+
# 2. optional — Google Antigravity (gepinnte, geprüfte Version)
|
|
83
|
+
dsh plugin --profile web add dsh-agy@0.1.2
|
|
84
|
+
|
|
85
85
|
# 3. den vorhandenen DSH-Web-Prozess mit dem konfigurierten Prozessmanager neu starten
|
|
86
86
|
# `dsh web` ist der offizielle CLI-Alias, kein Dienstname.
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
Danach **Settings → Coding OAuth** öffnen und bei einem beliebigen Anbieter anmelden. Fertig — wählen Sie Ihr authentifiziertes Modell im Wähler.
|
|
90
|
-
|
|
91
|
-
## 📚 Inhaltsverzeichnis
|
|
92
|
-
|
|
93
|
-
- [Namensänderung](#namensänderung)
|
|
94
|
-
- [Funktionen](#-funktionen)
|
|
95
|
-
- [Integrationsprobleme, die dieses Plugin löst](#integrationsprobleme-die-dieses-plugin-löst)
|
|
96
|
-
- [Unterstützte Anbieter](#unterstützte-anbieter)
|
|
97
|
-
- [Schnellstart](#-schnellstart)
|
|
98
|
-
- [Installation](#installation)
|
|
99
|
-
- [Einstellungsseite](#einstellungsseite)
|
|
100
|
-
- [Optionale Funktionen](#optionale-funktionen)
|
|
101
|
-
- [Lokales API-Gateway](#lokales-api-gateway)
|
|
102
|
-
- [CLI](#cli)
|
|
103
|
-
- [Kimi in China](#kimi-in-china)
|
|
104
|
-
- [Netzwerk-Proxy](#netzwerk-proxy)
|
|
105
|
-
- [Ausfallsicherheit](#ausfallsicherheit)
|
|
106
|
-
- [Zugangsdaten](#zugangsdaten)
|
|
107
|
-
- [Architektur](#architektur)
|
|
108
|
-
- [Technische Hinweise](#technische-hinweise)
|
|
109
|
-
- [Compliance](#compliance)
|
|
110
|
-
- [Dokumentation](#dokumentation)
|
|
111
|
-
- [Verwandt](#verwandt)
|
|
112
|
-
- [Mitwirken](#mitwirken)
|
|
113
|
-
- [Lizenz](#lizenz)
|
|
114
|
-
|
|
115
|
-
## Installation
|
|
116
|
-
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Danach **Settings → Coding OAuth** öffnen und bei einem beliebigen Anbieter anmelden. Fertig — wählen Sie Ihr authentifiziertes Modell im Wähler.
|
|
90
|
+
|
|
91
|
+
## 📚 Inhaltsverzeichnis
|
|
92
|
+
|
|
93
|
+
- [Namensänderung](#namensänderung)
|
|
94
|
+
- [Funktionen](#-funktionen)
|
|
95
|
+
- [Integrationsprobleme, die dieses Plugin löst](#integrationsprobleme-die-dieses-plugin-löst)
|
|
96
|
+
- [Unterstützte Anbieter](#unterstützte-anbieter)
|
|
97
|
+
- [Schnellstart](#-schnellstart)
|
|
98
|
+
- [Installation](#installation)
|
|
99
|
+
- [Einstellungsseite](#einstellungsseite)
|
|
100
|
+
- [Optionale Funktionen](#optionale-funktionen)
|
|
101
|
+
- [Lokales API-Gateway](#lokales-api-gateway)
|
|
102
|
+
- [CLI](#cli)
|
|
103
|
+
- [Kimi in China](#kimi-in-china)
|
|
104
|
+
- [Netzwerk-Proxy](#netzwerk-proxy)
|
|
105
|
+
- [Ausfallsicherheit](#ausfallsicherheit)
|
|
106
|
+
- [Zugangsdaten](#zugangsdaten)
|
|
107
|
+
- [Architektur](#architektur)
|
|
108
|
+
- [Technische Hinweise](#technische-hinweise)
|
|
109
|
+
- [Compliance](#compliance)
|
|
110
|
+
- [Dokumentation](#dokumentation)
|
|
111
|
+
- [Verwandt](#verwandt)
|
|
112
|
+
- [Mitwirken](#mitwirken)
|
|
113
|
+
- [Lizenz](#lizenz)
|
|
114
|
+
|
|
115
|
+
## Installation
|
|
116
|
+
|
|
117
117
|
Erfordert DeepSeek Harness `0.1.1-rc.2` und Node.js 22.19+. Vollständige Details in den [Installationshinweisen](INSTALL.md).
|
|
118
|
-
|
|
119
|
-
```bash
|
|
120
|
-
# aktuelle npm-Version (empfohlen)
|
|
121
|
-
dsh plugin --profile web add dsh-coding-subscription-oauth@0.6.
|
|
122
|
-
|
|
123
|
-
# Entwicklung/Alternativ: von GitHub
|
|
124
|
-
dsh plugin --profile web add github:lninghaha/dsh-coding-subscription-oauth
|
|
125
|
-
|
|
126
|
-
# Entwicklung/Alternativ: ein lokales Entwicklungs-Checkout
|
|
127
|
-
dsh plugin --profile web add ./dsh-coding-subscription-oauth
|
|
128
|
-
```
|
|
129
|
-
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# aktuelle npm-Version (empfohlen)
|
|
121
|
+
dsh plugin --profile web add dsh-coding-subscription-oauth@0.6.3
|
|
122
|
+
|
|
123
|
+
# Entwicklung/Alternativ: von GitHub
|
|
124
|
+
dsh plugin --profile web add github:lninghaha/dsh-coding-subscription-oauth
|
|
125
|
+
|
|
126
|
+
# Entwicklung/Alternativ: ein lokales Entwicklungs-Checkout
|
|
127
|
+
dsh plugin --profile web add ./dsh-coding-subscription-oauth
|
|
128
|
+
```
|
|
129
|
+
|
|
130
130
|
Nach der Installation den vorhandenen DSH-Web-Prozess neu starten. Verifikation gegen ein Live-Deployment:
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
pnpm run verify:deployed # prüft echtes /api/llm.models + OAuth-Status
|
|
134
|
-
DSH_EXPECT_AGY_AUTH=signed-in pnpm run verify:deployed # falls Google angemeldet ist
|
|
135
|
-
|
|
136
|
-
DSH_RESTORE_PROVIDER=openai \
|
|
137
|
-
DSH_RESTORE_MODEL=gpt-5.6-sol \
|
|
138
|
-
DSH_RESTORE_REASONING=max \
|
|
139
|
-
pnpm run smoke:deployed # echte Codex/Kimi-Tool-Calls + Replay des zweiten Turns
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
> `smoke:deployed` erstellt eine temporäre Sitzung, validiert Codex- und Kimi-Tool-Calls sowie einen zweiten Benutzer-Turn (Regression für `INVALID_REPLAY_STATE`), stellt das deklarierte Standardmodell wieder her und archiviert die Sitzung.
|
|
143
|
-
|
|
144
|
-
## Einstellungsseite
|
|
145
|
-
|
|
146
|
-
**Settings → Coding OAuth** öffnen:
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
<table>
|
|
150
|
-
<tr>
|
|
151
|
-
<td align="center" valign="top" width="33%">
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
pnpm run verify:deployed # prüft echtes /api/llm.models + OAuth-Status
|
|
134
|
+
DSH_EXPECT_AGY_AUTH=signed-in pnpm run verify:deployed # falls Google angemeldet ist
|
|
135
|
+
|
|
136
|
+
DSH_RESTORE_PROVIDER=openai \
|
|
137
|
+
DSH_RESTORE_MODEL=gpt-5.6-sol \
|
|
138
|
+
DSH_RESTORE_REASONING=max \
|
|
139
|
+
pnpm run smoke:deployed # echte Codex/Kimi-Tool-Calls + Replay des zweiten Turns
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
> `smoke:deployed` erstellt eine temporäre Sitzung, validiert Codex- und Kimi-Tool-Calls sowie einen zweiten Benutzer-Turn (Regression für `INVALID_REPLAY_STATE`), stellt das deklarierte Standardmodell wieder her und archiviert die Sitzung.
|
|
143
|
+
|
|
144
|
+
## Einstellungsseite
|
|
145
|
+
|
|
146
|
+
**Settings → Coding OAuth** öffnen:
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
<table>
|
|
150
|
+
<tr>
|
|
151
|
+
<td align="center" valign="top" width="33%">
|
|
152
152
|
<a href="media/en/settings_accounts.png"><img src="media/en/settings_accounts.png" alt="Coding OAuth Accounts tab" width="280" /></a><br />
|
|
153
|
-
<sub>Accounts</sub>
|
|
154
|
-
</td>
|
|
155
|
-
<td align="center" valign="top" width="33%">
|
|
153
|
+
<sub>Accounts</sub>
|
|
154
|
+
</td>
|
|
155
|
+
<td align="center" valign="top" width="33%">
|
|
156
156
|
<a href="media/en/settings_gateway.png"><img src="media/en/settings_gateway.png" alt="Coding OAuth Gateway tab" width="280" /></a><br />
|
|
157
|
-
<sub>Gateway</sub>
|
|
158
|
-
</td>
|
|
159
|
-
<td align="center" valign="top" width="33%">
|
|
157
|
+
<sub>Gateway</sub>
|
|
158
|
+
</td>
|
|
159
|
+
<td align="center" valign="top" width="33%">
|
|
160
160
|
<a href="media/en/settings_capabilities.png"><img src="media/en/settings_capabilities.png" alt="Coding OAuth Capabilities tab" width="280" /></a><br />
|
|
161
|
-
<sub>Capabilities</sub>
|
|
162
|
-
</td>
|
|
163
|
-
</tr>
|
|
164
|
-
</table>
|
|
165
|
-
|
|
166
|
-
| Anbieter | Methoden |
|
|
167
|
-
|---|---|
|
|
168
|
-
| Grok | Autorisierungscode · Gerätecode · Grok-CLI-Import · Modellauswahl |
|
|
169
|
-
| Codex | Gerätecode (empfohlen auf Remote-DSH) · Browser-PKCE |
|
|
170
|
-
| Kimi | Gerätecode |
|
|
171
|
-
| Claude | Browser-PKCE (ein Remote-Browser kann die vollständige localhost-Redirect-URL einfügen) |
|
|
172
|
-
| Antigravity | `dsh-agy`-Installationsstatus + profil-lokale CLI-Befehle |
|
|
173
|
-
|
|
174
|
-
Die Einstellungsseite ist in vier obere Tabs aufgeteilt: **Accounts**, **Gateway**, **Capabilities** und **About**. Karten angemeldeter Anbieter klappen zu einer kompakten Zusammenfassung zusammen und werden für die Modellbearbeitung aufgeklappt. Die CLI-Pull-Vorschau ist volle Breite, und der Imagine-Status erscheint im Tab Capabilities.
|
|
175
|
-
|
|
176
|
-
Der Wähler listet nur Routen, die die Authentifizierung abgeschlossen haben; nicht authentifizierte Anbieter liefern eine leere Liste. Anbieternamen tragen `(OAuth)`, und der Katalog wird nach An-/Abmeldung über `llm/adapters-updated` aktualisiert.
|
|
177
|
-
|
|
178
|
-
## Optionale Funktionen
|
|
179
|
-
|
|
180
|
-
Die
|
|
181
|
-
|
|
182
|
-
## Lokales API-Gateway
|
|
183
|
-
|
|
184
|
-
Standardmäßig **aus**. Wenn aktiviert, startet es einen isolierten `node:http`-Server (nicht der DSH-Web-Port) auf `127.0.0.1:18080` und nutzt dieselben angemeldeten OAuth-Sitzungen:
|
|
185
|
-
|
|
186
|
-
```yaml
|
|
187
|
-
gateway:
|
|
188
|
-
enabled: false
|
|
189
|
-
bind: 127.0.0.1
|
|
190
|
-
port: 18080
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
Endpoints: `GET /healthz`, `GET /v1/models`, `POST /v1/chat/completions`, `POST /v1/responses`, `POST /v1/messages`. Ein Bearer-Schlüssel wird in `$DSH_HOME/.coding-oauth-gateway.json` (`0600`) gespeichert. In den Einstellungen lassen sich die OpenAI-Basis-URL (Basis + `/v1`), die Anthropic-Basis-URL und der aktuelle Bearer-Schlüssel kopieren, ohne ihn zu rotieren; die Schlüsselanzeige ist nur über Loopback möglich und wird nicht im Browser-Speicher persistiert. Die Rotation ist eine bestätigte destruktive Aktion. Der Listen-Port kann direkt bearbeitet und mit Apply gespeichert oder per Random (18100–18999) gefüllt werden; der gewählte Port wird im Nur-Eigentümer-Gateway-Dokument persistiert, und ein laufender Listener bindet sich neu. Das Bind bleibt YAML-only; ein Nicht-Loopback-Bind erfordert einen Schlüssel. Dies ist kein Remote-Relay.
|
|
194
|
-
|
|
195
|
-
## CLI
|
|
196
|
-
|
|
197
|
-
```bash
|
|
198
|
-
# `dsh-grok-build` bleibt ein Befehlsalias
|
|
199
|
-
dsh-coding-oauth login [--pkce] | import | status | logout
|
|
200
|
-
|
|
201
|
-
# neuere Anbieter
|
|
202
|
-
dsh-coding-oauth login codex --device-auth | codex --browser | kimi | claude
|
|
203
|
-
dsh-coding-oauth status all
|
|
204
|
-
dsh-coding-oauth logout codex
|
|
205
|
-
|
|
206
|
-
# Antigravity (zuerst ins Web-Profil installieren)
|
|
207
|
-
dsh plugin --profile web exec dsh-agy login --headless
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
> Die `dsh-agy`-CLI ändert den Kontopool außerhalb des DSH-Prozesses und kann daher kein Katalogereignis im Prozess auslösen — nach An-/Abmeldung den Modellwähler schließen und wieder öffnen.
|
|
211
|
-
|
|
212
|
-
## Kimi in China
|
|
213
|
-
|
|
214
|
-
Das Kimi-Code-Abonnement-OAuth nutzt `https://auth.kimi.com`; das Inferencing nutzt `https://api.kimi.com/coding`. `https://api.moonshot.cn/v1` ist der Pay-as-you-go-API-Key-Kanal des **Moonshot Open Platform** — es gibt keinen umschaltbaren „China-OAuth-Endpunkt“. Dieses Plugin nutzt eine separate Route `kimi-code-oauth` und hat keinen Einfluss auf eine bestehende `kimi-coding`-API-Key-Konfiguration.
|
|
215
|
-
|
|
216
|
-
## Netzwerk-Proxy
|
|
217
|
-
|
|
218
|
-
Priorität: `config.proxy` → `CODING_OAUTH_PROXY` → `GROK_BUILD_PROXY` → `HTTPS_PROXY`/`HTTP_PROXY`.
|
|
219
|
-
|
|
220
|
-
```yaml
|
|
221
|
-
- id: llm-grok-build-oauth
|
|
222
|
-
config:
|
|
223
|
-
proxy: http://127.0.0.1:7890
|
|
224
|
-
proxyKimi: false
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
Nur geprüfte Abonnement-Domänen werden proxied (xAI/Grok, OpenAI Codex, Claude/Anthropic, Google Antigravity); aller übriger DSH-Traffic behält seinen ursprünglichen Dispatcher. Kimi bleibt standardmäßig direkt und nutzt den Proxy nur bei `proxyKimi: true`.
|
|
228
|
-
|
|
229
|
-
## Ausfallsicherheit
|
|
230
|
-
|
|
231
|
-
OAuth-Zugriffstoken werden **fünf Minuten** vor dem gespeicherten Ablauf erneuert (pi-ai 0.84+). Lehnt der Upstream ein lokal noch gültiges Token mit 401/403 ab, setzt das Plugin das gespeicherte `expires` in die Vergangenheit; der wiederholte Step refresht zuerst und sendet dann erneut.
|
|
232
|
-
|
|
233
|
-
Wiederholungen folgen der Harness-Retry-Policy: transiente Fehler (`RATE_LIMIT`/`SERVER`/`TIMEOUT`/`TRANSPORT`/`EMPTY_RESPONSE`) **und `AUTH`** werden mit exponentiellem Backoff wiederholt (5 Versuche, 5 s → 10 s → 20 s → 40 s → 80 s (~155 s gestapelt), 10 % Jitter). Quota-Erschöpfung und ein totes Refresh-Token werden **nicht** wiederholt. Überschreiben pro Deployment:
|
|
234
|
-
|
|
235
|
-
```yaml
|
|
236
|
-
- id: llm-grok-build-oauth
|
|
237
|
-
config:
|
|
238
|
-
retryPolicy:
|
|
239
|
-
mode: normal
|
|
240
|
-
maxRetries: 5
|
|
241
|
-
retryableCodes: [EMPTY_RESPONSE, RATE_LIMIT, SERVER, TIMEOUT, TRANSPORT, AUTH]
|
|
242
|
-
backoff: { initialDelayMs: 5000, maxDelayMs: 80000, jitterRatio: 0.1 }
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
## Zugangsdaten
|
|
246
|
-
|
|
247
|
-
Nur-Eigentümer `0600`, atomares Schreiben, dateiübergreifende Prozesssperre:
|
|
248
|
-
|
|
249
|
-
- `$DSH_HOME/.grok-build-auth.json`
|
|
250
|
-
- `$DSH_HOME/.codex-oauth-auth.json`
|
|
251
|
-
- `$DSH_HOME/.kimi-code-oauth-auth.json`
|
|
252
|
-
- `$DSH_HOME/.claude-code-oauth-auth.json`
|
|
253
|
-
|
|
254
|
-
Auswahl-Caches liegen in den entsprechenden `*-models.json`-Dateien. **Kein HTTP-Status, kein Log und keine Oberfläche darf ein Token zurückgeben.**
|
|
255
|
-
|
|
256
|
-
## Architektur
|
|
257
|
-
|
|
258
|
-
```mermaid
|
|
259
|
-
flowchart LR
|
|
260
|
-
subgraph DSH["DSH Harness"]
|
|
261
|
-
UI[Einstellungen / Web · Coding OAuth] --> LLM[llm route]
|
|
262
|
-
LLM --> ALIA[Routen-Alias-Adapter]
|
|
263
|
-
end
|
|
264
|
-
ALIA --> PI[nativer pi-ai-Anbieter<br/>OAuth · Refresh · Stream]
|
|
265
|
-
PI --> GROK[Grok Build]
|
|
266
|
-
PI --> COD[Codex]
|
|
267
|
-
PI --> KIMI[Kimi]
|
|
268
|
-
PI --> CLAU[Claude]
|
|
269
|
-
AGY[dsh-agy-Plugin] --> GAL[Google Antigravity]
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
## Technische Hinweise
|
|
273
|
-
|
|
274
|
-
- **Grok Build**: eigener Responses-Anbieter auf `cli-chat-proxy.grok.com/v1`, CLI-Fingerprint-Header, dynamischer Modellkatalog.
|
|
275
|
-
- **Codex/Kimi/Claude**: native pi-ai-Anbieter übernehmen OAuth und Refresh; der Routen-Alias-Adapter mappt sie auf native ids, während die Modellidentität unverändert bleibt.
|
|
276
|
-
- Der Kimi-Zugangstoken wird explizit in `Authorization: Bearer` umgewandelt — niemals versehentlich als Anthropic-`x-api-key` gesendet.
|
|
277
|
-
- Google Antigravity wird hier **nicht** reverse-engineered; es nutzt ein versions-gepinntes dediziertes DSH-Plugin.
|
|
278
|
-
|
|
279
|
-
## Compliance
|
|
280
|
-
|
|
281
|
-
Coding-Abonnements über einen Drittanbieter-Harness zu nutzen, kann in einer Grauzone der Bedingungen jedes Anbieters liegen und Quoten-, Regional- oder Kontoriskokontrollen auslösen. **Nutzen Sie nur eigene Konten**; dieses Projekt unterstützt keine Massenkonten, Quotenverkauf, Remote-Relay, Paywall-Umgehung oder Client-Identitätsvortäuschung. Für kommerzielle Nutzung bevorzugen Sie die offiziellen API-Key-Kanäle der Anbieter.
|
|
282
|
-
|
|
283
|
-
## Dokumentation
|
|
284
|
-
|
|
285
|
-
| Dokument | Zweck |
|
|
286
|
-
|---|---|
|
|
287
|
-
| [`INSTALL.md`](INSTALL.md) | Installations- und Nutzungsdetails |
|
|
288
|
-
| [`CHANGELOG.md`](CHANGELOG.md) | Release-Historie |
|
|
289
|
-
| [`docs/00-project-rules.md`](docs/00-project-rules.md) | Versionierung, Release-Loop, Trennung öffentlich/privat |
|
|
290
|
-
| [`docs/02-architecture.md`](docs/02-architecture.md) | Interne Architektur (Routen, Datenfluss, Module, API) · [中文](docs/02-architecture.zh-CN.md) |
|
|
291
|
-
| [`CONTRIBUTING.md`](CONTRIBUTING.md) | Beitragsleitfaden |
|
|
292
|
-
|
|
293
|
-
## Verwandt
|
|
294
|
-
|
|
295
|
-
- [`dsh-agy`](https://www.npmjs.com/package/dsh-agy) — separates, versions-gepinntes Plugin für Google Antigravity.
|
|
296
|
-
|
|
297
|
-
## Mitwirken
|
|
298
|
-
|
|
299
|
-
Alle Arten von Beiträgen sind willkommen — Funktionen, Dokumentation, Übersetzungen, Bug-Reports. Siehe **[CONTRIBUTING](CONTRIBUTING.md)** für den Ablauf, Commit-Konventionen und den Release-Loop. Wenn Ihre Sprache nicht aufgeführt ist, senden Sie einen PR mit einer README-Übersetzung, und wir fügen sie der Tabelle oben hinzu.
|
|
300
|
-
|
|
301
|
-
## Lizenz
|
|
302
|
-
|
|
303
|
-
[Apache-2.0](LICENSE) · siehe [NOTICE](NOTICE). Teile stammen vom Projekt [dsh-xai](https://github.com/MirDie/dsh-xai) (Apache-2.0).
|
|
161
|
+
<sub>Capabilities</sub>
|
|
162
|
+
</td>
|
|
163
|
+
</tr>
|
|
164
|
+
</table>
|
|
165
|
+
|
|
166
|
+
| Anbieter | Methoden |
|
|
167
|
+
|---|---|
|
|
168
|
+
| Grok | Autorisierungscode · Gerätecode · Grok-CLI-Import · Modellauswahl |
|
|
169
|
+
| Codex | Gerätecode (empfohlen auf Remote-DSH) · Browser-PKCE |
|
|
170
|
+
| Kimi | Gerätecode |
|
|
171
|
+
| Claude | Browser-PKCE (ein Remote-Browser kann die vollständige localhost-Redirect-URL einfügen) |
|
|
172
|
+
| Antigravity | `dsh-agy`-Installationsstatus + profil-lokale CLI-Befehle |
|
|
173
|
+
|
|
174
|
+
Die Einstellungsseite ist in vier obere Tabs aufgeteilt: **Accounts**, **Gateway**, **Capabilities** und **About**. Karten angemeldeter Anbieter klappen zu einer kompakten Zusammenfassung zusammen und werden für die Modellbearbeitung aufgeklappt. Die CLI-Pull-Vorschau ist volle Breite, und der Imagine-Status erscheint im Tab Capabilities.
|
|
175
|
+
|
|
176
|
+
Der Wähler listet nur Routen, die die Authentifizierung abgeschlossen haben; nicht authentifizierte Anbieter liefern eine leere Liste. Anbieternamen tragen `(OAuth)`, und der Katalog wird nach An-/Abmeldung über `llm/adapters-updated` aktualisiert.
|
|
177
|
+
|
|
178
|
+
## Optionale Funktionen
|
|
179
|
+
|
|
180
|
+
Die acht Schalter `codexSearch`, `codexImages`, `codexImageEdits`, `codexImagesAnyModel`, `codexUsage`, `codexFast`, `grokImagineImage` und `grokImagineVideo` sind standardmäßig aus und werden ohne Neustart live angewendet. Die Grenzwerte sind `searchResults` (1–20, Standard 5), `imageCount` (1–4, Standard 1) und `videoArtifactTtlMs` (1 Stunde–7 Tage, Standard 7 Tage; die Oberfläche zeigt 1–168 Stunden). Eine kürzere Aufbewahrung verkürzt und bereinigt vorhandene Artefakte sofort; eine Erhöhung gilt nur für neue Artefakte.
|
|
181
|
+
|
|
182
|
+
## Lokales API-Gateway
|
|
183
|
+
|
|
184
|
+
Standardmäßig **aus**. Wenn aktiviert, startet es einen isolierten `node:http`-Server (nicht der DSH-Web-Port) auf `127.0.0.1:18080` und nutzt dieselben angemeldeten OAuth-Sitzungen:
|
|
185
|
+
|
|
186
|
+
```yaml
|
|
187
|
+
gateway:
|
|
188
|
+
enabled: false
|
|
189
|
+
bind: 127.0.0.1
|
|
190
|
+
port: 18080
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Endpoints: `GET /healthz`, `GET /v1/models`, `POST /v1/chat/completions`, `POST /v1/responses`, `POST /v1/messages`. Ein Bearer-Schlüssel wird in `$DSH_HOME/.coding-oauth-gateway.json` (`0600`) gespeichert. In den Einstellungen lassen sich die OpenAI-Basis-URL (Basis + `/v1`), die Anthropic-Basis-URL und der aktuelle Bearer-Schlüssel kopieren, ohne ihn zu rotieren; die Schlüsselanzeige ist nur über Loopback möglich und wird nicht im Browser-Speicher persistiert. Die Rotation ist eine bestätigte destruktive Aktion. Der Listen-Port kann direkt bearbeitet und mit Apply gespeichert oder per Random (18100–18999) gefüllt werden; der gewählte Port wird im Nur-Eigentümer-Gateway-Dokument persistiert, und ein laufender Listener bindet sich neu. Das Bind bleibt YAML-only; ein Nicht-Loopback-Bind erfordert einen Schlüssel. Dies ist kein Remote-Relay.
|
|
194
|
+
|
|
195
|
+
## CLI
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
# `dsh-grok-build` bleibt ein Befehlsalias
|
|
199
|
+
dsh-coding-oauth login [--pkce] | import | status | logout
|
|
200
|
+
|
|
201
|
+
# neuere Anbieter
|
|
202
|
+
dsh-coding-oauth login codex --device-auth | codex --browser | kimi | claude
|
|
203
|
+
dsh-coding-oauth status all
|
|
204
|
+
dsh-coding-oauth logout codex
|
|
205
|
+
|
|
206
|
+
# Antigravity (zuerst ins Web-Profil installieren)
|
|
207
|
+
dsh plugin --profile web exec dsh-agy login --headless
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
> Die `dsh-agy`-CLI ändert den Kontopool außerhalb des DSH-Prozesses und kann daher kein Katalogereignis im Prozess auslösen — nach An-/Abmeldung den Modellwähler schließen und wieder öffnen.
|
|
211
|
+
|
|
212
|
+
## Kimi in China
|
|
213
|
+
|
|
214
|
+
Das Kimi-Code-Abonnement-OAuth nutzt `https://auth.kimi.com`; das Inferencing nutzt `https://api.kimi.com/coding`. `https://api.moonshot.cn/v1` ist der Pay-as-you-go-API-Key-Kanal des **Moonshot Open Platform** — es gibt keinen umschaltbaren „China-OAuth-Endpunkt“. Dieses Plugin nutzt eine separate Route `kimi-code-oauth` und hat keinen Einfluss auf eine bestehende `kimi-coding`-API-Key-Konfiguration.
|
|
215
|
+
|
|
216
|
+
## Netzwerk-Proxy
|
|
217
|
+
|
|
218
|
+
Priorität: `config.proxy` → `CODING_OAUTH_PROXY` → `GROK_BUILD_PROXY` → `HTTPS_PROXY`/`HTTP_PROXY`.
|
|
219
|
+
|
|
220
|
+
```yaml
|
|
221
|
+
- id: llm-grok-build-oauth
|
|
222
|
+
config:
|
|
223
|
+
proxy: http://127.0.0.1:7890
|
|
224
|
+
proxyKimi: false
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Nur geprüfte Abonnement-Domänen werden proxied (xAI/Grok, OpenAI Codex, Claude/Anthropic, Google Antigravity); aller übriger DSH-Traffic behält seinen ursprünglichen Dispatcher. Kimi bleibt standardmäßig direkt und nutzt den Proxy nur bei `proxyKimi: true`.
|
|
228
|
+
|
|
229
|
+
## Ausfallsicherheit
|
|
230
|
+
|
|
231
|
+
OAuth-Zugriffstoken werden **fünf Minuten** vor dem gespeicherten Ablauf erneuert (pi-ai 0.84+). Lehnt der Upstream ein lokal noch gültiges Token mit 401/403 ab, setzt das Plugin das gespeicherte `expires` in die Vergangenheit; der wiederholte Step refresht zuerst und sendet dann erneut.
|
|
232
|
+
|
|
233
|
+
Wiederholungen folgen der Harness-Retry-Policy: transiente Fehler (`RATE_LIMIT`/`SERVER`/`TIMEOUT`/`TRANSPORT`/`EMPTY_RESPONSE`) **und `AUTH`** werden mit exponentiellem Backoff wiederholt (5 Versuche, 5 s → 10 s → 20 s → 40 s → 80 s (~155 s gestapelt), 10 % Jitter). Quota-Erschöpfung und ein totes Refresh-Token werden **nicht** wiederholt. Überschreiben pro Deployment:
|
|
234
|
+
|
|
235
|
+
```yaml
|
|
236
|
+
- id: llm-grok-build-oauth
|
|
237
|
+
config:
|
|
238
|
+
retryPolicy:
|
|
239
|
+
mode: normal
|
|
240
|
+
maxRetries: 5
|
|
241
|
+
retryableCodes: [EMPTY_RESPONSE, RATE_LIMIT, SERVER, TIMEOUT, TRANSPORT, AUTH]
|
|
242
|
+
backoff: { initialDelayMs: 5000, maxDelayMs: 80000, jitterRatio: 0.1 }
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## Zugangsdaten
|
|
246
|
+
|
|
247
|
+
Nur-Eigentümer `0600`, atomares Schreiben, dateiübergreifende Prozesssperre:
|
|
248
|
+
|
|
249
|
+
- `$DSH_HOME/.grok-build-auth.json`
|
|
250
|
+
- `$DSH_HOME/.codex-oauth-auth.json`
|
|
251
|
+
- `$DSH_HOME/.kimi-code-oauth-auth.json`
|
|
252
|
+
- `$DSH_HOME/.claude-code-oauth-auth.json`
|
|
253
|
+
|
|
254
|
+
Auswahl-Caches liegen in den entsprechenden `*-models.json`-Dateien. **Kein HTTP-Status, kein Log und keine Oberfläche darf ein Token zurückgeben.**
|
|
255
|
+
|
|
256
|
+
## Architektur
|
|
257
|
+
|
|
258
|
+
```mermaid
|
|
259
|
+
flowchart LR
|
|
260
|
+
subgraph DSH["DSH Harness"]
|
|
261
|
+
UI[Einstellungen / Web · Coding OAuth] --> LLM[llm route]
|
|
262
|
+
LLM --> ALIA[Routen-Alias-Adapter]
|
|
263
|
+
end
|
|
264
|
+
ALIA --> PI[nativer pi-ai-Anbieter<br/>OAuth · Refresh · Stream]
|
|
265
|
+
PI --> GROK[Grok Build]
|
|
266
|
+
PI --> COD[Codex]
|
|
267
|
+
PI --> KIMI[Kimi]
|
|
268
|
+
PI --> CLAU[Claude]
|
|
269
|
+
AGY[dsh-agy-Plugin] --> GAL[Google Antigravity]
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
## Technische Hinweise
|
|
273
|
+
|
|
274
|
+
- **Grok Build**: eigener Responses-Anbieter auf `cli-chat-proxy.grok.com/v1`, CLI-Fingerprint-Header, dynamischer Modellkatalog.
|
|
275
|
+
- **Codex/Kimi/Claude**: native pi-ai-Anbieter übernehmen OAuth und Refresh; der Routen-Alias-Adapter mappt sie auf native ids, während die Modellidentität unverändert bleibt.
|
|
276
|
+
- Der Kimi-Zugangstoken wird explizit in `Authorization: Bearer` umgewandelt — niemals versehentlich als Anthropic-`x-api-key` gesendet.
|
|
277
|
+
- Google Antigravity wird hier **nicht** reverse-engineered; es nutzt ein versions-gepinntes dediziertes DSH-Plugin.
|
|
278
|
+
|
|
279
|
+
## Compliance
|
|
280
|
+
|
|
281
|
+
Coding-Abonnements über einen Drittanbieter-Harness zu nutzen, kann in einer Grauzone der Bedingungen jedes Anbieters liegen und Quoten-, Regional- oder Kontoriskokontrollen auslösen. **Nutzen Sie nur eigene Konten**; dieses Projekt unterstützt keine Massenkonten, Quotenverkauf, Remote-Relay, Paywall-Umgehung oder Client-Identitätsvortäuschung. Für kommerzielle Nutzung bevorzugen Sie die offiziellen API-Key-Kanäle der Anbieter.
|
|
282
|
+
|
|
283
|
+
## Dokumentation
|
|
284
|
+
|
|
285
|
+
| Dokument | Zweck |
|
|
286
|
+
|---|---|
|
|
287
|
+
| [`INSTALL.md`](INSTALL.md) | Installations- und Nutzungsdetails |
|
|
288
|
+
| [`CHANGELOG.md`](CHANGELOG.md) | Release-Historie |
|
|
289
|
+
| [`docs/00-project-rules.md`](docs/00-project-rules.md) | Versionierung, Release-Loop, Trennung öffentlich/privat |
|
|
290
|
+
| [`docs/02-architecture.md`](docs/02-architecture.md) | Interne Architektur (Routen, Datenfluss, Module, API) · [中文](docs/02-architecture.zh-CN.md) |
|
|
291
|
+
| [`CONTRIBUTING.md`](CONTRIBUTING.md) | Beitragsleitfaden |
|
|
292
|
+
|
|
293
|
+
## Verwandt
|
|
294
|
+
|
|
295
|
+
- [`dsh-agy`](https://www.npmjs.com/package/dsh-agy) — separates, versions-gepinntes Plugin für Google Antigravity.
|
|
296
|
+
|
|
297
|
+
## Mitwirken
|
|
298
|
+
|
|
299
|
+
Alle Arten von Beiträgen sind willkommen — Funktionen, Dokumentation, Übersetzungen, Bug-Reports. Siehe **[CONTRIBUTING](CONTRIBUTING.md)** für den Ablauf, Commit-Konventionen und den Release-Loop. Wenn Ihre Sprache nicht aufgeführt ist, senden Sie einen PR mit einer README-Übersetzung, und wir fügen sie der Tabelle oben hinzu.
|
|
300
|
+
|
|
301
|
+
## Lizenz
|
|
302
|
+
|
|
303
|
+
[Apache-2.0](LICENSE) · siehe [NOTICE](NOTICE). Teile stammen vom Projekt [dsh-xai](https://github.com/MirDie/dsh-xai) (Apache-2.0).
|