中文 | English
DeepSeek Harness 客户端插件:在侧栏**「新会话」按钮上方**添加一个 「DeepSeek 用量」 按钮,点击打开 DeepSeek 开放平台用量页(
https://platform.deepseek.com/usage),随时查看余额。
- 桌面版(dsh-desktop 壳):弹出 440×680 独立窗口加载用量页;独立持久会话(
persist:dsh-usage),登录一次长期保持。 - 纯 web UI(浏览器):自动退化为新标签页打开。
- 桌面壳另有全局快捷键
Ctrl+Alt+U呼出/隐藏用量窗口。
dsh-deepseek-usage/
├── src/ 插件源码
│ ├── index.ts 宿主侧空入口(浏览器专用插件)
│ ├── invariant.ts invariant 伴生插件
│ └── client/
│ ├── index.ts 注册进 sidebar.primary.action 槽位
│ ├── UsageButton.tsx 按钮组件(宽/窄栏两种形态)
│ └── UsageButton.module.css
├── lib/ 预构建产物(lib/client.js 等,装完即可用)
├── patches/ 配套核心补丁(Harness 主仓库)
│ ├── ui-sidebar-slot.patch 必需:新增 sidebar.primary.action 槽位
│ └── plugin-inventory-chinese-name.patch 可选:插件列表显示中文名
├── package.json
├── tsdown.config.ts
├── tsconfig.json
└── README.md / README.en.md
插件依赖 ui-sidebar 提供的 sidebar.primary.action 槽位(官方上游暂无此槽位),所以需要打一个补丁:
# 1. 把本包放进 harness 源码树
cp -r dsh-deepseek-usage $HARNESS/packages/extensions/ui-deepseek-usage
# 2.(必需)给 ui-sidebar 打槽位补丁
cd $HARNESS
git apply patches/ui-sidebar-slot.patch
# 3.(可选)插件列表显示中文名
git apply patches/plugin-inventory-chinese-name.patch
# 4. 在 packages/bundle/web-app/cordis.patch.yml 的浏览器插件名册加一行:
# - id: ui-deepseek-usage
# name: '@deepseek-ai/dsh-client-ui-deepseek-usage'
# 并在 packages/bundle/web-app/package.json 的 dependencies 加:
# "@deepseek-ai/dsh-client-ui-deepseek-usage": "workspace:^"
# 5. 构建插件包(node half + 浏览器 bundle)
pnpm --filter @deepseek-ai/dsh-client-ui-deepseek-usage run bundle
# 同时重建 ui-sidebar:
pnpm --filter @deepseek-ai/dsh-client-ui-sidebar run bundle
# 6. 让运行时的 client-modules 能解析到该包(二选一):
# a) 在 profile 目录跑 pnpm install(推荐,随 lockfile 走)
# b) 手动建 Junction(与 pnpm hoisted 布局一致):
# 新加 cmd /c mklink /J "$env:USERPROFILE\.dsh\profiles\node_modules\@deepseek-ai\dsh-client-ui-deepseek-usage" "<harness>\packages\extensions\ui-deepseek-usage"
# 7. 重启 dsh web(桌面版重启应用即可),刷新页面
lib/里已附带构建产物:如果你不想在目标机器上跑构建,只要确保lib/client.js存在且包能被require.resolve到即可(dsh.client的./client导出指向它)。
按钮在桌面版点击走 window.dshDesktop.openUsage()(preload 暴露,经 IPC 让主进程弹 440×680 窗口)。这一层属于桌面壳(dsh-desktop 的 resources/app.asar 内 main.js/preload.js),不在本仓库;纯 web 部署没有它时按钮自动退化为新标签页,无需处理。
- 侧栏折叠成 56px rail 时,按钮自动变为纯图标形态。
- 用量窗口使用独立持久会话
persist:dsh-usage,与主界面互不干扰。 - 窗口内新开窗口/外链一律交给系统默认浏览器,不会在应用窗口里跑丢。
MIT