以贡献图风格查看本机每日每周 token 消耗
31.4/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add apodemakeles/dsh-token-dashboard该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · ui
装得上吗
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 79 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/9/30) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@apodemakeles/dsh-token-dashboard(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22.5.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/14 14:16:04
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 85 处,展示前 49 条)
- 写入本地文件lib/index.js:40
appendFileSync(path, `${( new Date()).toISOString()} [${scope}] ${message}${suffix}\n`); - 读取本地文件lib/index.js:42
if (statSync(path).size > MAX_BYTES) truncateSync(path, 0); - 写入本地文件lib/index.js:42
if (statSync(path).size > MAX_BYTES) truncateSync(path, 0); - 发起网络请求lib/index.js:839
await this.request({ - 发起网络请求lib/index.js:864
const result = await this.request(command); - 发起网络请求lib/index.js:883
const result = await this.request(command, SNAPSHOT_TIMEOUT_MS); - 发起网络请求lib/index.js:897
const result = await this.request(command, SNAPSHOT_TIMEOUT_MS); - 发起网络请求lib/index.js:911
const result = await this.request(command, DRAIN_TIMEOUT_MS); - 发起网络请求lib/index.js:924
const result = await this.request(command); - 写入本地文件lib/index.js:1155
mkdirSync(tokenDashboardDir(home), { - 读取本地文件lib/cli.js:28
if (!existsSync(dbPath)) return { - 写入本地文件lib/cli.js:77
mkdirSync(dir, { - 写入本地文件lib/cli.js:82
chmodSync(dir, 448); - 写入本地文件lib/cli.js:88
writeFileSync(tmp, JSON.stringify(payload, null, 2), { mode: 384 }); - 写入本地文件lib/cli.js:89
renameSync(tmp, intentPath(home)); - 写入本地文件lib/cli.js:91
chmodSync(intentPath(home), 384); - 读取本地文件lib/cli.js:102
const intent = existsSync(intentPath(this.home)) ? readFileSync(intentPath(this.home), "utf8") : null; - 读取本地文件lib/cli.js:102
const intent = existsSync(intentPath(this.home)) ? readFileSync(intentPath(this.home), "utf8") : null; - 读取本地文件lib/cli.js:106
if (existsSync(dir)) { - 读取本地文件lib/cli.js:107
for (const name of readdirSync(dir)) if (name.startsWith("usage-v1.backup-")) backups.push(name); - 读取本地文件lib/cli.js:148
if (existsSync(canonical)) { - 写入本地文件lib/cli.js:174
if (existsSync(canonical)) renameSync(canonical, preRestore); - 删除本地文件lib/cli.js:187
rmSync(target, { force: true }); - 写入本地文件lib/usage-worker.js:284
chmodSync(dbPath, 384); - 发起网络请求src/client/snapshot.ts:17
const res = await fetch(url, { - 写入本地文件src/durable/diag.ts:37
appendFileSync(path, `${new Date().toISOString()} [${scope}] ${message}${suffix}\n`) - 读取本地文件src/durable/diag.ts:39
if (statSync(path).size > MAX_BYTES) truncateSync(path, 0) - 写入本地文件src/durable/diag.ts:39
if (statSync(path).size > MAX_BYTES) truncateSync(path, 0) - 读取本地文件src/durable/maintenance.ts:73
if (!existsSync(dbPath)) return { exists: false, applicationId: null, userVersion: null, projectionVersion: null, phase: null, quickCheck: null } - 写入本地文件src/durable/maintenance.ts:100
mkdirSync(dir, { recursive: true, mode: 0o700 }) - 写入本地文件src/durable/maintenance.ts:102
chmodSync(dir, 0o700) - 写入本地文件src/durable/maintenance.ts:112
writeFileSync(tmp, JSON.stringify(payload, null, 2), { mode: 0o600 }) - 写入本地文件src/durable/maintenance.ts:113
renameSync(tmp, intentPath(home)) - 写入本地文件src/durable/maintenance.ts:115
chmodSync(intentPath(home), 0o600) - 读取本地文件src/durable/maintenance.ts:127
const intent = existsSync(intentPath(this.home)) ? readFileSync(intentPath(this.home), 'utf8') : null - 读取本地文件src/durable/maintenance.ts:127
const intent = existsSync(intentPath(this.home)) ? readFileSync(intentPath(this.home), 'utf8') : null - 读取本地文件src/durable/maintenance.ts:131
if (existsSync(dir)) { - 读取本地文件src/durable/maintenance.ts:132
for (const name of readdirSync(dir)) { - 读取本地文件src/durable/maintenance.ts:172
if (existsSync(canonical)) { - 写入本地文件src/durable/maintenance.ts:204
if (existsSync(canonical)) renameSync(canonical, preRestore) - 删除本地文件src/durable/maintenance.ts:221
rmSync(target, { force: true }) - 写入本地文件src/durable/sqlite-store.ts:215
chmodSync(dbPath, 0o600) - 发起网络请求src/durable/worker-client.ts:125
await this.request({ - 发起网络请求src/durable/worker-client.ts:152
const result = await this.request(command) - 发起网络请求src/durable/worker-client.ts:172
const result = await this.request(command, SNAPSHOT_TIMEOUT_MS) - 发起网络请求src/durable/worker-client.ts:187
const result = await this.request(command, SNAPSHOT_TIMEOUT_MS) - 发起网络请求src/durable/worker-client.ts:202
const result = await this.request(command, DRAIN_TIMEOUT_MS) - 发起网络请求src/durable/worker-client.ts:210
const result = await this.request(command) - 写入本地文件src/index.ts:30
mkdirSync(dir, { recursive: true, mode: 0o700 })
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-sidebar@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-session@deepseek-ai/dsh-session-persistence@deepseek-ai/dsh-settings@deepseek-ai/dsh-system-prompt给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 每日token用量看板
- 每周token用量看板
- 贡献图风格热力图
README
由 DeepSeek 最新模型翻译生成@apodemakeles/dsh-token-dashboard
一个 DeepSeek Harness (DSH) Web GUI 插件:token 消耗热力图面板。以 GitHub 贡献图风格展示本机所有项目的每日/每周 token 总消耗。Usage facts 由常驻 Worker 投影到本地 SQLite,打开面板不会扫描会话日志。
状态:已发布 v0.2.0 —— GitHub 分发已上线;当前未发布到 npm。
界面截图
周视图
Token 用量周视图热力图
日视图
Token 用量日视图柱状图
功能
- 宿主半区 —— 监听实时 session/event,经过 DSH 持久化屏障后把最小 usage 增量发给常驻 Worker;Worker 独占 SQLite(node:sqlite),原子提交 facts/checkpoint,并提供单一一致快照接口。
- 客户端半区 —— 在侧边栏注册 Token 入口,打开专用面板渲染热力图(周视图网格 + 日视图)。每次打开/刷新/翻页只请求一次 GET /api/token-dashboard/snapshot。
- CLI —— dsh-token-dashboard status|verify|rebuild|backups|restore|cleanup 提供本地运维。
展开完整文档(README 剩余 1 节)
@apodemakeles/dsh-token-dashboard 一个 DeepSeek Harness (DSH) Web GUI 插件:token 消耗热力图面板。以 GitHub 贡献图风格展示本机所有项目的每日/每周 token 总消耗。Usage facts 由常驻 Worker 投影到本地 SQLite,打开面板不会扫描会话日志。 状态:已发布 v0.2.0 —— GitHub 分发已上线;当前未发布到 npm。 界面截图 周视图 Token 用量周视图热力图 日视图 Token 用量日视图柱状图 功能 - 宿主半区 —— 监听实时 session/event,经过 DSH 持久化屏障后把最小 usage 增量发给常驻 Worker;Worker 独占 SQLite(node:sqlite),原子提交 facts/checkpoint,并提供单一一致快照接口。 - 客户端半区 —— 在侧边栏注册 Token 入口,打开专用面板渲染热力图(周视图网格 + 日视图)。每次打开/刷新/翻页只请求一次 GET /api/token-dashboard/snapshot。 - CLI —— dsh-token-dashboard status|verify|rebuild|backups|restore|cleanup 提供本地运维。 安装 从 GitHub: dsh plugin --profile web add github:apodemakeles/dsh-token-dashboard 安装后重启 dsh web。打开任意项目会话,点击侧边栏的 Token 入口即可看到热力图面板。 当前未发布 npm 包,请使用上面的 GitHub 安装方式。 数据与运维 - 投影数据库:$DSH_HOME/data/token-dashboard/usage-v1.sqlite(缺省 ~/.dsh)。 - Total tokens = inputTokens + outputTokens + cacheReadTokens(cache read 计入头条)。 - 面板只调用 snapshot 路由,不触发 listSnapshots、inspect、readFrom、flush 或补扫。 - 首次启动会在后台初始化数据库,面板显示 phase/progress 直到 ready。 开发 git clone https://github.com/apodemakeles/dsh-token-dashboard.git cd dsh-token-dashboard pnpm install && pnpm build dsh plugin --profile web add link:$(pwd) 项目地图(规划 tracker)见 .scratch/dsh-token-dashboard/map.md,架构合同见 docs/durable-usage-architecture.md,完整联调循环(watch / HMR / 重启规则)见 docs/dev-loop.md。 已知限制 - 仅统计本机:权威来源是 ~/.dsh/sessions,SQLite 是可重建投影。 - host/Worker 改动需要重启 DSH;client HMR 不覆盖常驻 Worker。 - Node 24 的 node:sqlite 仍为实验特性;插件启动时做能力检查,不全局屏蔽警告。 协议 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
apodemakeles/dsh-token-dashboard
以贡献图风格查看本机每日每周 token 消耗
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目