dsh-opencode-go-multi-quota:把多個 OpenCode Go 賬號的剩餘額度擺在 DSH 輸入框下方

前言

用 DeepSeek Harness 接 OpenCode Go 開發,常見的痛點是額度不透明:當前會話落在哪個賬號上、這個賬號 5 小時 / 每週 / 每月還剩多少,輸入框旁邊看不到,只能切到 OpenCode 控制台逐個確認。多開幾個 provider 之後更難記清,額度耗盡常常要等到發送消息失敗才發現。

dsh-opencode-go-multi-quota 就是針對這個問題的客戶端插件。它由 jackgucarbon 維護,在 DSH composer 下方顯示所有已配置 OpenCode Go 賬號的剩餘額度,並跟隨當前會話的 provider 自動切換。

這是什麼

一句話定位:DeepSeek Harness 的一個客戶端插件,在 composer 下方彙總多個 OpenCode Go 賬號的用量,並跟隨會話 provider。倉庫爲 jackgucarbon/dsh-opencode-go-multi-quota,當前版本 1.1.0,許可證 MIT,星標爲 0。它只解決「看額度」,不負責切換賬號或轉發憑據。

核心功能

下面介紹它已經實現的能力,均來自 README。

  • 多賬號自動識別:從 llm-pi-ai.providers 讀取配置,挑出所有形如 OpenCode Go 的 provider,插件代碼裏不寫死賬號數量。
  • 跟隨會話 provider:使用會話作用域的 modelDirectories store,切換模型時參數條立即換成對應賬號的額度。
  • 自適應佈局:1 個賬號用 320px 緊湊卡;2 個賬號用 360px 雙列矩陣;3 個以上用「當前賬號卡 + 其他賬號可展開行」,不會出現橫向滾動。當前賬號高亮,限流 標紅。
  • 狀態信息緊湊:每格顯示剩餘百分比、已用百分比、↻ 重置時間。當天重置只顯示 HH:mm,其他日期顯示 MM/DD HH:mm。
  • 分賬號緩存:Host 爲每個 provider 單獨緩存 60 秒,單個賬號失敗不影響其他賬號。
  • 瀏覽器側不出現 key:憑據只在 Host 進程解析,頁面只拿到百分比,不會下發密鑰。

賬號是怎麼被發現的

每次請求時,Host 讀取已加載的 @deepseek-ai/dsh-llm-pi-ai 入口及其 config.providers。一個 provider 會被納入,當它有 apiKeyEnv,並且滿足以下任一項:

1、provider id 以 opencode 開頭;
2、baseURL 包含 opencode.ai;
3、apiKeyEnv 包含 OPENCODE。

apiKeyEnv 的值就是需要解析的憑據引用。只有已存儲憑據記錄、沒有 apiKeyEnv 的 provider 不會被顯示。

如果加載器配置讀不到,Host 會退回到兩個約定引用 OPENCODE_GO_API_KEY 和 OPENCODE_API_KEY。沒有任何匹配 provider 時顯示 “No OpenCode accounts found”,而不是一直轉圈。

安裝與啓用

該包只從 GitHub 分發,沒有發佈 npm 版本。推薦在 DSH Web UI 中打開 Plugins → Install,用下面的 GitHub spec 安裝:

github:jackgucarbon/dsh-opencode-go-multi-quota

Plugin Manager 會把 bundle 加入 profile 並重新加載。

CLI 安裝只會添加包依賴,還需要自己把 bundle 加進 dsh.profile.bundles。命令如下:

dsh plugin --profile desktop add github:jackgucarbon/dsh-opencode-go-multi-quota

隨後在配置裏確認 bundles 列表:

{
  "dsh": {
    "profile": {
      "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-opencode-go-multi-quota"]
    }
  }
}

安裝後如果 Host 端沒有自動重載,需要重啓 DSH,然後刷新頁面。

Host API

插件在 Host 側註冊了一個同源只讀路由,客戶端通過它取額度:

請求 響應
GET /plugin/opencode-go-multi-quota 默認 provider(第一個被發現的,或 opencode-go)
GET /plugin/opencode-go-multi-quota?provider=opencode 指定名稱的一個 provider
GET /plugin/opencode-go-multi-quota?provider=all 所有發現的賬號,附帶 detected 標誌
上述任一 URL 加 &refresh=1 跳過 60 秒緩存

上游接口是 GET https://opencode.ai/zen/go/v1/usage,使用 Bearer token。該調用是隻讀的,不消耗套餐額度。

典型用法

配置好賬號後,正常在 DSH 裏對話即可。插件注入到 composer 下方,默認展示第一個被發現賬號的額度;在參數條切換模型時,modelDirectories 變化會驅動顯示切換到對應 provider。有多個賬號時,右側可展開查看其他賬號,當前賬號一列高亮。

需要排查額度異常時,可以直接請求只讀路由,例如取全部賬號:

curl http://localhost:<端口>/plugin/opencode-go-multi-quota?provider=all&refresh=1

加 refresh=1 可繞過 60 秒緩存,立刻看到當前值,適合驗證某一個賬號是否剛被耗盡。

適用場景與注意

適合已經在 DSH 裏配置了一個或多個 OpenCode Go provider、希望隨時看到剩餘額度的開發者。它依賴標準 Web 客戶端裏的 @deepseek-ai/dsh-client-ui-model-selection,因此需要使用對應的客戶端 bundle。

需要注意三點。

1、插件以當前 dsh 進程的權限運行,安裝前應先查看源碼與許可證(MIT)再決定是否啓用。
2、額度路由是同源只讀的,但沒有鑑權,且 refresh=1 會繞過緩存。不要把 DSH Web 服務暴露到不可信網絡,前面加代理或鑑權層。
3、自動發現規則刻意放寬。如果存在一個不是 Go 的 OpenCode provider 且憑據引用含 OPENCODE,它可能被納入並顯示失敗。這時可以收窄規則,或把它從 llm-pi-ai.providers 裏移除。

兼容性方面,插件基於 DeepSeek Harness 0.2.1-rc.5 構建並測試,engines.dsh 約束爲 >=0.2.1-rc.5 <0.3.0。它使用客戶端 modelDirectories 服務和 Host 側 loader、credentials、webServer 服務,這些服務一旦有破壞性變更,插件就需要更新。README 提到測試用假 key 和 mock fetch,不需要真實憑據即可運行 npm test。

結尾

這個插件的價值在於把分散在多個賬號上的剩餘額度集中到一個固定位置,並跟隨當前會話 provider,省去反覆開控制台確認的動作。它只做顯示和只讀查詢,憑據不出 Host 進程。

目錄頁:https://www.skillhub.cn/plugins/jackgucarbon/dsh-opencode-go-multi-quota

GitHub:https://github.com/jackgucarbon/dsh-opencode-go-multi-quota

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜