前言¶
DeepSeek Harness 的插件化架構允許開發者根據需求擴展功能。在 Agent 開發流程中,將一段完整的會話上下文固化下來,以便後續會話接手或人工審查,是常見需求。原版 handoff skill 通常將文檔寫入系統臨時目錄,無法直接在軟件內打開。
dsh-handoff-button 插件通過在每條 AI 回覆的操作行底部添加一個 Handoff 按鈕,點擊後將當前會話壓縮成結構化文檔,並寫入該會話工作區的 handoff/ 目錄。這提供了一個持久化的交接工件,便於跨會話複用。
核心功能¶
1. 按鈕與交互¶
插件會在每條已完成的 AI 回覆操作組最右側(複製/反饋按鈕之後)注入一個圓形圖標按鈕。懸停時顯示 Tooltip 提示。
- 點擊生成:點擊按鈕後,調用當前默認模型生成文檔。生成中按鈕變暗,完成後顯示綠色
✓(2 秒後自動復原),失敗則顯示紅色⚠(懸停可見原因)。 - 再次點擊打開:在顯示
✓的狀態下再次點擊,通過 DSH 的openWorkspacePath接口在軟件內打開生成的文檔(安裝 better-sidebar 時進入側邊欄編輯器,否則走系統默認應用)。 - 更換圖標:圖標文件爲
assets/write.png(Magnific “Write” 圖標),Host 路由同源提供。如需更換,直接替換該文件並重啓 DSH 即可。
2. 文檔生成邏輯¶
文檔採用 handoff skill 的五段式結構:
* Status:當前狀態
* Goal:取自第一輪目標及之後的明確改口
* Progress:緊湊總結,非對話實錄
* Next Steps:後續步驟
* Suggested Skills:會話中實際調用過的技能
對於中段出現的助手長文,默認視爲已落入 References 中的工件(如 specs / plans / ADRs),生成時用路徑引用而不復述全文。若 LLM 不可用,自動降級爲啓發式摘要,但仍保留原始 Goal。
3. 關注點設置¶
普通點擊生成完整文檔。按住 Alt 鍵點擊,可填寫“下一會話關注點”。該參數會引導 Next Steps 的生成,但不會替換原始 Goal。
4. 文件與引用處理¶
- 文件名:
handoff-{yyyymmddhhmmss}-{會話標題}.md。非法字符替換爲-,最長 60 字符。handoff/目錄不存在時自動創建。 - 脫敏:寫入前自動打碼 API key、token、密碼等敏感信息。
- References:自動收集會話中實際觸碰的文件路徑,僅保留工作區內部文件,並轉換爲相對於工作區根目錄的路徑。系統路徑、臨時目錄等一律不收錄。
安裝與啓用¶
插件已發佈至 npm。安裝命令如下:
dsh plugin --profile <name> add dsh-handoff-button
若使用本地開發版本:
dsh plugin --profile <name> add /絕對路徑/dsh-handoff-button
注意: 啓動順序決定是否需要重啓。DSH 的插件組合發生在進程啓動時,安裝命令僅修改磁盤配置。
- 先安裝 → 再啓動:插件已包含在啓動列表中,直接生效,無需重啓。
- 先啓動 → 再安裝:裝完後必須完全退出並重新啓動dsh(桌面應用⌘Q或終止 Web UI 進程),讓進程重新組合 profile。
安裝後可用 dsh --profile <name> --dump-config | grep handoff 確認插件已加載。
架構與實現¶
- Host 端 (
index.js):註冊三個路由,提供POST /handoff/write(生成)、GET /handoff/read(打開)、GET /handoff/icon(圖標)服務。負責讀取會話日誌、調用 LLM 總結、寫入文件(自動建目錄)。 - Client 端 (
client.js):通過 module loader 注入到conversation.chat.assistant-actions插槽(order: 100,最右側),處理點擊事件並調用 Host 路由。 - 沙箱限制:寫入圍欄釘在“該會話工作區”,而非 Host 默認根目錄,避免因權限問題報錯
file access denied under workspace-write mode。即使沙箱 approval 爲 never,仍會嘗試寫入handoff/。
適用場景¶
- 需要在 DSH 內直接打開 handoff 文檔的場景。
- 跨機器或多人協作時,需要引用相對路徑的工件。
- 需要快速固化當前會話上下文以備後續接手。
鏈接¶
- GitHub: https://github.com/whiteS18/dsh-handoff-button
- Catalog: https://www.skillhub.cn/plugins/whiteS18/dsh-handoff-button