dsh-fusion:把多个 DeepSeek Harness 会话融合成一个可继续会话

前言

在 DSH 会话流中,研究、实现、审查等步骤经常分散在不同会话里。单独看每个会话都有价值,但后续模型如果要基于多个会话继续工作,就需要一个独立、持久、可继续的新会话上下文。dsh-fusion 用来做这件事:它把两个或多个 DSH 会话的当前文本表面融合成一个新的目标会话,并保留为 native target-session log events。源会话不会被修改。

这是什么

dsh-fusion 是一个 omdsh-dev 维护的 DeepSeek Harness bundle,资料说明该仓库是一个带 cordis.patch.yml 的 DSH bundle。资料中出现的入口/包名为 @deepseek-ai/dsh-fusion,许可证为 MIT

它不是把源会话合并成一个长期链接,而是生成一个 point-in-time snapshot:按当前可见表面、标题、排序与去重规则创建新会话,之后可以像普通会话一样继续。

核心功能

  • 融合 2–32 个会话;deployment 默认上限为 8。
  • 投影消息可以按时间顺序排列,也可以按 caller-selected source order 分组。
  • 使用稳定 message id 去重共享 fork 前缀,不折叠偶然相同的文本。
  • 只投影 user 和 assistant 消息中的文本,排除 reasoning、tool calls、tool results。
  • 继承 caller 的 cwd、provider/model options 和 creation-time agent preset。
  • 当可选 Host Workspace registry 可用时,把 target 挂到 caller/source Workspace group。
  • 标题优先级为:显式 title,Agent-planned title,根据源会话标题生成的可读标题。
  • 默认限制 sources 为 caller cwd;cross-workspace fusion 需要 deployment 显式启用。
  • 可选运行一个临时、无工具的 DSH Agent,用于判断融合价值,并返回经过验证的 pruning、topic-grouping 和 ordering plan。
  • 提供 UI Fuse conversations dialog、/fuse 文本命令、conversation_fuse 模型工具,以及 Service API。

安装与启用

安装

在本地准备插件路径后,运行:

dsh plugin --profile web add /path/to/dsh-fusion

安装后需要重启 DSH。资料给出的重启说明是:

Restart DSH after installation

启用条件

被选中的 profile 需要提供以下能力:

agents
commands
sessions
sessionQuery
systemPrompt
tools

启用后,/fuse 会出现在 slash menu,conversation_fuse 会出现在 model tool catalog。

如果宿主组合提供 invariants service,可以单独挂载可选入口:

@deepseek-ai/dsh-fusion/invariant

默认 bundle 不启用该入口。

典型用法

使用 UI 对话框

在任意 DSH conversation Header 中点击 Fuse conversations。对话框会自动包含当前会话,并列出同一 workspace 中的其他非空会话。

它支持:

  • source 搜索与多选
  • 可选 title;留空时会基于源会话标题生成
  • chronological 或 source-grouped ordering
  • fork-history deduplication
  • optional intelligent Agent planning

创建完成后,新会话会加入同一 Workspace group;资料说明它可以在会话列表中出现后立即打开。

使用 /fuse 文本命令

当前会话会被自动包含,因此命令只需要传其他 source id:

/fuse <other-session-id> [more-session-ids...]

资料中的例子是从 session-research 发起:

/fuse session-implementation session-review

该命令以 manual mode 运行,不发起额外模型请求,默认使用 chronological ordering 与 fork-prefix deduplication,创建后报告新的 session id。空格和逗号都可作为分隔符。无效、缺失或跨 workspace 的 source 会在 UI 中直接报告。

调用 conversation_fuse 工具

conversation_fuse 的参数如下:

参数 类型 是否必填 说明
sourceSessionIds string[] 至少两个唯一 source id。
targetSessionId string 新 id,默认为 fusion-<uuid>
title string 新会话标题;默认为 Agent 建议或源会话标题。
strategy chronological \| by-source 默认 chronological
deduplicate boolean 折叠共享稳定 message id;默认 true
agentPlanning boolean 运行临时 DSH Agent 判断/裁剪/分组;默认 false

资料给出的规范结果包括:新 id、source 与保留数量、Agent-pruned 数量、topic headings、planning reason、retained bytes、strategy,以及是否有 persistence listener 参与。

通过 Service API 调用

其他 Host 插件可以调用:

ctx.conversationFusion.fuse(request, { caller, signal })

caller 需要提供 workspace authority 和 new-agent defaults。即使包含当前会话,也仍需在 sourceSessionIds 中提供其 id。

配置项

资料给出的默认配置如下:

字段 默认值 说明
maxSources 8 每次调用的唯一 sources 数;硬上限 32。
maxMessages 500 保留并原生实例化的投影消息数,先于 byte fitting。
maxFusedBytes 131072 planning/provenance JSON 的 UTF-8 字节上限。
maxMessageBytes 16384 单条消息 UTF-8 字节上限。
maxTitleBytes 160 标题 UTF-8 字节上限。
allowCrossWorkspace false 是否允许与 caller 不同 cwd 的 sources。
enableAgentPlanning true 是否允许请求运行临时 planning Agent。
plannerMaxTokens 8192 planning Agent 输出 token 上限,范围 256 到 8192;当所选模型暴露 effort control 时,planner requests 会禁用 reasoning。

适用场景与注意

适合把多个相关 DSH 会话合并为后续可继续上下文的场景,例如需要同时参考研究、实现和审查结果时。

使用时注意:

  • 插件以当前 dsh 进程权限运行;安装前应检查源码与许可证。资料确认许可证为 MIT
  • 源会话永不被修改;融合结果是 point-in-time snapshot,不是 live link。
  • manual mode 不发起额外模型请求;intelligent planning 只把 authorized、projected、byte-bounded candidate snapshot 发给临时 DSH Agent。
  • 临时 planning Agent 是 tool-free 的,使用 empty tool allowlist;skip verdict 不会创建 target conversation。
  • 默认 sources 被限制在 caller cwd;跨 workspace 融合必须被 deployment 显式启用。
  • 被选中的 profile 必须提供 agentscommandssessionssessionQuerysystemPrompttools

资源

GitHub:

https://github.com/omdsh-dev/dsh-fusion

社区目录:本资料未给出可确认的目录页 URL;可按插件名 dsh-fusion 在 DSH 社区目录中检索。

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

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

Xiaoye