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

GitHub 仓库同步 wzw4429-crypto/dsh-github-sync

DeepSeek Harness
wzw4429-crypto21 天前有提交已提供中文文档扫描:含敏感能力

双向同步仓库并监控 CI 流水线

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

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

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

状态速览

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

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

验证判据与等级说明 →

可信度证据

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

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 22 处,展示前 16 条)
  • 发起网络请求
    client.js:899
    const res = await fetch('api/github-sync/status', { cache: 'no-store' });
  • 发起网络请求
    client.js:915
    const res = await fetch('api/github-sync/action', {
  • 读取本地文件
    lib/state.js:16
    if (!file || !existsSync(file)) return emptyState();
  • 读取本地文件
    lib/state.js:18
    const raw = JSON.parse(readFileSync(file, 'utf8'));
  • 写入本地文件
    lib/state.js:36
    mkdirSync(dirname(file), { recursive: true });
  • 写入本地文件
    lib/state.js:38
    writeFileSync(tmp, JSON.stringify(state, null, 2), 'utf8');
  • 写入本地文件
    lib/state.js:40
    renameSync(tmp, file);
  • 写入本地文件
    lib/state.js:42
    writeFileSync(file, JSON.stringify(state, null, 2), 'utf8');
  • 删除本地文件
    lib/state.js:43
    try { rmSync(tmp, { force: true }); } catch {}
  • 发起网络请求
    lib/github.js:86
    return this.request('GET', `/repos/${owner}/${repo}`);
  • 发起网络请求
    lib/github.js:91
    const data = await this.request('GET', '/user/repos', {
  • 发起网络请求
    lib/github.js:100
    const data = await this.request('PATCH', `/repos/${owner}/${repo}`, { body: { name: String(newName) } });
  • 发起网络请求
    lib/github.js:111
    const data = await this.request('GET', `/repos/${owner}/${repo}/actions/workflows`, { query: { per_page: 100 } });
  • 发起网络请求
    lib/github.js:119
    await this.request('POST', `/repos/${owner}/${repo}/actions/workflows/${encodeURIComponent(wf)}/dispatches`, {
  • 发起网络请求
    lib/github.js:131
    const data = await this.request('GET', base, {
  • 执行外部命令来自配置/变量
    lib/exec.js:27
    child = spawn(command, args, {
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-github-sync DSH 插件:GitHub 仓库自动双向同步 + Actions/CI 流水线 + 本地推送前检查。同一套能力同时暴露给 Agent 工具、Web 面板和定时器。 功能 | 能力 | 说明 | | 双向同步 | fetch → 计算 ahead/behind → 并入远端(快进 / merge / rebase,冲突即回滚)→ 跑推送前检查 → push | | 冲突策略 | report(默认,只报告不动手)/ merge / rebase / prefer-remote / prefer-local;任何冲突都会 abort 并回滚,绝不留半合并状态 | | 推送前检查 | checks 列表(shell 命令),onFail: block(阻止推送)或 warn(记一笔继续) | | Actions/CI | 自动补 .github/workflows/dsh-ci.yml(缺失时创建)、workflow_dispatch 触发、轮询 run 到完成、查看 runs/checks/status | | 工作流 | 列出 workflows、按 ref 分发触发(支持 inputs) | | 通知 | 同步/流水线事件按 notifyOn 过滤,经 agent.followup() 唤醒 agent |
展开完整文档(README 剩余 1 节)
dsh-github-sync

DSH 插件:GitHub 仓库自动双向同步 + Actions/CI 流水线 + 本地推送前检查。同一套能力同时暴露给 Agent 工具、Web 面板和定时器。

功能

| 能力 | 说明 |
| 双向同步 | fetch → 计算 ahead/behind → 并入远端(快进 / merge / rebase,冲突即回滚)→ 跑推送前检查 → push |
| 冲突策略 | report(默认,只报告不动手)/ merge / rebase / prefer-remote / prefer-local;任何冲突都会 abort 并回滚,绝不留半合并状态 |
| 推送前检查 | checks 列表(shell 命令),onFail: block(阻止推送)或 warn(记一笔继续) |
| Actions/CI | 自动补 .github/workflows/dsh-ci.yml(缺失时创建)、workflow_dispatch 触发、轮询 run 到完成、查看 runs/checks/status |
| 工作流 | 列出 workflows、按 ref 分发触发(支持 inputs) |
| 通知 | 同步/流水线事件按 notifyOn 过滤,经 agent.followup() 唤醒 agent |
| Web 面板 | 侧栏 "GitHub Sync" 面板:仓库卡片、状态、CI runs、一键 同步/流水线/触发CI/补CI文件、文件浏览器、全部仓库列表 + 一键加入同步/手动添加/移除,15s 自动刷新 |
| 仓库管理 | 全部仓库(/user/repos,需 PAT,缓存 5 分钟);「加入同步」自动克隆到 cloneRoot/<owner>/<name>(可指定本地路径;已是 git 仓库的路径直接注册);运行时加入的仓库持久化在状态文件,「移除」只出列表、不动磁盘 |
| 改名同步 | 面板/工具改名 → GitHub PATCH /repos(需 admin)+ 本地 git remote set-url;配置仓库的改名记在状态文件的映射里(不改 cordis.patch.yml),运行时仓库直接改条目;历史/CI 缓存跟随新名 |
| 活跃置顶 | 按「未提交改动(+1000) + 顶层文件最新 mtime(权重100) + 最近提交(权重60)」的时近度阶梯分排序,活跃仓库自动排前面;卡片显示「使用中 / N 分钟前」徽章 |
| Actions 详情 | 卡片「Actions 运行」区:最近 runs 列表 → 点开某次 run → jobs 与每一步(step)的结论;带 ↗ GitHub 跳转 |
| 本地文件 | 卡片「本地文件」区:直接读本地克隆磁盘(不走 GitHub、不需 PAT),目录/文件树 + 文本预览(≤128 KB,二进制只给元数据);路径被约束在仓库根内(path-escape 防护) |
| Agent 工具 | github_sync / github_status / github_ci(runs/checks/status/run-detail)/ github_workflow / github_repos(list/add/remove/rename)/ github_files(source: local(默认)/github) |
| 定时 | intervalMinutes 周期自动同步全部仓库;runOnStart 启动即跑一次 |

安装

零运行时依赖,直接从 GitHub 安装(需要 dsh 自带 pnpm):

dsh plugin --profile <profile> add https://github.com/wzw4429-crypto/dsh-github-sync

发到 npm 之后也可以用包名安装:dsh plugin --profile <profile> add dsh-github-sync。安装后重启 dsh 生效。

配置放在哪里

包内的 cordis.patch.yml 只声明插件行、不带任何配置;你的 token、仓库列表、定时周期等写在 profile 自己的 patch 层($DSH_HOME/profiles/<profile>/cordis.patch.yml),按 id + 模块名覆盖:

- id: github-sync
name: dsh-github-sync
config:
token: 'ghp_...'
repos:
- name: my-repo
path: D:\path\to\repo

这样密钥与机器路径不会进插件仓库,插件升级也不会覆盖你的配置。面板/工具运行时「加入同步」的仓库存在状态文件里,无需改配置。

认证(PAT)

两种方式,二选一(token 优先):

1. 环境变量(推荐):设置 GITHUB_TOKEN=<PAT>(或改 tokenEnv 指向别的变量名)。PAT 需要 repo 权限(私库)和 workflow 权限(触发 Actions / 写 workflow 文件)。
2. 配置直填:config.token: '<PAT>'。

token 绝不会出现在日志、工具输出、面板或错误消息里(redactedConfig 脱敏);git 的 fetch/push 通过 env 注入 http.extraheader 使用 PAT(不进进程参数),无 token 或非 github.com https 远端时回退系统凭据助手/SSH 密钥。

配置项(profile patch 层的 github-sync.config)

- id: github-sync
name: 'dsh-github-sync'
config:
enabled: true # 总开关 runOnStart: false # 启动 5s 后先跑一轮 intervalMinutes: 30 # 定时周期 tokenEnv: 'GITHUB_TOKEN' notifyAgent: true
notifyOn: [conflict, error, checks, pipeline] # 事件:conflict/error/checks/pipeline/pull/push
autoCommit: false # 同步前把脏工作树自动提交(否则脏树需并入时报 dirty) conflictPolicy: 'report' # report/merge/rebase/prefer-remote/prefer-local onCheckFailure: 'block' # 检查未单独声明 onFail 时的默认:block/warn repos:
- name: my-repo
path: D:\path\to\repo
remote: origin # 默认 origin branch: '' # 默认当前分支 mode: bidirectional # bidirectional/pull/push githubRepo: '' # 可选显式 owner/name;缺省从 remote URL 推断 workflowFile: '' # 可选,补 CI 文件名,默认 .github/workflows/dsh-ci.yml checks:
- name: test
run: 'npm test'
onFail: block # block/warn
pipeline:
triggerCi: true # 同步后 dispatch CI waitCi: true # 轮询到 run 完成 waitTimeoutMinutes: 10 pollIntervalSeconds: 20

状态与数据

- 状态文件:<profile>/github-sync-state.json(每仓库 lastSync / lastPipeline / history(尾 20 条)/ ci 缓存)。
- 同步语义:up-to-date / pulled / pushed / synced 为成功;dirty / diverged-report / conflict / checks-blocked 为安全停住(工作树与 HEAD 不受损);error 为 git/环境失败。

开发

语法检查 + 测试(35 项:config/state/checks/真实 git 同步 10 场景/github mock/pipeline/tools/host 冒烟/本地浏览防穿越/活跃度/改名/setRemoteUrl)
node --test test/run-tests.mjs

状态文件里的 "codeGen": N 是已加载代码的代号指纹:改完代码重启 dsh 后该值应更新,用于自检新代码是否生效。

环境要求

- dsh(DeepSeek Harness)能加载 bundle,自带 pnpm 与 Node
- Node ≥ 20(仅本地开发/测试需要)
- git 在 PATH 中;需要 GitHub API 功能(列全部仓库、Actions/CI、改名、私有库)时配置 PAT,仅做公开库拉取可以不用

许可证

MIT
预览分享卡片长什么样 ↓wzw4429-crypto/dsh-github-sync
分享 · DeepSeek Harness Hub
wzw4429-crypto/dsh-github-sync

双向同步仓库并监控 CI 流水线

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