中文名:cf 部署一键gitworks 英文名:GitWorks 国内直连 GitHub 不方便,为省事而做的「一键建仓 + 推送」中间代理。 Cloudflare Workers 出站不受本地网络影响,Worker 本身无状态,用完即焚。
- 统一面板上传:浏览器上传 zip → 自动创建仓库(私有/公开)→ 推送 → 返回仓库链接;上传带实时进度条,成功/失败及原因明确展示
- 点击式多平台批量发布:平台以可点击 chips 呈现,可多选,一次上传按 todo 列表依次推送到选中的所有平台(逐个显示 排队中/上传中/成功/失败)
- 可配置多平台(聚焦海外平台):默认内置 GitHub(国内直连不便);GitLab 等可通过面板「平台配置」添加(支持私有域名);Gitee 国内可直连、无需代理,如需使用也可在面板自行添加
- 自动建仓 + 自动解压:上传 zip 自动解压,顶层若只有单一包裹目录则剥掉该层,内容直接进入仓库根(README 等文件在根目录,不会塞进子目录)
- 自动获取项目名:仓库名留空时自动推断——顶层目录名 >
package.json的name> README 首个#标题;也可手动填写 - 远程仓库管理:面板列出所选平台仓库(名称/可见性/分支/链接),可一键删除(二次确认)
- 历史操作日志:记录时间/平台/仓库/URL/成败,面板实时展示(存 KV)
- git push 直推代理(GitHub):
git push https://oauth2:<token>@xxxx.com/talay0998/<仓库>.git main自动建仓 - 账号密码登录:会话 cookie(7 天),未登录接口一律 401
- layui 风格后台布局:左侧导航 + 顶部栏 + 内容区(上传发布 / 远程仓库 / Git 下载 / 历史日志 / 平台配置 / 开发者接入),卡片式、微信绿配色,CSS 内嵌零外链
- 开发者接入:
- HTTP API(
/api/v1/*,Bearer Token 鉴权):推送代码(逐文件 JSON 或 zip)、列仓库、删仓库 - MCP Server(
/mcp?token=<API_TOKEN>):暴露push_repo/list_repos/delete_repo工具,AI IDE(opencode / Claude Code / Cursor)可一键接入上传
- HTTP API(
- Git 下载(GitHub → R2 缓存 → 国内直链):面板「Git 下载」页搜索 GitHub 公开仓库(GitHub Search API)→ 一键下载 tar.gz;Worker 从 GitHub 拉取后缓存到 R2,二次下载直接命中 R2(
X-Cache: HIT),下载地址走 worker 域名xxxx.com/dl/<owner>/<repo>,国内可访问 - 安全:zip 路径穿越校验、单文件 ≤1MB、token 打码展示、API Token 面板可重置、敏感信息存 Worker secret 或 KV 不落仓库
| 模块 | 技术 |
|---|---|
| 运行时 | Cloudflare Workers |
| 框架 | Hono (TypeScript) |
| 构建 | Bun + wrangler |
| 存储 | Cloudflare KV(平台配置 / 会话 / 日志)+ Cloudflare R2(git 下载缓存) |
| AI | Cloudflare Workers AI(预留,后续接入) |
| 样式 | Tailwind CSS(编译内嵌,layui 风格后台布局) |
| 解压 | fflate(Worker 内 zip 解析) |
R2 用途:仅作 git 下载缓存。下载流程 —— 面板搜索 GitHub 仓库 → Worker 从 GitHub 拉取
tar.gz并写入 R2 → 返回xxxx.com/dl/<owner>/<repo>直链;同一仓库再次下载直接命中 R2 缓存(X-Cache: HIT),避免重复回源 GitHub,国内可正常访问。默认*.r2.dev域名国内不可达,本项目下载走 worker 绑定的自定义域名xxxx.com。
github-proxy/
├── src/
│ ├── index.ts # 全部路由 + 平台实现 + 内嵌前端 UI
│ ├── input.css # Tailwind 入口
│ └── tailwind.ts # 构建产物(CSS 字符串模块,勿手改)
├── scripts/
│ └── inline-css.ts # 构建:把 tailwind.css 转成 TS 模块内嵌
├── tailwind.config.js
├── wrangler.toml # Worker 配置(owner 变量 + KV/R2/AI 绑定)
└── package.json
bun install
bun run build:css # 编译 Tailwind 并生成内嵌模块
bun run dev # 本地调试 wrangler dev
bun run deploy # build:css + 部署到 Cloudflare平台在面板「平台配置」页管理(存 KV),字段:
| 字段 | 说明 |
|---|---|
| ID | 唯一标识(字母数字 _ -) |
| 类型 | github / gitee / gitlab |
| 名称 | 显示名 |
| 账号/组织 | 各平台用户名或组织 |
| Token | 各平台访问令牌(编辑时留空保留原值) |
| 域名 | 仅 GitLab 需要(如 https://gitlab.example.com) |
首次进入默认内置 GitHub(token 从 Worker secret GITHUB_TOKEN 生成)。GitLab 等海外平台在面板「平台配置」添加;Gitee 国内可直连、非默认,如需要也可自行添加。
Worker secret(wrangler secret put <名>,勿写入代码/仓库):
| secret | 说明 |
|---|---|
GITHUB_TOKEN |
GitHub PAT(需 repo 权限) |
GITEE_TOKEN |
Gitee 私有令牌(可选,国内直连无需代理) |
ADMIN_PASS |
面板登录密码 |
API_TOKEN |
开发者 API/MCP 令牌(也可在面板「开发者接入」页生成/重置,存 KV) |
Worker 绑定(wrangler.toml):
| 绑定 | 说明 |
|---|---|
KV |
平台配置 / 会话 / 日志 |
R2 |
git 下载缓存桶 gitworks-cache |
AI |
Workers AI(预留) |
git remote add gw https://oauth2:<GITHUB_TOKEN>@xxxx.com/talay0998/<仓库名>.git
git push gw main访问提示:Cloudflare 免费
*.workers.dev域名(带-dev后缀)在国内无法直接访问。 请先绑定自己的域名(Worker → Triggers → Custom Domains,本项目用xxxx.com),或使用特殊网络环境,否则 API / MCP / 面板均不可用。
- 打开面板
https://xxxx.com并登录 - 左侧菜单 → 开发者接入 → 查看/复制 API Token;点「重置 Token」可重新生成(旧 token 立即失效)
- Token 用于所有 HTTP API 与 MCP 请求鉴权(
Authorization: Bearer <token>,或 URL 参数?token=)
# platform 可选:github / gitlab / 面板「平台配置」里添加的平台 id(Gitee 国内直连,按需配置)
# 推送代码到 GitHub(自动建仓,逐文件)
curl -X POST https://xxxx.com/api/v1/repos \
-H "Authorization: Bearer <API_TOKEN>" -H "Content-Type: application/json" \
-d '{"platform":"github","name":"my-app","visibility":"private",
"files":[{"path":"README.md","content":"# hello"},
{"path":"src/main.py","content":"print(1)"}]}'
# 推送代码到 GitLab(需先在平台配置添加)
curl -X POST https://xxxx.com/api/v1/repos \
-H "Authorization: Bearer <API_TOKEN>" -H "Content-Type: application/json" \
-d '{"platform":"gitlab","name":"my-app","visibility":"private",
"files":[{"path":"README.md","content":"# hello"}]}'
# 列仓库 / 删仓库 / 用 zip(platform 同理)
curl -H "Authorization: Bearer <API_TOKEN>" "https://xxxx.com/api/v1/repos?platform=github"
curl -X DELETE -H "Authorization: Bearer <API_TOKEN>" "https://xxxx.com/api/v1/repos?platform=github&name=my-app"
curl -X POST https://xxxx.com/api/v1/repos -H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" -d '{"platform":"gitlab","name":"x","zip":"<base64>"}'
# Git 下载:搜索 GitHub 仓库
curl -H "Authorization: Bearer <API_TOKEN>" "https://xxxx.com/api/search?q=hono"
# 下载仓库 tar.gz(R2 缓存,二次命中)
curl -L -H "Authorization: Bearer <API_TOKEN>" -o hono.tar.gz "https://xxxx.com/dl/honojs/hono"API Token 在面板「开发者接入」页查看/重置(也可用 Authorization: Bearer <token> 或 ?token=)。
工作原理:Worker 内置 MCP Server(streamable HTTP),AI IDE 通过 mcp-remote 连到 /mcp?token=<API_TOKEN>,即可让 AI 直接调用工具把代码一键推送到 GitHub/Gitee。
配置到 AI IDE 的步骤:
- 本地安装 MCP 远程客户端(任一 AI IDE 通用):
npm install -g mcp-remote
- 先验证连通(能列出工具说明鉴权成功):
npx mcp-remote https://xxxx.com/mcp?token=<API_TOKEN>
- 把 MCP server 写进你的 AI IDE 配置:
- opencode(
opencode.json):{ "mcpServers": { "github-proxy": { "command": "npx", "args": ["mcp-remote", "https://xxxx.com/mcp?token=<API_TOKEN>"] } } } - Claude Code / Cursor:在 MCP 设置里添加同样的 command/args。
- opencode(
- 重启 AI IDE,工具
push_repo/list_repos/delete_repo即可用。
工具说明:
| 工具 | 参数 | 说明 |
|---|---|---|
push_repo |
platform, name, visibility?, description?, files[{path, content, base64?}] |
推送代码到指定平台(自动建仓),返回仓库地址 |
list_repos |
platform |
列出平台仓库 |
delete_repo |
platform, name |
删除仓库(不可恢复) |
platform取面板「平台配置」里的平台 id,默认内置github(GitLab 等配置后也可用)。
示例提示词:"把当前项目发布到 GitHub 的 github-proxy 仓库" → AI 调用 push_repo 完成。
- 加平台类型:
src/index.ts实现一个平台类(ensureRepo/push/deleteRepo/list),在buildOps()注册,面板平台配置下拉加类型即可 - 改 UI:编辑
INDEX_HTML(Tailwind 类),跑bun run build:css后重新部署 - 换域名/绑定:Worker → Triggers → Custom Domains 绑定新域名(当前
xxxx.com) - 日志/会话/平台配置:存于 KV(key
log:v1、session:*、platforms:v1),量大时按需清理 - 安全提醒:定期轮换各平台 token;平台配置(含 token)存 KV,请勿把 KV 内容外泄;
wrangler.toml与源码不含密钥
- git 下载(clone/fetch):放开
git-upload-pack代理,实现通过 Worker 反向下载仓库(与 push 同协议,本地连不上 GitHub 也能 clone);公开仓免 token,私有仓带 token - CF AI 增强(Workers AI):接入 Cloudflare Workers AI,自动生成仓库描述 / 项目名,上传时智能补全 README 与分类标签
- 平台扩展:接入 GitLab(gitlab.com / 私有实例)、腾讯 CNB、自建 Gitea/私有仓库;统一平台抽象,面板下拉自动列出
- 二次认证(2FA):接入 Microsoft Authenticator 等 TOTP 扫码登录,登录二次验证,支持恢复码与强制/可选策略
- 多账号管理:支持一个面板下配置多个 GitHub/Gitee 账号与组织,上传时可选归属
- 仓库管理:面板内列出/删除远程仓库、查看文件树、只读浏览(已建仓库)
- 推送策略增强:大项目分批/并行推送、进度展示、失败重试与断点续传
- Webhook / CI 集成:仓库创建与推送后回调自有服务(TAPD / 飞书 / 钉钉通知)
- 运维增强:操作日志分页/导出、访问审计、限流与防爆破、面板口令走 CF 可加密变量
- 前端体验:可编辑 JSON 配置(平台/默认可见性/描述模板)、深色模式、多语言
本项目完全开源,仅供学习、研究和个人使用。
- 不承担任何法律责任:使用本项目产生的任何直接或间接损失(包括但不限于仓库数据丢失、误删、账号封禁、token 泄露、平台违规等),作者不承担任何责任。
- 谨慎使用:删除仓库、重置 token、发布到公网等均为不可逆操作,请在使用前确认;涉及真实账号/生产数据的操作请自行评估风险。
- 安全提醒:本项目会存储各平台的访问 token(Worker secret / KV),请妥善保管面板登录密码、API Token 与平台 token,定期轮换;请勿将任何 token 提交到公开仓库。
- 国内网络:
*.workers.dev(-dev后缀)域名国内不可直连,请绑定自有域名或使用特殊网络环境,相关网络合规责任由使用者自行承担。 - 各平台(GitHub / Gitee / GitLab / Cloudflare)的服务条款以各平台官方为准,请合规使用。
MIT