在 DeepSeek Harness 中,开发者经常需要在会话上下文内直接管理仓库。dsh-git-flow 插件在 Composer 工具栏中提供了一个分支芯片。打开它,可以浏览、切换分支,创建新分支,并对选中的文件子集进行提交——提交消息由会话模型根据 diff 自动生成。
安装¶
插件依赖 Node ^22.19.0 || >=24.0.0 和 pnpm 10。
使用官方安装命令:
dsh plugin --profile gitflow-web add https://github.com/hunan36/dsh-git-flow
安装后,请在插件页面启用该插件。
功能概览¶
该插件提供以下核心功能:
- 浏览分支
- 切换分支
- 创建分支
- 提交选中的文件子集
- 提交消息由会话模型根据 diff 自动生成
- Push(推送)
使用方式¶
在 Composer 工具栏中,点击分支芯片(例如 [⑂ feature/login 3])打开菜单。菜单支持以下操作:
- 搜索分支
- 查看本地分支
- 新建分支
- 提交(Commit,仅在工作区有变更时启用)
- 刷新状态
安全边界与行为细节¶
插件在实现上做了以下安全与行为限制:
- 会话隔离:浏览器只发送
sessionId,主机根据该会话解析仓库路径。页面无法指定 Git 运行的目录。 - 命令执行安全:参数总是以数组形式传递,不使用 shell 字符串。配置
stdin: 'ignore'和GIT_TERMINAL_PROMPT=0,确保凭证提示不会挂起调用。 - Push 行为:
push命令永远不会传递--force或--force-with-lease,仅推送当前分支到上游(若上游不存在则自动设置)。 - 提交范围:提交面板仅暂存面板中勾选的文件。若未选中任何文件,会返回
git/no-files-selected,不会回退到隐式的git add -A。 - 分支切换:当工作区有未提交变更时,默认拒绝切换分支(返回
git/dirty-worktree)。仅当用户在确认对话框中点击第二次时,才会发送--force强制切换。 - 丢弃变更:仅在确认对话框中选择破坏性操作后执行。已跟踪路径回退到 HEAD(
git restore --source=HEAD --staged --worktree),未跟踪路径被移除(git clean -fd,不包含-x,保留忽略文件),冲突路径被拒绝而非自动猜测。
依赖项¶
- Node.js:
^22.19.0 || >=24.0.0 - pnpm:
10
结语¶
dsh-git-flow 将 Git 操作直接嵌入到 DSH 会话流中,通过 AI 辅助生成提交信息,减少了手动编写 Commit Message 的成本。