# dsh-ux-plus
让 DeepSeek Harness 变得更顺手的各种 UX 增强与功能插件。
[](https://github.com/plyflai/dsh-ux-plus/actions/workflows/ci.yml)
[](LICENSE)
[English](./README.md) · **简体中文**
**当前适配:[DeepSeek Harness 0.2.0-rc.1](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.2.0-rc.1) 的 Web 界面。**
## 功能
| 功能 | 用起来有什么好处 | 预览 |
| --- | --- | --- |
| 对话字号与宽度 | **【一键切换】** 选择舒服的字号和阅读宽度。长篇回答看得更轻松,宽屏也能充分利用,不用放大整个界面。 |
|
| 复制会话 ID | **【随手复制】** 在会话菜单里一键拿到会话 ID,方便指定会话继续协作、定位记录或排查问题,省去手动翻找和选中文字。 |
|
| 最近活动排序 | **【快速找回 + 自动瘦身】** 最近聊过的工作区和会话自动排到前面;一天多没动的工作区自己收起,行右侧标出多久没更新,一眼只剩正在推进的项目。 |
|
| 提问结果默认展开 | **【回看更省事】** 提问结束后,问题和答案直接展开。检查决定、接着讨论时,少一次点击,也少一次找答案。 | — |
| 继承对话 | **【换个模型接着聊】** 在会话菜单里选一个模型,当前工作区立刻开一个新会话,让新模型读原会话的进度接着往下走。 |
|
## 功能详解
### 对话字号与宽度
对话区字号默认 14px,长回答密集时可以在 **设置 → 通用 → 对话区** 单独调大字号、收窄阅读宽度——只作用于会话内容,不改整个界面。
### 会话菜单:复制会话 ID 与继承对话
每个会话行右侧的三点菜单里,本插件追加两项(位于置顶、重命名等原生项之前):
- **会话 ID**:点击即把该会话的 ID 复制到剪贴板,用于 `--session` 续接、日志定位等场景。
- **继承对话**:见下。
### 继承对话
点击「继承对话」后,会在点击位置弹出一个轻量的模型选择浮层,列出当前可路由的全部模型(按提供方分组):
选定模型后,插件会:
1. 在**原会话所属的工作区**里创建一个全新会话;
2. 把新会话的模型切换为刚选中的那个;
3. 向新会话投递一条继承提示词——内容是被继承会话的 session ID,加上「总结并继承这个对话的进度,越近轮次的对话所投放的注意力要越多」;
4. 自动跳转到新会话,模型开始读旧会话、输出进度总结并接着推进。
适合这些场景:一个会话跑得太长想换个更贵的模型收尾;某个提供方限流想换条路继续;或者单纯想把进展"移植"到另一个模型的上下文里。原会话完全不受影响,「会话 ID」复制也原样保留。
### 最近活动排序(含闲置收起)
最近聊过的工作区分组和组内会话自动排到前面,多个项目同时推进也能快速回到刚才的工作;只改视觉顺序,宿主的排序设置与数据不动。
同一个功能还负责**闲置瘦身**:工作区超过 **24 小时**没有任何实际活动(空会话与子代理会话不算,与排序同一口径)后,会在打开页面时自动收起一次;同时每个工作区行右侧显示距今未更新的时间标——刚刚 / N分钟 / N小时 / N天 / N个月 / N年,样式与宿主会话行的时间完全一致,悬停时让位给操作按钮。
自动收起对每个工作区每次打开页面最多触发一次:手动重新展开后,不会再被反复收起。没有会话(或只有空会话 / 子代理会话)的工作区没有活动信号,不打标、不收起。时间标跟随 DSH 语言与明暗主题。
### 设置
安装后打开 **设置 → UX Plus**,五项功能各自独立开关,默认全部开启,切换即时生效:

## 安装
需要 Node.js ≥ 22、PATH 中的 pnpm,以及一个 DSH Web profile。
```bash
dsh plugin --profile add github:plyflai/dsh-ux-plus
```
安装后重启该 profile。打开 **设置 → UX Plus**,即可按需开关各项功能。功能默认开启,单项开关即时生效。
对话字号和宽度在 **设置 → 通用 → 对话区** 调整。
## 兼容性
- 仅面向 DSH 的 **Web 界面**(浏览器),不适用于终端 TUI。
- 所有功能都是宿主公开扩展点(侧边栏插槽、设置表单、DOM 微调)上的挂载,不修改宿主源码;任何一项都可以在设置里单独关闭。
- 宿主升级可能调整内部 DOM 与插槽契约;如遇失效请提 issue,通常会随版本跟进。
## 开发
```bash
npm install
npm test # node --test,含构建产物与注入依赖的静态断言
npm run build # tsdown 产出 lib/client.js(经典脚本,随仓库提交)
```
- 每个功能是一个 `features//` 私有模块(host + client 两半),在 `src/index.js` 与 `src/switches.js` 的功能清单里注册,不是独立插件。
- 客户端资源打包为单个经典脚本注入 `window.__ModuleLoader__`,外部依赖被严格限制在宿主提供的模块种子内,构建脚本会校验。
- 每次推送到 main 会在下方更新记录追加一条,并同步 [CHANGELOG.md](CHANGELOG.md)。
## 更新记录
最近三条;完整历史见 [CHANGELOG.md](CHANGELOG.md)。
- **v0.1.7 · 2026-10-14** — README 改版:英文优先([英文版](./README.md)为主文档,本文为中文版),案例图并入功能表格,更新记录只保留最近三条、其余指向 CHANGELOG。
- **v0.1.6 · 2026-10-14** — 「闲置工作区收起」不再是独立功能:收起与时间标并入「最近活动排序」(同一开关、同一活动口径),设置页回到五项。
- **v0.1.5 · 2026-10-14** — 新增 24 小时无活动工作区自动收起 + 工作区行距今未更新时间标(刚刚 / N分钟 / N小时 / N天 / N个月 / N年,与宿主会话行时间同款式、同明暗主题、跟随语言)。
## License
[MIT](LICENSE) © 2026 plyflai