First-class Git tools for the model: status / diff / log / commit / branch with validated messages and paths - no bare-shell git calls.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-plugin-git-workflow
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:truelove-dreamer/dsh-plugin-git-workflow
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
This plugin publishes its README in Chinese only.
DeepSeek Harness 插件:给模型提供一等公民的 Git 工作流工具 —— 仓库状态、diff、规范 commit、历史、分支,不再需要裸 bash/pwsh 手搓 git。
背景
DSH 内置没有任何 git 工具。模型只能通过 bash/pwsh 调用 git,输出原始、易错、难解析,还容易把用户输入拼进 shell 命令(注入风险)。这个插件把 Git 变成结构化、安全、可解析的工具集。
工具
| 工具 | 作用 |
|---|---|
git_status |
分支、upstream、ahead/behind、staged / unstaged / untracked / conflicts 清单(porcelain 解析) |
git_diff |
工作区 diff 或 staged diff(--cached),支持 --stat 摘要、路径过滤、行数截断 |
git_log |
最近提交(hash/日期/subject),可选 files 列出每个提交改动的文件 |
git_commit |
校验 message 后 git add(可选路径)+ git commit -m;清晰报出 "nothing to commit" |
git_branch |
本地分支列表,标记当前分支 |
安装
dsh plugin --profile web add dsh-plugin-git-workflow
挂载(profile cordis.patch.yml 或 agent preset):
- insert:
- id: git-workflow
name: dsh-plugin-git-workflow
使用
git_status # 看当前仓库状态
git_diff # 看未暂存改动
git_diff staged: true # 看已暂存改动
git_commit message: "fix: ..." # 提交(全部已暂存内容)
git_commit message: "feat: ..." paths: ["src/a.js"] # 先 add 再提交
git_log count: 20 files: true # 最近 20 条 + 改动文件
git_branch # 分支列表
所有工具都接受 workdir(默认会话工作目录,相对路径按会话目录解析)。
设计说明
- 零 shell 注入:所有 git 调用经 harness 的 shell 执行器(
ctx.shell)运行,参数逐个引号转义,用户输入不可能被解释为 shell 语法——同时继承沙箱与审批语义(read-only 会话无法 commit)。 - 输入校验:commit message 非空、≤2000 字符、无 NUL;路径拒绝绝对路径与
..穿越(反斜杠归一化后检查),保证不越出仓库。 - 纯逻辑可单测:解析(porcelain / diff-stat / log / branch)与校验全部在
lib/git.js纯函数里,npm test零依赖。 - 结构化输出:每个工具返回带 schema 的 JSON,render 输出可读文本;失败返回
{ ok:false, exitCode, message }而非裸报错。
诚实边界
- git 调用经 harness 的 shell 执行器(
ctx.shell)运行,继承沙箱与审批语义;路径校验是词法级的,符号链接/工作树外路径依赖 git 自身约束。read-only 模式下写操作(git add / commit)会被沙箱拒绝。 - commit 需要仓库已配置
user.name/user.email(git 自身报错会透传)。 git_log的files解析假设--name-status输出格式;非常规编码的路径可能显示不完整。- 不含 push / pull / rebase 等网络操作(后续版本可加,需审批语义配合)。
本地开发
cd plugins/dsh-plugin-git-workflow
npm test # node --test,零依赖
接线集成测试(需 harness checkout 的 Cordis):见仓库根 test-wiring.mjs。
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-git-graph★ 8076
Git branch selector and Git graph for the dsh web GUI: switch branches and explore branch-lane and commit history from the conversation header.
Akimiya-z/codex-guard#dsh★ 139
Pre-submit pull-request hygiene checks inside DeepSeek Harness: scans the current diff for TODO leftovers, hardcoded secrets, and non-conventional commit subjects.
Cerbur/clutch-dsh#clutch-dsh-worktree★ 28
Adds a Worktree view to DSH Web UI that groups Sessions by Git worktree while keeping DSH as the source of truth.
lehhair/dsh-diff-viewer★ 27
PiUI-style diff viewer replacing the stock DiffBlock for write/edit tool calls.
DietCokewithSugar/dsh-user-experience★ 20
Finds potential UX issues in your project: automatically reviews React/TypeScript code, pinpoints each problem, and gives concrete suggestions.
DamonKoy/dsh-web-ui#dsh-git-graph★ 19
Git branch selector and Git graph in the conversation header of the dsh web GUI.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.