DeepSeek Harness 右侧栏里的 Git 面板 —— 同一套能力也注册成十五个 Agent 工具。
30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add alanhaskey/dsh-gitmate该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · dev
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 8 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-gitmate(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 09:38:58
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 23 处,展示前 12 条)
- 读取本地文件lib/plugin.js:50
newest = Math.max(newest, statSync(new URL(`./${file}`, entry)).mtimeMs); - 发起网络请求lib/client.js:599
const response = await fetch(PANEL_URL, { - 读取本地文件lib/git-core.js:654
entries = readdirSync(dir, { withFileTypes: true }); - 读取本地文件lib/git-core.js:893
if (existsSync(join(gitDir, file))) return name; - 读取本地文件lib/git-core.js:1441
if (!existsSync(target)) mkdirSync(target, { recursive: true }); - 写入本地文件lib/git-core.js:1441
if (!existsSync(target)) mkdirSync(target, { recursive: true }); - 读取本地文件lib/git-core.js:1453
if (!existsSync(path)) { - 写入本地文件lib/git-core.js:1454
writeFileSync(path, gitignoreText.endsWith('\n') ? gitignoreText : `${gitignoreText}\n`, 'utf8'); - 读取本地文件lib/git-core.js:2407
const info = statSync(abs); - 读取本地文件lib/git-core.js:2409
const buffer = readFileSync(abs); - 写入本地文件lib/git-core.js:2812
writeFileSync(path, next, 'utf8'); - 发起网络请求lib/rpc.js:489
async fetch(request) {
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 查看diff
- 生成提交信息
- 带回退的提交图谱
README
由 DeepSeek 最新模型翻译生成GitMate
DeepSeek Harness 右侧栏里的 Git 面板 —— 同一套能力也注册成十五个 Agent 工具。
macOS、Linux、Windows(PowerShell)都能跑。
跨平台这件事上真正会出问题的只有两处,都在 Host 侧:命令怎么引号(PowerShell 里单引号靠翻倍转义,POSIX 是闭合-转义-重开;按 process.platform 选择)和环境变量怎么传(走 shell 请求的 env 字段,而不是 POSIX 的 VAR=value 前缀——Windows 上那不是命令)。除此之外只用 node:path,不写 lib/ 之外的东西,也不写任何需要执行位的文件。沙箱起不来时的提示会按平台给对应的建议(Linux 是 bubblewrap/Landlock,macOS 是 sandbox-exec,Windows 是 %TEMP%)。
看改动、读差异、暂存、用生成的说明提交、合并、贮藏、同步、回滚历史——都不用离开面板。每个操作同样是 Agent 能调用的工具,所以在对话里说一句也能做。
dsh plugin --profile web add github:alanhaskey/dsh-gitmate
装好后重启一次 DSH,刷新页面,右侧栏「+」里就会出现 GitMate。
展开完整文档(README 剩余 1 节)
GitMate DeepSeek Harness 右侧栏里的 Git 面板 —— 同一套能力也注册成十五个 Agent 工具。 macOS、Linux、Windows(PowerShell)都能跑。 跨平台这件事上真正会出问题的只有两处,都在 Host 侧:命令怎么引号(PowerShell 里单引号靠翻倍转义,POSIX 是闭合-转义-重开;按 process.platform 选择)和环境变量怎么传(走 shell 请求的 env 字段,而不是 POSIX 的 VAR=value 前缀——Windows 上那不是命令)。除此之外只用 node:path,不写 lib/ 之外的东西,也不写任何需要执行位的文件。沙箱起不来时的提示会按平台给对应的建议(Linux 是 bubblewrap/Landlock,macOS 是 sandbox-exec,Windows 是 %TEMP%)。 看改动、读差异、暂存、用生成的说明提交、合并、贮藏、同步、回滚历史——都不用离开面板。每个操作同样是 Agent 能调用的工具,所以在对话里说一句也能做。 dsh plugin --profile web add github:alanhaskey/dsh-gitmate 装好后重启一次 DSH,刷新页面,右侧栏「+」里就会出现 GitMate。 内部标识(Loader 行 id dsh-git、标签页 key)和包名不同名是有意的:行 id 是你已有配置行的键,改它会让已保存的设置失配。 看改动与提交 - 四组:冲突 / 已暂存 / 改动 / 未跟踪。每行是「改动类型用文字(修改 / 删除 / 新增)+ 路径 + 该文件 +N −M」,行内可暂存、取消暂存、丢弃,任何破坏性操作都要二次确认。 - 按编辑器的方式看差异:左右两个行号栏、+/− 标记、整行淡色底,被替换的行只给真正变化的那一段加深底色。点文件就地展开,再点收拢;hunk 上下文可以从 3 行展开到 24 行。 - 列表级操作只有一行,而且按需出现,按钮里带着各自的数量。 - 修订上次提交:把暂存的改动折进上一个提交;说明框留空就保留原说明。 - 列表与提交区之间是可拖动的分割线,拖动改变说明框高度。 - 正在忙的时候面板会说话:每个操作都显示一个转圈提示并写明在做什么(「正在提交…」「正在审阅暂存的改动…」),而不是只把按钮变灰。提示和消息一样固定在列表区底部、分割线上方,不会盖住提交区。 AI 功能 | 功能 | 做什么 | | 生成提交说明 | 从暂存差异生成。你写了几句就变成「补充优化」——模型拿到你的原文,保留你的意图和细节、把缺的补上,而不是另写一条。 | | 提交前审阅 | 读一遍暂存的改动,只报告真会出问题的地方——算错的结果、漏掉的边界、没处理的错误、被提交的密钥、留下的调试输出、没有测试的行为改动。点一条跳到那个文件的差异。 | | 拆分提交 | 按意图把暂存改动分成能独立成立的提交,每组给一条说明。方案是草稿,随你改:改任意一组的说明、把某组并入上一组、删掉某组、让模型重新规划、一次提交一组,或按顺序全部提交。每次提交后其余文件仍保持暂存。 | | 解释改动 | 用 2–5 条要点说清一个文件改了什么,不必逐行读。 | | .gitignore | 从项目的清单文件和目录结构推断规则。一个按钮创建,一个按钮补齐缺的并整理整个文件:去掉重复条目、去掉已被更宽的规则覆盖的条目(node_modules/ 之后的 node_modules/.cache/)、合并空行;只有在不会改变含义时才按分组归类——文件里有 ! 规则(git 按最后一条匹配决定,重排会改变结果)或你自己的注释时,顺序原样保留,并会说明这一点。 | 调用模型的按钮都标了 AI。生成一律用当前会话的默认模型,没有第二个模型要配。 分支、历史、远程 - 分支选择:切换、新建、删除,以及把任意分支合并进当前分支。冲突会列出需要你决定的文件,可以中止。 - 提交图:git log --all,所有分支和远程跟踪分支都在图上,不是一根线。线条由 Host 计算并随数据一起下发,所以「上下接不接得上」是可断言的,不靠肉眼。两个关键做法: - 竖直段是"钉在行底"的元素,不是固定高度盒子里的坐标。一行的高度并不固定(展开提交时会高很多),固定盒子里画线会在每两行之间留缝——那正是之前"悬空"的来源之一。 - 多条泳道等在同一个提交上时,除了被认领的那条,其余都要释放。否则它们会一直等一个已经发出的提交,在图上拖着一条没有提交的长线——"悬空"的另一个来源。 分支在这里开出时从节点下方起笔、在这里汇聚时从节点上方收笔,都由一段曲线接到节点;同一色相分三档粗细:本提交自己的线最重、分支曲线次之、只是路过的泳道最轻。展开一个提交看完整信息、改了哪些文件,以及能对它做什么——回滚 / 还原 / 遴选 / 变基 / 打标签。点文件看它在这次提交里的差异。 - 远程:推送 / 拉取 / 获取,以及一键同步(fetch → 快进 → push)。分支分叉时它会拒绝合并,而不是替你造一个合并提交。 - 贮藏:把改动收起来,之后取回(pop / apply / drop)。 一个目录下多个仓库 工作区根目录常常只是一堆项目的容器——它自己不是仓库,但下面有 alpha/、beta/。这种情况下"是不是仓库"对每一个项目都答"不是",于是原来只会提示你初始化。 现在面板会在这个根目录下找仓库(限深 3 层、跳过 node_modules/vendor/dist 这类目录、最多 40 个),列出来让你选一个,选中之后整个面板就操作那一个;顶部会出现一个仓库标签,点它回到列表。根目录本身就是仓库时只列出它自己,不会把里面的子模块当成可选项。 安全边界:面板只会接受会话目录之内的路径——/etc 或者用 ../.. 爬出去的路径一律被忽略,回落到会话目录本身。工具体也是一样,Agent 传一个子目录就能操作那个子仓库(git rev-parse 自己会找到仓库根)。 初始化 不是仓库时,历史(分支图表)按钮不可点——没有仓库就没有历史可看;设置仍然可以进入——面板不按预期工作时,人第一个想去的就是设置。如果面板开着的时候仓库消失了(切换了文件夹、.git 被删掉),视图会退回改动列表,而不是让按钮亮着一个显示不出来的页面。 一键初始化仓库并写入本机提交身份;.gitignore 两个按钮。不需要你从一串技术栈里选——插件自己读项目再决定。 配置 设置存在插件自己的 cordis.patch.yml 行里,升级后仍在,也能在插件页看到。下面每一项都是按钮或勾选框,除非你要写自定义指令,否则不用打字。 | 键 | 默认 | 含义 | | messageLanguage | auto | 生成文本的语言:auto(跟随仓库)/ en / zh。未设置或 auto 时,面板自己的消息读作中文。 | | messageStyle | conventional | conventional(feat: …)或 plain。 | | messageTemplate | — | 追加在最后的额外指令,因此会覆盖默认规则。 | | signoff | false | 追加 Signed-off-by。 | | defaultBranch | main | 「初始化」创建的分支名。 | | maxPromptBytes | 24000 | 每次交给模型的差异文本上限。 | | maxDiffBytes | 80000 | 工具返回的补丁文本上限,超出截断。 | | commandTimeoutMs | 60000 | 单条 git 命令超时;网络命令是它的四倍。 | 安全边界 - 破坏性操作都不是一键完成:丢弃、删分支、丢贮藏、变基、回滚,都先问一次,并说明会失去什么。 - 回滚和还原是两件事,因为本来就不同:回滚移动分支指针、改写历史;还原追加一个反向提交,对已推送的内容安全。回滚会改写已推送历史时,面板会先警告。 - 「撤销这个提交」和「回滚到此处」也是两件事:点最新提交上的按钮是撤销它,它的改动按你选的方式保留或丢弃;点更早的提交才是把分支指针移回去。提示里报的是实际被撤销的那个提交,并且永远说明丢弃了几个——包括"一个都没丢"。 - 被权限模式拦下时会说是哪个模式:只读模式写不了 .git,所以提交、切换分支这类操作会被拒——提示会写明当前模式并说明切到哪个模式;如果已经是 danger-full-access 仍被拒,那是这台机器的沙箱后端在拒绝写入,需要重启 DSH。区分这两件事,才知道该改设置还是该重启。 - git 的诊断固定用英文:LC_ALL=C。插件自己的文案照旧按设置本地化,但 git 的输出需要保持稳定——lib/text.js 的短语表是按英文句子匹配的,而本地化的 git 会让它失效;Windows 上更糟,git 按控制台代码页输出、管道按 UTF-8 解码,中文会变成乱码。 - 面板也跟随它所属会话的权限模式:面板的每个请求都绑定着一个会话(它就是这个会话的标签页),所以 git 以该会话的权限执行,而不是部署默认值。这条很重要——如果一台机器上的默认模式(workspace-write)跑不起来,面板会完全无法执行 git,而用户在自己的会话里怎么设都没用。 - 每个工具调用跟随调用方会话的权限模式:git 以该会话自己的 sandbox policy 执行,而部署默认值只作为兜底。面板那条路径没有会话,因此完全不插手策略,交给 Host 决定。 - git 完全跑不起来时不再每 5 秒重试:unavailable 不是暂时性失败——每次探测都会重走一遍沙箱启动,而在 Windows 上失败的那次已知会让整次运行失去写权限。面板说明一次并给出「重试」按钮,而不是反复触发。 - 「无法运行 git」和「这里还不是仓库」是两种失败,面板分开说:前者给原因和重试,不会让你去 git init 一个其实存在、只是读不到的仓库。沙箱起不来这类环境问题会有一条中文说明,并附上原始原因。 - 模型的输出当作不可信输入:审阅里指向未暂存文件的条目会被丢弃;拆分方案没覆盖全部暂存文件会被标记;解析不出来的回答原样附上,而不是显示成"没有发现问题"。 - 不会自动提交、自动推送、自动修复。AI 功能产出的是给你做判断的材料,不是替你做的决定。 开发 node test/smoke.mjs # 634 项断言,跑真实 git,不需要 DSH lib/plugin.js 入口;实现在文件变化时重新加载 lib/impl.js 操作 + 十五个 Agent 工具 lib/git-core.js git 操作、补丁解析、提交图泳道 lib/messages.js 文本生成的提示词与模型调用 lib/review.js 提交前审阅与拆分提交 lib/text.js 面板消息的中英文本 lib/rpc.js 面板的 HTTP 路由 lib/client.js 浏览器一半(无构建步骤、无依赖) 整个包没有任何依赖——不用装东西,也不会在 profile 里复制一份。lib/client.js 是手写的,改它只需要刷新页面;改 Host 那一半需要重载 bundle。 许可 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
alanhaskey/dsh-gitmate
DeepSeek Harness 右侧栏里的 Git 面板 —— 同一套能力也注册成十五个 Agent 工具。
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,125已汉化MCP
71.7
AI 架构文档生成器sopaco/deepwiki-rs
🚀 Litho 已进化为 Terrain —— 给你的 AI 智能体一张会呼吸的代码库地图。
★ 3,157已汉化DSH
70.8
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
AI 编程纪律方法包GanyuanRan/Aegis
让 AI 编程 agent 变得可信:少返工、更安全、说“完成”前先给证据。
★ 1,384已汉化DSH
69.6
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9