dsh-opencode-go-usage:把 OpenCode GO 三窗口額度顯示在輸入框下方

前言

用 DSH Web GUI 長時間跑任務時,大家一般不關心模型供應商叫什麼,只關心兩件事:還有多少額度、什麼時候重置。OpenCode GO 套餐把額度切成 5 小時、每週、每月三個窗口,但官方界面只在網頁上能看到百分比,腳本或 GUI 裏沒有儀表盤。下面介紹的這個插件把三窗口用量做成輸入框下方的藥丸,點開能看到精確金額和各窗口倒計時,不用切窗口、不用自己寫腳本。

插件由 zyhnbyyds 維護,倉庫爲 zyhnbyyds/dsh-opencode-go-usage,定位是 DSH 客戶端插件,在對話 composer 下方新增用量展示與 API Key 設置頁。先講功能,再講安裝、用法和注意點。

核心功能

1、輸入框下方顯示藥丸,形如 Go · 5h 7% · 周 7% · 月 3%,前綴是套餐名,後面依次是三個額度窗口的已用百分比,間距按自帶統計欄壓縮。

2、點擊藥丸在指示條上方彈出詳情卡片:頭部是圖標、套餐名、本月已用與額度;一條分隔線下是三行數據,每行含百分比與重置倒計時;底部是更新時間、套餐名與到期 / 續費狀態。卡片頭部帶刷新按鈕 ↻。

3、沒有可讀的 API Key 時,藥丸顯示 Go · 設置 Key,點擊提示去設置頁填寫,不會白屏或消失。

4、設置頁支持保存 / 清除 / 重新讀取 Key,並實時顯示當前憑據來源(插件設置 / DSH 憑據 / 環境變量 / auth.json);Key 無效時顯示「當前讀取:…」。

5、Host 半爲純 Node ESM,Client 半是手寫懶加載 bundle,零運行時依賴,樣式只用 --dsw-alias-* 主題變量,跟隨深淺色。

安裝與啓用

需要 DSH 0.2.1 及以上版本,README 記錄在 0.2.1-rc.3 實測通過。npm 包名 @zgyh/dsh-opencode-go-usage。

方式 A,從 npm 安裝,推薦:

dsh plugin --profile <你的 profile> add @zgyh/dsh-opencode-go-usage

方式 B,從 git 源安裝:

dsh plugin --profile <你的 profile> add github:zyhnbyyds/dsh-opencode-go-usage

方式 C,本地目錄:先把倉庫拉到本地,然後在 DSH 的「設置 → 插件」裏從該目錄安裝,bundle 名 @zgyh/dsh-opencode-go-usage;也可以讓 agent 用 plugin manager 的 install_bundle 指向該目錄。插件行通過 cordis.patch.yml(dsh.bundle.patch)自動注入,不需要手改 profile。

裝好後刷新 DSH 頁面即可。

典型用法

裝好後打開任意會話,輸入框下方即出現用量藥丸。想換賬號或補全額度,進「設置 → OpenCode GO 用量」:

1、輸入 oc_sk_… 後點「保存」,寫入 Harness 憑據服務裏本插件專用的 OPENCODE_GO_USAGE_API_KEY,保存後立即重讀用量。

2、點「清除已保存的 Key」刪除專用憑據,用量讀取退回 DSH 模型憑據 / 環境變量 / auth.json 的回退鏈。

3、Key 的解析順序爲:設置頁保存的 OPENCODE_GO_USAGE_API_KEY → Harness 憑據服務裏的 OPENCODE_GO_API_KEY → 進程環境變量 OPENCODE_GO_API_KEY → OpenCode 的 auth.json,即 ~/.local/share/opencode/auth.json 或 ~/.config/opencode/auth.json。

注意設置頁裏填的 Key 只用於用量展示,DSH 調用模型仍用「設置 → 模型」裏的 Key,兩者可以是不同賬號;若兩把 Key 屬於不同賬號,界面顯示的是設置頁那把 Key 對應賬號的用量。

如果需要調整額度或刷新頻率,可在 profile 的 cordis.patch.yml 用戶層覆蓋該行的 config:

- id: opencode-go-usage
  config:
    credential: OPENCODE_GO_API_KEY
    settingsRef: OPENCODE_GO_USAGE_API_KEY
    baseUrl: https://opencode.ai/zen/go/v1/usage
    statusUrl: https://opencode.ai/console/api/go/status
    enrich: true
    refreshMs: 60000
    timeoutMs: 15000
    monthlyLimitUsd: 60
    planLabel: Go
    debug: false

數據來源方面,三窗口百分比與重置時間來自 GET https://opencode.ai/zen/go/v1/usage;套餐名、計費週期、精確美元額度與已用來自 GET https://opencode.ai/console/api/go/status(同一把 Key)。後者是 Console 內部接口,失敗時自動退回按官方 Go 用量說明估算:5 小時窗口 = 月額度 20%,每週 = 50%,每月 = 100%,月額度默認 $60。

狀態語義與驗證

接口讀取結果會映射到固定狀態,界面據此表現:null 讀取成功、顯示三個窗口;no-key 跳設置頁;unauthorized、no-subscription、network、bad-shape、bad-json、http-* 等分別對應紅色錯誤提示或保留上次快照。

README 記錄在 DSH 0.2.1-rc.3(Windows,Web GUI)的實測:Host 側 GET /opencode-go-usage/api/state 返回 200,keySource: "credentials",?refresh=1 會真正重新拉取;POST /api/key 非法參數 400、跨站來源 403。Client 側 conversation.composer.dock 槽位有效,藥丸約 151×18 邏輯尺寸,彈層左邊緣與藥丸左邊緣對齊,詳情卡片 334×169。

適用場景與注意

適合想在 DSH 界面內直接看到 OpenCode GO 剩餘額度和重置時間、不想開網頁或寫腳本的用戶,也適合管理多個 OpenCode 賬號時區分各賬號用量的場景。

使用前請確認三件事:

1、插件以當前 DSH 進程權限運行,Host 半會向 opencode.ai 發起帶 Key 的請求,安裝前應先查看源碼與 MIT 許可證。

2、用量接口沒有公開文檔,官方可能調整,插件做了防禦式解析;/console/api/go/status 是內部接口,失敗時隻影響精確美元與套餐信息,百分比照常顯示。

3、百分比是賬戶級數據,含同一賬號其他設備 / 客戶端的用量;同一把 Key 在憑據服務和 auth.json 裏可能屬於不同賬號。

結尾

這個插件的價值很明確:把 OpenCode GO 的三窗口額度從網頁搬進 DSH 輸入框下方,沒有常駐面板,不佔佈局,也不改模型配置。目錄頁:https://www.skillhub.cn/plugins/zyhnbyyds/dsh-opencode-go-usage,GitHub:https://github.com/zyhnbyyds/dsh-opencode-go-usage。

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

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

小夜