🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

账号用量面板 scientificmaniac/dsh-weekstrip

DeepSeek Harness
scientificmaniac9 天前有提交已提供中文文档扫描:含敏感能力

非官方 DSH Desktop 补丁:在「设置 → 账户」下显示 token 用量、最近 7 天和活跃度

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add scientificmaniac/dsh-weekstrip
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · desktop
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 9 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 48 处,展示前 36 条)
  • 读取本地文件
    src/asar.mjs:119
    if (!existsSync(asarPath)) throw new PatchError(`asar archive not found: ${asarPath}`)
  • 读取本地文件
    src/asar.mjs:127
    const fileSize = statSync(asarPath).size
  • 读取本地文件
    src/asar.mjs:275
    if (!existsSync(unpackedPath)) {
  • 读取本地文件
    src/asar.mjs:281
    return { entry, buffer: readFileSync(unpackedPath), source: 'unpacked' }
  • 读取本地文件
    src/asar.mjs:415
    return readdirSync(dir)
  • 读取本地文件
    src/asar.mjs:429
    const taken = ['.json', '.hdr', '.bak'].some((ext) => existsSync(join(backupDir, `${ASAR_NAME}.${stamp}${ext}`)))
  • 写入本地文件
    src/asar.mjs:469
    mkdirSync(backupDir, { recursive: true })
  • 写入本地文件
    src/asar.mjs:478
    mkdirSync(dirname(unpackedPath), { recursive: true })
  • 写入本地文件
    src/asar.mjs:479
    writeFileSync(unpackedPath, payload)
  • 写入本地文件
    src/asar.mjs:509
    writeFileSync(headerBackup, readExactly(fd, index.dataStart, 0))
  • 写入本地文件
    src/asar.mjs:514
    writeFileSync(metaPath, `${JSON.stringify(meta, null, 2)}\n`)
  • 删除本地文件
    src/asar.mjs:523
    rmSync(tempPath, { force: true })
  • 写入本地文件
    src/asar.mjs:526
    copyFileSync(asarPath, fullBackup)
  • 删除本地文件
    src/asar.mjs:533
    rmSync(tempPath, { force: true })
  • 删除本地文件
    src/asar.mjs:549
    if (!unpackedExisted) rmSync(unpackedPath, { force: true })
  • 删除本地文件
    src/asar.mjs:550
    rmSync(metaPath, { force: true })
  • 删除本地文件
    src/asar.mjs:683
    rmSync(meta.unpackedPath, { force: true })
  • 删除本地文件
    src/asar.mjs:688
    try { rmSync(dir, { recursive: false, force: true }) } catch { }
  • 读取本地文件
    src/bundle.mjs:138
    if (existsSync(loose)) return { kind: 'loose', path: loose, resourcesDir, origin }
  • 读取本地文件
    src/bundle.mjs:140
    if (existsSync(asarPath)) return { ...asarTarget(asarPath, origin), resourcesDir }
  • 读取本地文件
    src/bundle.mjs:213
    const json = JSON.parse(readFileSync(manifest, 'utf8'))
  • 读取本地文件
    src/patch.mjs:45
    if (!existsSync(snippetPath)) throw new PatchError(`snippet not found: ${snippetPath}`)
  • 读取本地文件
    src/patch.mjs:46
    return readFileSync(snippetPath, 'utf8').replace(/ /g, '\n')
  • 读取本地文件
    src/patch.mjs:96
    if (!existsSync(BACKUP_DIR)) return []
  • 读取本地文件
    src/patch.mjs:97
    return readdirSync(BACKUP_DIR).filter((name) => LOOSE_BACKUP_PATTERN.test(name)).sort()
  • 写入本地文件
    src/patch.mjs:102
    mkdirSync(BACKUP_DIR, { recursive: true })
  • 写入本地文件
    src/patch.mjs:105
    writeFileSync(probe, text, 'utf8')
  • 执行外部命令来自配置/变量
    src/patch.mjs:106
    const result = spawnSync(process.execPath, ['--check', probe], { stdio: 'inherit' })
  • 删除本地文件
    src/patch.mjs:111
    try { rmSync(probe, { force: true }) } catch { }
  • 读取本地文件
    src/patch.mjs:127
    if (!existsSync(path)) {
  • 读取本地文件
    src/patch.mjs:153
    if (target.kind === 'loose') return { text: readFileSync(target.path, 'utf8') }
  • 写入本地文件
    src/patch.mjs:239
    mkdirSync(BACKUP_DIR, { recursive: true })
  • 写入本地文件
    src/patch.mjs:241
    copyFileSync(target.path, backup)
  • 写入本地文件
    src/patch.mjs:242
    writeFileSync(target.path, next, 'utf8')
  • 写入本地文件
    src/patch.mjs:264
    copyFileSync(latest, target.path)
  • 发起网络请求
    src/snippet.js:337
    const response = await fetch("api/dsh-context/backfill", { method: "POST" })
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-weekstrip 宣传图 dsh-weekstrip 为 DSH Desktop(DeepSeek Harness)准备的社区补丁:在 设置 → 账号与余额 下方增加一块本地用量面板,包含 Token 统计、近 7 天用量与活跃度。 简体中文 · English [!NOTE] 这是社区补丁,不是 DeepSeek 官方功能。它只修改你自己机器上 DSH Desktop 安装目录里的一个文件,应用升级后补丁会失效,重跑一次即可。 浅色 / 深色静态预览:docs/preview.html(下载后用浏览器打开)。 效果图 中文界面效果图 新增内容 | 卡片 | 内容 | 数据来源 | | Token 统计 | 累计计费 tokens、四段构成条(输入 / 缓存命中 / 缓存写入 / 输出)及占比、模型请求数 | 官方 tokenUsage 会话投影;缺失时退回 contextActivity 按天账本 | | 近 7 天用量 | 每个本地日历日一根柱、7 天合计与日均 | contextActivity.days(dsh-context 注册的按天账本) | | 活跃度 | 近 7 天强度格、活跃天数 x/7、连续天数、回合数、工具调用数 | 同上(requests / turns / toolCalls) |
展开完整文档(README 剩余 1 节)
dsh-weekstrip 宣传图

dsh-weekstrip

为 DSH Desktop(DeepSeek Harness)准备的社区补丁:在 设置 → 账号与余额 下方增加一块本地用量面板,包含 Token 统计、近 7 天用量与活跃度。

简体中文 · English

[!NOTE]
这是社区补丁,不是 DeepSeek 官方功能。它只修改你自己机器上 DSH Desktop 安装目录里的一个文件,应用升级后补丁会失效,重跑一次即可。

浅色 / 深色静态预览:docs/preview.html(下载后用浏览器打开)。

效果图

中文界面效果图

新增内容

| 卡片 | 内容 | 数据来源 |
| Token 统计 | 累计计费 tokens、四段构成条(输入 / 缓存命中 / 缓存写入 / 输出)及占比、模型请求数 | 官方 tokenUsage 会话投影;缺失时退回 contextActivity 按天账本 |
| 近 7 天用量 | 每个本地日历日一根柱、7 天合计与日均 | contextActivity.days(dsh-context 注册的按天账本) |
| 活跃度 | 近 7 天强度格、活跃天数 x/7、连续天数、回合数、工具调用数 | 同上(requests / turns / toolCalls) |

- 口径为全部会话(含子代理会话,且不重复计入父会话)。
- 按浏览器本地时区切日;跨零点自动重算,无需刷新。
- 只读本机会话数据,面板自身不发起网络请求;唯一的外部请求是可选的 POST api/dsh-context/backfill(同源、dsh-context 插件的回填路由)。

环境要求

| DSH Desktop | 已安装的桌面版;锚点针对 0.2.1-rc.2 验证 |
| Node.js | 18 或更高(仅补丁脚本需要) |
| dsh-context 插件 | 可选。未安装时:累计 Token 仍可用,按天窗口/活跃度可能为空 |

安装

补丁修改的是安装目录里的这个文件:

<resources>/app/node_modules/@deepseek-ai/dsh-client-ui-settings-account/lib/client.js

显式传路径、传 resources 目录,或用环境变量:

Windows 通常在 %LOCALAPPDATA%\Programs\DSH Desktop\resources
node src/patch.mjs status --bundle "<install>/resources/app/node_modules/@deepseek-ai/dsh-client-ui-settings-account/lib/client.js"
node src/patch.mjs verify --bundle "<...>/client.js" # 只校验锚点与语法,不写文件
node src/patch.mjs apply --bundle "<...>/client.js" # 备份后打补丁

或指向 resources 目录
node src/patch.mjs apply --resources "<install>/resources"

或用环境变量 $env:DSH_ACCOUNT_BUNDLE = "<...>/client.js" # PowerShell
export DSH_ACCOUNT_BUNDLE="<...>/client.js" # bash/zsh

apply 是幂等的:已打补丁会直接跳过。每次写入前都会备份到 backups/,并在替换文件前用 node --check 做语法门禁。

然后完全退出并重新启动 DSH Desktop(Web 外壳在 host 启动时对插件 bundle 做快照,刷新页面不会重新读取),打开 设置 → 账号与余额。

自定义安装位置

自动探测只覆盖默认位置(Windows 的 %LOCALAPPDATA%\Programs、Program Files;macOS 的 /Applications;Linux 的 /opt、/usr/lib、~/.local/share)。如果 status 提示找不到 bundle,按上面的方式传 --bundle 或 --resources。

如果你用的是源码启动或全局 npm 安装的 DSH,把 --bundle 指向那份安装里的 node_modules/@deepseek-ai/dsh-client-ui-settings-account/lib/client.js。

回滚与升级

node src/patch.mjs revert # 还原最近一次备份

- 备份在 backups/(已被 .gitignore 忽略),命名 client.js.<时间戳>.bak。
- DSH Desktop 升级会替换安装文件,补丁随之消失——重跑一次 apply 即可。
- 若新版本的 bundle 结构变了,锚点将无法匹配:apply 会以 anchor "<name>" matched 0 time(s) 中止,且不修改文件。此时应补充锚点表(或提 PR),不要强行套用。

实现方式

账号设置页是一个 settings.section slot 条目,自身没有子 slot,所以面板通过五处锚点修改已编译的 client bundle 插入:

1. en / zh 账号字典追加面板文案;
2. 在 AccountSection 区域前插入自包含模块(src/snippet.js);
3. 原组件更名为 AccountSectionMain;
4. 新增 AccountSection,用 Fragment 同时渲染原组件与用量面板;
5. settings.section 注册项的注入里追加 refreshSessions(回填后重新读取会话列表)。

面板读取框架的 useSessions 标准钩子(root scope 标准 kit),自带错误边界(面板出错不会连累账号与余额卡片),钩子缺失时整块不渲染。

开发与测试

npm run check # CI 门禁:语法 + 补丁引擎测试 + 聚合逻辑测试(无需安装)
npm run engine-test # 锚点处理、插入、幂等、拒绝路径、安装路径探测
npm run logic-test # 窗口 / 连续天数 / 四桶 / 敌意数据降级
npm run load-test # 按 __ModuleLoader__ 协议执行补丁后 bundle(需要安装)
npm run render-test # 用 React 垫片渲染面板并断言文案与数字
npm run preview # 重新生成 docs/preview.html(浅色 + 深色,中文);加 -- --locale en 生成英文版

需要真实安装的测试在找不到安装时会以退出码 0 跳过。已验证版本登记在 src/anchors.mjs 的 VERIFIED_VERSIONS 中。

兼容性

| DSH 版本 | 状态 |
| 0.2.1-rc.2 | 已验证(锚点端到端测试) |
| 其它版本 | 会尝试套用;锚点移动则安全中止 |

许可与隐私

- 许可:MIT。与 DeepSeek 无关联;“DeepSeek Harness”“DSH”等标识归其所有者。
- 补丁只修改你本机的安装,不附带任何 DSH 代码、修改后的 bundle 或二进制。
- 无遥测、无远程存储:面板只读浏览器里已有的会话投影,另可选调用本地插件同源的回填路由。
- 第三方声明:THIRD_PARTY_NOTICES.md。

致谢

- dsh-context:提供了本面板使用的按天活动投影、回填路由与视觉语言。
- DSH 团队:公开了客户端包与源码布局(MIT)。

参与贡献:CONTRIBUTING.md
预览分享卡片长什么样 ↓scientificmaniac/dsh-weekstrip
分享 · DeepSeek Harness Hub
scientificmaniac/dsh-weekstrip

非官方 DSH Desktop 补丁:在「设置 → 账户」下显示 token 用量、最近 7 天和活跃度

这是你的仓库?认领条目

回到顶部