在输入框上方 dock 显示 OpenCode Go 订阅用量(5h 滚动/每周/每月窗口与重置倒计时),内置凭据编辑器。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:v587d/dsh-opencode-go-usage
GitHub 来源的插件在安装时会在你的机器上执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 中文

一个 DeepSeek Harness (dsh) bundle,在 Web 界面的输入框上方 dock(与内置 token 统计同位置)显示 OpenCode Go 订阅用量。
它是 pi-ocgo-usage(Pi 插件)的 Web 对应物:三个用量窗口(5h 滚动 / 每周 / 每月)的百分比与重置倒计时,按阈值变色,让你在窗口耗尽、请求被限流之前就发现。
OpenCode Go: 5h 0% (1h 23m) · wk 65% (2d 20h) · mo 83% (6d 21h) · upd 20:15
特性
- 三个窗口 —— 5h 滚动 / 每周 / 每月 的百分比 + 重置倒计时
- 颜色阈值 —— 正常 → 黄色警告(≥80%)→ 红色错误(≥90% 或已限流)
- 数据新鲜度 ——
upd HH:MM显示最近一次成功抓取时间 - 轻量轮询 —— 每 10s 轮询(切回标签页立即刷新);host 端 300s 缓存(TTL 可配)+ 60s 失败冷却,不会频繁打扰 opencode.ai
- Provider 感知 —— 仅当会话当前模型走
opencode-goprovider 时显示;每次轮询读取内存中的实时模型选择(session.models,毫秒级),切到 DeepSeek 官方等其它 provider 后一个轮询周期内自动隐藏,切回自动恢复(与 pi-ocgo-usage 行为一致) - 点击展开 —— 详情面板显示每个窗口的重置倒计时,左下角
Set可配置凭据,右侧refresh upd HH:MM手动刷新 - 内置凭据编辑器 —— 无需碰终端:
Set面板直接修改 workspace id 与 cookie(输入框以••••+ 末尾 4 位显示,点击外部 / Esc / 保存确认写入) - 优雅降级 —— 配置缺失显示
<err:noconfig>,HTTP 失败显示<err:httpXXX>;出错时点击 chip 直接进入 Set 面板 - Cookie 只在 host 侧 —— 浏览器只访问同源
/api/ocgo-usageJSON 端点,cookie 永不进入页面
⚠️ 需要 OpenCode Go 会话 cookie。 该 cookie 是完整用户会话(不是 API key),可访问你 OpenCode 账户的全部内容。请像对待密码一样对待它——见 配置。
环境要求
- DeepSeek Harness
0.1.0-rc.6或更新(web profile) PATH上有 pnpm(dsh plugin需要)
安装
这是一个标准的 dsh bundle:package.json 声明了 dsh.bundle,通过 dsh plugin --profile web add <spec> 安装(pnpm 转发器),自动加入 profile 的 dsh.profile.bundles。仓库内置预构建的 lib/ 产物,安装无需任何构建步骤或构建权限——遵循官方 publish 指南。
从 GitHub 安装(推荐)
dsh plugin --profile web add github:v587d/dsh-opencode-go-usage
因为 lib/ 已提交到仓库,pnpm 直接安装构建好的包,不会要求构建脚本授权。
从 npm 安装(发布后)
dsh plugin --profile web add dsh-ocgo-usage
关于包名: 仓库名为
dsh-opencode-go-usage,但 npm 上同名包已被他人抢先占用(一个功能类似的第三方插件),因此 npm 发布名定为dsh-ocgo-usage。GitHub 安装(推荐)不受影响:dsh plugin --profile web add github:v587d/dsh-opencode-go-usage。
从 tarball 安装
pnpm pack # 在本仓库内 → dsh-ocgo-usage-0.1.0.tgz
dsh plugin --profile web add ./dsh-ocgo-usage-0.1.0.tgz
本地开发安装
git clone https://github.com/v587d/dsh-opencode-go-usage.git
cd dsh-opencode-go-usage
pnpm install
pnpm run build
dsh plugin --profile web add link:$(pwd)
重启 dsh web 并刷新页面,chip 出现在输入框上方的 dock。不启动即可验证插件层已组合:
dsh --profile web --dump-config # 应显示 "# == dsh-ocgo-usage" 层
配置
方式一:界面内 Set 面板(最简单)
点击 chip 展开详情 → 左下角 Set → 输入 workspace id 与 cookie(已设置的值以 •••• + 末尾 4 位显示,聚焦即可输入新值)→ 点击外部 / Esc / 保存按钮确认,立即生效。

方式二:环境变量(与 pi-ocgo-usage 同名)
export OPENCODE_GO_COOKIE="auth=Fe26.2*...; oc_locale=en"
export OPENCODE_GO_WORKSPACE_ID="wrk_01XXXXXXXXXXXXXXXXXXXXXXXX"
方式三:配置文件
写入 $DSH_HOME/ocgo-usage.json(默认 ~/.dsh/ocgo-usage.json):
{
"cookie": "auth=Fe26.2*...; oc_locale=en",
"workspaceID": "wrk_01XXXXXXXXXXXXXXXXXXXXXXXX"
}
chmod 600 ~/.dsh/ocgo-usage.json
优先级:环境变量 > 配置文件 > 内置默认。
可选覆盖项
| 环境变量 | 默认值 | 说明 |
|---|---|---|
OPENCODE_GO_BASE_URL |
https://opencode.ai |
API 基础地址 |
OPENCODE_GO_CACHE_TTL |
300 |
host 缓存秒数,范围 60–3600 |
OPENCODE_GO_TIMEOUT_MS |
10000 |
HTTP 超时 |
组合层配置(~/.dsh/profiles/web/cordis.patch.yml):
- id: ocgo-usage
config:
enabled: false # 总开关,默认 true
Cookie 过期:
authcookie 签发后有效期 1 年。过期(或被吊销)后页面 302 跳转到登录页,chip 显示<err:http302>而非过期数字。重新登录 opencode.ai 后,通过 Set 面板更新 cookie 即可。
使用
点击 chip 展开详情面板:每个窗口显示完整名称、百分比与重置倒计时;右下角 refresh upd HH:MM 手动刷新并显示数据时间。

工作原理
- Host 半(
src/index.ts、src/service.ts、src/api.ts、src/routes.ts)—— 携带 cookie 抓取GET /workspace/<wrk>/go,解析 SSR 渲染的data-slot="usage-item"块为每个窗口的{percent, resetInSec, status},缓存结果,通过同源 JSON 端点/api/ocgo-usage(+/api/ocgo-usage/refresh、/api/ocgo-usage/config)提供数据。 - 浏览器半(
src/client/)—— 向conversation.composer.dockslot 注册 chip,每 10s 轮询 host 端点,按严重级别着色渲染三个窗口;可见性来自session.models的实时 provider 判断。
浏览器永远看不到 cookie;抓取与解析全部在 host 侧完成。
安全
authcookie 是完整的 OpenCode 用户会话。任何人拿到它都能访问你账户内的所有 workspace、订阅与账单信息。- 插件绝不记录 cookie、不把它放进错误信息、不发送给浏览器。
- 配置编辑器只把新值写入
$DSH_HOME/ocgo-usage.json(chmod 600),浏览器始终只看到••••+ 末尾 4 位的掩码视图。
开发
pnpm install
pnpm run build # tsc -b && tsdown → lib/
pnpm run typecheck # tsc -b --pretty false
pnpm test # vitest run(解析器 / 配置 / 服务)
构建配置(shared/tsdown.client.ts)改编自 dsh-balance-meter(BSD-3-Clause),后者是官方 DSH packages/client/tsdown.client.ts 的副本——它产出 web shell 模块表所需的 window.__ModuleLoader__.load({id, factory}) 闭包工厂产物。
License
MIT —— 见 LICENSE。
链接
同类插件
zhu1090093659/dsh-web-ui★ 1766
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。
ccch1mneyyy/dsh-TUI★ 829
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。
omdsh-dev/DSH-better-sidebar★ 705
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。
huiliyi37/dsh-tianshu-tui★ 131
DeepSeek Harness 的终端 UI(TUI)。
omdsh-dev/dsh-at-file★ 117
Codex 风格的 `@file` 文件引用,输入框里直接搜索并引用工作区文件。
Nagi-ovo/dsh-visualize★ 79
对话内生成式 UI:模型把交互式 HTML 卡片直接画进会话流,带流式预览与沙箱渲染。