본문으로 건너뛰기
H

dsh-git

hy-sde/dsh-git

Agentic git plumbing for DeepSeek Harness: the host ctx.git service (diff capture/parsing, hunk staging, commit/push/log over the subprocess seam) backing the commit and review tools in @hy-sde-org/dsh-tool-git — a standalone plugin with no upstream harne

설치

dsh plugin --profile web add github:hy-sde/dsh-git

README

dsh-git — agentic git commit + review for DeepSeek Harness

Two standalone packages, installable as one plugin for the DeepSeek Harness CLI:

packageroleinstalled by users?
@hy-sde-org/dsh-gitthe plugin: host-plane ctx.git service (bundle row + preset example)yes
@hy-sde-org/dsh-tool-gitthe model-facing tools (commit / commit_apply / review) + git:tools prompt sectionyes

This is the oh-my-pi agentic git commit + review surface (portal port_omp.md item: commit) ported onto the harness ctx.git service contract as a standalone plugin with zero upstream harness changes: the service row ships as a cordis.patch.yml bundle, the tool row ships as a ready-to-copy agent preset, and every @deepseek-ai dependency resolves from the npm registry at the 0.1.1-rc.2 baseline — so it installs on official DeepSeek Harness releases (dsh-v0.1.1-rc.2 and later) exactly as it runs in the hy-sde fork.

The surface

  • commit — read-only analysis of the current git changes: staged (or auto-staged working) tree, per-file add/delete counts, bounded diff text, lock-file hints, and a suggested conventional-commit split-plan skeleton. The model authors a precise SplitCommitPlan and passes it to commit_apply.
  • commit_apply — validate-then-execute: every staged file must be covered exactly once, lock files are placed automatically on the group owning their sibling manifest, hunk selectors are validated against the real diff, dependencies are resolved topologically (cycles rejected before anything is written), and each commit is created atomically in dependency order. Any failure resets the index — nothing is lost.
  • review — parallel code review over git changes (working tree, staged, or a commit range) with dedicated reviewer subagents. Every finding is ranked P0–P3 with a confidence score; the tool returns all findings sorted by severity plus a ship/reject verdict. Reviewers are read-only and never edit files or run builds.

Install

pnpm install --global @deepseek-ai/dsh

Direct from npm (published)

dsh plugin --profile web add @hy-sde-org/dsh-git @hy-sde-org/dsh-tool-git

Then copy the preset from packages/git/examples/agent-preset/ to ~/.dsh/.agent-presets/<id>/ and select it in the Web UI preset picker:

mkdir -p ~/.dsh/.agent-presets/my-git
cp packages/git/examples/agent-preset/agent.cordis.yml \
   packages/git/examples/agent-preset/preset.yml \
   ~/.dsh/.agent-presets/my-git/

From the git checkout (pre-publish / development)

git clone git@github.com:hy-sde/dsh-git.git
cd dsh-git
pnpm install
pnpm run build

GIT_TGZ="$(cd packages/git && pnpm pack --silent --pack-destination /tmp)"
TOOLGIT_TGZ="$(cd packages/git/tool-git && pnpm pack --silent --pack-destination /tmp)"
dsh plugin --profile web add "$GIT_TGZ" "$TOOLGIT_TGZ"

Verify

dsh web --dump-config        # the git row is present in the base bundle

Uninstall

Remove the git row from the base bundle and the tool-git row from any preset that mounts it, then remove the packages:

dsh plugin --profile web remove @hy-sde-org/dsh-git @hy-sde-org/dsh-tool-git

Project layout

packages/git/              @hy-sde-org/dsh-git — the ctx.git service
  cordis.patch.yml         host-bundle insert row (stock INSERT form)
  examples/agent-preset/   ready-to-copy user preset (tool row + config)
  src/                     service + diff/topo-sort/lock-files primitives
  tests/                   20 unit + 8 real-repo integration tests
packages/git/tool-git/     @hy-sde-org/dsh-tool-git — the model tools
  src/                     commit.ts / review.ts / prompt.ts
  tests/                   commit + review end-to-end tests (9 + 7)

Development

pnpm install
pnpm run check          # tsc --noEmit on both packages
pnpm run build          # tsc -p tsconfig.build.json per package
pnpm run test           # vitest (44 tests, real temp repos)
pnpm run release:check  # build + clean-tree + pack guard before publishing

관련 플러그인