前言¶
在 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,侧栏结论不进入主会话。
典型用法¶
- 在左侧选中一个主会话(侧栏对话绑定当前打开的主会话)。
- 打开右侧 sidebar,在 guide 页选 Side chat,或在 composer 输入
/btw。 - 标签页以空对话打开,上方为 live 状态条;在右侧提问。侧栏每步重读 digest,细节用
side_chat_main_status/side_chat_main_history核实。 - 展开 Background digest 可查看模型读到的完整注入块。
- 需要交回主会话时,直接说明(例如要求「告诉主会话这个结论」)。
- 关闭标签 → 确认 → 侧栏会话销毁。
工作原理可概括为:主会话每个 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。