DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Git Manager — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
G

dsh-git-manager

Git Manager

一个连接 GitHub 的 DeepSeek Harness 可视化 Git 管理器——提供引导式流程(分支 → 提交 → 推送 → PR → 审查 → 合并)、带有 PR/CI 徽章的提交图、一键 GitHub 登录,以及面向代理的结构化 Git 工具。其面板外观使用 DSH 主题令牌,因此会随宿主和每个

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:Dayi-Z/dsh-git-manager#f693d28b018bd4362ffb81bf4a378478bdaa9c49
README兼容性版本

说明

一个连接 GitHub 的 DeepSeek Harness 可视化 Git 管理器——提供引导式流程(分支 → 提交 → 推送 → PR → 审查 → 合并)、带有 PR/CI 徽章的提交图、一键 GitHub 登录,以及面向代理的结构化 Git 工具。其面板外观使用 DSH 主题令牌,因此会随宿主和每个 dsh-web-ui 皮肤重新换肤。

兼容性与来源证明

Git Manager 以 dsh-git-manager 发布,当前版本为 2.0.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/17

版本

2.0.0stable
2026/9/17

相关插件

正在加载相关插件…

最新版
2.0.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/17
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Subagent Codex@deepseek-ai/dsh-subagent-codex基于官方 app-server 协议的一次性 Codex 子代理提供程序

README

dsh-git-manager

English | 中文

A GitHub-connected visual git manager for DeepSeek Harness — guided GitHub-Flow steps, commit graph with PR/CI badges, one-click GitHub login, and structured git tools for the agent.

Its panel chrome is built the way dsh-better-sidebar builds its own: every color, type role and motion value rides a DSH theme token, the chrome is flat (hairlines and hover fills, no shadows in the flow), and icon-only controls are round and transparent until hovered. Light/dark and any dsh-web-ui skin re-skin the panel for free — the panel contains no palette of its own and no theme selector. See DESIGN.md.

Renamed from gitcompass in 2.0.0. The package, the plugin row id (dsh-git-manager), the HTTP routes (/gitm/*) and the CSS surface (--gm-*) all moved together. The model-facing tool names (git_status, git_commit, github_pr_*, …) are deliberately unchanged — they name the operation, not the product.

Features

  • Guided Flow Strip (top bar): visual step indicator through the GitHub-Flow stages: Branch → Commit → Push → PR → Review → Merge.
  • Branch Management: view local/remote branches, switch, create, delete, rename, merge, fetch, checkout remote.
  • Changes View: file status (staged/unstaged/untracked), stage/unstage, commit, diff viewer (click any file to see changes), stash/pop, push, pull, fetch.
  • Commit Graph (GitLens-style lane visualization): 3-column layout (lane / SHA / subject), PR badges, cherry-pick to current, revert commit.
  • PR Management: list PRs, view detail (checks, reviews, comments), create PR, squash merge, review (Approve / Request Changes / Comment), add comment.
  • Issues: list issues, view detail, create new issue, add comment.
  • GitHub Integration: device-flow OAuth login, PAT input, gh CLI reuse, encrypted token storage (DPAPI on Windows).
  • Structured Git Tools (model-side): git_status, git_diff, git_branches, git_commit, git_push, github_pr_list/read/create/merge/comment/review, github_issue_list/read/create/comment.
  • Agent Activity Monitor: a live SSE feed of every agent tool call (start/completion/failure); a repo observer polls workspace state to surface bash git operations performed outside the plugin's tools (new commits / branch switches / working-tree changes).
  • In-Panel Approvals (panel-authoritative): write operations pop an approval card inside the panel where you can Approve or Reject directly; races the native DSH modal — first decision wins. The native channel's automatic rejection (including the ghost deny under approval policy never, e.g. the danger-full-access preset) cannot veto the panel card — the panel approval path works under any approval policy. Panel decisions are one-shot and memory-only; with no panel connected the call fails fast with a hint to open the panel (or pre-approve the tool there), instead of silently hanging for 5 minutes.
  • i18n: auto-follows the DSH Web locale (Chinese / English).
  • Theme: no palette of its own — follows the host theme tokens, so light/dark and third-party skins both apply.
  • Two host modes: when dsh-better-sidebar is installed the panel contributes itself as one of its sidebar tabs and gives up its own column to it; without it the panel keeps its standalone right-column card, now collapsible. See below.

Install

dsh plugin --profile web add dsh-git-manager

Or for local development:

dsh plugin --profile web add link:/path/to/dsh-git-manager

Restart dsh web, open a session bound to a git repository, and the "Git Manager" panel appears in the right-side column.

Architecture

src/
  index.ts           # Cordis plugin entry: register routes + tools + system prompt
  tools.ts           # Model-side structured git/GitHub tools (approval race for writes)
  core/types.ts      # Shared TypeScript types
  host/
    git-service.ts   # Workspace-bounded git operations
    routes.ts        # /gitm/* HTTP routes (incl. SSE stream /gitm/events, approval endpoint)
    event-bus.ts     # In-memory event bus + pre-approvals + panel approval broker + repo observer
    github-service.ts # GitHub REST wrapper (token never leaves host)
    github-auth.ts   # Device flow, DPAPI token storage, gh CLI sync
  client/
    index.ts         # Browser entry: picks the host (better-sidebar tab vs standalone)
    embed.tsx        # better-sidebar tab registration (structural, optional peer)
    shell.tsx        # Standalone host: the collapsible dock card
    Panel.tsx        # Main panel: Branches / Changes / Graph / PRs / Issues / GitHub / Agent
    styles.ts        # The whole stylesheet, on host theme tokens (see DESIGN.md)
    api.ts           # Typed fetch wrapper over /gitm/* routes
    events.ts        # SSE subscription + the shared event store behind the tab badge
    i18n.ts          # Bilingual dictionary (zh/en)
    icons.tsx        # The single inline-SVG icon source (16px grid, 1.5 stroke)
    graph.ts         # Commit DAG lane layout algorithm

Host modes

The plugin never claims a surface the host already owns:

  • dsh-better-sidebar present — the panel registers a sidebar tab (dsh-git-manager:panel, titled "Git Manager" / "Git 管理", idempotent) and does not mount its own column. You open it from the sidebar's new-tab list; it then persists with the session. The tab carries a live badge with the number of write operations waiting for your approval.
  • dsh-better-sidebar absent — the panel keeps its own right-column card, with a collapse handle in its header. Collapsing leaves just that header strip and stops all polling (nothing hits git in the background); the state persists.

The detection is a runtime probe (ctx.get('betterSidebar')), so better-sidebar stays an optional peer: no hard dependency, no build-time import of its types, and a failed registration degrades to the standalone card instead of losing the panel. It can be overruled with localStorage['gm.host'] = 'dock' | 'tab' (default: auto).

The panel also follows the session's workspace: it resolves the cwd of the session it belongs to (the tab's scope.cwd, else the active session), and re-selects the repository whenever you switch sessions — adding it to the list first if it was never seen (the host walks up to the innermost repository root, so a session sitting in a nested repo gets that repo rather than the workspace containing it). A repository you picked by hand is never overridden.

What counts as "the folder I am working in"

A session workspace is often only a container — D:\Harness holds a dozen independent repositories — so following the session cwd alone can never tell you which one you are actually editing. The host therefore also watches tools/execute: it reads the path arguments of the file tools (read, write, edit, grep, glob, …), walks up to the enclosing repository root, and auto-registers that repository into the picker. A file that does not exist yet counts too — the observation happens before the tool runs, so a write creating a new file is exactly the case that matters.

  • Auto entries are marked and shown as name · auto in the picker, so a shelf that grows by itself stays visible instead of mysterious.
  • They are capped at 20; the oldest auto entry is evicted first, and hand-added repositories are never touched.
  • repo:auto-added is emitted on the activity stream each time one lands.
  • Turn it off with config.autoRegisterRepos: false on the plugin row — the strip below still reports what is being touched.

A two-line strip under the repo picker is always visible and answers both questions at a glance:

Session folder   D:\Harness
Editing          D:\Harness\dsh-learn-wiki

The first line is the session folder the panel follows; the second is the folder the agent is touching right now (Editing for writing tools, Reading for read-only ones). When the second one is a known repository that is not currently selected, a Switch button appears beside it.

Development

pnpm install
pnpm run build

Build output: lib/ (host) and client/ (browser bundle).

node scripts/test-activity.mjs   # file-activity auto-registration (isolated temp home)

License

MIT