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 试用。

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

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

小夜