前言¶
在 DeepSeek Harness(DSH)裏用 OpenCode Go 時,額度按 5 小時、周、月三個窗口滾動計算,官方 usage 接口只返回各窗口剩餘比例和重置時間,沒有公開的美元餘額字段。若不在 IDE 旁單獨查接口或記時間,很容易在某個窗口快耗盡時仍按平時強度調用模型。
下面介紹的 dsh-plugin-opencode-limits(維護者 GreenJenckens,MIT 許可)把 OpenCode Go 的剩餘額度做成作曲欄(composer dock)裏的原生統計膠囊,與 DSH 自帶的步數、解碼速度、token 總量、緩存命中等指標並列,便於在對話界面內掃一眼各窗口還剩多少。
這是什麼¶
插件全名 dsh-plugin-opencode-limits,歸類爲 DSH 客戶端插件:在已打開會話、作曲欄可見的界面裏注入 UI,不替代 DSH 自帶的模型路由或計費邏輯。數據來自 OpenCode 的 usage 端點,由 DSH 進程內的 host 半部代請求,瀏覽器只收到百分比與重置時間。
社區目錄頁:skillhub.cn 插件條目。源碼與說明:GitHub — GreenJenckens/dsh-plugin-opencode-limits。
界面展示什麼¶
OpenCode Go 的月度美元額度在 API 裏拆成三個窗口:5 小時(月限的 20%)、weekly 周(50%)、monthly 月(100%)。膠囊上「OpenCode」後跟每個窗口一個小環,弧長表示該窗口剩餘比例:滿環表示餘量充足,弧縮短表示窗口在消耗;耗盡時顯示空軌並帶「лимит」類提示(README 示例爲俄文界面文案)。
| 膠囊片段示例(README) | 含義 |
|---|---|
5ч 87% |
5 小時窗口仍有 87% 可用 |
нед 83% |
周窗口仍有 83% |
мес 92% |
月窗口仍有 92% |
每個環與 DSH 上下文指示器同幾何(svg 14×14,circle r=5.5,stroke-width: 2 等)。懸停某段可看精確重置時刻與剩餘時間;懸停整顆膠囊可看密鑰來源、拉取時間與「點擊可刷新」說明;點擊膠囊強制刷新。餘量充足時膠囊與鄰居一樣單色;已消耗 ≥85% 時用警告色,≥95% 或 status: "rate-limited" 時用錯誤色。
數據源爲:
GET https://opencode.ai/zen/go/v1/usage
Authorization: Bearer oc_sk_…
公開接口不提供美元餘額,插件也只展示百分比與重置時間。
安裝與啓用¶
DSH 將插件市場作爲可選實驗能力。推薦從市場安裝:
- 打開 Plugins → Experimental plugins → Custom plugin markets。
- 在 Discover 中選 Add index source,粘貼市場索引 URL:
https://cdn.jsdelivr.net/gh/GreenJenckens/dsh-plugin-opencode-limits@main/market/index.json
- 在插件卡片上安裝(確認頁會顯示 Git 來源與 commit)。
也可在 Plugins → Installed → Install bundle 填寫 Git spec,或用 CLI(將 <commit> 換成具體 commit):
dsh plugin --profile desktop install "git+https://github.com/GreenJenckens/dsh-plugin-opencode-limits.git#<commit>"
本地開發可將倉庫以 link: 形式鏈入 profile 的 dependencies 與 dsh.profile.bundles;README 也描述了通過 Plugins 頁完成同樣操作的方式。當前 package 版本爲 0.1.0,要求 node >= 20、dsh >= 0.2.1-rc.3。
配置與密鑰¶
默認值在 lib/index.js,可在 profile patch 中覆蓋:
- id: opencode-limits
name: dsh-plugin-opencode-limits
config:
usageUrl: https://opencode.ai/zen/go/v1/usage
routePath: /x/opencode-limits
keyEnv: OPENCODE_GO_API_KEY
refreshMs: 20000
timeoutMs: 15000
| 字段 | 默認值 | 說明 |
|---|---|---|
usageUrl |
https://opencode.ai/zen/go/v1/usage |
usage 端點 |
routePath |
/x/opencode-limits |
host 半部對外路由 |
keyEnv |
OPENCODE_GO_API_KEY |
環境變量 / 憑據名 |
refreshMs |
20000 |
host 向 OpenCode 輪詢間隔(毫秒) |
timeoutMs |
15000 |
單次請求超時(毫秒) |
每次輪詢按順序解析密鑰:process.env[keyEnv] → DSH 憑據存儲 ctx.credentials.resolve(keyEnv) → $DSH_HOME/.credentials.yaml 的 refs: 段。輪換密鑰無需重啓進程。
密鑰不會進入瀏覽器。 host 半部持鑰請求 OpenCode,經 /x/opencode-limits 僅向 loopback 對等端提供百分比與重置時間,該路由不會代理給模型;插件不寫盤、不向其他地址發送數據。
刷新節奏與調試¶
| 鏈路 | 週期(README) |
|---|---|
| host 請求 OpenCode | 每 20 s(與窗口狀態無關) |
| 客戶端請求 host | 窗口激活時每 15 s,可見性變化時立即 |
| 點擊膠囊 | 立即(?refresh=1) |
隱藏標籤頁時 Chromium 會節流定時器,因此輪詢放在 host 進程;回到窗口時數據通常不超過約二十秒。百分比本身是月額度佔比,變化往往較慢。
本地調試(<port> 換爲 DSH 監聽端口):
curl -s http://127.0.0.1:<port>/x/opencode-limits
curl -s "http://127.0.0.1:<port>/x/opencode-limits?refresh=1"
返回 JSON 含 ok、usage(三窗口)、error、status、fetchedAt、keySource(env / store:… / file)、refreshMs 以及 hits / lastHitAt 等診斷字段。
適用場景與注意¶
適合已訂閱 OpenCode Go、長期在 DSH 作曲欄裏寫對話、希望與步數/token 同一行觀察三窗口餘量的開發者。插件以當前 DSH 進程權限運行,安裝前建議閱讀倉庫源碼與 MIT 許可證,並自行評估將 oc_sk_… 類密鑰交給 host 半部代調 OpenCode 是否可接受。
README 列出的限制:
- 膠囊只在有 composer 的會話界面出現,無 composer 的服務頁不會顯示。
- 無公開美元餘額,界面只有比例與重置時間。
- 若 OpenCode 變更
/v1/usage響應形狀,膠囊會顯示「нет данных (…)」類提示,而不是拖垮整個界面。
DSH 生態強調「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,本文安裝路徑以插件 README 爲準。
結尾¶
dsh-plugin-opencode-limits 把 OpenCode Go 三窗口剩餘額度嵌進 DSH 作曲欄統計行,密鑰留在 host、界面只讀比例,適合需要邊寫 harness 邊盯額度的場景。
- 目錄頁:https://www.skillhub.cn/plugins/GreenJenckens/dsh-plugin-opencode-limits
- GitHub:https://github.com/GreenJenckens/dsh-plugin-opencode-limits