🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

Git 自动同步 Zou82/dsh-plugin-git-sync

DeepSeek Harness
Zou8260 天前有提交已提供中文文档扫描:未发现敏感能力

自动提交推送代码,建仓改名全程安全托管

28.6/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Zou82/dsh-plugin-git-sync
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/09/26·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 60 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-credentials@deepseek-ai/dsh-tools@deepseek-ai/dsh-user-questions
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 自动提交推送代码
  • 建仓前确认命名
  • 凭据安全处理

DeepSeek Harness 的 Git + GitHub 自动化插件:建仓库前先问、命名由你确认、随时改名,每次改代码自动同步,凭据安全处理。

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-git-sync 让 DeepSeek Harness(DSH)的 agent 自动完成 Git + GitHub 全流程的宿主插件: 1. 项目启动询问建仓:新项目开始时,agent 先询问你是否在 GitHub 建仓;仓库名必须经你确认,不满意可直接输入想要的名称,建仓后随时可改名。 2. 每次改代码自动同步:agent 每轮修改后调用 git_sync 提交推送;漏掉时由「回合结束兜底」自动同步(可配置)。 3. 凭据安全:GitHub 令牌存于 DSH 的凭据存储,绝不进入对话、远程 URL、进程命令行或任何输出。 完整设计文档见 DESIGN.md。 功能特性 - git_init:询问建仓 → 确认/自定义仓库名(冲突自动建议 name-2)→ 本地 git init + GitHub 建仓 + 首次提交推送;已有 git 仓库也可一键关联到 GitHub(建仓 + remote + 推送现有内容) - git_rename:建仓后改名(GitHub 改名 + 本地 remote 同步 + 状态更新,旧链接 301 重定向) - git_sync:提交并推送(自动 pull --rebase,冲突时列出冲突文件清单并停下交给你,绝不 force push;支持 create_branch 任务分支与 include 定向提交)
展开完整文档(README 剩余 1 节)
dsh-plugin-git-sync

让 DeepSeek Harness(DSH)的 agent 自动完成 Git + GitHub 全流程的宿主插件:

1. 项目启动询问建仓:新项目开始时,agent 先询问你是否在 GitHub 建仓;仓库名必须经你确认,不满意可直接输入想要的名称,建仓后随时可改名。
2. 每次改代码自动同步:agent 每轮修改后调用 git_sync 提交推送;漏掉时由「回合结束兜底」自动同步(可配置)。
3. 凭据安全:GitHub 令牌存于 DSH 的凭据存储,绝不进入对话、远程 URL、进程命令行或任何输出。

完整设计文档见 DESIGN.md。

功能特性

- git_init:询问建仓 → 确认/自定义仓库名(冲突自动建议 name-2)→ 本地 git init + GitHub 建仓 + 首次提交推送;已有 git 仓库也可一键关联到 GitHub(建仓 + remote + 推送现有内容)
- git_rename:建仓后改名(GitHub 改名 + 本地 remote 同步 + 状态更新,旧链接 301 重定向)
- git_sync:提交并推送(自动 pull --rebase,冲突时列出冲突文件清单并停下交给你,绝不 force push;支持 create_branch 任务分支与 include 定向提交)
- git_status:查看同步状态(分支 / 远端 / 前后端差异 / 未提交文件)
- 回合结束兜底自动同步(autoSync 可配 true / false / "ask")
- 文件监听(保存即同步):工作区文件一变化就自动提交推送(可配防抖毫秒、自定义忽略规则;fs.watch 不可用时自动轮询回退)
- 描述性提交信息:兜底提交带变更文件摘要;可引导 agent 使用 Conventional Commits(feat/fix/chore(scope): summary)
- 提交前敏感文件扫描(.env、密钥等)、大文件告警
- 自动设置 git 提交身份(repo-local,不动全局配置)

环境要求

- DeepSeek Harness Desktop(DSH)2.x,profile 基于 Cordis 插件体系
- 本机已安装 Git(git --version 可用)
- 一个 GitHub 账号 + 令牌(见下方「配置令牌」)

安装

1. 构建打包

npm install
npm run build # 产出 lib/
npm pack # 产出 dsh-plugin-git-sync-.tgz

2. 装入 DSH profile

假设你的 profile 目录是 ~/.dsh/profiles/web(在 DSH Desktop 中即 web profile):

cd ~/.dsh/profiles/web
pnpm add /path/to/dsh-plugin-git-sync-.tgz

3. 注册 bundle

编辑 profile 的 package.json,把插件加入 dsh.profile.bundles:

{
"dsh": {
"profile": {
"bundles": [ "...其它 bundle...", "dsh-plugin-git-sync" ]
}
}
}

4. 重启 DSH Desktop

完全退出并重新打开 DSH Desktop。插件装载后,日志会出现:

[I] [git-sync] git-sync: 插件已加载(GitHub 同步已启用)

新开对话后,agent 就能使用 git_init / git_sync / git_rename / git_status 四个工具。

踩坑提示:如果 bundle 声明或加载失败,DSH 的「启动恢复」机制会把插件自动加入禁用列表(startup-recovery/state.json 的 disabledBundles),表现为「看起来启动正常但插件没加载」。修复问题后,需要手动把插件从该文件的 disabledBundles 中移除再重启。

配置

插件有两类配置:GitHub 令牌(凭据)和插件设置。两者都可以在 DSH 设置界面里改(设置 → 插件 → 插件配置 → GitHub 同步 卡片,0.2.0 起内置),也支持直接编辑文件,效果相同且实时生效(无需重启)。

1. 配置 GitHub 令牌(必须)

位置:~/.dsh/.credentials.yaml(DSH 凭据文件),或在上述设置卡片中直接填写(令牌只写不读,不出现在界面上)。

在 refs: 下添加一行:

version: 1
refs:
DEEPSEEK_API_KEY: 你的-其他-密钥 GITHUB_TOKEN: github_pat_xxxxxxxxxxxx

令牌权限要求(GitHub → Settings → Developer settings → Personal access tokens):

| 令牌类型 | 需要的权限 |
| Fine-grained PAT(推荐) | Administration: Read and write(建仓)、Contents: Read and write(推送)、Metadata: Read |
| Classic PAT | repo(整个 scope) |

安全提示:令牌创建后只显示一次;请勿把令牌写进任何会被提交到 git 的文件。

2. 配置插件设置(可选,有默认值)

位置:DSH 设置界面 → 插件 → 插件配置 → GitHub 同步卡片;或 ~/.dsh/settings.yaml 的 git-sync: 段(二者等价,实时生效)

git-sync:
github:
username: 你的GitHub用户名 # 建仓 owner;留空则用令牌对应账号 visibility: private # 默认仓库可见性:private / public defaultBranch: main insecureTls: false # 本机 TLS 被拦截时设为 true(见「常见问题」) auth: method: extraheader # git 凭据注入方式:extraheader / askpass git: committerName: "" # 提交作者名;留空用 GitHub 用户名 committerEmail: "" # 提交作者邮箱;留空用 GitHub noreply 邮箱 autoSync: true # 回合结束兜底:true 自动推送 / false 关闭 / "ask" 询问 askBeforeInit: true # 项目启动时是否询问建仓 init: createGitignore: true initialCommitMessage: "chore: initial commit" safety: scanForSecrets: true # 提交前扫描敏感文件并阻止提交 maxFileSizeMb: 50 # 大文件告警阈值(GitHub 上限 100MB)

也可以在 cordis.patch.yml 的 config: 段提供同样的配置(二选一,patch 内配置随包分发、settings 是运行时可改的)。

3. 配置项一览

| 配置项 | 默认值 | 说明 |
| github.username | 空(用令牌账号) | 建仓 owner(个人名或组织名) |
| github.visibility | private | 默认仓库可见性 |
| github.defaultBranch | main | 默认分支名 |
| github.insecureTls | false | 本机 TLS 证书链异常时跳过校验(仅可信网络建议开启) |
| auth.method | extraheader | git 凭据注入方式 |
| git.committerName / committerEmail | 空 | 提交身份,留空自动用 GitHub 账号 + noreply 邮箱 |
| autoSync | true | 回合结束兜底策略 |
| askBeforeInit | true | 是否询问建仓 |
| init.createGitignore | true | 建仓时生成 .gitignore |
| init.initialCommitMessage | chore: initial commit | 首次提交信息 |
| safety.scanForSecrets | true | 敏感文件扫描 |
| safety.maxFileSizeMb | 50 | 大文件告警阈值 |
| commit.conventional | true | 引导 agent 使用 Conventional Commits 提交信息 |
| fileWatcher.enabled | true | 文件监听:保存文件后自动提交推送(需 autoSync: true;忽略 .git/node_modules) |
| fileWatcher.debounceMs | 1500 | 连续变化的防抖毫秒数(合并一次编辑为一次同步) |
| fileWatcher.ignore | dist, build, __pycache__, ... | 额外忽略的目录/文件名(逗号分隔,按路径片段匹配) |
| fileWatcher.pollMs | 5000 | 文件监听不可用时的轮询回退间隔(轻量 git status 检查) |

使用

插件工具在新开对话中可用(当前对话的工具列表是固定的)。典型流程:

① 建仓(含仓库名确认/自定义)

我准备在 D:\my-project 开始一个新项目(目录为空),帮我建 GitHub 仓库并写一个 Python 脚本。

- agent 调用 git_init → 询问「是否建仓」(选私有/公开/暂不)
- 询问「仓库名使用 my-project?」→ 选「自定义名称」输入你想要的名称(不满意可改)
- 名称冲突时自动建议 my-project-2 或让你重输
- 自动完成本地 init + GitHub 建仓 + 首次提交推送

② 改名

把仓库名改成 better-name。

- agent 调用 git_rename → 确认 → GitHub 改名 + 本地 remote 同步(旧链接 301 重定向)

③ 改代码后自动同步

加一个参数解析功能。

- agent 改完代码调用 git_sync 提交推送;漏掉时回合结束自动兜底推送

安全设计

- 令牌零泄露:git 凭据通过 GIT_CONFIG_ 环境变量注入 http.extraheader(Basic auth,x-access-token 用户名),不写 remote URL、不写 .git/config、不进进程命令行;所有 git/API 输出经脱敏
- 绝不 force push:始终 pull --rebase + 普通 push,冲突停下交给你
- 敏感文件防护:提交前扫描 .env、.pem、id_rsa、*.key 等并阻止提交
- 状态目录自动忽略:插件状态存于项目内 .dsh-git-sync/,建仓时自动写入 .gitignore
- 大文件告警:超过阈值(默认 50MB,GitHub 上限 100MB)先确认再提交

插件状态存储

每个项目一个状态文件:/.dsh-git-sync/state.json(仓库名、远程地址、最近同步等),已自动加入项目的 .gitignore,不会进入提交。

常见问题

| 现象 | 原因与解决 |
| 推送报 remote: invalid credentials | GitHub 的 git 协议端点只接受 Basic auth(插件已内置 x-access-token + 令牌的 Basic 注入);若你手动改过,确保不要用 Bearer |
| 访问 api.github.com 报 UNABLE_TO_VERIFY_LEAF_SIGNATURE / git 报 SEC_E_NO_CREDENTIALS | 本机存在 TLS 证书链拦截(安全软件/代理)。设置 github.insecureTls: true(跳过证书校验 + git 换 openssl 后端),或修复本机证书信任 |
| 插件状态 pending (waiting for services: ...) | 插件 inject 声明了运行时不存在/不该声明的服务。本插件只声明 tools/credentials/userQuestions;logger 是 Cordis 内置、session 事件走 ctx.on |
| 插件「没加载」但启动无报错 | 首次加载失败被「启动恢复」自动禁用:检查 startup-recovery/state.json 的 disabledBundles,移除插件名后重启 |
| 找不到 git 命令 | 先安装 Git 并确保在 PATH 中 |
| 仓库名不合法/被占用 | git_init 会校验命名规则(1–100 字符、- _ .、不能以 . 开头结尾)并在占用时建议后缀或让你重输 |

开发

npm install
npm run typecheck # 类型检查
npm run build # 构建到 lib/

真实令牌冒烟测试(建仓 → 推送 → 改名 → 清理,会在你的 GitHub 上创建临时仓库并自动删除):

$env:DSH_GITHUB_SMOKE_TOKEN = "github_pat_..."
node scripts/smoke-github.mjs

License

MIT
预览分享卡片长什么样 ↓Zou82/dsh-plugin-git-sync
分享 · DeepSeek Harness Hub
Zou82/dsh-plugin-git-sync

自动提交推送代码,建仓改名全程安全托管

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部