前言¶
在 DeepSeek Harness(DSH)里,从某条回复「分叉会话」去探索另一条思路很常见。主会话却看不到分叉里发生了什么:结论、改过的文件、跑过的命令、你在分叉里做的决定,往往只能自己口述一遍,主会话的 Agent 才能接着用。
下面介绍社区插件 dsh-session-git(目录分类:工作流)。它把分叉会话画成分支地图,并把分支成果以摘要(digest)合并回主会话,减少重复输入。
这是什么¶
Session Git 由维护者 glk1220 发布,当前包版本为 0.1.0(MIT 许可证)。定位是:在 Harness 中为分叉会话提供分支视图,并支持将分支已完成的工作合并回主会话。
插件不向网络发送会话数据;合并时读取本机会话记录,本地处理。
核心功能¶
分支地图¶
- 右侧边栏 Session Git 标签:围绕当前会话展示分支树——各分支从何处 fork、自有轮次数、已合并程度。
- 左侧边栏 Session Git 面板:列出工作区内所有分叉树。
一键合并¶
- 主会话中可对某分支点 Merge here;分支内可点 Merge into parent。
- 输入斜杠命令
/merge同样触发合并;单独输入/merge会打开分支选择器。
增量合并¶
对同一分支再次合并时,默认只带入自上次合并以来的新内容。需要从 fork 点重来可加 --all。
默认静默投递¶
合并产生的 digest 默认进入队列,在你下一条消息时随上下文交给 Agent,不中断当前对话。输入框上方有一条提示条说明合并已排队。若希望 Agent 立刻行动,可加 --wake,或在 -- 后写备注(与 digest 一并发送)。
未合并提醒¶
回到主会话且某分支有新工作尚未合并时,输入框上方提示条提供 Merge here 或 Ignore;分支再完成一轮后会再次提醒。
Agent 侧能力¶
运行时上下文可告知 Agent 当前会话有哪些分支;配置开启 tools 后,Agent 可调用 session_branches 与 session_branch_merge。用户说「把分支里的结论带进来」时,Agent 可走这一套工具;经此路径读取的内容同样计入合并状态。
安装与启用¶
要求 DeepSeek Harness 0.2.1-rc.5 或更高版本(package.json 中 engines.dsh 与此一致)。
在 Harness 图形界面:打开 Plugins → Add plugin → Install a third-party plugin,填入 GitHub 仓库地址:
https://github.com/glk1220/dsh-session-git
从 GitHub 安装需要本机可访问 GitHub;也可下载仓库后,在同一对话框填写插件目录的绝对路径。
命令行安装:
dsh plugin --profile web add github:glk1220/dsh-session-git
按提示重启 Harness。
插件以当前 DSH 进程权限运行。安装第三方插件前,建议在 GitHub 上查看源码与 LICENSE,确认符合你的安全与合规要求。社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。
典型用法¶
界面流程¶
- 在回复下点 Branch into a new conversation,或从侧栏会话菜单选 Fork session,在分叉中探索。
- 结束后在分叉右侧 Session Git 中点 Merge into parent;或回到主会话,在输入框上方条带中点 Merge here。
- 在主会话照常发下一条消息;Agent 会在上下文中看到分支 digest 并回答。
侧栏可设 digest 粒度:Summary、Full、Conclusion only;Let the agent act right away 等价于 --wake。
斜杠命令¶
/merge [#number|title|id] [summary|full|last|Nturns] [--all] [--wake] [--up] [-- note]
/branches
| 形式 | 含义 |
|---|---|
/merge |
仅一个分支时直接合并;多个时合并唯一有新区间的分支,或列出供选择。在无子分支的分叉内,合并到父会话。单独输入打开分支选择器。 |
/merge #2 |
按地图上编号选择;标题(部分匹配)或 session id 前 4 位以上亦可。 |
summary / full / last |
digest 详细程度,默认 summary。 |
turns:3 |
仅最近 3 轮,全文细节。 |
--all |
忽略既往合并,从 fork 点重新合并。 |
--wake |
合并后立即唤醒 Agent。 |
--up |
将当前分支合并到父会话。 |
-- note |
-- 之后的内容作为你的消息与 digest 一并发送。 |
/branches |
在对话中打印分支地图。 |
digest 包含什么¶
digest 是交给 Agent 的背景材料。超长时会先压缩步骤细节。主要章节包括:
- 分支与本会话的关系:fork 位置、本次合并覆盖的轮次。
- 分支目标(若已设置)。
- 各轮:用户消息、Agent 回复要点、所用工具、委派给 subagent 的工作。
- 用户在分支中的决定(如对 Agent 提问的回答)。
- 变更文件与执行的命令。
- 待办列表与 compaction 摘要。
- 分支最终结论。
开头会说明:分支中的计划与 to-do 仅供记录、需你确认;若两会话共享工作目录,分支的文件改动已在磁盘上,以实际文件为准。
配置¶
在 profile 的 cordis.patch.yml 中,可覆盖 id 为 session-git 的整条 config:
| 选项 | 默认 | 含义 |
|---|---|---|
runtimeContext |
true |
在运行时上下文中告知 Agent 本对话有哪些分支(多为不变事实,减少重复推送)。 |
tools |
true |
提供 session_branches、session_branch_merge 工具。 |
maxDigestChars |
24000 |
单次 digest 字符上限,2000–200000。 |
maxContextBranches |
8 |
运行时上下文最多列出的分支数。 |
locale |
auto |
命令结果与 digest 语言:auto 随对话,zh / en 强制。 |
适用场景与注意¶
适合谁:经常在 Harness 里 fork 多路线探索、又希望主会话 Agent 自动继承分支结论与操作记录的开发者。
已知限制(来自上游 README):
- 排队中的合并类似排队消息:在 Agent 读取前若点 Stop 或重启 Harness,可能被取消;提示条会再次显示未合并,重新合并不丢分支内容。
- 静默合并不出现在对话流中(Harness 不渲染纯上下文注入),状态见输入框条带与分支地图。
- Subagent 会话不在地图上;其下分支挂在最近可见会话下。
DSH 生态理念是「一切皆插件」;Session Git 解决的是分叉探索与主会话上下文之间的断层,用分支树和 merge 把成果带回,而不必重新打字复述。