dsh-live-side-chat:主会话旁的只读实时侧栏对话

前言

在 DeepSeek Harness(DSH)里用主会话做长任务时,常会想「顺便问一句进度对不对」,又不想打断主线程、复制整段历史,或再开一个会改文件的平行会话。主会话继续跑工具、写代码;侧栏里开一个临时空对话,通过有界摘要跟着主会话走,问完关掉即销毁——这是 dsh-live-side-chat 要解决的问题。它不是主会话的分叉拷贝,子会话从空开始,靠插件维护的 sideChatDigest 投影在每步重读主会话进展。

这是什么

dsh-live-side-chat(GitHub:XBXyftx/dsh-live-side-chat)是 DSH 的客户端类插件,维护者为 XBXyftx。定位是 Codex 风格的侧栏对话:在右侧打开一个临时、只读的子会话,绑定当前左侧选中的主会话,关闭标签页并确认后销毁(agent 释放、会话目录删除)。子会话不出现在左侧会话列表,主会话照常工作;需要把结论交回主会话时,通过排队 follow-up 回传,而非抢占主会话。

核心功能

空启动与 live digest

子会话创建时不带 seed、不带历史,标签页是真正的空对话;可在主会话任意时刻打开,不必等主会话跑完一轮。

主会话信息来自插件自己的 sideChatDigest 会话投影:目标、已结算轮次摘要、进行中的轮次、todos、近期工具调用、计数等,有界裁剪。每步作为 runtime context 重新注入,因此侧栏打开之后主会话上的工作仍可见;摘要故意不完整,模型应通过只读工具核对细节。

只读沙箱

侧会话运行在 sandbox/mode: read-only,审批固定为 never,并对会改状态的工具做 guard:拒绝 write/edit 等写文件工具、持久 shell(terminal)、后台任务,并检查参数以拒绝 run_in_background 与 sandbox_permissions 升级。一次性 shell 查询(如 ls、git log)在沙箱已拒写的前提下可允许;run_code 在 PTC 预设下仅暴露对应传输时可用。只读指无文件副作用;网络与进程寿命不受同一 seam 约束,若只要插件自带只读工具,可在配置里关闭 shell 查询。

界面与入口

能力 说明
侧栏入口 右侧 guide 页增加「Side chat」
/btw 在 composer 中打开侧栏对话
状态条 主会话标题、运行/空闲点、轮次、todos、最新工具、相对活动时间、进行中轮次的 prompt
Background digest 可展开,展示模型实际读到的 digest 块
空问候卡片 标明所连主会话,并提供三条快捷问题
Composer 底部锚定,复用主会话 composer 样式;只读 pill + 34px 圆形发送
模型 chip 显示下一 turn 将用的模型,可切换 Host 路由的全部模型(按 provider 分组);仅影响侧会话下一 turn

只读工具与回传主会话

  • side_chat_main_status:最新 digest + 运行/空闲状态
  • side_chat_main_history:按 turn / contains 过滤的主会话日志,有界
  • side_chat_report:将结果排队进主会话(可在设置中关闭)

关闭标签页会弹出「Close this side chat?」,可选「Don’t ask again」;取消则重新打开标签。销毁时会 dispose agent 并删除该会话 JSONL 目录,经 persistence seam 校验成功。

安装与启用

官方安装命令(来自仓库 README):

dsh plugin add dsh-live-side-chat

本地开发时可用 checkout 路径(示例路径以你本机为准):

dsh plugin add /absolute/path/to/dsh-side-chat

安装后刷新 Web 页面;插件卡片出现在 Settings → Plugins。package.json 标明需 Node >=22.19.0、DSH >=0.2.1-rc.2 <0.3.0,许可证 MIT,当前资料中版本为 0.4.4。

插件行配置可在 profile 或 cordis.patch.yml 中覆盖 side-chat 行,常用字段如下:

字段 默认 含义
readOnly true 侧会话强制只读沙箱
allowShellQueries true 是否允许一次性 bash/pwsh 查询
allowReportToMain true(volatile) 是否允许 side_chat_report;侧栏设置面板可改
liveContext true 每步注入主会话 digest;关则主要靠按需 status 工具
digestTurns 12(4–60) digest 保留的已结算主会话轮数
historyEventLimit 40(5–200) 单次 history 读取的最大日志行数
preset "" 侧会话 agent preset;空则继承主会话
sessionsRoot "" 仅用于销毁时的会话存储根;空为 $DSH_HOME/sessions

右侧面板 Side chat 中还有:Allow messages to the main session(默认开),关闭后拒绝 side_chat_report,侧栏结论不进入主会话。

典型用法

  1. 在左侧选中一个主会话(侧栏对话绑定当前打开的主会话)。
  2. 打开右侧 sidebar,在 guide 页选 Side chat,或在 composer 输入 /btw。
  3. 标签页以空对话打开,上方为 live 状态条;在右侧提问。侧栏每步重读 digest,细节用 side_chat_main_status / side_chat_main_history 核实。
  4. 展开 Background digest 可查看模型读到的完整注入块。
  5. 需要交回主会话时,直接说明(例如要求「告诉主会话这个结论」)。
  6. 关闭标签 → 确认 → 侧栏会话销毁。

工作原理可概括为:主会话每个 committed event 经有界增量 fold 得到 sideChatDigest;同一投影供侧栏模型 runtime context、Host 控制流推送到浏览器状态条,以及重启恢复使用。

适用场景与注意

适合:长任务中并行做「进度确认」「结论复核」「只读查主会话历史」而不打断主 agent;需要临时第二视角、且不希望侧栏改仓库或开持久 terminal 的场景。

注意:

  • 插件以当前 DSH 进程权限运行;安装前请自行查看源码与 MIT 许可证,确认组织策略允许。
  • 侧栏不是主会话 fork,不会复制完整聊天日志;依赖 partial digest + 只读工具,复杂事实应显式查 history。
  • 关闭即销毁,未通过 side_chat_report(或等效请求)交回的内容不会自动进入主会话。
  • DSH 生态强调「一切皆插件」;社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-live-side-chat 在主会话右侧提供空启动、只读、随主会话 live 更新的侧栏对话,关闭即清理,必要时可将结论排队回主会话。目录页:https://www.skillhub.cn/plugins/XBXyftx/dsh-live-side-chat;源码与完整说明:https://github.com/XBXyftx/dsh-live-side-chat。

羽毛球分组比赛记分
小程序二维码

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

小夜