dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
IDEA 风格的 Git 工作台:提交图(泳道与引用标签)、日志筛选、提交详情、并排与统一差异、按 hunk 暂存、零上下文的细粒度模式、本地更改(含修补与 sign-off)、跟随重命名的文件历史、逐行注解、Stash、分支操作、比较、标签、交互式变基与冲突解决。按活跃会话盖上 Assisted-by trailer 记录提交由哪个模型产生,并把已有的 trailer 渲染成标签,让 AI 参与的历史可追溯。
An IntelliJ IDEA-style Git workbench for the DeepSeek Harness Web UI. It adds a Git icon to the sidebar and opens a full central panel rather than a small widget.
After installing or updating the bundle, refresh the Harness page once so the browser loads the latest Client half. The Host half activates immediately.
rebase -i todo.Assisted-by, Co-authored-by, Generated-by, Signed-off-by, …) render as chips in commit details, so a commit that names its model is traceable at a glance; blame a line, open its commit, and the trailer is right there.path:12-30 @ 1f073153; file and commit menus carry the same reference. Paste it straight at the AI to point at one region.Git has no concept of "which AI wrote this", so the plugin records it the git-native way — trailers — and displays whatever the repository already carries.
Assisted-by: dsh/ when it creates a commit. This is the common case, because agent commits go through the bash tool rather than this panel.Assisted-by: dsh// (session ) from the live agents that work in this repository, which carries the model the session actually runs plus its session id. A trailer you wrote yourself is never duplicated, and --amend --no-edit is left untouched. When no agent matches the repository it falls back to the documented agentDefaultModel service and labels the value default-selection rather than pretending to be a per-agent fact.Both stamping paths are configurable (see below); display cannot be disabled because it only reads what is already in the repository.
The agent field names (id, options.model, options.provider, session.header.cwd) were confirmed against a live Agent object in this Harness (0.2.1-rc.2) with a temporary read-only probe, and every read is guarded so a different shape degrades to the fallback instead of throwing.
The bundle row accepts three fields (see cordis.patch.yml); all default to the values shown.
Field · Default · Meaning stampAttribution · true · Append the Assisted-by trailer to commits this panel creates. agentCommitHint · true · Register the prompt section that asks agents to stamp their own commits. attributionKey · Assisted-by · Trailer key used when stamping.
IDEA features that need an editor surface (gutter blame, jump-to-source), rebase reword with inline message editing, drag-and-drop rebase ordering, changelists and Local History are intentionally out of scope for this panel.
Two attribution caveats worth knowing: when no live agent is working in the repository the stamp falls back to the *default* model selection (and says so in the value), and a commit made by the agent in a terminal is only traceable if that agent honoured the prompt-section request.
--.GIT_TERMINAL_PROMPT=0, GIT_PAGER=cat, GIT_EDITOR=:).File · Role index.js · Host plugin: authenticated web route, workspace discovery, RPC dispatch git-core.js · Git execution, validation and parsers (plain Node ESM, unit-tested) client.js · Browser half: slot registration, locale, graph, diff and all views cordis.patch.yml · Bundle patch that inserts the Host row locale/*.json · Plugin Manager title and description
F5 refreshCtrl/Cmd+Enter commit from the message boxUp/Down move through the log; Enter opens the first changed fileEsc closes a diff, menu, popover or dialogThe runtime has no dependencies beyond the Harness; every check below uses only Node.js and Git. Three of them run against a demo repository, which is generated rather than committed (a nested .git inside this one would become a gitlink instead of a usable fixture):
node test-make-demo.mjs ..\idea-git-demo # create the fixture: branches, merge, tag, stash, dirty treenode test-release.mjs # release checklist: manifest, files, locale, icon, patch, syntax
node test-client-load.mjs # bundle syntax + slot/locale registration
node test-host-route.mjs # authenticated route, workspace scan, RPC + real git
node test-smoke.mjs ../idea-git-demo # git engine read/write/rename/binary/stash/conflict/hunk/trailer checks
node test-rebase.mjs # interactive rebase plan (pick/squash/drop)
# Optional UI checks (need the dev-only React test renderer):
# npm install --no-save --prefix .tmp-test react@18.3.1 react-test-renderer@18.3.1
node test-render-hunks.mjs # selective hunk staging in the diff viewer
node test-render-all.mjs # every tab, diff overlay, compare and rebase dialogs
node test-render-location.mjs # diff line selection, blame copy, clipboard textThe Git engine also has a test adapter (test-runner.mjs) that redirects child output to files for sandboxed environments where piped stdio is blocked. The checks that mutate a repository always work on a copy, so the fixture survives a run.