前言¶
在 DSH 里做长对话时,常见做法是开新会话、复制粘贴上文,或把整段历史塞进一条新消息。主栏会话会被切换,草稿也容易混在一起。Codex 一类产品则在主对话旁边提供一个临时侧栏,专门用来「就着当前上下文再问一句」,且侧栏里不必重复展示整段主聊天记录。
下面介绍维护者 xywen97 发布的客户端插件 dsh-sidechat(npm:@xywen97/dsh-sidechat):在右侧栏打开一个临时的空白对话面板,与主对话并排;模型侧会自动带上主对话最近历史作为隐藏系统提示,面板里只显示你自己的提问、回答,以及从选区带入的引用片段。关掉侧栏标签即归档会话,不长期占用会话列表。
这是什么¶
dsh-sidechat 是 DeepSeek Harness 的客户端插件,分类为「客户端」。它在会话 header 增加「侧边聊天」入口,通过资源地址 dsh-resource://sidechat/session/<id> 在右栏打开 tab,标题为「临时对话 · 关掉标签页就归档」。面板复用宿主的 conversation.content(variant: embedded),输入框、工具行、@ 引用、模型选择与主对话一致,但是独立 Session,草稿与主栏互不影响。
插件以 MIT 许可证发布,当前 npm 版本为 0.1.0;package.json 声明依赖 DSH >=0.2.1-rc.5 <0.3.0-0、Node >=20。社区目录页:skillhub.cn/plugins/xywen97/dsh-sidechat;源码与说明:github.com/xywen97/dsh-sidechat。DSH 生态强调「一切皆插件」,SkillHub 目录为社区站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
临时侧栏对话¶
- 点击 header 里 「侧边聊天」(位于
Standard mode右侧):创建新的空白会话(同工作区、随机 id,不复用旧 blank),不是 fork 主对话,面板初始为空。 - 右栏出现对应 tab,内容为空白英雄页与独立输入框;不调用
openSession,主栏当前选中的会话保持不变。 - 可多次点击,每次一个新 tab、新会话,多个侧边聊天可并存。
- 关闭 tab 时立即通过
workspace/archiveSession归档;刷新或退出应用后,仍开着的侧边会话会在下次启动时统一清扫(localStorage 记账,仅在页面第一次 apply 时执行,避免 HMR 误伤)。
隐藏主对话上下文(v0.3 行为)¶
侧边聊天默认携带主对话历史,但不在侧栏聊天记录里展示:
- 侧边会话 id 编码父会话 id(形如
session-sidechat-<base64url(parent)>-<rand>)。 - 宿主在
agent/created时识别该会话,对这一个 agent 注册每会话作用域的系统提示词段;每次组装时重新读取主对话最近的用户/助手文本(跳过工具调用与结果,约 24k 字符)。 - 因此侧栏里继续追问时,上下文会随主对话更新;系统提示不进聊天记录。
模型实际看到的是:主对话历史(隐藏 system 段)+ 引用片段(若有)+ 侧栏提问 + 侧栏会话自身历史。
选区带入(需配套插件)¶
主对话中选中文字后,浮条上的 「侧边提问」 会打开侧边会话,并把引用片段写入侧栏输入框草稿(不自动发送),对应 Codex 的 Ask in side chat。该入口由同作者插件 dsh-selection-chat 提供;只安装 dsh-sidechat 时,仍可通过 header 的「侧边聊天」按钮进入。
安装与启用¶
推荐从 npm 安装(包名使用 scope,因 npm 上 dsh-side-chat 已被占用):
# npm(推荐)
dsh plugin --profile desktop add @xywen97/dsh-sidechat
# 或直接钉 Git 提交
dsh plugin --profile desktop add "git+https://github.com/xywen97/dsh-sidechat.git"
也可在桌面版 设置 → 插件 → 安装 中,将 spec 填为 @xywen97/dsh-sidechat。
装完后重启一次 DSH:宿主半端负责上下文注入逻辑,重启后才会加载;客户端部分可热加载。
若需要「选中文字 → 侧边提问」,可额外安装:
dsh plugin --profile desktop add dsh-selection-chat
典型用法¶
- 在主对话中继续你的主任务;需要旁路追问时,点 header 「侧边聊天」,右栏出现临时 tab。
- 在侧栏输入问题并发送;左侧会话列表会出现该 Session 行,但主栏
dsh.sessions.current不变。 - 若已装
dsh-selection-chat:在主对话选中文本 → 浮条 「侧边提问」 → 侧栏草稿出现形如引用 会话记录 > …的内容,确认后自行发送。 - 问完关闭侧栏 tab,该会话归档并从列表消失;无需在面板内找单独「关闭」按钮。
适用场景与注意¶
适合:长主对话中不想切换会话、又不想把整段历史复制到新窗口;希望侧栏「干净 UI + 背后仍有主对话上下文」的开发者。
限制与行为(来自 README 已知说明):
- 侧边聊天是真实 Session:tab 开着时仍会出现在左侧列表;归档不是删除,磁盘上可能仍有记录(宿主无面向客户端的删除会话 RPC)。
- 父会话 agent 已关闭或未在线时,隐藏上下文会退化为不带主对话历史。
- 无单独键盘快捷键,入口为 header 按钮。
- 宿主 API(
sessions、sidebarRight、conversation.content等)变更时插件可能静默降级(按钮仍在,失败仅 toast)。
安全:插件在当前 DSH 进程的权限下运行,安装前请查看 GitHub 仓库 源码与 MIT 许可证,自行判断是否适合你的环境。
结尾¶
dsh-sidechat 把「右侧临时空面板 + 主对话隐藏上下文 + 关 tab 即归档」收进一个客户端插件,主栏会话与草稿保持隔离。需要选区入口时再装 dsh-selection-chat 即可。
- 目录页:https://www.skillhub.cn/plugins/xywen97/dsh-sidechat
- GitHub:https://github.com/xywen97/dsh-sidechat