Bundle
dsh-add-conversation
DSH Web GUI「添加对话」插件:在聊天区划选对话文字后出现「+ 添加对话」悬浮按钮,一键把选中内容作为引用暂存到输入框上方(最多 12 条,可预览/删除),发送时引用自动以 Markdown 引用块并入消息开头(仿 Codex quote 体验)
- Source
- haohao16421
- stars
- 1 stars
- License
- MIT
- Updated
- Updated 14 days ago
Readme
# dsh-add-conversation(添加对话)
> 划选对话文字,一键「添加对话」——为 DeepSeek Harness Web GUI 提供仿 Codex 的引用(quote)体验。
在聊天区划选任意一段对话文字(自己发的或 AI 回复的都行),选中处会弹出 **「+ 添加对话」** 按钮;点击后选中内容变成一条**引用 chip** 暂存在输入框上方,发送时自动以 Markdown 引用块(`> ...`)并入消息开头,方便你针对某段回答继续追问。
- 纯浏览器端实现,不改动 DSH 任何源码,卸载即恢复原状
- 零配置、零构建,安装后重启 DSH 即生效
## 功能特性
| 特性 | 说明 |
| --- | --- |
| 划选即引 | 鼠标划选聊天区任意文字,选中处出现「+ 添加对话」悬浮按钮 |
| 引用暂存 | 点击后内容变为 chip 暂存在输入框上方,不会立即发送 |
| 多条引用 | 最多 **12 条**(每行 6 个、两行排列),可反复划选添加 |
| 预览全文 | 点击 chip 弹出预览面板,查看被引用内容的完整文本 |
| 单独删除 | 每条 chip 自带 × 按钮,可随时移除;Esc 可收起 |
| 一键发送 | 点击预览面板「发送」,或直接按 Enter,引用自动并入消息开头后提交 |
| 智能定位 | 引用条跟随输入框位置,滚动/缩放自动隐藏悬浮按钮 |
## 界面效果
```
① 划选回复文字 ② 点击「+ 添加对话」 ③ 引用暂存 ④ 发送
┌──────────────────┐ ┌──────────────────┐ ┌─❝ 第2条… ❝ 第1条…─┐ ┌─────────────┐
│ 这是AI的回复内容 │ │ 这是AI的回复内容 │ └───────────────────┘ │> 这是AI的回复│
└──────────────────┘ └───────┬──────────┘ ▲ 输入框上方 │ 内容 │
+ 添加对话←──┘ ┌──────────────┐ │ 我的追问 │
│ 输入框 │ └─────────────┘
└──────────────┘
```
## 系统要求
- DeepSeek Harness Web GUI(`dsh web`,本插件为 Web profile 插件)
- Node.js ≥ 18,pnpm(`dsh plugin` 命令依赖)
## 下载安装
> 以下命令在 PowerShell 中执行;`<name>` 换成你的 profile 名(默认 `web`)。
### 方式一:npm 安装(推荐)
```powershell
dsh plugin --profile web add dsh-add-conversation
```
### 方式二:GitHub 直接安装(无需 npm 发布)
```powershell
dsh plugin --profile web add https://github.com/haohao16421/dsh-add-conversation/archive/refs/tags/v0.1.0.tar.gz
```
### 方式三:本地源码链接(开发调试用)
```powershell
git clone https://github.com/haohao16421/dsh-add-conversation.git
dsh plugin --profile web add link:./dsh-add-conversation
```
`dsh plugin` 会自动执行 `pnpm add` 并把包名写入该 profile 的 `dsh.profile.bundles`。
### 安装后
**重启 DSH**(关闭并重新运行 `dsh web`),然后在聊天区划选一段回复文字即可体验。
### 卸载
```powershell
dsh plugin --profile web remove dsh-add-conversation
```
重启后功能消失,页面恢复原状。
## 使用方法
1. **划选**:在聊天区用鼠标选中任意对话文字(单选一段即可,最长 8000 字符);
2. **添加**:点击选中处上方出现的「+ 添加对话」,内容变为引用 chip 暂存在输入框上方;
3. **管理**:
- 点击 chip → 弹出预览面板(可「发送」或「移除」该条);
- 点击 chip 上的 × → 移除该条;
- 按 `Esc` → 收起当前预览/悬浮按钮;
4. **发送**:在输入框输入追问内容后按 `Enter`(或点击预览面板的「发送」),所有引用自动以 `> 引用内容` 的格式并入消息开头一并提交。
### 限制与说明
- 最多同时暂存 **12 条** 引用(超限会有提示);
- 单条引用最长 **8000 字符**;
- 在输入框 / 侧边栏内划选不会触发按钮(只识别聊天消息区域);
- 发送时若输入框已有内容,引用块会插入在其前面,二者之间空一行。
## 工作原理
- 插件通过 Web profile 的 bundle 机制挂载:`dsh.bundle.patch` → `cordis.patch.yml` 向组合树插入一行 `add-conversation`;
- 浏览器半边(`lib/client.js`)注册到 `conversation.composer.dock` 槽位,监听 `mouseup`/`keyup` 计算选区与位置,用 DOM 渲染悬浮按钮、引用条与预览面板;
- Host 半边(`lib/index.js`)向 agent 声明本插件的存在与用法(systemPrompt 段落);
- 样式优先使用客户端 `styles` 服务,不可用时回退为自带 `<style>` 元素,卸载时全部清理。
## 常见问题(FAQ)
**Q:安装后重启了,但划选没有按钮?**
A:依次检查:
1. `~/.dsh/profiles/web/package.json` 的 `dependencies` 与 `dsh.profile.bundles` 是否都包含 `dsh-add-conversation`;
2. `~/.dsh/profiles/web/node_modules/dsh-add-conversation` 是否存在;
3. DSH 是否**完全重启**(profile bundle 在启动时加载,刷新页面不够);
4. 划选的必须是聊天消息区域内的文字(自己或 AI 的消息),输入框内的文字不触发。
**Q:和其他插件冲突吗?**
A:只注册一个 `selection-quote` 槽位(`conversation.composer.dock`),正常情况互不影响;若与其他 dock 插件冲突,可修改 `lib/client.js` 中的注册 `id`。
**Q:能离线用吗?**
A:能。插件逻辑全部在浏览器端,不依赖任何外部服务。
**Q:我想改样式/行为?**
A:直接编辑 `lib/client.js`(CSS 在文件开头的模板字符串里),本地 `link:` 安装时保存即生效(重启 DSH 或刷新页面后)。
## 目录结构
```
dsh-add-conversation/
├── package.json # 包清单:exports、dsh.bundle.patch、dsh.client
├── cordis.patch.yml # 组合补丁:向 profile 插入本插件行
├── dsh.plugin.json # 插件清单元数据
├── lib/
│ ├── index.js # Host 半边:systemPrompt 声明
│ └── client.js # 浏览器半边:全部交互逻辑与样式
├── README.md # 本文档
└── LICENSE # MIT
```
## 开发者
- 无构建步骤:`lib/` 即发布物(`node --check` 通过即可);
- 本地联调:`dsh plugin --profile web add link:./dsh-add-conversation`,修改后重启 DSH 验证;
- 发布新版本:更新 `package.json` 版本号 → `git tag vX.Y.Z && git push origin vX.Y.Z`(GitHub 安装方式按 tag 拉取)→ 可选 `npm publish`。
## License
[MIT](LICENSE)
Install
dsh plugin --profile web add github:haohao16421/dsh-add-conversation
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-add-conversation from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.