前言¶
在 DeepSeek Harness(DSH)裏用智能體改代碼、跑命令,會話一拉長,上下文裏會堆滿歷史輪次、工具結果和運行時注入。官方已有 /compact 把歷史壓成摘要,以及會話菜單裏的「分叉」複製整段歷史前綴——兩種做法都能「接着幹」,但前者可能丟掉路徑、參數這類可覈對的具體信息,後者則把大量舊上下文一併帶進新會話。
下面介紹社區插件 dsh-session-inherit(倉庫 MacilyDots/dsh-session-inherit):在會話「…」菜單增加一行「繼承」,從源會話日誌裏不調模型地提取任務、最近用戶指令、改過的文件、工具失敗、命令、待辦等錨點,生成交接單,再創建不帶舊歷史的新會話,並把交接單作爲首條消息發出。維護者爲 MacilyDots,在 SkillHub 等社區目錄中歸類爲「記憶」相關能力;當前 npm 包版本爲 0.5.5,許可證 MIT。
這是什麼¶
一句話定位:會話菜單裏的「繼承」入口 + 機械提取交接單 + 新建乾淨會話繼續工作。
與 /compact、官方「分叉」的差異,README 用表格概括:壓縮留在同一會話且摘要偏抽象意圖;分叉複製整段歷史;繼承只搬可覈對的具體錨點,新會話上下文從幾千字符量級起步。交接單生成過程零 LLM 調用,每條內容可回溯源會話覈對。
核心功能¶
會話菜單與命令入口¶
側邊欄任一會話行尾「…」菜單中,在 DSH 自帶的置頂、重命名、分叉、歸檔之外,本插件註冊 繼承(slot sidebar.workspaces.session.menu.item,id session-inherit,order 350)。對包括已冷掉的會話均可操作:讀取走 sessionQuery.readSession,不會激活 agent。
同等入口還有提示詞裏的 /inherit 命令,例如:
/inherit # 繼承當前會話
/inherit <sessionId> # 繼承指定會話
/inherit --next 先跑一次 npm test # 指定第一步
/inherit <sessionId> --next 換個文件繼續
另註冊 session_inherit 工具(參數 sessionId、nextStep、start),供 agent 在上下文變長時提議換會話。
交接單內容與提取規則¶
交接單語言跟隨界面語言(preview/commit 請求中的 lang)。主要章節包括:任務目標、改過的文件、最近失敗、最近的用戶指令、讀過的文件、文中提到的路徑、項目內相對引用、最近執行的命令、待辦、源會話最後一次回覆,以及你在預覽裏填寫的「下一步」。章節標題不帶序號,避免某一節爲空時序號與客戶端提示不一致。
提取上的要點:
- 最近的用戶指令僅保留
source.kind === 'user'的真實用戶消息,過濾agent-instructions、runtime-context等運行時注入。 - 改過的文件來自
edit/write的結構化file_path,按最近改動排序;正文裏出現的路徑歸入「文中提到的路徑」。 - 最近失敗來自
tool/result且isError,帶輪次標記;成功結果、用戶打斷等會被丟棄,重複報錯會合並。 - 絕對路徑會做存在性檢查,已刪除或改名的標爲「(已不存在)」。
交接單開頭附帶三條執行規約(大意:不要複述或總結交接單,讀完直接做「下一步」,第一步只做一個具體動作後停下彙報)。
創建新會話時的行爲¶
確認繼承後,新會話標題爲 繼承: <源標題>,工作目錄與模型路由與源會話一致;默認勾選「繼承當前對話的預設」,取消則使用 DSH 默認 preset。默認勾選「創建後立即開始工作」:交接單經 sessionController.prompt 發出並立刻開工;取消則僅 session:append 寫入日誌不觸發首輪。
插件還會在 %DSH_HOME%\session-inherit\history.json 記錄重複繼承提示;若自動開始失敗,對話框會顯示原因與新會話 id,而不是靜默關閉。
回查源會話:session_read¶
新會話無法直接讀源會話的多幀 zstd 日誌,插件額外提供只讀工具 session_read(mode: search | summary | tail),用於按關鍵詞搜索、結構化摘要或查看尾部事件。
可選配置¶
profile 的 cordis.patch.yml 中可覆蓋(均可選):
- id: session-inherit
config:
enabled: true
recentUsers: 6
startByDefault: true
cacheTtlMs: 120000
安裝與啓用¶
推薦從 npm 安裝(README 原文命令):
dsh plugin --profile <profile> add dsh-session-inherit
也可在 profile 的 package.json 中用 link: 依賴並在 dsh.profile.bundles 中列入 dsh-session-inherit;bundles 纔是加載權威,僅寫 dependencies 不會掛載。安裝後需重啓 DSH。package.json 要求 Node >= 22。
README 註明在 DSH 0.2.0-rc.2(Windows)上驗證通過;DSH 升級後若菜單項不出現,可檢查 profile 的 compatibility.json 與 peerDependencies 是否匹配。
典型用法¶
- 鼠標移到側邊欄目標會話,點行尾「…」,選 繼承(或對當前會話使用
/inherit)。 - 在預覽中查看源會話摘要(輪次、改過文件數、失敗條數等),在 下一步 輸入框寫明具體動作(例如指定文件與單一操作)。
- 按需展開「交接單全文(可編輯)」微調內容,確認是否繼承 preset、是否創建後立即開始工作。
- 點擊「創建並繼承」;新會話打開後從交接單繼續,源會話保持不變。
若需在 agent 側觸發,可調用 session_inherit;需要覈對源會話細節時,在新會話中使用 session_read。
適用場景與注意¶
適合:單會話輪次多、歷史 token 很大,但繼續工作所依賴的主要是任務陳述、最近指令、已改文件路徑、未解決的 tool 錯誤和待辦狀態;希望新會話不帶舊對話歷史,又不願用 LLM 摘要丟失具體錨點。
不適合或需知:README 明確說明插件不治退化本身,只減少「長曆史 + 抽象意圖」誘因;交接單不替你推斷「下一步」,留空時模型可能先詢問。機械提取對路徑解析、交接單 14,000 字符上限與按節丟棄策略等有 documented 限制;源會話若做過 compaction/*,更早原文可能已不在日誌中。
安全與信任:DSH 生態以「一切皆插件」爲思路,SkillHub(目錄頁)等爲社區站點,與 DeepSeek / 幻方無官方從屬關係。插件在當前 DSH 進程權限下運行,宿主註冊本機 loopback 的 preview/commit 端點;安裝前請自行查閱 GitHub 源碼 與 MIT 許可證,確認符合你的環境策略。
結尾¶
dsh-session-inherit 提供第三條「接着幹」的路徑:不調模型、不帶舊歷史,用機械交接單把可驗證的上下文錨點搬進乾淨新會話,並可選繼承 preset 與立即開工。需要安裝命令、配置項與限制說明時,以倉庫 README(含 README.zh-CN.md)爲準。