wsxwj123/dsh-plugins
Independent plugins for DeepSeek Harness, organized as isolated packages in one monorepo.
已收录
7
Notify, Session, Theme, Ui
Bundle 已验证
预览
功能介绍
wsxwj123/dsh-plugins#dsh-composer-tools: 输入框工具集:方向键调取历史消息(限首/末行触发,兼容输入法与命令菜单)等输入增强。 wsxwj123/dsh-plugins#dsh-session-manager: 会话删除(5 秒可撤销 + 回收站)与归档视图(查看、取消归档)。 wsxwj123/dsh-plugins#pet-bridge: dsh ↔ cc-pet 桌面宠物状态桥:把会话状态(思考中 / 读取文件 / 运行命令 / 完成)实时推送到桌面宠物气泡。 wsxwj123/dsh-plugins#skin-gallery: 9 个完整 dsh-web-ui 皮肤复刻,支持自定义皮肤包导入、试穿、应用、删除、恢复默认,并修正气泡与代码块可读性。 wsxwj123/dsh-plugins#theme-gallery: 15 个精选主题家族 + CSS-only 自定义主题,支持导入、试穿、应用、删除和恢复默认,跟随 DSH 原生浅色/深色/跟随系统模式。 wsxwj123/dsh-plugins#turn-scrubber: 右侧紧凑回合刻度条,悬停显示回合摘要,点击跳转到对应用户回合。
适合
- 需要输入历史和相关输入增强的 DSH Web 用户。
- 管理大量会话、需要可撤销删除、回收站及归档/取消归档流程的用户。
- 希望通过紧凑回合刻度快速浏览长对话的用户。
- 需要可配置主题或完整皮肤,或希望把 DSH 实时状态显示在 cc-pet 桌面气泡中的用户。
不适合
- 需要单一后端、模型或代码工具的用户;该仓库提供的是相互独立的 Web 界面与桌面状态插件。
- 本机没有 cc-pet 在 127.0.0.1:7779 监听的 pet-bridge 用户。
- 从源码包直接安装 composer-tools、但不准备先完成本地依赖安装与构建的用户。
- 仍依赖已移除的独立 theme-gallery、skin-gallery 和 skin-runtime 包目录,而非合并后外观包的安装环境。
README
dsh-plugins 中文说明
这是一个用于 DeepSeek Harness 的插件集合仓库。仓库采用 monorepo 结构,每个插件放在 packages/ 下的独立目录里,互不影响。
English: README.en.md
当前插件
| 插件 | 功能 |
|---|---|
dsh-appearance-gallery |
外观画廊:15 个主题家族 + 9 个完整 dsh-web-ui 皮肤复刻,合并为单一插件、设置页单一入口,支持自定义主题 JSON 与自定义皮肤包导入。 |
dsh-turn-scrubber |
在对话右侧显示回合刻度,悬停展开,点击跳转到对应用户回合。 |
dsh-pet-bridge |
桌面宠物状态桥:把 dsh 会话状态(思考中 / 读取文件 / 运行命令 / 完成)实时推送到 cc-pet 桌面宠物气泡。 |
dsh-session-manager |
会话删除(5 秒可撤销 + 回收站式硬删)与归档视图(查看/取消归档)。 |
dsh-composer-tools |
输入体验增强:方向键输入历史(首/末行门槛)+ 指令查看/编辑面板(全局+项目 AGENTS.md/CLAUDE.md)+ 提示词库(780 条,发送到输入框/复制)。 |
所有插件在 macOS 与 Windows 上均可使用。
界面预览
外观画廊(主题 + 皮肤)

会话管理(归档 + 回收站)

输入体验增强(指令面板 + 提示词库)

对话回合刻度

从旧版本升级(装过主题画廊 / 皮肤画廊的看这里)
dsh-theme-gallery、dsh-skin-gallery、dsh-skin-runtime 三个插件已合并为 dsh-appearance-gallery,原目录不再存在。已安装旧插件的用户需要卸旧装新,否则 dsh web 启动时会因插件目录消失而报 loader 错误。
macOS / Linux:
dsh plugin --profile web remove dsh-theme-gallery dsh-skin-gallery dsh-skin-runtime
dsh plugin --profile web add "link:$PWD/packages/dsh-appearance-gallery"
Windows(PowerShell):
dsh plugin --profile web remove dsh-theme-gallery dsh-skin-gallery dsh-skin-runtime
dsh plugin --profile web add "link:$PWD\packages\dsh-appearance-gallery"
换装后重启 dsh web 并刷新页面。你的外观设置不会丢:主题与皮肤的状态键完全沿用旧键,已应用的主题/皮肤、已导入的自定义主题与自定义皮肤在升级后原样保留,无需重新导入。
安装插件
先克隆仓库:
git clone https://github.com/wsxwj123/dsh-plugins
cd dsh-plugins
然后按需要安装某个插件(把目录名换成上表里的插件名即可):
dsh plugin --profile web add "link:$PWD/packages/dsh-appearance-gallery"
Windows(PowerShell)下把路径分隔符换成反斜杠:
dsh plugin --profile web add "link:$PWD\packages\dsh-appearance-gallery"
其余插件同理:
dsh plugin --profile web add "link:$PWD/packages/dsh-turn-scrubber"
dsh plugin --profile web add "link:$PWD/packages/dsh-session-manager"
dsh plugin --profile web add "link:$PWD/packages/dsh-composer-tools"
安装 dsh-pet-bridge 前需先安装 cc-pet 桌面宠物(它监听 127.0.0.1:7779 接收状态推送,pet 端代码无需修改):
dsh plugin --profile web add "link:$PWD/packages/dsh-pet-bridge"
dsh-composer-tools 需要先在包目录内 pnpm install && pnpm build(lib/ 不入库)。
安装完成后,重启当前 dsh web 进程,并刷新已有页面地址。不要另起第二个 Web 服务。
安装后请检查
~/.dsh/profiles/web/node_modules/@deepseek-ai是否被创建成真实目录。正常情况下它不应存在——出现真实目录意味着 profile 里多了一份框架副本,会导致 Cordis / Tool Symbol 分裂(工具调用报Cannot read properties of undefined)。相关背景见 deepseek-harness discussion #783。本仓库所有插件已把框架包声明为peerDependencies: "*",正是为了避免包管理器自动补装第二份副本。
仓库结构
packages/
dsh-appearance-gallery/ # 外观画廊(主题 + 皮肤,含 9 套皮肤资源)
dsh-turn-scrubber/ # 对话回合刻度
dsh-pet-bridge/ # 桌面宠物状态桥(配合 cc-pet 使用)
dsh-session-manager/ # 会话删除 + 归档视图
dsh-composer-tools/ # 输入体验增强(方向键历史/指令面板/提示词库)
每个插件都有自己的源码、构建产物、package.json、cordis.patch.yml、README 和更新日志。新增插件时在 packages/ 下新建独立目录,不把不同插件混在一个包里。
本地构建
pnpm build
pnpm check
仓库中的 DSH 运行时包被声明为可选 peer dependency,避免把第二份 DSH/Cordis 打进插件包。
dsh-appearance-gallery 的 lib/client.js 由 build.mjs 生成,不可手工编辑:DSH 要求 bundle 执行后自行调用 window.__ModuleLoader__.load(...) 注册,这层注册壳只存在于构建产物中。node build.mjs --check 会校验产物的注册壳、体积上限与皮肤资源完整性,是只读检查,可放进 CI。
外观画廊
主题
提供 15 个主题家族:翠玉、陶土、余烬、星夜、蔷薇雾、紫晶、琥珀旧梦、墨川、苔境、日蚀、天际、晴蓝、黑白界、粉霞、紫雾。
插件只负责选择主题家族,浅色 / 深色 / 跟随系统仍由 DSH 自带的”外观”设置控制,两者不会互相覆盖。
皮肤
内置 9 款完整 dsh-web-ui 皮肤复刻(QQ2008 怀旧版、Windows XP、Minecraft、初音未来、蓝色幻想、龙的传人、同花顺、交易终端、鲸吟),每款支持试穿与应用。
自定义主题(CSS-only JSON 导入)
自定义主题只做 CSS 变量注入,不执行任何 JS。JSON 形状:
{
"id": "my-jade-tweak",
"label": "我的主题",
"tokens": {
"--dsw-alias-bg-base": { "light": "#fff", "dark": "#111" },
"--dsw-alias-brand-primary": { "light": "#07c160", "dark": "#07c160" }
}
}
必须含 id、label、非空 tokens;每个 token 名必须以 --dsw- 开头,值是 { "light": 字符串, "dark": 字符串 }。导入后支持试穿 / 应用 / 删除 / 恢复默认。非法导入一律不改当前外观,并抛出带 code 的错误(见下文错误表)。
自定义皮肤(三文件受控导入)
my-skin/
├── skin.json # 元数据(必含 id / name / author / license)
├── client.js # 契约:注册 __ModuleLoader__.load 并导出 apply(ctx)
└── a11y.css # 可选;缺失则降级(皮肤仍可用,仅无对比修正)
-
skin.json缺id / name / author / license任一拒绝(author 与 license 必填,尊重 BSD-3 保留要求);声明bodyAttr时必须匹配/^data-[a-z0-9-]{1,64}$/。 -
client.js必须window.__ModuleLoader__.load({ id, factory })、factory 导出apply(ctx),且apply只消费ctx.effect/ctx.get。 -
高危能力拒绝:含
eval(、new Function(、import(、非内联require(、<script src=、fetch(、XMLHttpRequest(、WebSocket(、localStorage/sessionStorage直读写、document.cookie、chrome.runtime任一的包拒绝导入。 -
a11y.css只允许data:与相对路径的url(),http////file:/ftp/ws一律拒绝(防止皮肤包向外部发起请求)。 - 单包(skin.json + client.js)UTF-8 安全的 base64 后 ≤ 256KB;自定义皮肤总数 ≤ 8 个。
状态机与主题↔皮肤互斥
主题与皮肤各维护独立状态机(内置 + 自定义轨共用):
none ──import──▶ registry(未选) ──preview──▶ preview ──apply──▶ applied
▲ │ │
└───restore_default┴──delete(registry 移出;若为 applied 回默认)───┘
-
preview:仅运行时生效,刷新即丢,不写applied键。 -
applied:写入applied键,页面加载时按轨恢复。 -
两轨经共享键 dsh-appearance-track-v1软互斥(’theme’‘skin’ ’‘):同一时刻至多一个轨激活外观。
错误码
导入/操作失败统一抛 { code, message },且不改当前外观、不写任何 storage 键:
| code | 说明 |
|---|---|
ERR_IMPORT_INVALID_JSON |
主题 / 皮肤 JSON 解析失败 |
ERR_THEME_MISSING_FIELD |
主题缺 id/label/tokens 之一,或格式非法 |
ERR_THEME_BAD_TOKEN |
token 名非 --dsw- 前缀,或值非 {light,dark} 字符串 |
ERR_THEME_ID_CONFLICT |
与内置主题 id 冲突 |
ERR_SKIN_MISSING_FILE |
缺 skin.json / client.js |
ERR_SKIN_BAD_META |
skin.json 缺 id/name/author/license,或 bodyAttr 格式非法 |
ERR_SKIN_CONTRACT |
client.js 不满足 ModuleLoader/apply/ctx.effect 契约 |
ERR_SKIN_DANGEROUS |
client.js 含高危能力(eval/fetch/…),或 a11y.css 含外部 url() |
ERR_SKIN_SIZE |
单包 base64 后超 256KB |
ERR_SKIN_COUNT |
自定义皮肤超 8 个 |
ERR_UNKNOWN_ID |
试穿/应用不存在的自定义 id |
ERR_A11Y_MISSING |
a11y.css 缺失(非致命,仅日志,皮肤仍可用) |
提交到 DSH Plugins 目录
dshplugins.com 是独立的社区插件目录,不是 DeepSeek 官方站点。仓库必须公开,提交后进入人工审核队列,审核者会检查名称、摘要、安装类型、目标 profile、README 和安装命令。收录不等于安全背书,用户仍应阅读源码后安装。
本仓库适合按”Local checkout”类型提交,目标 profile 为 web。分别提交多个插件时,使用各自独立 README 的安装路径说明,避免用户把整个 monorepo 误当成单个插件。
许可证
MIT
常见问题常见问题
在启用了 DSH 的终端中执行已验证命令 dsh plugin --profile default add github:wsxwj123/dsh-plugins#path:/packages/dsh-composer-tools。命令会解析公开 package 元数据,并保持插件与本页展示的目录身份一致。
兼容性以页面上展示的 bundle 与 profile 状态为准。如果某个 profile 尚未检测到,请先保持禁用,并在生产启用前阅读仓库文档。
GitHub 链接和 activity 元数据是 release 与维护状态的来源。新版本发布后重新查看本页,确认目录已经观察到最新版本。