DeepSeek Harness Hub
← 返回列表

0xDevDav/dsh-addons

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

为 DeepSeek Harness Web 界面所做的个人扩展,

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/16 · 已提供中文文档

DeepSeek Harness Web GUI 的意大利语语言包(1,257 个字符串)和成本界面:会话成本(包括子代理)、高峰时段提示和账户余额,作为 DSH 配置文件包安装,可在 harness 更新后保留。

综合分
29.8
GitHub 分
29.8
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add 0xDevDav/dsh-addons
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/17(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-addons

为 DeepSeek Harness Web 界面所做的个人扩展,
以配置文件捆绑包的形式打包,因此它们能在 DSH 更新后继续存在,并且只需两条命令即可安装到任何机器上。
有了它们,该界面自称 DavCode AGENT:意大利语,带有成本界面和自有品牌。

在 DSH 0.1.6-alpha.1、Windows、Node 24、pnpm 10 上构建并验证。

这里有什么

| 路径 | 说明 |
|---|---|
| packages/dsh-locale-it | 意大利语语言包:涵盖所有 44 个随附客户端语言区域命名空间的 1 331 条字符串,注册为 it 语言 |
| packages/dsh-session-cost | 成本界面:位于编辑器统计信息旁的会话树成本胶囊、新建会话 上方的峰值/非峰值时段小组件,以及 Settings 行内的账户余额 |
| packages/dsh-brand-davcode | 身份标识:侧边栏品牌行中的 DavCode AGENT 标识组合、折叠栏中的标记、空白会话屏幕上单独的图稿、窗口标题中的产品名称,以及一个标签页图标——每一项都有绘图的浅色和深色变体 |
| tools/locale | 构建语言包的流水线:词典提取、批处理、验证、审校数据,以及增量更新工具 |
| tools/cost | 成本包的验证套件,以及与提供商用量页面的对账 |
| tools/brand | 品牌包的套件、其在运行中 UI 里的屏幕截图,以及 Windows 启动器图标的生成器 |
| tools/verify | verify-install.mjs:npx 缓存的 DSH 安装的完整性检查(半解压的包、未解析的依赖、声明的文件与已发布 tarball 的交叉核对) |
| install | 安装程序、两个平台的固定版本启动器,以及创建带有品牌图标的桌面快捷方式的脚本 |
| docs | 品牌的来源(两个提案页面和参考截图)以及 Prompt-Installazione-DSH.md,即交给另一个代理以在全新机器上复现这一切的任务 |

每个包都有自己的 README,其中包含设计决策、它使用的确切钩子,以及它
刻意不做的事情。

在另一台机器上安装

要求:一个可用的 dsh 安装,以及 PATH 中的 pnpm。

git clone https://github.com/0xDevDav/dsh-addons.git
cd dsh-addons
pwsh -File install/install.ps1          # 或:sh install/install.sh

安装程序会为每个包运行 dsh plugin --profile web add ——这与手动安装插件所走的
文档化路径相同,它会将其安装到 $DSH_HOME/profiles/web 并追加到该配置文件的
dsh.profile.bundles——然后在该文档尚无 locale 部分时,在 $DSH_HOME/settings.yaml
中写入 locale.preference: it,最后留下 DavCode AGENT 启动器和一个
桌面快捷方式(使用 -NoShortcut 跳过最后一部分,或单独运行
pwsh -File install/shortcut.ps1)。
最后重启 Web 界面(从快捷方式停止并重新启动),然后重新加载页面。仅重新加载页面是不够的:浏览器打包文件在进程启动时被读取并计算哈希。

手动操作也是同样的三条命令:

dsh plugin --profile web add /path/to/dsh-addons/packages/dsh-locale-it
dsh plugin --profile web add /path/to/dsh-addons/packages/dsh-session-cost
dsh plugin --profile web add /path/to/dsh-addons/packages/dsh-brand-davcode

桌面快捷方式,以及固定版本

install/launcher/Avvia DavCode AGENT.cmd(Windows)和 install/launcher/davcode-agent.sh(其他平台)
带有它们所启动的 DSH 版本,并且这是有意固定的:语言包覆盖某一个
发行版的字符串,品牌包挂钩某一个发行版的座位和类,因此静默跳转到另一个
发行版会让新字符串保持英文,并可能移动品牌绘制的座位。install/shortcut.ps1
将启动器和 davcode.ico 复制到 %LOCALAPPDATA%\dsh,在桌面上写入 .lnk,并
促使 shell 的图标缓存刷新,以便新标记立即显示;install/shortcut.sh 完成 freedesktop
的等效操作。重新运行其中任何一个即可刷新图标,而 -Version  就是移动固定的方式
——之后值得再次运行下面的测试套件。

davcode.ico 是从标记生成的,而非手工绘制:node tools/brand/make-icon.mjs 写入它
(256/128/64/48/32/16,由 Chromium 从该包所附带的同一绘图渲染)。

重启后你会得到什么

- 整个界面为意大利语(设置 → 通用 → 语言可切换回来;该选择会持久保存)。
- 一个费用胶囊位于编辑器统计信息旁边(1 turni 107 passi … $0,79),其面板显示
总额以及构成它的三个计费桶。
- 一个高峰时段小组件位于新建会话上方,说明你当前所处的分钟是否按高峰
费率计费,并附有你自己时区的时间表。
- 你的 DeepSeek 余额显示在设置行上,从提供商读取。
- DavCode AGENT 品牌取代自带的鱼:侧边栏行中的组合标识(按该行实际
高度绘制——其名称以 18.3px 渲染,自带行自身的名称为 18px),折叠栏中的标记,
空白会话屏幕上单独的图稿为 231×56(无问候语、无预览
徽章,任何语言下皆如此),窗口标题中的 DavCode AGENT,以及一个标签页图标——随主题
在浅色或深色变体之间切换。这是品牌替换,而非分支:不编辑任何自带内容,
移除该包即可让鱼及其问候语恢复。

在 DSH 发行版之后更新语言包

新增语言键的发行版会让这些键保持英文(该包只注册它知道的内容,
而语言运行时按每个键回退到 en)。拾取它们是一项增量工作:批次
从新字典重新生成,因此现有翻译通过命名空间
以及 key,这才是它们真正关于的内容。

node tools/locale/extract2.mjs                                 # 已发布的词典 -> dicts.json
node tools/locale/coverage-diff.mjs dicts-.json dicts.json it-dictionaries.json
某个语言包会让哪些字符串仍保留为英文
node tools/locale/plan-update.mjs dicts-.json dicts.json \
updates/-plan.json                               # 该版本新增和改写了什么
把新键的意大利语译文,以及对改写过的键的审校,写入 updates/.json
node tools/locale/split.mjs                                    # dicts.json -> batches/batch-NN.json
node tools/locale/apply-update.mjs updates/.json      # carry + apply -> it/batch-NN.json
node tools/locale/validate.mjs                                 # 占位符、覆盖率、遗留项
node tools/locale/fix-and-group.mjs                            # 针对性修复 + 审校分组
node tools/locale/finalize.mjs                                 # 校验,生成 it-dictionaries.json
node tools/locale/build-pack.mjs                               # 写入 packages/dsh-locale-it
node tools/locale/test-pack.mjs                                # 证明该捆绑包注册了所有内容
node tools/locale/verify-locale-update.mjs                     # 从已安装的语言包中读回这些字符串

当某个批次中的某个键既没有沿用译文,也没有在更新文件中对应条目时,apply-update.mjs 会让本次运行失败;当更新文件中的某个条目在任何地方都匹配不到任何键时,也会失败:第二种情况正是某个键在命名空间和键名之间被错误拆分的方式——是 settings + connection.restart,而不是 settings.connection + restart——否则它就会在无人察觉的情况下以英文发布。该版本删除的键则直接从批次中移除。

tools/locale/GLOSSARIO.md 是本次翻译所依据的术语约定,it-dictionaries.json 是已发布捆绑包背后最终完成的真相来源,而 updates/ 则按版本保存了该版本确切翻译了什么。

验证 cost 包

node tools/cost/test-balance.mjs      # provider response mapping, credential resolution, caching
node tools/cost/test-provenance.mjs   # prices against the official page, in both languages
node tools/cost/test-tree.mjs         # the session-tree reader against an independent scan
node tools/cost/test-projection.mjs   # the fold against a real session log
node tools/cost/test-client.mjs       # the browser half, rendered by a minimal React runtime
node tools/cost/reconcile.mjs         # computed cost vs the provider's own usage figure

这些工具会自行发现 $DSH_HOME、两个语言包以及会话日志(tools/paths.mjs),而需要会话日志的测试会接收一个作为参数,否则就使用磁盘上最新的那个。

验证 brand 包

sh
node tools/brand/test-brand.mjs                     # 图形、两套调色板、座位、效果
node tools/brand/inspect-brand.cjs  both       # 运行中的 UI 里的行、侧栏和主视觉,两种方案
node tools/brand/shoot-rail.cjs  dark          # 折叠后的侧边栏,完整
node tools/brand/shoot-hero.cjs  light         # 空白会话屏幕,完整
node tools/brand/make-icon.mjs [out.ico]            # Windows 启动器图标,来自同一个标记

test-brand.mjs 针对 packages/dsh-brand-davcode 运行,并且当该包已安装时,还会检查
已安装的 bundle 是否就是同一个文件(通过哈希比对)——因此“仓库与机器一致”
是一个测试结果,而不是一个假设。这三个浏览器工具需要一个可解析的 playwright
(以及一个正在运行的 dsh web: 是页面自身的 token URL),并将它们的截图写入 lab/。

验证安装
sh
node tools/verify/verify-install.mjs            # npx 缓存的 DSH 目录树,找到的最新一个
node tools/verify/verify-install.mjs --offline  # 同上,但不做 tarball 交叉校验
node tools/verify/verify-install.selftest.mjs   # 证明检查器在损坏的目录树上会失败

统计包数量并向 CLI 询问 --version 证明不了什么:--version 不会加载任何插件,而且一个
包可能文件被截断却依然存在——这正是被中断的 npm install 留下的结果。检查器改为报告三件事:
每个带有 package.json 的 node_modules 目录、每个声明的依赖都能从其声明位置解析,以及
包声明的每个运行时文件都存在——当某个文件不存在时,由已发布的 tarball 来判定那是
损坏还是上游打包问题。残留的 lock 文件被解读为“安装被中断”,这是重装的理由,而不是进一步排查的理由。

在另一台机器上复现这一切

docs/Prompt-Installazione-DSH.md 是为另一个 agent 写出的完整任务(它就是本仓库安装时所依据的
提示词):哪个版本、哪些包、快捷方式必须是 DavCode AGENT 并使用这个图标、桌面必须保持
干净,以及 API key 只询问而绝不写入任何地方。docs/brand/ 保存品牌的来源:标记从中选出的
两个提案页面,以及在运行中的 UI 里拍摄的参考截图(行、侧栏、空白会话、图标)。

在你依赖这些之前值得了解的事

- 品牌图形是数据,不是重绘。 所提供图形中的每个坐标、粗细、锚点和颜色都被转录到
packages/dsh-brand-davcode/lib/client.js 中,并且 tools/brand/test-brand.mjs 在两套调色板下
断言所有这些。该行打开随附 CSS 赋予品牌的 24px 盒子,并按该行实际具有的高度绘制画布
(44px,或在窄侧边栏中更小,但绝不低于 24)——这是缩放,绝不是裁剪或重新居中。该包的 README
详细说明了其中的算术。
- 价格是数据,不是代码。 packages/dsh-session-cost/prices.json 承载已发布的费率、
高峰时段(以 UTC 计)、模型别名,以及读取来源的 URL 和日期。编辑该
文件会在下次读取时为每个会话重新计价,无需重启,也无需重新折叠。一个更改
价格的发布版本只需更新该文件,别无其他。
- 费用数字涵盖一个会话及其子代理。 委派的工作在各自的会话中运行,
因此这棵树由子会话的日志组装而成;药丸的辅助功能名称也说明了这一点。
- 有两个位置不是组合席位。 高峰小组件位于品牌行和
New session 按钮之间,而余额位于 Settings 行内。这两个位置在已发布的组合中
都不作为插槽存在,因此二者都锚定到 CSS 模块类名的源本地那一半,
并在 React 丢弃它们时重新插入。如果某次更新重命名了这些类,二者都会回退到
受支持的侧边栏页脚席位,而不是消失——详情请参阅该包的 README。
- 任何凭据都不会到达浏览器。 余额通过 credentials
服务(与 Models 页面写入的是同一引用)在宿主侧读取,绝不通过第二个密钥存储,也绝不
跨越到页面。

许可证

MIT —— 见 LICENSE,与各包在其 package.json 中声明的许可证相同。
此处内容与 DeepSeek 无任何关联,也未获其认可;每个包都是本地新增项,不触及
任何已发布文件。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群