# dsh-hub-oauth-gateway **v1.13.4** · 旧称 `dsh-usage-stats` **[DeepSeek Harness](https://github.com/deepseek-ai/dsh) Web 向けのローカルファースト用量センター。** Token、推定コスト、口座残高、サブスクリプションクォータ、トレンド、予測、アラート、エクスポート — 加えてコーディングサブスクリプション OAuth(Grok Build、Codex、Kimi Code、Claude Code)、オプションのループバック API ゲートウェイ、オプトインのローカル認証/用量モニター。**チャットに token を貼り付けないでください。** [![CI](https://github.com/lninghaha/dsh-hub-oauth-gateway/actions/workflows/ci.yml/badge.svg)](https://github.com/lninghaha/dsh-hub-oauth-gateway/actions/workflows/ci.yml) [![License](https://img.shields.io/badge/license-MIT-2da44e)](LICENSE) [![Contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg)](.github/CONTRIBUTING.md) *[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)*
--- > **Upgrade / 升级:** Follow the versioned steps in [`docs/01-install.md`](docs/01-install.md). Hub `1.13.4` and Subscription `0.8.5` share the verified DSH `0.1.1-rc.2` contract and pin `dsh-coding-oauth-core@0.1.2` with `undici@7.29.0`. Keep profile, configuration, and credential files, update both plugins in the same Web profile, then restart the existing DSH Web process once. --- ## 名称変更 当初 **`dsh-usage-stats`** として公開。**1.1.0** 以降、パッケージとリポジトリは **`dsh-hub-oauth-gateway`**。再インストール前に古い entry を削除してください。ローカルデータファイルと内部 Cordis プラグイン id は同じなので、履歴用量は保持されます。 | | こちらを使用 | 引き続き動作 / 変更なし | |---|---|---| | npm(推奨) | `dsh plugin --profile web add dsh-hub-oauth-gateway` | 旧 npm 名は更新されません | | GitHub / 開発 | [`dsh-hub-oauth-gateway`](https://github.com/lninghaha/dsh-hub-oauth-gateway) | — | | Cordis プラグイン id | `usage-stats` | 変更なし | | SQLite データベース | `${DSH_HOME}/storages/usage-stats-v1.sqlite` | 変更なし | | CLI | `dsh-hub-oauth` | `dsh-hub-grok-build`(エイリアス)。Subscription 所有の `dsh-coding-oauth` / `dsh-grok-build` は本パッケージではありません | リリース履歴は [`CHANGELOG.md`](CHANGELOG.md)。 ## 機能 - **Quick Peek + Full Dashboard** — フローティング HUD(またはサイドバーボタン);概要 / トレンド / 口座 / 詳細 / ローカルのタブ;today / 7d / 30d / month;前期比較;手動更新。 - **タブ式設定** — Settings → Usage Center:Display / Accounts / Gateway / Capabilities / Providers / Fees。 - **プリセットとモジュール** — Minimal、Quota、Cost、Analyst;カスタムモジュール順;密度、モーション、プロバイダーエイリアスと色。 - **アクティビティヒートマップ** — 設定タイムゾーンで 370 日カレンダー + streak。 - **ローカル履歴** — DSH 用量を `(session, turn, step)` で SQLite に投影;後のサンプルで置換、二重カウントなし。 - **コスト推定** — ユーザー所有の百万 token 単価とカバレッジ率;価格未設定は無料扱いしません。 - **サブスクリプション料金台帳** — ローカルサブスクリプション/チャージコスト;通貨一致時に回収倍数。 - **トレンドと予測** — 時間/日/週/月バケット;有界線形外挿を独立シリーズとして。 - **口座とクォータアダプター** — 残高、ウィンドウ、リセット時刻、stale/last-success、ソフトアラート(ハードブロックなし、外部通知なし)。 - **CSV / JSON エクスポート** — フィルタ、日次、または bundle レイアウト;オプションのセッション秘匿;スプレッドシートインジェクション防御。 - **Coding-subscription OAuth** — Grok Build, Codex, Kimi Code, Claude Code via device code / browser / PKCE paste; optional GitHub Copilot LLM route when `oauthDevice.copilotClientId` is set; multi-account store (max 8) with optional `codingOAuth.pool` (`off` | `priority` | `quota_aware`); Claude Code import via **Import Claude Code** (macOS Keychain or file fallback; preview → commit; overwrite still needs confirm); models appear as `(OAuth)`; one-way CLI credential Pull. - **オプションのループバック API ゲートウェイ** — デフォルト off の OpenAI/Anthropic 互換サーバー、自分のツール向け。 - **OpenCode Go** — **アカウントとモデル**から OpenCode Go を接続し、ゲートウェイを有効にせず DSH で使用できます。外部ツールは明示的な `opencode-go/`、対応するプロトコル、安定した会話 ID を使用します。ローカルキーと上流の認証情報は別々です。会話 ID がなければエラーとなり、旧グローバルモードは移行プレビューから変更します。 - **オプション機能** — Codex search / images / usage / Fast と Grok Imagine はデフォルト off;ライブ適用。 - **オプトインのローカルモニター** — 読み取り専用 CLI 認証スナップショットとクロスツール token スキャン(会話内容は読み取りません)。 - **二言語 UI** — DSH locale サービス経由の中国語と英語。 製品調査:[`docs/research/usage-analytics-landscape.md`](https://github.com/lninghaha/dsh-hub-oauth-gateway/blob/main/docs/research/usage-analytics-landscape.md)。アーキテクチャ:[`docs/02-architecture.md`](docs/02-architecture.md)。 ## スクリーンショット DeepSeek Harness Web に本プラグインを入れた状態で撮影(新規隔離 profile ではローカル履歴が空でも正常)。

DSH シェル上のフローティング用量 HUD
フローティング HUD — 本日の指標と複数アカウントのクォータチップ

Usage Center Quick Peek
Quick Peek — ローカルのみの KPI。ワンクリックでフルダッシュボードへ

Usage Center フルダッシュボード
フルダッシュボード — 範囲・タブ・更新・CSV / JSON エクスポート

設定 → Usage Center
設定 → Usage Center — 表示 / アカウント / ゲートウェイ / 機能 / プロバイダー / 費用

## 本プラグインが解決する問題 | 検索 / 目にしたもの | 実際の問題 | 本プラグインの対応 | |---|---|---| | 用量 / コスト / クォータが各 CLI とプロバイダーに分散 | 統一ローカル履歴やカバレッジ付きコストビューがない | SQLite 投影 + 価格ルール + 口座アダプターを Usage Center に集約 | | DSH で SuperGrok / ChatGPT Plus / Kimi Code / Claude Pro を追加 API 請求なしで | 組み込みルートは多くが従量 API key | ローカル OAuth ルートが既存 API-key プロバイダーと共存 | | `本轮运行失败` **API key is invalid** / `AUTH` ターン途中 | GUI がすべての `AUTH` をそのバナーにマップ;OAuth access token は期限切れ | コーディング OAuth ルートで proactive refresh と AUTH 対応リトライ | | サブスクリプションセッション向け OpenAI/Anthropic 互換ツール | 安全なローカルブリッジがない | オプトインのループバックゲートウェイ(公開リレーではない) | | OpenCode Go: `MissingSessionID` | Missing stable conversation ID | DSH: use Accounts & Models; external tools: provide `x-opencode-session`. See [migration](docs/repair-candidate.md). | | Token Monitor 風 CLI 状態を秘密貼り付けなしで | 手動ファイル探索またはチャット貼り付け | オプトイン localMonitor / localUsage、硬化 allowlist パス | ## クイックスタート ```bash # 1. install the current npm release into the web profile dsh plugin --profile web add dsh-hub-oauth-gateway # 2. restart the resident DSH Web process (operator chooses when) # Local service-manager example only; `dsh web` is the official CLI alias for the web profile. # `dsh web` は公式 CLI エイリアスであり、サービス名ではありません。実際に設定したプロセスマネージャーを使ってください。 ``` 次に **Settings → Usage Center** を開く。Accounts / Gateway / Capabilities は必要に応じてサインインまたはスイッチを有効化。完全なインストールオプション(npx インストーラー、GitHub tarball、プロキシ)は [`docs/01-install.md`](docs/01-install.md)。 ## 目次 - [名称変更](#名称変更) - [機能](#機能) - [スクリーンショット](#スクリーンショット) - [本プラグインが解決する問題](#本プラグインが解決する問題) - [クイックスタート](#クイックスタート) - [要件](#要件) - [インストール](#インストール) - [使い方](#使い方) - [設定](#設定) - [Coding OAuth](#coding-oauth) - [ローカル API ゲートウェイ](#ローカル-api-ゲートウェイ) - [オプション機能](#オプション機能) - [ランタイム設定](#ランタイム設定) - [認証情報](#認証情報) - [データと移行](#データと移行) - [プライバシーとセキュリティ](#プライバシーとセキュリティ) - [アーキテクチャ](#アーキテクチャ) - [ドキュメント](#ドキュメント) - [コントリビューション](#コントリビューション) - [ライセンス](#ライセンス) ## 要件 - DeepSeek Harness Web、`@deepseek-ai/dsh 0.1.1-rc.2` で検証済み - Node.js `^22.19.0 || >=24.0.0` - ループバック DSH Web バックエンド;認証済みプライベートネットワークへの制御されたローカル HTTPS リバースプロキシは可。プラグイン API 単体の公開や無認証の公インターネット公開はしないでください。 ## インストール ```bash dsh plugin --profile web add dsh-hub-oauth-gateway dsh plugin --profile web update dsh-hub-oauth-gateway dsh plugin --profile web remove dsh-hub-oauth-gateway ``` プラグインマネージャーがない場合の互換インストーラー:`npx --yes dsh-hub-oauth-gateway-install`。GitHub `/path/to/*.tgz` と開発パスインストールは [`docs/01-install.md`](docs/01-install.md)。インストール後、実際に設定したプロセスマネージャーで既存の DSH Web プロセスを再起動し、`http://127.0.0.1:3080` を更新してください。DSH は共通のサービス名を提供しません。 ## 使い方 1. フローティング HUD(または **Settings → Display → entry mode** のサイドバーボタン)から Quick Peek を開く。設定から Peek / Full Dashboard もリンク。 2. Full Dashboard で overview / trends / accounts / details / local を切り替え;range、metric、provider/model 次元を選択。 3. 更新ボタンで即時投影と口座更新。通常の GET はローカルスナップショットのみ読み取り。 4. **Settings → Usage Center** で Display / Accounts / Gateway / Capabilities / Providers / Fees を設定。 5. コストは常に推定 — カバレッジ率に注意;未価格 token は無料ではありません。 CLI:`dsh-hub-oauth login [--pkce] | import | status | logout`(`dsh-hub-grok-build` はエイリアス)。 ## 設定 **Settings → Usage Center** は 6 つのトップタブ:**Display**、**Accounts**、**Gateway**、**Capabilities**、**Providers**、**Fees**。サインイン済みプロバイダーカードは展開まで折りたたみ。Providers の各カードで認証を直接管理——API Key の保存/削除、Copilot デバイス認証、プロバイダー単位の更新。OAuth カードから Accounts のサインイン/取り込みへ直接移動可能。 ## Coding OAuth **Accounts** タブで Grok Build、Codex、Kimi Code、Claude Code にサインイン(リモート/ヘッドレスでは device code 推奨;ブラウザ/PKCE はコードまたは完全な redirect URL を貼り付け可)。認証済みモデルは `(OAuth)` 付きでセレクターに表示。 allowlist 内の公式 CLI OAuth ファイルは読み取り専用で発見。同期は明示的な一方向 **Pull**(discover → preview → confirm)、自動インポートなし、公式 CLI ファイルへの書き込みなし。 ## ローカル API ゲートウェイ デフォルト **off**。有効時、独立した `node:http` リスナー(DSH web ポートではない)がループバックで `GET /healthz`、`GET /v1/models`、`POST /v1/chat/completions`、`POST /v1/responses`、`POST /v1/messages` を提供し、サインイン済み OAuth セッションを再利用。bind は YAML のみ;非ループバック bind には Bearer key が必要。リモートリレーではありません。詳細:[`docs/01-install.md`](docs/01-install.md)。 **アカウントとモデル**から OpenCode Go を接続し、ゲートウェイを有効にせず DSH で使用できます。外部ツールは明示的な `opencode-go/`、対応するプロトコル、安定した会話 ID を使用します。ローカルキーと上流の認証情報は別々です。会話 ID がなければエラーとなり、旧グローバルモードは移行プレビューから変更します。 [Migration / 迁移](docs/repair-candidate.md). ## オプション機能 7 つのスイッチはデフォルト **off**、**live** 適用:`codexSearch`、`codexImages`、`codexImageEdits`、`codexUsage`、`codexFast`、`grokImagineImage`、`grokImagineVideo`。Codex Fast / プライベートエンドポイントと Grok Imagine は有効化まで fail-closed。[`docs/01-install.md`](docs/01-install.md) と [`docs/03-configuration.md`](docs/03-configuration.md) を参照。 ## ランタイム設定 既存 Cordis entry 下で `config` をマージ — 2 つ目の entry を追加しない: ```yaml # ~/.dsh/profiles/web/cordis.patch.yml - insert: - id: usage-stats name: dsh-hub-oauth-gateway config: refresh: usageSeconds: 30 accountMinutes: 5 accountConcurrency: 3 timeoutMs: 15000 retention: usageDays: 730 accountSnapshotDays: 180 preserveDeletedSessions: true pricing: baseCurrency: USD accounts: monitors: {} oauthDevice: copilotClientId: YOUR_PUBLIC_OAUTH_CLIENT_ID codingOAuth: enabled: true pool: mode: off # switchMargin: 2 localMonitor: enabled: false localUsage: enabled: false intervalMinutes: 30 ``` 完全なフィールド参照、monitors、proxy、pricing import:[`docs/03-configuration.md`](docs/03-configuration.md) と [`docs/01-install.md`](docs/01-install.md)。レガシー root `config.monitors` は `config.accounts.monitors` にマップ(両方設定しない)。 ## 認証情報 - DSH credential seam 経由で保存;ブラウザは `configured` / `source` / `writable` メタデータのみ受信 — 値は受信しません。 - ローカル CLI インポート(Claude、Codex、Gemini、Grok、Amp)は絶対パスをログしません。 - Copilot device flow は device code をサーバー側に保持;ブラウザはランダム flow ID のみ。有効化前に自分の public OAuth client ID を設定。 - Coding OAuth ファイル:`$DSH_HOME/.grok-build-auth.json` およびその他 `*-oauth-auth.json`(`0600`、atomic write)。**HTTP ステータス、ログ、UI のいずれも token を返してはなりません。** ## データと移行 ```text ${DSH_HOME:-~/.dsh}/storages/usage-stats-v1.sqlite ``` ディレクトリ `0700`、メインファイル `0600`、WAL。デフォルト保持:730 日 usage facts、180 日口座スナップショット。初回起動移行とロールバック:[`docs/04-migration-v1.md`](docs/04-migration-v1.md)。 ## プライバシーとセキュリティ - ループバック peer + ループバック Host;JSON 書き込みボディ;リバースプロキシ向け same-origin / forwarded-host ルール(`x-dsh-hub-oauth-gateway: 1`)。 - 通常 GET はローカルのみ;認証情報付き更新は明示 POST またはスケジュール。 - Monitors:デフォルト HTTPS、URL 埋め込み認証情報なし、手動 redirect、サイズ制限、接続前 DNS pinning。 - SQLite は認証情報、prompt、response、cwd、生プロバイダーペイロードを除外。 - 分析と推定は請求書ではありません。所有または認可された口座と endpoint のみクエリ。 脅威モデルと報告:[`.github/SECURITY.md`](.github/SECURITY.md)。 ## アーキテクチャ ```mermaid flowchart LR subgraph DSH["DSH Harness Web"] UI[Settings / Peek / Dashboard] --> API[usage-stats v1 API] UI --> OAuthUI[Accounts / Gateway / Capabilities] end API --> SQLite[(Local SQLite)] API --> Adapters[Account adapters] OAuthUI --> CodingOAuth[coding-oauth routes] CodingOAuth --> Creds["$DSH_HOME/*-oauth-auth.json"] CodingOAuth --> LLM[LLM OAuth routes] LLM --> Providers[Grok / Codex / Kimi / Claude] ``` 詳細:[`docs/02-architecture.md`](docs/02-architecture.md) · [中文](docs/02-architecture.zh-CN.md)。OAuth 帰属:[`docs/oauth-provenance.md`](docs/oauth-provenance.md)。 ## ドキュメント | Doc | 目的 | |---|---| | [`docs/01-install.md`](docs/01-install.md) | インストール、proxy、gateway、capabilities、トラブルシューティング | | [`CHANGELOG.md`](CHANGELOG.md) | リリース履歴 | | [`docs/00-project-rules.md`](docs/00-project-rules.md) | 公開レイヤー、バージョニング、リリースループ | | [`docs/02-architecture.md`](docs/02-architecture.md) | 内部アーキテクチャ · [中文](docs/02-architecture.zh-CN.md) | | [`docs/03-configuration.md`](docs/03-configuration.md) | ランタイム設定リファレンス | | [`docs/04-migration-v1.md`](docs/04-migration-v1.md) | 1.0 データ移行 | | [`.github/CONTRIBUTING.md`](.github/CONTRIBUTING.md) | コントリビューションガイド | | [`.github/SECURITY.md`](.github/SECURITY.md) | セキュリティポリシー | ## コントリビューション Cursor Cloud / 本リポジトリのクラウドワークスペースで宣言された Node.js と pnpm で検証(Docker sandbox はオプション、必須ではありません)。DSH スモークテストには隔離 `DSH_HOME` を使用。[`.github/CONTRIBUTING.md`](.github/CONTRIBUTING.md) を参照。issue、PR、スクリーンショット、ログに秘密、prompt、個人パスを含めないでください。 言語切り替え行にあなたの言語がない場合、README 翻訳の PR を開いてください。 ## ライセンス [MIT](LICENSE) · [NOTICE](NOTICE) を参照。独立したコミュニティプロジェクト;ベンダー後援は暗示されません。Coding-OAuth 部分は必要に応じて Apache-2.0 帰属を保持(`LICENSES/Apache-2.0.txt`)。