界面增强
#dsh-plugin
dsh-plugins (dsh-appearance-gallery)
15 个精选主题家族 + 9 个完整 dsh-web-ui 皮肤复刻合并为单一插件、设置页单一入口,支持 CSS-only 自定义主题 JSON、受控自定义皮肤包导入(可直接选文件夹)、试穿、应用、删除与恢复默认。npm 包名 `dsh-appearance-gallery`。
wsxwj123
@wsxwj123
⬇ 1
★ 7
main
安装
dsh plugin --profile web add github:wsxwj123/dsh-plugins
需要可复现安装时,可在仓库后追加 #commit 固定提交。
15 个精选主题家族 + 9 个完整 dsh-web-ui 皮肤复刻合并为单一插件、设置页单一入口,支持 CSS-only 自定义主题 JSON、受控自定义皮肤包导入(可直接选文件夹)、试穿、应用、删除与恢复默认。npm 包名 `dsh-appearance-gallery`。
该插件未提供要点说明,请参考仓库 README。
dsh-plugin
- 安装并启动 DeepSeek Harness:
npx @deepseek-ai/dsh web - 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
- 用 dsh plugins list 确认已安装,必要时重启 Harness 生效
插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。
| 代码仓库 | github.com/wsxwj123/dsh-plugins/tree/main/packages/dsh-appearance-gallery |
| 许可证 | MIT |
| 主要语言 | main |
| 下载量 | 1 |
| GitHub 星标 | 7 |
| 最近推送 | 2026-09-12 |
| 收录日期 | 2026-09-19 |
| 分类 | 界面增强 |
事实信息来自公开插件目录快照(2026-10-01),介绍文案由本站再加工。
以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。
# dsh-plugins 中文说明
这是一个用于 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 的插件集合仓库。仓库采用 monorepo 结构,每个插件放在 `packages/` 下的独立目录里,互不影响。
English: [README.en.md](README.en.md)
## 当前插件
| 插件 | 功能 |
|---|---|
| [`dsh-appearance-gallery`](packages/dsh-appearance-gallery) | 外观画廊:15 个主题家族 + 9 个 dsh-web-ui 皮肤复刻(复刻程度不一,详见下文),合并为单一插件、设置页单一入口,支持自定义主题 JSON 与自定义皮肤包导入。 |
| [`dsh-turn-scrubber`](packages/dsh-turn-scrubber) | 在对话右侧显示回合刻度,悬停展开,点击跳转到对应用户回合。 |
| [`dsh-pet-bridge`](packages/dsh-pet-bridge) | 桌面宠物状态桥:把 dsh 会话状态(思考中 / 读取文件 / 运行命令 / 完成)实时推送到 [cc-pet](https://github.com/wsxwj123/cc-pet) 桌面宠物气泡。 |
| [`dsh-session-manager`](packages/dsh-session-manager) | 会话删除(5 秒可撤销 + 回收站式硬删)与归档视图(查看/取消归档)。 |
| [`dsh-composer-tools`](packages/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:**
```bash
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):**
```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` 并刷新页面。**你的外观设置不会丢**:主题与皮肤的状态键完全沿用旧键,已应用的主题/皮肤、已导入的自定义主题与自定义皮肤在升级后原样保留,无需重新导入。
## 安装插件
### 方式一:从 npm 安装(推荐)
无需克隆仓库,装的是预构建产物,跳过本地构建步骤:
```bash
dsh plugin --profile web add dsh-appearance-gallery
dsh plugin --profile web add dsh-turn-scrubber
dsh plugin --profile web add dsh-composer-tools
dsh plugin --profile web add @wsxwj123/dsh-session-manager
```
> `dsh-session-manager` 这个扁平包名在 npm 上已被他人占用,本插件发布为作用域包 `@wsxwj123/dsh-session-manager`,功能与仓库内的 `packages/dsh-session-manager` 完全一致。
安装 `dsh-pet-bridge` 前需先安装 [cc-pet](https://github.com/wsxwj123/cc-pet) 桌面宠物(它监听 `127.0.0.1:7779` 接收状态推送,pet 端代码无需修改):
```bash
dsh plugin --profile web add dsh-pet-bridge
```
npm 包一览:
| 插件 | npm 包名 |
|---|---|
| 外观画廊 | [`dsh-appearance-gallery`](https://www.npmjs.com/package/dsh-appearance-gallery) |
| 回合刻度 | [`dsh-turn-scrubber`](https://www.npmjs.com/package/dsh-turn-scrubber) |
| 输入体验增强 | [`dsh-composer-tools`](https://www.npmjs.com/package/dsh-composer-tools) |
| 会话管理 | [`@wsxwj123/dsh-session-manager`](https://www.npmjs.com/package/@wsxwj123/dsh-session-manager) |
| 桌面宠物状态桥 | [`dsh-pet-bridge`](https://www.npmjs.com/package/dsh-pet-bridge) |
### 方式二:从源码安装
先克隆仓库:
```bash
git clone https://github.com/wsxwj123/dsh-plugins
cd dsh-plugins
```
然后按需要安装某个插件(把目录名换成上表里的插件名即可):
```bash
dsh plugin --profile web add "link:$PWD/packages/dsh-appearance-gallery"
```
Windows(PowerShell)下把路径分隔符换成反斜杠:
```powershell
dsh plugin --profile web add "link:$PWD\packages\dsh-appearance-gallery"
```
`dsh-composer-tools` 与 `packages/dsh-session-manager` 从源码 `link:` 安装时,需要先在各自包目录内 `pnpm install && pnpm build`(`lib/` 不入库,`link:` 不会触发依赖构建);从 npm 安装则无需此步。若通过 dsh-market / GitHub 安装,pnpm 会执行包内 `prepare` 自动构建,但 pnpm 10+ 默认拦截依赖构建脚本,需按提示在 profile 的 `pnpm-workspace.yaml` 中允许对应的 `allowBuilds`。
### 两种方式都适用
安装完成后,重启当前 `dsh web` 进程,并刷新已有页面地址。不要另起第二个 Web 服务。
> 安装后请检查 `~/.dsh/profiles/web/node_modules/@deepseek-ai` 是否被创建成真实目录。**正常情况下它不应存在**——出现真实目录意味着 profile 里多了一份框架副本,会导致 Cordis / Tool Symbol 分裂(工具调用报 `Cannot read properties of undefined`)。相关背景见 [deepseek-harness discussion #783](https://github.com/deepseek-ai/deepseek-harness/discussions/783)。本仓库所有插件的框架包 peer 范围都显式匹配宿主版本(如 `^0.1.0-rc.6`、cordis `^4.0.1`)。注意通配符 `"*"` 在 semver 下匹配不到 `0.1.0-rc.6` 这类预发布版本,反而会让 peer 永远不满足。
## 仓库结构
```text
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/` 下新建独立目录,不把不同插件混在一个包里。
## 本地构建
```bash
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 |
| 以配色为主(界面结构基本保持 DSH 原样) | 交易终端、蓝色幻想、龙的传人、鲸吟 |
复刻程度沿用上游 dsh-web-ui 原包,本插件未做增删。若期待"换个皮肤界面完全变样",请优先选前四款。
### 自定义主题(CSS-only JSON 导入)
自定义主题只做 CSS 变量注入,**不执行任何 JS**。JSON 形状:
```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` 的错误(见下文错误表)。
### 自定义皮肤(三文件受控导入)
```text
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 个。
## 状态机与主题↔皮肤互斥
主题与皮肤各维护独立状态机(内置 + 自定义轨共用):
```text
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](https://dshplugins.com/) 是独立的社区插件目录,不是 DeepSeek 官方站点。仓库必须公开,提交后进入人工审核队列,审核者会检查名称、摘要、安装类型、目标 profile、README 和安装命令。收录不等于安全背书,用户仍应阅读源码后安装。
本仓库适合按"Local checkout"类型提交,目标 profile 为 `web`。分别提交多个插件时,使用各自独立 README 的安装路径说明,避免用户把整个 monorepo 误当成单个插件。
## 许可证
MIT
数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。