选中对话片段,在右侧面板的侧边聊天中提问(按会话隔离);AI 回复可原文或摘要后带回主会话。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:heartmove/dsh-side-chat
GitHub 来源的插件在安装时会在你的机器上执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
一个 DSH 网页插件:在对话中选中部分内容后,即可在 侧边聊天里提问 —— 侧边聊天是位于右侧面板、按发起它的主会话隔离的独立聊天; 侧边聊天的 AI 回复也能带回主会话(直接带回或摘要后带回,写入草稿或注入为折叠提示行)。
English docs: README.md.
功能
- 选中内容 → 侧边聊天提问。 选中任意消息文本后,会浮出「在侧边聊天中提问」按钮, 选中的内容会自动带入侧边聊天。
- 按主会话隔离。 每个侧边聊天都是一个隐藏的普通 DSH 会话(通过
meta.parentSession关联发起它的主会话,并被归档,因此不会出现在主会话列表中)。 每个主会话各自拥有自己的侧边聊天。 - 继承主会话上下文。 侧边聊天能感知它的发起会话与所在工作目录,并默认继承主会话的 模型、思考难度与权限预设。
- 模型 / 思考难度 / 权限可调。 复刻主会话的二级模型菜单(服务商 → 模型 → 思考难度) 与权限菜单,每个侧边聊天可独立调整。
- 「需要时从工作区 / 主会话查信息」开关(默认关闭)。开启后,侧边聊天在需要更多信息 时,可读取工作区文件与主会话内容。
- 与正常对话一致的能力。 Markdown 回复、思考(推理)过程展示、图片附件(粘贴 / 拖拽)、发送/停止按钮、思考时长显示 —— 均复用主会话同款 UI 组件。
- AI 回复带回主会话。 侧边聊天里的每条 AI 回复都能带回当前主会话:可鼠标选中 部分内容后带回,或一键带回整段;两种方式都可选择 「直接带回」(原文)或 「摘要后带回」(先用侧边聊天继承的模型生成摘要再带回)。带回的落地方式可在设置里 选择:写入输入框草稿,或注入为折叠提示行(作为上下文,不写草稿、不发送)。
- 针对问题弹框答疑。 当主会话弹出「问题弹框」(智能体向用户提问)时,侧边面板会自动 逐项列出问题和各个选项(无需手动选中文字)。每个问题可「带入全部」、每个选项可「带入」, 且都支持 继续已有侧边聊天 或 新建侧边聊天 两种方式,让 AI 帮你理解。列表支持 折叠 / 展开,以及 删除单个 / 删除全部(删除后不再出现)。
- 侧边聊天可删除。 侧边聊天列表里的每个会话可单独删除,也可一次性「删除全部」。
- 可拖拽、可收起的面板。 拖拽左边缘调整宽度(280–720 px),可收起/展开;没有关闭按钮。
- 跟随语言设置。 插件会跟随 DSH 的语言设置切换中文 / 英文界面。
环境要求
构建
pnpm install
pnpm build
pnpm build 会先清空 lib/,再执行 tsc -p tsconfig.build.json 生成类型声明,
最后用 tsdown 打包出 host 端(lib/index.js)与 client 端
(lib/client.js + lib/client-registry.js)。
部署
DSH web 从当前 profile 加载外部插件。本包是一个 bundle:它的
package.json 声明了 dsh.bundle.patch → cordis.patch.yml,
其中的 insert 条目用于挂载插件。正是这个声明让 dsh plugin add 能一步完成
「安装 + 激活」。
从 GitHub 安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:heartmove/dsh-side-chat
dsh plugin 会把命令转发到 ~/.dsh/profiles/web/ 下的 pnpm,然后把 bundle
对账进该 profile 的 dsh.profile.bundles 层列表。git 安装拉取的是源码,因此
pnpm 会在 checkout 之后运行包的 prepare 脚本(tsdown),从 src/ 构建出
lib/。
pnpm ≥ 10 在把 git 依赖加入白名单之前,会拒绝运行它的 prepare 脚本,因此首次
add 会失败并给出「Ignored build scripts」提示。把 pnpm 打印的确切包名键复制到
该 profile 的 pnpm-workspace.yaml(~/.dsh/profiles/web/pnpm-workspace.yaml):
allowBuilds:
dsh-side-chat: true
然后重新执行 add。这个白名单意味着「允许该包的代码在安装时于本机运行」——
只放行你信任其源码的包,并固定到某个 commit
(github:heartmove/dsh-side-chat#<sha>),这样之后的推送无法悄悄改变实际运行的代码。
重启 dsh web,然后在浏览器中强制刷新页面(Ctrl/Cmd+Shift+R)。
从本地 checkout 安装
在包含本项目 checkout 的目录下执行:
npx -p @deepseek-ai/dsh dsh plugin --profile web add ./dsh-side-chat
pnpm 会链接该 checkout,dsh 以同样方式激活这个 bundle。
手动链接
如果你想手动管理 profile,可在 ~/.dsh/profiles/web/package.json 里链接该包并
把它列为 bundle(bundle 自带的 cordis.patch.yml 已提供加载器条目,因此无需再
写 insert):
{
"dependencies": {
"dsh-side-chat": "link:D:\\path\\to\\dsh-side-chat"
},
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-side-chat"]
}
}
}
(在 POSIX 系统上使用 link:/path/to/dsh-side-chat。)然后在 profile 目录执行
pnpm install 并重启 dsh web。
使用
- 在主对话中选中某条消息的部分文本。
- 点击浮出的 「在侧边聊天中提问」 按钮。
- 若当前会话已有侧边聊天,还会出现 「继续在激活的侧边聊天中提问」。
- 右侧面板会打开(或展开),选中的文本已带入输入框。
- 按需调整 模型 / 思考难度、权限,以及 「需要时从工作区 / 主会话查信息」 开关。
- 发送。回复会以流式返回,带 Markdown 渲染,并在需要时显示「思考」折叠行展示模型推理过程。
- 拖动面板左边缘可调整宽度,或使用收起/展开控件。
发送行为
默认(sendImmediately 开启)时,选中内容会立即发送,并自动附加你配置的
默认提示词。在设置里关闭 sendImmediately 后,选中的内容会先作为附件放入输入框,
由你确认、编辑后再发送。
带回主会话
侧边聊天里的 AI 回复可以带回当前主会话(不会立即发送):
- 带回选中片段。 在侧边聊天里用鼠标选中 AI 回复的一部分文本,浮出的菜单里选择 「直接带回」(原文)或 「摘要后带回」(先用侧边聊天继承的模型生成摘要)。
- 带回整段。 每条 AI 回复正文下方有 「直接带回」 与 「摘要后带回」 两个按钮, 一键把该条回复的完整正文(或其摘要)带回。
- 根据设置里的 带回内容的方式,带回的内容要么追加进主会话输入框草稿(可编辑后再 发送),要么注入为主会话里一条折叠的提示行(带来源标记,作为上下文、不写草稿, 下次对话时模型可见)。
针对问题弹框
当主会话弹出「问题弹框」时,侧边面板会自动列出问题和选项:
- 面板关闭时,会先在弹框标题旁出现一个浮动入口按钮,点击即可打开面板查看。
- 每个问题可「带入全部」、每个选项可「带入」,且都支持 继续已有侧边聊天 或 新建侧边聊天 两种方式。
- 列表左上角可 折叠 / 展开;每个问题项可 删除,也可 删除全部(删除后不再出现)。
删除侧边聊天
侧边聊天列表里每个条目有「×」删除按钮;右上角「删除全部」可一次性删除当前主会话的所有 侧边聊天。
设置
打开 DSH 设置 → 侧边聊天(Side chat),可配置:
| 设置项 | 默认值 | 说明 |
|---|---|---|
lookupDefault |
关 | 新建侧边聊天时,「需要时从工作区 / 主会话查信息」开关是否默认开启。 |
sendImmediately |
开 | 选中内容后立即发送,还是先作为附件放入输入框。 |
defaultPrompt |
(空) | 「立即发送」开启时,附加在选中内容后的额外提示词。 |
bringMode |
draft |
带回内容的落地方式:draft 写入输入框草稿,context 注入为折叠提示行。 |
偏好设置保存在 DSH 设置命名空间 dsh-side-chat 下。
项目结构
src/
index.ts host 插件(路由、会话/Agent 生命周期、转录折叠)
wire.ts 请求/响应辅助
trust-fence.ts 环回 / 可信 API 请求守卫
settings-shared.ts host 与 client 共用的偏好设置词汇
context-types.ts Cordis Context 类型扩展
client/
index.tsx client 插件(面板、输入框、设置分区、悬浮按钮)
api.ts client↔host API 类型
locales.ts 中英文词典
client.module.css 面板/输入框/设置样式
layout.css 由面板宽度驱动的 #root margin-right
cordis.patch.yml bundle patch 层(插入加载器条目;dsh.bundle.patch 指向它)
dsh.plugin.json 外部插件清单
tsdown.config.ts 打包配置(client 外部依赖 + CSS 内联)
许可证
链接
同类插件
Anionex/dsh-turn-rewind★ 35
对话回退:基于持久 Change Ledger 回滚会话与工作区状态。
Chinesezjc/dsh-interconnect★ 24
跨实例互联:经 interconnect 服务在多个 DSH 实例间转发消息与事件。
Nwflower/dsh-chat-import★ 22
把 Claude Code / Codex / ChatGPT / Cursor / Gemini / Reasonix / opencode 的聊天记录全保真导入为可续聊的 DSH 会话。
hellodigua/dsh-share★ 16
一键分享你的对话。
Moeblack/dsh-message-edit★ 16
基于分支的消息编辑、reroll、重试与版本时间线。
whyihaveyou/dsh-suite#plugin-session-export★ 14
把 append-only 会话日志导出为按轨迹来源分组的可读 Markdown 或 HTML。