前言¶
在 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。