前言¶
DeepSeek Harness (DSH) 采用插件化架构。在开发或调试智能体对话时,开发者常需要复用历史对话片段、对比不同分支的上下文,或从任意历史节点继续提问。dsh-git 插件通过引入 Git 的核心概念,将对话过程转化为 DAG(有向无环图),提供了对话分支管理、节点选择与上下文重组的能力。
dsh-git 是什么¶
dsh-git 是 DeepSeek Harness Web 的一个客户端插件,由 ZicanC 维护。它不包含 dsh 可执行文件,仅提供插件模块。其核心价值在于将对话中的每个 Prompt + Answer 轮次视为一个不可变的 PA 节点,支持跨分支选择、有序上下文托盘以及多父 DAG 节点的生成。
核心功能¶
- 对话的 Git 风格管理:每个完成的 Prompt + Answer 轮次是一个
PA节点。这些节点是原子、可寻址且不可原地重写。 - 会话对话图:每个 Session 都有一个对话图,显示分支、合并边和当前
HEAD。 - 工作区项目图:显示工作区中所有已完成的 PA,支持折叠重复历史。
- 有序上下文托盘:允许从任何分支选择 PA 节点,并拖拽排序。排序后的顺序将决定发给主机的连续历史。
- 跨分支选择:支持自由跨分支选择节点。
- 主机端持久化:图形数据存储在主机端,遵循 DSH 配置文件,不依赖当前浏览器。
安装¶
该插件仅提供插件代码,不包含 dsh 可执行文件。如果使用 DeepSeek Harness 的源码检出,请在检出目录中调用 CLI。以下命令假设插件目录与 deepseek-harness 目录同级:
pnpm --dir ../deepseek-harness dsh plugin --profile web add "$PWD"
pnpm --dir ../deepseek-harness dsh --profile web
如果 dsh 已全局安装,可使用简写命令。注意不要在插件仓库目录内运行 pnpm dsh。
典型用法¶
- 在 DSH 中完成一个或多个普通轮次。
- 打开 Branches 标签页。当前主线路为实线,活动节点标记为
HEAD。 - 选择任意 PA 节点,它们将按创建顺序进入 Context Tray。
- 拖动 Context Tray 中的卡片,设置发给模型的精确顺序。
- 输入下一个问题,选择 Create merge branch and ask。
- 插件创建一个新的 Session,使用选定的轮次作为其有序历史,并打开该会话发送问题。当回答完成时,
HEAD移动到新节点。
Git 概念映射¶
| Git 操作 | dsh-git 操作 |
|---|---|
commit |
每个 Prompt + Answer 轮次是一个 PA 节点。 |
log --graph |
会话对话图与工作区项目图。 |
HEAD |
活动节点。 |
checkout |
使用 Switch to this branch 打开 DSH Session。 |
cherry-pick |
从任何分支选择 PA 节点并添加到有序的 Context Tray。 |
rebase |
主机按托盘中的顺序将选定的轮次重新编号为连续的历史。 |
branch |
从托盘提问会创建一个新的主机端 Session。 |
merge |
下一个 Prompt 和 Answer 成为记录所有源的多父 DAG 节点。 |
注意事项¶
- 预览行为:点击节点仅预览其内容,不更改上下文或当前 Session。
- 只读视图:工作区项目图是只读的。点击 PA 可打开详情检查器,点击“Open source Session”可跳转回原会话。
- 自包含:构建的插件除了 React 外是自包含的浏览器包。
- 数据模型:数据模型基于
TurnNode接口,包含 id、sessionId、turn、parentIds 等。
总结¶
dsh-git 为 DeepSeek Harness 提供了对话分支管理能力,允许开发者像管理代码一样管理对话历史。通过有序的 Context Tray 和多父 DAG 节点,它支持从任意历史片段继续对话,适用于需要精细控制上下文和分支的智能体开发场景。