前言¶
在 DeepSeek Harness(DSH)裏跑長任務,會話上下文很快就會被頂滿。官方的自動壓縮是有損的:細節會被喫掉,而且壓縮完還在同一個會話裏,繼續往下頂就會越來越喫力。這需要換一條路——交接:把當前進度、改過的文件、驗證過的結果整理成一張結構化交接卡,同時起一個上下文清零的新會話,把卡片作爲它的第一句,並自動命名、置頂、歸組。
它是什麼¶
xwide/dsh-xwide-handoff 是一個爲 DSH 提供交接能力的插件,由 XWIDE 維護。它把「快聊滿的會話」變成「一張結構化交接卡 + 一個乾淨的新會話」,並在側欄自動置頂。當上下文接近閾值時,還能自動把下一棒備好。
核心功能¶
/handoff指令:在輸入框敲/handoff後面跟一句話,會把這句話作爲「本次交接重點」寫入交接卡。如果不寫,卡片會自動帶上「本輪動過的文件」和「最近 6 條原話」。- 新會話自動命名:新會話標題格式爲「原會話名_01」「_02」…,序號來自落盤計數器,按 cwd 分桶單調遞增,不會重名。
- 自動置頂與歸組:新會話會在側欄自動置頂,並歸入源會話所在的項目分組。
- A 半自動(autoReady):插件監聽每輪結束,計算最近一次請求攜帶的上下文量,當佔用比例 ≥ readyPct(默認 0.7)時,自動執行一次交接(建會話、命名、置頂、注入卡片、驅動首輪),讓新會話在側欄可見。同一會話只備一次,全局冷卻默認 10 分鐘,總開關默認關閉。
安裝與啓用¶
安裝方式有兩種,二選一即可:
- 使用 pnpm(推薦):
# 在 DSH profile 目錄裏
pnpm add dsh-xwide-handoff
- 下載即用(不需要 npm/pnpm):
1. 把本倉庫整個目錄放進<你的 profile>\local-plugins\dsh-x-wide_handoff\。
2. 在 profile 的cordis.patch.yml末尾加一行掛載,然後重啓 DSH:
- id: dsh-xwide-handoff
name: './local-plugins/dsh-x-wide_handoff/index.js'
config:
enabled: true
commandName: handoff
childMode: create
recentUserMessages: 6
注意:只能有一個裝載實例,否則會出現重複註冊的現象。
典型用法¶
在 DSH 的指令菜單裏可以看到 handoff 這一條(說明命令已註冊),也可以直接在輸入框敲 /handoff。
示例輸入:
/handoff 本次重點:把 X 的解析邏輯改完;已改 a.js;未驗證迴歸
命令執行完會返回新會話的 id 和標題,並把它置頂。
配置項¶
- id: dsh-xwide-handoff
name: './local-plugins/dsh-x-wide_handoff/index.js'
config:
commandName: handoff # 命令名,默認 handoff
childMode: create # none | create | fork(見下)
recentUserMessages: 6 # 卡片帶最近幾條你的原話
compact: false # 交接前是否先本地壓縮一次(本地大模型請保持 false)
titleTemplate: '{base}_{seq}' # 標題模板,支持 {base} {seq} {note} {time}
seqWidth: 2 # 序號位數:_01
maxTitleChars: 64 # 標題字符上限
repinLimit: 3 # 自愈重釘次數上限
autoReady: false # A 半自動總開關
readyPct: 0.7 # 觸發閾值(占上下文窗口比例)
readyCooldownMs: 600000 # 冷卻
contextWindow: 262144 # 上下文窗口(判佔用用;默認取自作者的本地模型,請按自己窗口改)
cardSections: # 卡片欄目開關
guide: true # 「接手須知」
files: true # 「本輪動過的文件」
usage: true # 「源會話上下文」
childMode 三檔¶
create:服務端直接建全新空會話(上下文清零,繼承 cwd 與 agentPreset)。這是默認推薦模式。none:服務端不建會話,把卡片 JSON 塞進結果文本,由client.js用 GUI 原生 API 建可見會話。需要「和點『新建對話』完全一致」的場景;要求client.js已正確作爲dsh.client打進包,跨機器未驗證。fork:繼承全部歷史(上下文不清零)。只想換個標題、不想清上下文的場景。
注意:三種模式都不能帶 parentSession,否則 DSH 會把新會話從列表和可恢復集合裏排除,導致交接完看不見新會話。
交接卡樣式¶
卡片以目標標題作爲第一行,包含「接手須知」「本輪動過的文件」「最近你的原話」「源會話上下文」等欄目。
適用場景與注意¶
- 適合需要多次迭代、上下文會頻繁頂滿的長任務。
- 插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。
- childMode: none 的客戶端半邊接線尚未在第二臺機器驗證。
- DSH 升級後請覈對插件依賴的內部接口位置,所有內部調用都做了寬容處理,失敗只記日誌,不會導致交接本身崩潰。
短結尾¶
這套「交接」方案能讓你在換會話時保留完整上下文,接力不丟。更多細節與故障排查,可查看目錄頁與 GitHub 倉庫。