deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
English | 中文
A dsh (DeepSeek Harness) out-of-tree plugin that adds a git branch selector to the chat
composer, immediately left of the model seat (conversation.input.right).
Install the plugin from npm (published as @dsh-mixxed/dsh-client-ui-git-branch):
dsh plugin --profile web add @dsh-mixxed/dsh-client-ui-git-branch
The package declares dsh.bundle (its bundled cordis.patch.yml), so dsh plugin add
automatically appends it to the profile's dsh.profile.bundles layer stack and the plugin
mounts on the next boot — no manual cordis.patch.yml editing.
Upgrading an install that predates the bundle declaration: remove the legacy ui-git-branch
row from $DSH_HOME/profiles/<name>/cordis.patch.yml — the bundle layer now supplies it, and
leaving both would mount the id twice.
Restart the profile (new plugins are discovered at boot) and refresh the browser page. In a session whose workspace is a git repository, the branch chip appears left of the model seat.
pnpm install
pnpm run typecheck
pnpm test
pnpm run build
npm pack # produces dsh-mixxed-dsh-client-ui-git-branch-<version>.tgz
dsh plugin --profile web add ./dsh-mixxed-dsh-client-ui-git-branch-<version>.tgz
git is installed and the session workspace is a git repositoryorigin/main) with colored ahead/behind commit counts (↑2 amber / ↓3 green) and a red
gone marker when the upstream ref was deleted; local-only branches show nothing. The trigger
chip carries the same badge when the current branch is out of syncgit switch -c); invalid names are flagged live, collisions surface git's message--dsw-* design tokensHEAD); unborn-HEAD repos still list the current branchThe list is split under two sticky headings:
master → origin/master, with ahead/behind counts).origin/HEAD symrefs and bare remote refs are excluded).Behavior:
git switch --track origin/feature → local feature tracking origin/feature); the branch
then moves into the local group.git switch); a blocked switch —
typically uncommitted changes that would be overwritten — pops a toast with git's own message.dsh --profile <name> --dump-config | Select-String ui-git-branch
The composed config shows the ui-git-branch row, and
$DSH_HOME/profiles/<name>/package.json lists @dsh-mixxed/dsh-client-ui-git-branch under
dsh.profile.bundles (auto-appended by dsh plugin add).
After the restart, the composer shows the branch chip; opening it reveals the grouped list, the search box, and the New branch action.
pnpm run typecheck # strict tsc over src + tests
pnpm test # vitest: host logic (fake runner) + real-git integration + jsdom component tests
pnpm run build # esbuild dual output → lib/index.js (node ESM) + lib/client.js (browser CJS closure)
Test profile used during development: git-branch-dev (independent of the user's web profile),
booted with dsh --profile git-branch-dev --port 3800.
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。