dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
每台机器只统计选定的那一个项目的 Token 用量并汇总到自建团队服务器,在侧栏面板中逐人显示所选项目、花费与最后消耗时间。
一个用来核算「团队各项目 Token 用量」的 DSH 插件。
团队里每个人在自己的 DSH 上选定一个要监测的项目,插件只统计那个项目的真实用量, 汇总到一台自建的团队服务器上。面板常驻侧栏底部:折叠时显示团队正在做的项目与全队总 Token, 展开后逐人显示他选了哪个项目、消耗了多少 Token、最后一次消耗是什么时候。 左下角的「峰 / 谷」圆标标出 DeepSeek 当前的计费时段。
多人在同一个项目上并行用 AI 写代码时,"这个项目到底烧了多少 Token、谁烧的" 通常是一笔糊涂账:
这个插件的做法是:每台机器只盯住一个项目,把该项目的用量实时汇总到团队服务器, 于是所有人打开 DSH 就能看到同一份账 —— 谁在做什么项目、各自花了多少。
折叠态(默认)—— 团队正在做的项目 + 全队总 Token:
展开态 —— ① 选择要监测的项目(含完整路径)→ 逐人用量与各自所选项目:
在侧栏中的位置 —— 常驻「工作区」列表下方、「设置」行上方:
上面的截图是本机单独使用(还没加入团队)的状态,所以顶上是「未加入团队」、 「总 Token」为 0 —— 那是全队合计,没有团队时自然是 0; 你自己监测到的量显示在右下角的「本机」。 加入团队后这里会变成全队合计,并多出「在线 n/m」。
展开后自上而下三块:
还没选项目时面板会换成琥珀色虚线边框并自动展开,提示你去选。
想看真实效果不用装插件:npm run preview 或直接用浏览器打开 scripts/preview.html。
要求 Node.js >= 20(DSH Desktop 自带 pnpm,不需要额外装依赖)。
# 当前 GUI(DSH Desktop 界面)属于 desktop profile
dsh plugin --profile desktop add link:<本仓库的绝对路径>
# 独立 dsh web 服务器(可选)
dsh plugin --profile web add link:<本仓库的绝对路径>
验证以产物为准,别只看命令回显:
dsh --profile desktop --dump-config | Select-String dsh-team-panel
然后重启 DSH Desktop(宿主端不会热加载),再按 Ctrl+F5 刷新界面。
link:安装后不要移动本仓库目录;真要移动,先remove再重新add link:<新路径>。
面板会因为「还没选项目」自动展开 → 下拉框选一个项目 → 开始监测。
这一步不做,就不会统计任何用量。
服务器那台(常开机器):
# 装成开机自启 + 崩溃自动重启(需管理员)
scripts\install-autostart.cmd 7801
# 放行入站端口(需管理员)
scripts\allow-firewall.cmd 7801
# 查邀请码和给队友的地址
node scripts\hub-info.mjs
队友:DSH 面板 → ⊕ 展开 → 「设置」→ 填「服务器地址 + 邀请码」→ 加入团队。
两台机器的逐步教程(含自检与验收) → docs/two-devices.md
只有一台电脑也能先跑通:双击
scripts\start-hub-public.cmd起服务器 → 面板「设置」里填http://127.0.0.1:7801+ 邀请码;想看「两台设备」的样子再双击scripts\demo-teammate.cmd(模拟队友,数字是造的)。详见该文档 A 部分。
# 队友连不上时,在队友那台机器上跑
node scripts\netcheck.mjs http://服务器地址:7801 <邀请码>
短周期(2–6 周,用完就散)直接用 Tailscale。 短周期下判断标准不是月费,而是"中途会不会被打断"—— Tailscale 免费版(最多 6 用户、设备不限)地址永久固定, 而 Cloudflare 快速隧道的 URL 每次重启都变、官方也不给可用性保证。 中途换一次地址的代价,比开局每人多花 10 分钟安装大得多。
| 场景 | 推荐 |
|---|---|
| 队友在同一间办公室 | scripts\start-hub-public.cmd,把横幅里 👉 队友填: 那行抄给队友 |
| 异地、短期(≤6 周) | Tailscale:每人装一次客户端,地址永久固定,免费 |
| 异地、长期 / 人多 | 公网 VPS + Caddy 自动 HTTPS(国内服务器注意 ICP 备案) |
| 临时试用、队友零安装 | Cloudflare 快速隧道(地址会变,别用于长期) |
| 已有域名 | Cloudflare 命名隧道 + Access(队友零安装、地址固定、真邮箱鉴权) |
完整步骤、逐条命令、排查顺序、中国大陆特有的坑 → docs/networking.md
| 文档 | 内容 |
|---|---|
| docs/two-devices.md | 两台设备用插件互连:从装插件、起服务器、加入、验收到排错的完整步骤 |
| docs/networking.md | 联网方案详解:三条路线、Tailscale 逐步操作、排查顺序、国内注意事项 |
| docs/architecture.md | 工作原理:部件、数据流、统计口径、面板挂载点、自检体系 |
| docs/troubleshooting.md | 常见问题:看不到面板、Token 为 0、连不上、乱码…… |
| CONTRIBUTING.md | 开发环境、自检方式、本项目特有的硬约束 |
| SECURITY.md | 信任模型、凭据说明、部署加固清单、漏洞报告方式 |
| CHANGELOG.md | 版本变更记录 |
132 项断言 / 7 个套件,零依赖,克隆下来直接跑:
node scripts\ci.mjs # 全套(会自己起一个临时 hub 做联调)
node scripts\ci.mjs --offline # 只跑不需要 hub 的部分
单独跑某一块:
| 脚本 | 手法 | 项数 |
|---|---|---|
scripts/entrycheck.mjs | 真的 import 一次各模块 | 17 |
scripts/mounttest.mjs | 仿 DOM 跑真实 panel.js,验证锚点与窄栏隐藏 | 16 |
scripts/selftest.mjs | 峰谷边界 / 周末 / 法定节假日 + hub 全部接口与鉴权 | 38 |
scripts/plugintest.mjs | mock ctx 拉起真实 lib/index.js + 真 hub 联调 | 61 |
插件还提供一个运行时自检接口:http://127.0.0.1:43120/dsh-team/ping。
上报的只有计数:成员名、机器名、项目名与路径、Token 数、估算花费、最后消耗时间。
绝不上报:提示词、模型回复、文件内容、会话标题、代码、任何凭据。
本机状态落在 %DSH_HOME%/team-panel/state.json —— 该文件含成员令牌(等同密码),不要提交或分享。
详见 SECURITY.md。
dsh-team-panel/
├─ lib/
│ ├─ index.js 宿主端插件:token 采集、/dsh-team/* 路由、团队同步、界面注入
│ ├─ panel.js 注入浏览器的面板脚本(纯 JS,零依赖,无需构建)
│ ├─ peak.mjs 峰谷时段判定(唯一真源,含法定节假日表)
│ ├─ net-addresses.mjs 本机 IPv4 分类(局域网 / Tailscale / 其它,剔除虚拟网卡)
│ └─ team-hub.mjs 团队服务器(零依赖)
├─ scripts/
│ ├─ ci.mjs 全量自检入口(本地与 CI 共用)
│ ├─ entrycheck.mjs 入口冒烟测试
│ ├─ mounttest.mjs 挂载逻辑自检(仿 DOM)
│ ├─ selftest.mjs 峰谷 + hub API 自检
│ ├─ plugintest.mjs 宿主端插件自检
│ ├─ hub-info.mjs 服务器信息速查(邀请码 / 管理密钥 / 推荐地址)
│ ├─ netcheck.mjs 联网连通性自检
│ ├─ fake-device.mjs 模拟「第二台设备」(单机验证连接与显示,数字是造的)
│ ├─ set-repo.mjs 回填仓库地址(替换 OWNER 占位符)
│ ├─ serve-preview.mjs 本地静态预览服务
│ ├─ preview.html 离线预览页
│ ├─ start-hub.cmd 启动 hub:本机模式
│ ├─ start-hub-public.cmd 启动 hub:对外监听
│ ├─ demo-teammate.cmd 双击即用的模拟队友(内部调用 fake-device.mjs)
│ ├─ install-autostart.cmd 装成开机自启(需管理员)
│ ├─ uninstall-autostart.cmd 卸载自启
│ └─ allow-firewall.cmd 放行入站端口(需管理员)
├─ docs/ 联网方案 / 工作原理 / 常见问题
├─ cordis.patch.yml bundle patch:把插件挂进 profile 配置树
└─ package.json
.cmd脚本一律纯 ASCII + CRLF —— 这不是风格偏好,是踩过的坑:cmd.exe按控制台代码页解析批处理,UTF-8 中文会让整行命令读崩。 中文提示统一由 Node 输出。详见 CONTRIBUTING.md。