前言¶
在 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,以目錄登記爲準)。
工作原理概要¶
- 開啓「未來」模式後,當前會話標記爲現實會話;可見工具被安裝爲影子工具(作用域遮蔽,wire 層無法區分)。
- 模型發出工具調用 → 影子工具停擺 → 在暗處 fork 未來會話,seed 爲現實會話已完成輪次前綴,系統提示詞與工具面同形,利於前綴緩存全程命中。
- 未來會話自由調用真工具完成工作。
- 收口由未來會話決定:
- 中間過程對主會話無用:調用future_return(summary),結論作爲該次工具返回值(帶[future-session]標記),未來會話封存。
- 過程對後續有用:調用future_promote(report)(0.5.0 起爲 merge 語義),完整過程併入現實會話,現實會話繼續推進。 - 身份判定不靠提示詞分叉,而靠返回內容是否帶
[future-session]標記。 - 保底:
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 試用。