dsh-sidechat:DSH 右侧临时侧边聊天与隐藏主对话上下文

前言

在 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 / 幻方无官方从属关系。

核心功能

临时侧栏对话

  1. 点击 header 里 「侧边聊天」(位于 Standard mode 右侧):创建新的空白会话(同工作区、随机 id,不复用旧 blank),不是 fork 主对话,面板初始为空。
  2. 右栏出现对应 tab,内容为空白英雄页与独立输入框;不调用 openSession,主栏当前选中的会话保持不变。
  3. 可多次点击,每次一个新 tab、新会话,多个侧边聊天可并存。
  4. 关闭 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

典型用法

  1. 在主对话中继续你的主任务;需要旁路追问时,点 header 「侧边聊天」,右栏出现临时 tab。
  2. 在侧栏输入问题并发送;左侧会话列表会出现该 Session 行,但主栏 dsh.sessions.current 不变。
  3. 若已装 dsh-selection-chat:在主对话选中文本 → 浮条 「侧边提问」 → 侧栏草稿出现形如 引用 会话记录 > … 的内容,确认后自行发送。
  4. 问完关闭侧栏 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜