前言¶
在 DeepSeek Harness(DSH)裏做智能體或項目開發,會話一拉長,上下文窗口會被佔滿,換一個新會話又意味着模型要重新從對話裏「摸」一遍背景。常見做法是手動複製粘貼摘要,或在新會話裏重複說明目標與進度,既費時也容易漏掉關鍵約束。
dsh-handitoff 把這一步做成工作流:舊會話裏由當前模型按固定模板寫出工作區交接文檔 HANDOFF.md,新會話通過 /handitoff resume 或會話菜單「交接並繼續」只讀這份文檔接手,減少重複發現上下文的開銷。下面介紹插件定位、能力與用法。
這是什麼¶
dsh-handitoff 是社區維護的 DSH 插件(維護者 NFdrybattery,GitHub 倉庫 NFdrybattery/dsh-handitoff),在 SkillHub 目錄中歸類爲工作流。包名是 dsh-handitoff,斜槓命令仍是 /handitoff。
一句話:從長會話生成交接文檔,再在全新會話裏恢復工作,而不必讓新模型重新梳理整段對話歷史。
核心功能¶
已覈實的能力如下。
生成交接文檔¶
/handitoff:在舊會話後臺向當前模型發送帶格式要求的指令,按 0–12 共 13 節寫出HANDOFF.md。文檔要等這一輪模型結束纔可用。- 第 0–11 節爲可總結的交接內容;第 12 節由插件在模型寫完後直接讀取會話日誌追加(格式爲
用戶:/回覆:),不經過 agent 轉錄。輪數由recentRounds配置,默認 5;該節不做歸納。 - 輔助命令:
/handitoff status、/handitoff list;/handitoff update與/handitoff同類動作;/handitoff --new新開一條任務線。
一鍵交接¶
會話列表 ⋯ →「交接並繼續」:
- 舊會話模型寫
HANDOFF.md(只寫 0–11 節); - 等本輪結束(最多 4 分鐘),插件追加第 12 節;
- 文檔生成後彈出提問卡,默認可選「否,開始交接」,並可填寫補充要求;
- 無補充則直接打開新會話;有補充則寫入新會話注入信息並標明「交接前用戶補充要求」;
- 新會話執行
/handitoff resume --latest --wake,命令結果默認收起;模型讀文檔並結合項目文件梳理前期工作,給出簡要接手總結。
新會話第一輪約定不執行命令、不改文件,確認後再繼續。
手動接續¶
/handitoff resume
/handitoff resume --latest
/handitoff resume --latest --wake
/handitoff resume <taskId>
不帶 --wake 時只注入摘要,需再發一條消息;帶 --wake 時注入後直接喚醒模型(一鍵交接走這條)。多條 pending 任務用 --latest 或顯式 taskId。重複接續同一任務會提示「已接手」;加 --force 可重新注入。
歸檔與清理¶
/handitoff archive <taskId>
文檔保留,但不再出現在 resume 候選中。任務默認在超過 retentionDays(默認 1 天)未更新後自動清理;0 可關閉自動刪除。
安裝與啓用¶
環境要求:DeepSeek Harness 0.2.1-rc.x(package.json 中爲 >=0.2.1-rc.1 <0.3.0-0),Node.js ^22.19.0 || >=24.0.0。
推薦在 設置 → 插件 裏從本地目錄安裝 checkout,選中 dsh-handitoff 後重啓。CLI 備選(路徑換成你的實際目錄):
dsh plugin --profile desktop add link:D:\path\to\dsh-handitoff
CLI 只安裝包,仍需在 設置 → 插件 裏選中 dsh-handitoff(或寫入 profile 的 dsh.profile.bundles)再重啓;其他 profile 將 desktop 換成對應名稱。
卸載:設置 → 插件 移除,或:
dsh plugin --profile desktop remove dsh-handitoff
首次使用新默認目錄時,會把舊的 .dsh/dsh-handoff/ 或 .dsh/handoff/ 自動遷到 .dsh/dsh-handitoff/,已有文檔隨目錄保留。
插件以當前 DSH 進程權限運行;安裝前應自行查看倉庫源碼與 MIT 許可證。
典型用法¶
僅生成文檔¶
在需要暫停或切換會話前,於當前工作區會話執行:
/handitoff
用 /handitoff status 確認文檔是否已生成。文檔路徑爲 <工作區>/.dsh/dsh-handitoff/<taskId>/HANDOFF.md,索引在同級 index.json。
新開會話接手¶
/handitoff resume --latest --wake
或在 UI 走「交接並繼續」完整流程。
配置¶
在 profile 的 cordis.patch.yml 裏按 id 覆蓋:
- id: dsh-handitoff
name: dsh-handitoff
config:
retentionDays: 1
language: zh
| 配置 | 默認 | 含義 |
|---|---|---|
enabled |
true |
總開關 |
retentionDays |
1 |
未更新任務目錄自動刪除天數;0 關閉 |
recentRounds |
5 |
第 12 節寫入的最近對話輪數;0 關閉該節 |
language |
zh |
zh 或 en |
remindAfterSteps |
1000 |
首次提醒步數 |
remindEverySteps |
200 |
提醒分檔間隔 |
安裝並啓用後,設置 → Handitoff 可編輯提醒閾值、保留天數、最近對話輪數、摘要/喚醒語言;保存走 Host 設置 API,部分項需重新加載插件。enabled 不在設置頁,啓停請用插件管理或 profile。
不想把交接筆記提交進倉庫,可將 .dsh/ 加入 .gitignore;需隨項目交付則保留。
適用場景與注意¶
適合誰: 在同一工作區上長時間改代碼、調插件或跑多輪排查,需要在不丟上下文的前提下換會話或換「乾淨」上下文窗口的 DSH 用戶。
限制(來自官方 README):
- 文檔質量取決於舊會話模型是否按模板寫全各節;不允許只寫標題,事實須來自當前會話。
- 一鍵交接需要會話已綁定工作區;空白會話不顯示菜單項。
- 缺少 frontmatter
task_id時 resume 會拒絕載入,可重新/handitoff。 index.json用於任務發現與清理,不是交接正文。
DSH 生態強調「一切皆插件」;SkillHub 等社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係,本文僅介紹社區插件能力,不構成官方背書。
結尾¶
dsh-handitoff 把「長會話 → 結構化 HANDOFF.md → 新會話 resume」收成可重複的工作流,並區分模型總結的 0–11 節與插件原樣轉錄的第 12 節,便於接手時既看到結論又看到最近幾輪原文。
- 目錄頁:https://www.skillhub.cn/plugins/NFdrybattery/dsh-handitoff
- 源碼與文檔:https://github.com/NFdrybattery/dsh-handitoff
當前 package 版本爲 0.1.1,許可證 MIT。