安装
npm run watch # hot-swap rebuilds into a running `dsh web` host此命令根据 GitHub 仓库地址生成。运行前请检查上游 README 与源代码;需要可复现安装时,请固定 release 或 commit。
README
维护者编写的文档快照。
最近一次目录同步未能刷新此 README 快照。
dsh-opencode-usage
A dsh web GUI plugin that shows your OpenCode Zen balance and Go usage windows right in the composer tool row: a concentric-ring button (rolling 5h / weekly / monthly) that opens a usage panel.
- Host half (
src/index.ts→lib/index.js): resolves config from env vars and$DSH_HOME/ocgo-usage.json, fetches the opencode.ai SSR pages, and serves same-origin JSON endpoints with caching + failure cooldown. - Browser half (
src/client.tsx→lib/client.js): renders the concentric-ring composer button and usage panel, and the config editor (cookie values are only ever shown masked — the full cookie never leaves the host).

Features
- Rolling 5-hour / weekly / monthly usage rings on a single composer button
- Usage panel with window details and a manual refresh
- Built-in config editor in the panel (masked cookie tails only)
- Smart cookie normalization: paste the raw auth token, a full header, or anything in between
- Server-side cache (default 5 min) + 60 s failure cooldown so the poller never spams opencode.ai
- Optional peak-clock display (
showPeakClock)
Install
# From a local checkout (or a tarball), add into the dsh web profile:
dsh plugin --profile web add /path/to/dsh-opencode-usage
cordis.patch.yml inserts the plugin as opencode-usage; it requires the
webServer service.
Configuration
Priority: env vars > config file ($DSH_HOME/ocgo-usage.json) > defaults.
| Env var | Config file key | Default | Description |
|---|---|---|---|
OPENCODE_GO_COOKIE | cookie | — | OpenCode Go session cookie (auto-normalized) |
OPENCODE_GO_WORKSPACE_ID | workspaceID | — | OpenCode workspace id |
OPENCODE_GO_BASE_URL | baseUrl | https://opencode.ai | Provider base URL |
OPENCODE_GO_CACHE_TTL | cacheTTL | 300 | Cache TTL in seconds, clamped to [60, 3600] |
OPENCODE_GO_TIMEOUT_MS | timeoutMs | 15000 | Fetch timeout in ms |
| — | showPeakClock | false | Show the peak-clock readout |
The cookie is never logged. You can also edit cookie / workspaceID /
showPeakClock from the panel's config editor; a successful write invalidates
the cache so the next poll uses the fresh values immediately.
Config file is written with chmod 600.
API
The browser half talks to the host over plain same-origin JSON:
| Method | Path | Description |
|---|---|---|
GET | /api/opencode-usage | Cached usage view |
GET | /api/opencode-usage/refresh | Force a fresh provider query |
GET | /api/opencode-usage/config | Masked config view |
POST | /api/opencode-usage/config | Write cookie / workspace / showPeakClock |
Development
npm install # dev deps (esbuild) — prepack build runs automatically
npm run build # emit lib/client.js + lib/index.js
npm run watch # hot-swap rebuilds into a running `dsh web` host
The build mirrors the dsh plugin loader contract: the browser bundle rides in
the closure-factory module format with react/platform modules externalized,
and CSS is inlined idempotently (data-plugin-css).
License
仓库信息
- 开发语言
- TypeScript
- 许可证
- MIT
- 最后更新
- 2026年8月18日 00:31
谨慎安装
请检查源代码、权限、生命周期脚本、依赖与网络访问;不受信任的插件应先在隔离环境中测试。