前言¶
在 DeepSeek Harness(DSH)里,同一会话往往会被用来连问多个互不相关的问题。DSH 的会话是追加式事件溯源日志,模型能看到的内容与已写入日志的内容一致,并没有内置开关让某次请求「只看最新一条用户消息」。内置压缩(compaction)可以把旧历史换成摘要,但旧问题会以摘要形式残留,且每次还要额外调用模型写摘要。
维护者 ShadowTang98 发布的客户端插件 dsh-qa-isolation 走官方支持的 surface 替换 路径:在每个新问题的第一步,把系统提示之后的旧节点替换成一条短标记,让模型只看到「系统提示 + 标记 + 当前问题」,同时会话日志仍完整保留。下面介绍它的定位、安装与用法。
这是什么¶
dsh-qa-isolation 是一个 DSH bundle,附带名为 Q&A 的 Agent 预设。核心价值是:在一个会话窗口里连续提问时,默认每个新问题都在干净上下文中回答,互不相关的问答不会在模型侧互相污染;需要针对同一话题多轮深入时,可随时切换到追问模式。
- 仓库:github.com/ShadowTang98/dsh-qa-isolation
- 社区目录:skillhub.cn 插件页
- 分类:客户端(含 Host 与浏览器端 composer 开关)
- 许可证:MIT(见仓库 LICENSE)
- 当前资料中的版本:
1.0.1(见package.json)
两种模式:单问默认,追问可切¶
隔离是默认行为,不是强制行为。单问模式为默认;要连续追问时,可点 composer 上的开关或输入 /qa follow,此后按正常多轮对话累积上下文;要再隔离回来用 /qa fresh。
| 模式 | 模型看到什么 | 适用 |
|---|---|---|
| 单问(默认) | 只有系统提示 + 当前这一问 | 一个窗口里问一堆互不相关的问题 |
| 追问 | 系统提示 + 切换后累积的问答 | 同一话题需要多轮深入 |
切换只影响之后的问题;历史仍完整保留在会话日志与界面转录里,可随时回看。切换到追问模式不会恢复此前已被 surface 替换移出的问答,只保留当时仍在上下文里的部分——README 中明确说明这是设计使然。
与压缩相比:零额外模型调用¶
插件在每个新问题第一步做 surface 替换,与压缩落检查点同属一条持久机制。效果是:
- 模型输入侧不携带上一轮完整问答(单问模式下);
- 无额外模型调用写摘要,也无摘要残留;
- 重启与恢复会话后行为与会话日志里记录的模式一致。
单问模式下跨轮次上下文规模基本恒定(上一问与上一答会随替换移出)。同一轮内大量工具结果、或单条超长粘贴,由预设挂接的压缩组兜底。追问模式下上下文会正常累积,长对话交给压缩处理。
安装与启用¶
需要 DSH 0.2.2-rc.1 或更高,并依赖 dsh-agent-preset、dsh-persona、dsh-tool-web。
方式一(推荐):在任意 DSH 会话中对 Agent 说:
安装 bundle `github:ShadowTang98/dsh-qa-isolation`
Agent 会通过 plugin_manager 的 install_bundle 完成安装与启用。
方式二:若已安装 dshmarket,可在 DSH 插件页的 Discover 里从 GitHub 源添加本仓库。
方式三(手工):在 profile 目录(Linux 下一般为 ~/.dsh/profiles/<profile>/package.json)增加依赖与 bundle,再执行 pnpm install:
{
"dsh": { "profile": { "bundles": ["dsh-qa-isolation"] } },
"dependencies": { "dsh-qa-isolation": "github:ShadowTang98/dsh-qa-isolation" }
}
安装后重启 DSH(新增的是 Host 组合里的插件行,热重载覆盖不到)。新建会话时在 Agent 预设里选择 Q&A。
升级时需注意:pnpm 的 lockfile 会钉住 github:owner/repo 已解析的 commit,重新安装未必自动升到最新 tag;发版说明建议显式使用 github:ShadowTang98/dsh-qa-isolation#vX.Y.Z 形式的 ref。
典型用法¶
| 操作 | 效果 |
|---|---|
| 默认 | 单问模式:每个新问题清空模型侧上下文,只回答当前这一问 |
/qa follow 或点 composer 开关 |
追问模式:保留当前仍在上下文里的问答 |
/qa fresh 或点开关 |
切回单问模式 |
/qa |
查询当前模式 |
composer 工具行(模型选择器旁)会出现「单问 / 追问」开关,仅在 Q&A 预设的会话里显示,其他预设自动隐藏。模式以 /qa 命令事件写入会话日志,刷新页面或重开程序会恢复上次所选模式;每个会话各自独立。
组成与生效范围¶
插件由双半包与一条 Host 注册行、一个预设声明构成:index.js(Host:surface 替换、/qa 命令、/dsh-qa/mode 路由)、client.js(浏览器:composer 开关)、cordis.patch.yml(注册与 preset-qa 声明)。仅对运行 config.preset(默认 qa)所指定预设的会话生效。
适用场景与注意¶
适合谁:需要在同一个 DSH 窗口里快速切换多个独立问题、又不想为每问开新会话的用户;或需要在同一话题上临时开启多轮追问、再切回单问的用户。
运行与审计:插件随当前 DSH 进程与 profile 加载,安装前宜自行查看仓库源码与 MIT 许可证,确认符合你的环境策略。社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。
已知代价与边界(据 README):
- 每次 surface 替换会使 provider 前缀缓存从首条历史 token 起失效,单问场景下每个问题按全量输入计价,通常可接受。
- Chat 界面渲染的是事件窗口而非 surface,旧问答在界面上仍可回看,仅模型上下文被清空。
- composer 开关在切换会话后可能需下次页面聚焦才刷新,可手动切走再切回。
结尾¶
dsh-qa-isolation 用 Q&A 预设与可切换的单问 / 追问模式,在不大改 DSH 会话模型的情况下,解决「一窗多问」时的上下文污染问题。进一步了解可到 SkillHub 目录页 或 GitHub 仓库 查看说明与 issue。