前言¶
在 DeepSeek Harness(DSH)裏做複雜任務時,單個 Session 往往會拖很多輪:上下文變滿、模型表現下滑,但手頭還有未完成的改動和決策。常見做法是人工讓模型寫交接文檔,再新建 Session、粘貼續接提示詞——步驟多,也容易漏關鍵文件或驗證結果。
下面介紹社區插件 Session Handoff(會話交接)(npm 包名 dsh-handoff-session),由維護者 BlueOcean3214 發佈,分類屬於「記憶」類能力:在會話接近壽命上限前,由模型在合適檢查點調用工具寫出交接文檔,並在同一工作目錄自動開新 Session 繼續執行。
這是什麼¶
dsh-handoff-session 是 DSH 的 Host + Client 插件 bundle。Host 側負責會話壓力投影、運行時提示與 session_handoff 工具;Client 側在 Web 輸入框下方提供「會話交接」入口與壓力面板,不佔用圖標位。
它要替代的手工流程是:寫交接文檔 → 點「下一步」→ 複製提示詞 → 新建會話 → 粘貼。裝好後,模型在策略允許時只需調用一次 session_handoff 即可完成文檔、轉錄、新 Session 創建與首輪續接提示。
- 目錄頁:https://www.skillhub.cn/plugins/BlueOcean3214/dsh-handoff-session
- 源碼與說明:https://github.com/BlueOcean3214/dsh-handoff-session
- npm:
dsh-handoff-session@0.6.1(MIT)
核心功能¶
壓力投影與動態提示¶
插件摺疊每個會話中的 turn/start、step/start、request/context、assistant/message、tool/call、tool/result 等事件,得到輪數、步數、上下文佔用、累計 token、緩存命中率等指標。
每次請求會在運行時上下文注入 <session-pressure>,告知當前壓力與 level:low / watch / recommended / urgent。系統提示中另有「會話壽命與交接」規則:僅在 recommended 或 urgent,且處於可持久化檢查點時,才應調用交接工具。
默認閾值(可在配置中修改)參考了「約 22 輪 / 677 步 / 24% 上下文」這類狀態落在 recommended 的場景——模型會在下一個乾淨檢查點交接,而不是每輪打斷。
交接工具 session_handoff¶
調用後會:
- 將目標、現狀、已完成、待辦、決策、關鍵文件、驗證結果等寫入
<cwd>/.dsh/handoffs/handoff-<時間>-<會話>.md(目錄默認.dsh/handoffs,可配置handoffDir)。 - 可選生成同目錄下的
handoff-<時間>-<會話>.transcript.md,供後續read/grep檢索細節;不會整份塞進新 Session 上下文,新 Session 首輪只讀摘要。 - 通過
sessionController.create()新建 Session,用sessionController.prompt()發送「讀交接文檔 + 繼續指令」,並按配置結束舊回合、自動切到新 Session。
新 Session 看不到舊對話,因此工具參數裏的 summary 與 nextPrompt 必須是自包含的。
Client 界面¶
client.js 在輸入框下方右側顯示「會話交接」四字,顏色隨壓力從次要色變爲警告色或品牌色。點擊可展開面板,查看三項閾值進度與說明;「現在交接」會把交接指令填入輸入框併發送。交接完成後可自動切到新 Session,也可手動「打開新會話」。
安裝與啓用¶
從 npm 安裝(資料原文命令):
dsh plugin add dsh-handoff-session
該包爲 Host + Client bundle,無構建步驟。安裝後需在 DSH 桌面窗口刷新 Web 頁面(例如 Ctrl+R),或使用 dsh web 打印的帶 token 地址;Client 半纔會進入頁面。直接訪問裸的 http://127.0.0.1:<port> 可能返回 401,與插件無關。
也可在 Plugin Manager 中對本地開發目錄調用 install_bundle(target 傳絕對路徑),裝好後 list_plugins 中應出現 Session Handoff / 會話交接。
自託管市場索引(可選):在 Plugins → Discover 的 Index sources 中加入
https://raw.githubusercontent.com/BlueOcean3214/dsh-handoff-session/main/market/index.json,刷新後從列表安裝。社區目錄站點 skillhub.cn 與 DeepSeek / 幻方無官方從屬關係,DSH 生態理念是「一切皆插件」。
配置要點¶
配置位於包內 cordis.patch.yml 的 config。修改後需通過 plugin_manager 的 set_bundle 關閉再打開 bundle,Host 纔會重讀 patch;僅改 JS 不會熱更新 Host 半。
| 鍵 | 默認 | 含義 |
|---|---|---|
turnsWatch / turnsSoft / turnsUrgent |
10 / 20 / 30 | 輪數閾值 |
stepsWatch / stepsSoft / stepsUrgent |
250 / 500 / 900 | 步數閾值 |
contextWatch / contextSoft / contextUrgent |
0.40 / 0.60 / 0.85 | 上下文佔用比例閾值 |
handoffDir |
.dsh/handoffs |
交接文檔相對 cwd 的目錄 |
language |
zh |
文檔與續接提示語言(zh 或 en) |
concludeTurn |
true |
交接成功後立即結束舊回合 |
autoOpenNewSession |
true |
Client 自動切到新 Session |
transcript |
true |
是否導出可檢索轉錄旁路 |
transcriptMaxChars |
120000 |
轉錄字符上限(超出時省略中段) |
transcriptReasoning |
false |
是否寫入模型 reasoning |
transcriptToolOutput |
true |
是否寫入工具參數與結果 |
轉錄文件可能包含命令輸出、文件片段等敏感信息,交接目錄應按項目需要清理或加入 .gitignore(倉庫 .gitignore 已示例擋住 .dsh/ 下對話記錄)。
典型用法¶
- 安裝並刷新 Web 界面,確認輸入框下方出現「會話交接」。
- 在長任務 Session 中正常開發;觀察壓力文字顏色或展開面板中的輪數 / 步數 / 上下文佔用。
- 當系統提示與
<session-pressure>表明處於recommended或urgent時,讓模型在可持久化檢查點調用session_handoff,填寫完整的summary與nextPrompt。 - 也可在面板點擊「現在交接」,由 Client 直接發送交接指令。
- 交接完成後在新 Session 中根據
handoff-*.md繼續;若摘要不夠,對新 Session 說明「在.dsh/handoffs/下 grep 對應*.transcript.md」按需補細節。
適用場景與注意¶
適合:單 Session 內迭代較久的功能開發、調試、重構;需要在不丟決策與文件清單的前提下「換乾淨上下文」繼續同一 cwd 下的工作。
注意:
- 插件以當前 DSH 進程的權限運行,安裝前請閱讀源碼與 MIT 許可證,確認交接目錄與轉錄內容是否符合團隊安全要求。
- 星標與官方 awesome 目錄條目以倉庫當前狀態爲準;維護者 README 記載 npm 與自託管索引已可用,官方目錄 PR 需滿足倉庫創建滿 1 天等條件(見倉庫
docs/catalog-submission.md)。 - 不要編造未在文檔出現的安裝方式;git 來源安裝需符合 DSH 市場 format 1 的
git+<url>.git#<commit>規則,日常推薦上述 npm 命令。
結尾¶
dsh-handoff-session 把「壓力感知 → 結構化交接 → 新 Session 自動續接」收成一次工具調用與一套可檢索旁路文件,減少長會話手工換檔的成本。進一步瞭解可訪問 skillhub 目錄頁 與 GitHub 倉庫。