DSH Quick Replies
在 DeepSeek Harness 会话输入区提供可管理的快捷回复,一点即发。
English | 中文
能做什么 ·
快速开始 ·
使用 ·
卸载 ·
更新记录
> DSH Quick Replies 是 DeepSeek Harness 社区插件,挂在当前会话输入区上方,不修改 DSH 源码。
在输入框上方显示一排快捷文本。点击后作为普通用户消息发送:会话空闲时进入队列(`queue`),顶层会话运行中则走 steer(下一步安全边界处理)。不改草稿、不 cancel、不 stop。
回复库保存在 DSH Host 全局设置命名空间 `quick-replies`,同一 Host 下多浏览器/设备共享。折叠偏好按当前浏览器分别记住。
## 能做什么
- **一点即发**:把常用短句(如「继续」「已重启请继续」)存成 chip,点击直接发送。
- **空闲 queue、运行中 steer**:运行中不会声称「已打断」;实际时机由 DSH 决定。
- **不碰草稿**:发送走会话公开 `prompt`,草稿、引用、图片、光标都保持原样。
- **可管理**:添加、编辑、删除、启用/停用、排序、JSON 导入导出。
- **窄屏折叠**:窄容器默认折叠为一行;展开高度受限,条目多时在栏内滚动。
- **空会话保护**:尚无历史消息的新会话拒绝发送,避免误点快捷回复开出废会话。
## 快速开始
要求:
- 带 Web profile 的 DeepSeek Harness
- Node.js 20 或更新版本
- 已验证的 DSH 版本:`0.1.5-rc.1`(插件 `0.1.3`)
已经安装 `dsh` 命令:
```sh
dsh plugin --profile web add dsh-quick-replies@latest
```
直接使用 DeepSeek Harness 源码:
```sh
corepack enable; pnpm install
pnpm dsh plugin --profile web add dsh-quick-replies@latest
```
也可以通过插件市场安装(可选):
```sh
dsh plugin --profile web add dshmarket
```
重启 DSH 后,在 **设置 → 插件市场** 里搜索 dsh-quick-replies,一键安装即可。
本地开发(link 到本仓库):
```sh
pnpm install
pnpm run build
dsh plugin --profile web add "link:$(pwd)"
```
安装后刷新 Web 界面。Host 半边通过 `cordis.patch.yml` 注册设置命名空间;客户端在 `conversation.input.dock` 挂载快捷栏。回复库写在 `~/.dsh/settings.yaml` 的 `quick-replies` 段,不属于插件安装目录。
## 使用
1. 打开任意已有会话(不要在空白新会话上点「继续」类条目)。
2. 输入区上方出现快捷回复栏。窄屏默认折叠,点标题或箭头展开。
3. 点击 chip 发送;空闲显示「已提交(队列)」,运行中显示将在下一步处理。
4. 点 **+** 直接添加一条:填标题和正文,保存后栏上立刻出现。
5. 点 **⚙** 打开管理:编辑、删除、排序、导入/导出 JSON。
默认四条(可全部删掉,不会自动重生):继续、中断了请继续、下一步该做什么?、已重启请继续。
### 局域网(非回环页面)访问
DSH 对来源不是 loopback(`localhost` / `127.0.0.1`)的页面会关闭 Host 设置持久化(官方 `dsh-client-ui-settings` README 原文:*Non-loopback pages get no durable settings*):`settingsScope` 直接返回 `unavailable`,并且从此不发 `settings.describe`。于是经局域网转发插件(`dsh-lan-proxy`、`dsh-bridge`、`dsh-mobile` 等)从另一台设备访问时,所有依赖 Host 设置的界面都会失效——本插件表现为「回复库不可用,无法发送」。
从 `0.1.3` 起,官方 scope 报 `unavailable` 时插件改用与官方 settings Client 相同的公开 Remote(`settings.describe` / `settings.mutate`)直连 Host 的 `quick-replies` 命名空间。因此局域网设备上的读取、编辑、导入导出与回环页面一致,回复库仍是 Host 上共享的那一份;写入仍受 revision 栅栏保护,冲突会明确提示而不会静默覆盖。
若你希望保持 DSH 官方策略(非回环页面完全不落地设置),请停留在 `0.1.2`;或让转发侧声明宿主身份:在返回的 HTML 中、`__DSH_BOOT__` 之前注入 `window.__DSH_TRANSPORT__ = { fetch: (input, init) => window.fetch(input, init), ownsHost: true }`。DSH 的 `ctx.connection.isLoopback` 会据此为真,所有依赖设置的界面(含「设置」页)一并恢复;`dsh-mobile` 网关正是这么做的。
## 兼容性
当前发布:插件 **`0.1.3`** 已针对 DeepSeek Harness **`0.1.5-rc.1`** 验证。
| 插件 | 验证过的 DeepSeek Harness |
| --- | --- |
| `0.1.0`–`0.1.1` | `0.1.2-rc.1` |
| `0.1.2` | `0.1.5-rc.1` |
| `0.1.3` | `0.1.5-rc.1` |
DSH `0.1.5-rc.1` 请使用 `0.1.3`。仍在 DSH `0.1.2-rc.1` 上时继续使用 `0.1.1`(或更早)。更高 DSH 版本不会被自动宣称为兼容。不兼容时禁用或卸载插件,不要给 DSH 核心打补丁。
## 卸载
```sh
dsh plugin --profile web remove dsh-quick-replies
```
卸载不会删除设置里的回复库。需要清库时,先在管理界面导出 JSON,再手动删除设置中的 `quick-replies` 命名空间。
## 开发
```sh
pnpm install
pnpm run test
pnpm run build
```
推送 `v*` 标签后,GitHub Actions 会跑测试、打包,并在配置了 `NPM_TOKEN` 时发布到 npm、创建 GitHub Release。
MIT,详见 [LICENSE](LICENSE)。