前言¶
在 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;
skipverdict 不会创建 target conversation。 - 默认 sources 被限制在 caller cwd;跨 workspace 融合必须被 deployment 显式启用。
- 被选中的 profile 必须提供
agents、commands、sessions、sessionQuery、systemPrompt和tools。
资源¶
GitHub:
https://github.com/omdsh-dev/dsh-fusion
社区目录:本资料未给出可确认的目录页 URL;可按插件名 dsh-fusion 在 DSH 社区目录中检索。