dsh-git:为 DeepSeek Harness 提供的 Git 风格对话管理

前言

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。

典型用法

  1. 在 DSH 中完成一个或多个普通轮次。
  2. 打开 Branches 标签页。当前主线路为实线,活动节点标记为 HEAD。
  3. 选择任意 PA 节点,它们将按创建顺序进入 Context Tray。
  4. 拖动 Context Tray 中的卡片,设置发给模型的精确顺序。
  5. 输入下一个问题,选择 Create merge branch and ask。
  6. 插件创建一个新的 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 节点,它支持从任意历史片段继续对话,适用于需要精细控制上下文和分支的智能体开发场景。

GitHub | 插件目录

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

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

小夜