dsh-plugin-future-session:現實/未來會話拆分與上下文蒸餾

前言

在 DeepSeek Harness(dsh)裏跑長任務時,工具調用會把檢索結果、目錄列表、文件片段不斷寫進主會話上下文。後續輪次要重複攜帶這些前綴,既佔 token,也影響前綴緩存命中。常見做法是裁剪歷史或單獨開子會話,但子會話若與主會話提示詞、工具面不一致,緩存往往對不齊。

下面介紹 Pasumao 維護的工作流插件 dsh-plugin-future-session:把單次會話拆成「現實會話」與「未來會話」兩層——現實側每次工具調用不本地執行,由繼承全部已完成上下文的 fork 鏡像在暗處代勞,主上下文只留下「一次調用 + 一份結論」(或按需併入完整過程)。插件零依賴、零構建,當前版本 0.5.3,許可證 MIT。

這是什麼

dsh-plugin-future-session 面向 dsh 智能體/工作流開發者,解決「重工具過程污染主會話上下文」的問題。

與普通長鏈式會話不同,開啓後模型照常發工具調用,但現實側看到的是同名同描述同參數的影子工具:不跑真邏輯,會話就地停擺;插件用 FutureSessionRuntime 經核心 Agent 工廠(ctx.agents.create,可回退 ctx.agentLoop.createAgent)fork 鏡像會話,不走原生 ctx.subagents 目錄。未來側用真工具完成搜索、讀文件、分析等,再自主決定如何把結果送回現實側。

社區目錄頁:SkillHub 插件頁。源碼與說明:GitHub — Pasumao/dsh-plugin-future-session(倉庫星標數爲 0,以目錄登記爲準)。

工作原理概要

  1. 開啓「未來」模式後,當前會話標記爲現實會話;可見工具被安裝爲影子工具(作用域遮蔽,wire 層無法區分)。
  2. 模型發出工具調用 → 影子工具停擺 → 在暗處 fork 未來會話,seed 爲現實會話已完成輪次前綴,系統提示詞與工具面同形,利於前綴緩存全程命中。
  3. 未來會話自由調用真工具完成工作。
  4. 收口由未來會話決定:
    - 中間過程對主會話無用:調用 future_return(summary),結論作爲該次工具返回值(帶 [future-session] 標記),未來會話封存。
    - 過程對後續有用:調用 future_promote(report)(0.5.0 起爲 merge 語義),完整過程併入現實會話,現實會話繼續推進。
  5. 身份判定不靠提示詞分叉,而靠返回內容是否帶 [future-session] 標記。
  6. 保底:future_peek(sessionId) 可查看登記過的未來會話按步摘要(文檔建議儘量別用);與摺疊框 /transcript 共用登記校驗與摘要管線。

用戶界面始終停在現實會話;未來過程可在工具行摺疊框中回放(Phase 2,0.4.0+)。插件在 loopback 提供 GET/PUT /mode、GET /tools、GET /calls、GET /transcript、POST /answer 等路由供客戶端展示與中繼提問。

核心功能

  • 透明委派:現實側每個工具調用可自動 fork 繼承上下文的未來會話,不經原生 subagent 目錄。
  • 上下文蒸餾:默認路徑下主會話只保留調用與結論,檢索與文件噪音留在未來會話。
  • 兩種回傳:摘要回傳(future_return)或原樣/完整併入(future_promote)。
  • 客戶端增強:影子工具結果可帶 presentationMeta,支持摺疊框輪詢轉錄、收口標籤、ask_user_* 中繼作答。
  • 配置項:enabled、protocolSection、maxDepth(默認委派深度上限 1,防遞歸 fork)。
  • 持久化:$DSH_HOME/dsh-plugin-future-session.json 記錄模式、登記、callId 映射與可見工具目錄。
  • 策略:fork 出的未來會話將 approval 釘爲 never(delegation 語義),現實會話在 ask 審批模式下開啓插件後,未來側工具不再彈審批。

依賴:@deepseek-ai/cordis ^4.0.1(peer);Node >= 18。

安裝與啓用

從 npm 安裝後掛到指定 profile(命令來自項目 README,將 <dsh>、<profile> 換成本機路徑):

npm install dsh-plugin-future-session
node <dsh>/lib/bin.js plugin --profile <profile> add <profile>\node_modules\dsh-plugin-future-session

重啓 Desktop 客戶端後生效;啓動日誌中不應出現 skipping profile bundle "dsh-plugin-future-session"。

插件在當前 dsh 進程權限下運行,安裝前應自行審閱源碼與 MIT 許可證,確認與自身環境策略一致。

典型用法

滑動開關(推薦):會話輸入欄左下角「未來」開關,點按即可開啓/關閉本會話的現實會話模式(懸停有說明,無需額外指令)。

等價指令:

/future on      # 進入現實會話模式:工具由未來會話代執行,默認只回蒸餾結論
/future raw     # 原文併入:未來會話調用與結果原樣塞回主會話
/future off     # 退出,工具恢復本地執行
/future status  # 查看當前模式與累計未來會話

插件 Config 默認值:

字段 默認 說明
enabled true 總開關
protocolSection true 是否注入共享協議提示段
maxDepth 1 未來會話委派深度上限

維護者本地自檢(開發目錄內):

cd <本插件目錄>
npm run selfcheck

適用場景與注意

適合誰

  • 長鏈路探索型任務(多輪搜索、反覆讀倉庫),希望主會話上下文保持短、穩定,並儘量命中前綴緩存。
  • 需要在 UI 上仍留在「主會話」,卻想看到未來側過程摘要或摺疊回放的用戶。

設計邊界與限制(摘自 README)

  • 同形原則:禁止按現實/未來分叉系統提示詞,否則緩存失效。
  • 委派串行:一次委派中現實會話整體等待,無併發 fork。
  • 影子註冊存在理論上的首個請求搶跑窗口;個別工具若 shadow 註冊失敗會降級爲本地直接執行(/future status、/mode 會提示 degraded 名單)。
  • 收口依賴模型主動調用 future_return / future_promote;未決策時回退用最終輸出,仍符合「只回結論」語義。
  • 摺疊框依賴 presentationMeta 或 GET /calls 索引;歷史無映射的調用可能不顯示摺疊框。
  • fork 未來會話 approval 爲 never,需由核心策略與沙箱兜底風險。

DSH 生態理念是「一切皆插件」;SkillHub 等爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-plugin-future-session 用現實/未來雙層會話,把重工具過程隔離在 fork 鏡像裏,讓主會話上下文保持「調用 + 結論」的緊湊形態,並在同形提示與工具面下爭取前綴緩存命中。若你在 dsh 上被上下文膨脹拖慢或緩存效率不佳,可按上文 npm 路徑安裝,用輸入欄「未來」開關或 /future on 試用。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜