用 dsh-qq2006 把 DeepSeek Harness 换成 QQ2006 皮肤

前言

DeepSeek Harness(dsh)默认 Web UI 是一套现代浅色界面,打开后是会话、侧栏和输入框。对用过 2006 年 QQ 客户端的人来说,那套珊瑚蓝窗口、九宫格标题带、宋体消息列表,是另一套完全不同的视觉记忆。社区插件 dsh-qq2006 做的就是这件事:在 Web UI 里注册一个可切换的 qq2006 主题,把配色、字体和窗口铬件往那个蓝色小企鹅靠。

DeepSeek Harness 目前处于开发者预览,官方仓库写明架构是「一切皆插件」。主题、侧栏、工具都可以以外置包的形式装进某个 profile。需要说明:本文依据的插件目录是社区站点 deepseek-harness-plugin.com,它收录第三方插件,与 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。

下面按目录详情页、GitHub 仓库 README、package.json 以及官方 deepseek-ai/deepseek-harness 文档交叉核对:这个插件实际提供什么、两种安装路径差在哪、装完怎么切皮肤。

这是什么

dsh-qq2006 是一款主题与外观插件,由 LaplaceYoung 维护,npm 包名为 @dsh-external/dsh-qq2006,当前版本 0.1.0,主要语言是 TypeScript。插件代码采用 MIT 许可证。GitHub 仓库在 2026-08-17 查询时为 12 星;社区目录页当时显示 9 星,以仓库页面为准。

它要解决的问题很具体:给 DSH Web UI 增加一个名为 qq2006 的可选主题,而不是改掉默认浅色 / 深色皮肤。实现上分两层:

  • 插件包本身:向主题服务注册 qq2006,把当前主题镜像到 body[data-ds-skin],并附带一份全局皮肤表(复古字体、滚动条、九宫格工具类、.qq-btn 三态钮)和珊瑚蓝 token。
  • 源码补丁(完整效果):登录窗、主面板、聊天窗铬件、列表式消息、QQ 秀右侧栏和原版素材,改的是宿主 UI 包源码。README 写明这些效果无法通过 npm 发行版的插件机制注入。

目录页的一句话简介是:「注册 qq2006 主题、镜像 body[data-ds-skin]、全局皮肤表与完整素材」。完整素材在仓库的 assets/qq2006/ 里,但发行版安装并不会把登录窗到聊天窗的组件级外观全部带上。这一点后面单独列表说明。

核心功能

1、可切换、可持久化、默认皮肤零污染

插件在客户端调用 ctx.theme.register,主题 id 为 qq2006colorSchemelight,并带上一组 --dsw-alias-* 珊瑚蓝覆盖(品牌色约为 rgb(45, 128, 208))。注册成功后,它出现在设置 → 外观一行,位置是第 4 个选项,前三个是内置的 light / dark / system。

偏好写在 localStoragedsh.theme。刷新或重启后,插件会读这个键;若值为 qq2006,再调用 setTheme 把主题设回去。源码注释解释了原因:主题服务启动时只认内置三套,自定义 id 会先回落到 system,必须在本主题注册完成后再断言一次。

生效标志是 body[data-ds-skin='qq2006']。插件只在当前主题是 qq2006 时写入该属性,切走时只删除自己写过的属性,不碰别人的 data-*。全局 CSS 和组件补丁全部锚定这个祖先选择器,所以切回默认皮肤时不应留下蓝色窗口框或宋体消息样式。仓库把这称为「零污染契约」。

package.jsondsh.client.platformwebimmediatelytrue,依赖主题服务 @deepseek-ai/dsh-client-ui-theme。它是 Web UI 侧的外观插件,不是 headless / TUI profile 用的包。

2、全局皮肤表:字体、滚动条、九宫格、三态钮

src/styles/qq2006.css 是发行版能直接带上的那一半外观。文件头写明:每一条规则都以 body[data-ds-skin='qq2006'] 为作用域。内容包括:

  • 字体:Tahoma, 'SimSun', '宋体', 'Microsoft YaHei', sans-serif
  • 细滚动条,滑块用蓝色渐变
  • 九宫格窗口铬件工具类:.qq-skin-title / .qq-skin-head / .qq-skin-body(标题带、工具带、窗体分别用左右帽图 + 中间平铺)
  • 标题栏三态按钮:最小化、换色、关闭为 16×16;「菜单」为原版 65×24 文字钮
  • 渐变按钮 .qq-btn(白到浅蓝,边框 #00558e
  • 在线 / 离线状态点、金色 :focus-visible 焦点环
  • 消息字号循环用的 --qq-msg-font-size(小 / 中 / 大)

这些类要真正铺满登录窗和聊天窗,还需要宿主组件去引用,并配上 /qq2006/img/... 静态资源。发行版只注册主题和这份表,组件是否用得上这些类,取决于你走的是哪条安装路径。

3、两条路径的能力边界

README 用一张表把发行版和源码路径拆开,这是选用该插件时最容易忽略的一点:

能力 npm 发行版(dsh plugin add 源码 monorepo(fork 分支或补丁)
qq2006 主题 + 珊瑚蓝 token 换肤
全局皮肤表(字体 / 滚动条 / 九宫格类)
登录窗 / 主面板 / 聊天窗铬件
原版列表式消息 / QQ 秀右栏 / 消息操作
素材(按钮图标 / 头像 / 提示音)

仓库已提交预构建产物 lib/,并声明 dsh.bundle.patch 指向 cordis.patch.yml,会把插件挂成客户端行 ui-skin-qq2006。所以用目录页那条命令,能装上的是「主题注册 + 全局表」,不是完整 QQ 客户端仿制。作者写的后续计划是:等 DSH 官方提供客户端插件的静态资源与 UI 槽位后,再把组件级皮肤迁进插件包。

源码路径下,文档还列出了登录九宫格窗、主面板 10 钮、聊天窗大工具栏 12 钮 / 小工具栏 8 钮、列表式消息(自己绿色昵称、对方深蓝紫昵称、HH:MM:SS 时间、宋体正文)、QQ 秀右侧栏,以及窗口内四套换肤预设:经典蓝 / 粉红 / 薄荷绿 / 紫罗兰。这些都绑定在 fork 的 skin/qq2006 分支或 patches/qq2006-skin.patch 上,不要当成 dsh plugin add 之后立刻出现的界面。

安装与启用

社区目录页给出的安装命令如下,在 DeepSeek Harness 终端中运行:

dsh plugin add github:LaplaceYoung/dsh-qq2006

官方 CLI 文档里,插件管理的完整形式是 dsh plugin --profile <profile> add <spec>,会在对应 profile 目录里转发给 pnpm。本插件的 platformweb,仓库 README 写的发行版命令因此带了 profile:

dsh plugin --profile web add https://github.com/LaplaceYoung/dsh-qq2006

两条命令指向同一个 GitHub 仓库。目录页以 github:LaplaceYoung/dsh-qq2006 为准;若当前 dsh 要求显式指定 profile,使用 README 这条。需要可复现安装时,目录页建议固定 commit:

dsh plugin add github:LaplaceYoung/dsh-qq2006#commit

commit 换成仓库里实际的提交哈希。装完后按官方插件说明重启 web profile,让新的 bundle 层参与合成:

dsh --profile web

或使用别名 dsh web。Web UI 默认地址是 http://127.0.0.1:3080。打开后进入 设置 → 外观,选择 QQ2006 皮肤

插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应检查源代码仓库和许可证。

典型用法

只装发行版:换珊瑚蓝主题

适合先看 token 和全局表是否生效。步骤来自目录页与 README:

  1. 确认本机已能启动 Web UI(官方文档示例:npx @deepseek-ai/dsh web)。
  2. 执行上一节的 dsh plugin add(或带 --profile web 的写法)。
  3. 重启 web profile,打开 http://127.0.0.1:3080
  4. 设置 → 外观 → QQ2006 皮肤。
  5. 需要对比时,再切回 light / dark / system。按仓库契约,默认皮肤不应残留 data-ds-skin='qq2006'

发行版启用后,README 的原话是:获得 qq2006 主题注册(全 UI 珊瑚蓝 token 换肤)+ 全局皮肤表(复古字体、滚动条、九宫格工具类、.qq-btn 三态钮)。

要完整皮肤:走源码分支或补丁

完整实现在 LaplaceYoung fork 的 skin/qq2006 分支。README 给出的命令是:

git clone https://github.com/LaplaceYoung/deepseek-harness.git
cd deepseek-harness
git checkout skin/qq2006
pnpm install
pnpm run build
node --import tsx/esm apps/cli/src/bin.ts web

浏览器打开 http://127.0.0.1:3080,同样在设置 → 外观里选 QQ2006 皮肤

已经 checkout 了上游 deepseek-ai/deepseek-harness 的用户,可以把插件仓库里的补丁打上去:

git apply patches/qq2006-skin.patch

README 注明该补丁基于上游 master。打补丁前应对齐当前上游提交,冲突需要自行处理。组件级补丁规则是:皮肤段只追加在各组件自己的 .module.css 尾部,选择器必须带 body[data-ds-skin='qq2006']

源码路径下,聊天窗口标题栏的「更换颜色」会在经典蓝 / 粉红 / 薄荷绿 / 紫罗兰之间循环,偏好键为 dsh.qq.winSkin。发送快捷键文档写的是 Alt+S,与 Enter 等效。这些交互属于宿主 UI 补丁,不是发行版插件包里的独立命令。

适用场景与注意事项

适合这几类使用方式:

  • 已经在用 DSH Web UI,想在外观行多一个可随时关掉的复古主题。
  • 能接受发行版只有珊瑚蓝 token 和全局表,完整窗口仿制愿意自己构建 fork 或打补丁。
  • 在做 DSH 主题插件,需要一份「注册主题 + data-ds-skin 镜像 + 作用域 CSS」的参考实现。src/index.ts / src/client/index.tscordis.patch.yml 都在仓库里。

不适合、或需要先读许可再决定的情况:

  • 素材版权assets/qq2006/README.txt 写明素材来自 mengkunsoft/QQ2006,提取自腾讯原版 QQ2006 安装包,版权归腾讯,仅供学习交流,请勿商用。插件代码是 MIT,素材不是。公开演示、二次分发或商用界面前应自行评估。
  • 平台dsh.client.platformweb,不要指望装进 TUI / headless profile 后出现这套皮肤。
  • 权限:插件与当前 dsh 进程同权。即使这是外观插件,安装前仍应阅读源码和 LICENSE
  • 上游迭代:官方 README 写明开发者预览阶段会有破坏性变更。组件级补丁打在宿主 .module.css 上,上游改 class 名或 DOM 结构后,fork / patch 路径可能失效;发行版也依赖主题服务的 register / theme/change API。
  • 不要把目录站当成官方商店:安装源是 GitHub 上的社区仓库,目录页只做收录和展示。

小结

dsh-qq2006 把 2006 年 QQ 的珊瑚蓝外观接进 DeepSeek Harness 的主题体系:注册 qq2006、镜像 body[data-ds-skin]、用作用域 CSS 保证默认皮肤不被污染。用目录页命令安装,得到的是主题和全局皮肤表;登录窗到聊天窗的完整仿制,需要 fork 的 skin/qq2006 分支或仓库里的补丁。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-qq2006/

GitHub:https://github.com/LaplaceYoung/dsh-qq2006

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜