前言¶
用 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。