logo
0
1
WeChat Login
feat: 新增 CNB 代码批量迁移工具支持多平台迁移

CNB Code Import Skill

一个 AI Agent Skill,基于 cnbcool/code-import 迁移工具实现,让用户通过自然语言对话即可批量迁移代码仓库到 CNB 平台。

用户只需告诉 AI "帮我把 GitHub 上的仓库迁移到 CNB",AI 会自动引导收集必要信息、校验环境、组装参数并调用 cnbcool/code-import Docker 镜像执行迁移,全程无需手动编写命令。

✨ 功能特性

  • 🤖 对话式迁移 — 通过自然语言描述需求,AI 自动完成参数收集与执行
  • 🔄 多平台支持 — 覆盖国内外 10+ 主流代码托管平台
  • 📦 批量迁移 — 一次迁移整个团队/组织的全部仓库
  • 🗂️ 大文件处理 — 自动检测并转换大文件为 Git LFS
  • 并发执行 — 支持最多 10 个仓库并发迁移
  • 📋 增量同步 — 已迁移仓库自动跳过,支持断点续传
  • 🔒 安全确认 — 危险操作由 AI 主动提示风险并二次确认

📋 支持的平台

平台标识说明
CODINGcoding腾讯云开发者平台
GitHubgithub
GitLabgitlab支持自建实例
Giteegitee码云
阿里云 Codeupaliyun云效代码管理
华为云 CodeArtshuaweicloudCodeArts Repo
腾讯工蜂gongfeng腾讯内部代码托管
Giteagitea开源自建平台
CNBcnbCNB 之间互迁
通用平台common支持 HTTP/SSH 克隆的任意平台

🚀 快速开始

1. 环境准备

本 Skill 运行依赖 Docker,需要在执行迁移的机器上安装 Docker。

Ubuntu / Debian
apt-get update && apt-get install -y docker.io # 或使用官方一键脚本 curl -fsSL https://get.docker.com | bash
CentOS / RHEL
yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce docker-ce-cli containerd.io
Fedora
dnf install -y dnf-plugins-core dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo dnf install -y docker-ce docker-ce-cli containerd.io
macOS
brew install --cask docker open /Applications/Docker.app
Windows
winget install -e --id Docker.DockerDesktop # 安装后需重启系统
Linux 通用(一键脚本)
curl -fsSL https://get.docker.com | bash

Linux 安装后启动服务:

systemctl start docker systemctl enable docker

💡 macOS 和 Windows 上 Docker Desktop 会自动管理服务,无需手动启动。

2. 安装 Skill

根据你使用的 AI Agent,选择对应方式安装本 Skill:

OpenClaw

在 OpenClaw 中通过 Skill 市场搜索 cnb-code-import 安装,或手动添加:

openclaw skill add https://cnb.cool/cnb/skills/cnb-code-import-skills

CodeBuddy (Craft)

在 CodeBuddy 中打开 Skill 管理面板,点击「添加 Skill」,输入仓库地址:

https://cnb.cool/cnb/skills/cnb-code-import-skills

或在项目目录下克隆后,CodeBuddy 会自动识别 SKILL.md

git clone https://cnb.cool/cnb/skills/cnb-code-import-skills cnb-code-import

Claude Code

将 Skill 仓库克隆到本地工作目录,Claude Code 会自动加载 SKILL.md 作为上下文:

git clone https://cnb.cool/cnb/skills/cnb-code-import-skills cnb-code-import

Cursor

克隆仓库到项目目录后,在 Cursor 中打开该目录,AI 会自动读取 SKILL.md 获取 Skill 能力:

git clone https://cnb.cool/cnb/skills/cnb-code-import-skills cnb-code-import

其他 Agent

对于支持 Skill / Tool 加载的 AI Agent,将本仓库克隆到本地即可。Agent 读取 SKILL.md 即可获取完整的迁移能力:

git clone https://cnb.cool/cnb/skills/cnb-code-import-skills cnb-code-import

3. 准备 Token

迁移前需要准备两个访问令牌:

  • 源平台 Token — 在源代码托管平台生成(需仓库读取权限)
  • CNB Token — 在 CNB 生成
各平台 Token 权限要求
平台所需权限
CODING用户信息 - 只读、项目信息 - 只读、代码仓库 - 只读(需团队所有者或管理员)
GitHubrepo:allread:org(classic token)
GitLabread_api
Giteeuser_infoprojects
阿里云代码仓库 - 只读
CNBaccount-engage:rgroup-resource:r,授权范围:全部仓库/制品库
工蜂apiread_repository
华为云仓库读写
Gitearead:organizationread:repositoryread:user

💬 使用方式

安装 Skill 后,直接用自然语言与 AI 对话即可。AI 会根据你的需求自动引导操作。

示例对话

迁移整个组织

用户:帮我把 GitHub 上的仓库迁移到 CNB

AI:好的,我需要以下信息来执行迁移:

  1. 你的 GitHub Token(需要 repo:allread:org 权限)
  2. CNB 目标组织名称
  3. CNB Token

用户:GitHub Token 是 ghp_xxx,CNB 组织是 myorg,CNB Token 是 cnb_xxx

AI:收到,我来确认一下迁移配置……(确认后自动执行)

迁移指定仓库

用户:我想把 GitLab 上的 frontend 和 backend 两个仓库迁移到 CNB 的 myteam 组织

从自建平台迁移

用户:我们有个自建的 GitLab,地址是 https://gitlab.company.com,帮我迁移到 CNB

华为云迁移

用户:帮我把华为云 CodeArts 上的代码迁移到 CNB,我有 AK/SK

AI 会自动处理

  • ✅ 检查 Docker 环境是否就绪
  • ✅ 根据平台类型引导用户提供必要信息
  • ✅ 校验 Token 和参数的完整性
  • ✅ 对危险操作(强制推送、rebase 等)主动提示风险并确认
  • ✅ 组装正确的迁移命令并执行
  • ✅ 展示迁移进度和结果

⚙️ 迁移参数参考

以下参数由 AI 在对话过程中自动收集,用户无需记忆命令行格式。

必要信息

信息说明
源平台代码当前所在平台(GitHub / GitLab / CODING 等)
源平台 Token源平台的访问令牌
CNB 组织名CNB 上的目标根组织(需提前创建)
CNB TokenCNB 平台的访问令牌

可选配置

配置说明默认行为
指定仓库只迁移特定仓库迁移全部仓库
源平台地址自建实例的 URL自动识别公有云地址
并发数同时迁移的仓库数量5(最大 10)
大文件处理是否自动转 LFS自动转换
跳过已有仓库CNB 侧已存在时跳过不跳过
只下载不推送仅克隆到本地克隆 + 推送
手动选择仓库生成列表文件供筛选迁移全部

⚠️ 危险操作

以下操作有数据风险,AI 会主动提示并要求确认:

操作风险说明
强制推送覆盖 CNB 侧仓库历史,不可恢复
Rebase 同步可能遇到冲突需人工解决,可能丢失提交
不完整推送忽略损坏的 LFS 文件,数据可能不完整

🔧 工作原理

用户对话 → AI 收集信息 → 校验环境 → 组装参数 → 执行 Docker 迁移 → 输出结果
  1. 对话收集 — AI 根据用户意图,引导提供源平台、Token、目标组织等信息
  2. 环境校验 — 自动检查 Docker 是否安装并可用
  3. 参数组装 — 将对话信息转换为迁移脚本参数
  4. 执行迁移 — 通过 Docker 运行 cnbcool/code-import 镜像完成迁移
  5. 结果反馈 — 展示迁移进度、成功/失败数量和日志

迁移过程中的文件存放在工作目录(默认 ~/code-import-workspace):

~/code-import-workspace/ ├── <仓库克隆的临时文件>/ ├── successful.log # 已成功迁移的仓库记录 └── repo-path.txt # 手动选择迁移的仓库列表(可选)

❓ 常见问题

Q: 超过 256MB 的大文件怎么处理?

默认自动将大文件转换为 Git LFS。转换后 commit ID 会发生变化。

Q: 获取仓库列表失败?

通常是 Token 权限不足。AI 会根据平台提示需要的具体权限。

Q: 迁移中断了怎么办?

再次发起同样的迁移请求即可,已成功的仓库会自动跳过。

Q: push 失败提示先 pull?

告诉 AI 需要强制推送,AI 会提示风险并在你确认后执行。

Q: 只想迁移部分仓库?

直接告诉 AI 你想迁移哪些仓库,或者让 AI 生成仓库列表供你筛选。

Q: 可以迁移自建 GitLab / Gitea 实例吗?

可以,告诉 AI 你的实例地址即可。

📁 项目结构

cnb-code-import/ ├── SKILL.md # Skill 定义文件(AI Agent 读取) ├── README.md # 本文档 └── scripts/ └── migrate.sh # 迁移执行脚本

📄 License

MIT