AI Hub Sync
团队 AI 开发资源集中管理工具 — 一键从共享 Git 仓库同步 Skills、Rules、MCP 配置到你的工作空间。

✨ 功能一览
| 功能 |
说明 |
| 🔄 选择性同步 |
在树形视图中浏览并勾选你需要的资源,按需同步 |
| 🌿 分支隔离 |
每人自动创建 user/xxx 个人分支,互不干扰 |
| 📡 自动同步 |
定时从 master 拉取最新更新(默认 30 分钟) |
| 📤 一键推送 |
本地修改的 Skill/Rule/MCP 一键推送到个人分支 |
| 🔀 选择性合入 Master |
挑选个人分支中的优质资源,创建新分支 + MR 合入 master |
| 🔁 多仓库切换 |
切换仓库时自动暂存/还原已同步资源,随时切回 |
| 🛡️ Git 隔离 |
同步的资源自动加入 .gitignore,不会污染项目仓库 |
| 📂 灵活目标 |
支持同步到 .codebuddy、.agent、.claude 或自定义目录 |
| 🔍 变更检测 |
实时文件监控,状态栏 + 侧边栏通知变更 |
| ⚡ 自动发现 |
自动识别 Hub 仓库中所有资源目录,无需手动配置 |
| 🔒 必须同步资源 |
支持标记某些资源为"必须同步",初始化后自动同步 |
📸 截图
侧边栏 — 资源浏览器 & 状态面板
选择性资源同步
在资源浏览器中点击资源进行同步或取消同步
变更检测 & 推送
检测到你对同步目录的变更后,点击推送即可同步到远程个人分支
🚀 快速开始
第一步:安装插件
在 VSCode 扩展商店搜索 AI Hub Sync 并安装。
第二步:初始化
- 点击左侧活动栏的 AI Hub Sync 图标(🤖 机器人)
- 侧边栏「状态」面板会显示 "请点击初始化"
- 点击初始化按钮,按提示填写:
- 仓库地址:你团队的 AI Hub Git 仓库地址(SSH 或 HTTPS)
- 同步目标目录:资源同步到哪个目录(默认
.codebuddy,也可选 .agent、.claude 或自定义)
- 插件会自动克隆仓库并为你创建
user/你的名字 个人分支
第三步:选择 & 同步资源
在 资源浏览器 面板中浏览 Hub 仓库里的所有资源(Skills、Rules、MCP 等),点击你需要的资源即可一键同步到工作空间。
搞定!🎉 你的 AI 资源已准备就绪。
📖 日常工作流
整体架构
┌───────────────────────────────┐
│ 远程 Git 仓库 (Origin) │
│ ┌─────────┐ ┌────────────┐ │
│ │ master │ │ user/xxx │ │
│ └────┬────┘ └─────┬──────┘ │
└───────┼─────────────┼─────────┘
fetch│ push│pull
┌────────────┼─────────────┼────────────┐
│ .ai-hub-cache/ (本地缓存仓库) │
│ ┌─────────▼────┐ ┌─────▼──────┐ │
│ │ origin/master│ │ user/xxx │ │
│ │ (远程追踪) │ │ (个人分支) │ │
│ └──────────────┘ └────────────┘ │
└──────────────┬────────────────────────┘
同步 ↓↑ 回写
┌──────────────▼────────────────────────┐
│ .codebuddy/ (同步目标目录) │
│ skills/ | rules/ | mcp/ | ... │
│ ← 你在这里编辑资源 → │
└───────────────────────────────────────┘
完整使用流程
┌─────────────────────────────────────────────────────────────────┐
│ ① 初始化 (一次性) │
│ 安装插件 → 填写仓库地址 → 克隆仓库 → 创建个人分支 user/xxx │
│ → 自动发现资源目录 → 自动同步「必须同步」的资源 │
└────────────────────────────┬────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ ② 选择 & 同步资源 │
│ │
│ 资源浏览器面板 │
│ ├── 📂 Skills │
│ │ ├── 📁 comm (必须同步) ← [点击目录🔄 = 同步目录下所有资源] │
│ │ │ ├── ✅ coding-skill │
│ │ │ └── ✅ review-skill │
│ │ └── 📁 personal ← [点击目录🔄 = 同步目录下所有资源] │
│ │ └── ○ my-draft-skill ← [点击资源 = 同步单个资源] │
│ ├── 📂 Rules │
│ │ └── ○ code-style.md │
│ └── 📂 MCP │
│ └── ○ search-config │
│ │
│ 同步后: 仓库资源 → 复制到 .codebuddy/ 目标目录 │
└────────────────────────────┬────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ ③ 日常编辑 & 推送 │
│ │
│ 在 .codebuddy/ 目录中编辑资源 (Skills / Rules / MCP) │
│ │ │
│ ▼ 文件监控自动检测变更 │
│ ┌──────────────────────────┐ │
│ │ 「本地变更」面板 │ │
│ │ 📄 skills/my-skill/... │ │
│ │ 📄 rules/my-rule.md │──── 点击推送 ────▶ 个人分支 │
│ │ (状态栏显示变更数量) │ (user/xxx) │
│ └──────────────────────────┘ │
│ │
│ 推送流程: │
│ .codebuddy/ → 回写到 .ai-hub-cache/ → git commit → git push │
└────────────────────────────┬────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ ④ 合入 Master (按需) │
│ │
│ 「合入 Master」面板 │
│ 自动检测个人分支与 origin/master 的差异 │
│ │
│ ┌──────────────────────────────────────────┐ │
│ │ □ Skills │ │
│ │ ☑ coding-skill [修改] │ │
│ │ ☐ test-skill [新增] │ ← 勾选要合入的资源 │
│ │ □ Rules │ │
│ │ ☑ code-style.md [修改] │ │
│ └──────────────────────────────────────────┘ │
│ │ │
│ ▼ 创建合入请求 │
│ 从 origin/master 创建新分支 merge/xxx-20260318 │
│ → cherry-pick 选中的资源文件 │
│ → 推送到远程 → 在仓库中创建 MR → Code Review → 合入 master │
└────────────────────────────┬────────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ ⑤ 自动同步 (持续循环) │
│ │
│ ┌──────────┐ 每30分钟 ┌───────────────┐ │
│ │ master │ ─────────▶ │ 拉取最新到本地 │ │
│ │ (新资源) │ 自动触发 │ 更新已同步资源 │ │
│ └──────────┘ └───────┬───────┘ │
│ │ │
│ ▼ │
│ 你的 .codebuddy/ │
│ 自动获得团队最新资源 │
│ │
│ 也可手动点击拉取图标立即同步 │
└─────────────────────────────────────────────────────────────────┘
多仓库切换流程
仓库 A (当前) 仓库 B (切换到)
┌──────────────┐ ┌──────────────┐
│ .codebuddy/ │ ① 暂存到 .ai-hub-stash/ │ │
│ 已同步资源 │──────────────────────────▶│ 克隆新仓库 │
│ │ │ 选择新资源 │
└──────────────┘ └──────────────┘
│
┌─────────────────────────────────────────┘
│ ② 切回仓库 A 时
▼
┌──────────────┐
│ .codebuddy/ │ 自动还原暂存的资源
│ 恢复原状 ✓ │
└──────────────┘
侧边栏 5 个面板
| 面板 |
说明 |
| 状态 |
当前连接状态、仓库地址、分支名、同步目标等信息 |
| 资源浏览器 |
Hub 仓库中的所有资源,点击即可同步/取消同步 |
| 已同步资源 |
当前已同步到本地的资源列表,右键可取消同步 |
| 本地变更 |
检测到的本地文件变更,可一键推送到个人分支 |
| 合入 Master |
对比个人分支与 master 的差异,选择性创建 MR 合入 |
常用操作速查
| 操作 |
方式 |
| 同步资源 |
在资源浏览器中点击资源,或命令 AI Hub: 选择并同步资源 |
| 取消同步 |
右键已同步资源 → AI Hub: 取消同步 |
| 推送变更 |
本地变更面板工具栏点击上传图标,或命令 AI Hub: 推送本地变更到个人分支 |
| 拉取更新 |
资源浏览器/状态面板工具栏点击拉取图标,或命令 AI Hub: 从 master 拉取最新内容 |
| 查看差异 |
命令 AI Hub: 查看本地变更 |
| 刷新 |
命令 AI Hub: 刷新资源列表 |
| 完全重置 |
状态面板工具栏点击重置图标,或命令 AI Hub: 完全重置 (恢复初始状态) |
🔀 合入 Master — 选择性分享你的资源
使用场景:你在个人分支上改了很多 Skill,经过一段时间的使用后发现其中某个 Skill 特别好用,想把它合入 master 分享给全团队。但你不想把所有改动都合进去——只想挑选部分优质资源。
操作步骤
打开「合入 Master」面板
刷新差异
- 点击面板工具栏的 刷新按钮 $(refresh)
- 插件会自动
fetch origin,对比你的本地个人分支与远程 master 的差异
- 差异结果按资源类型分组展示(Skills、Rules、MCP 等)
选择要合入的资源
- 默认所有资源都是未勾选状态
- 点击资源名称切换勾选状态(✓ 选中 / ○ 未选中)
- 也可以使用工具栏的 全选按钮 $(checklist) 快速全选
- 每个资源会显示变更类型:
[新增]、[修改]、[删除]、[混合变更]
- 展开资源可以查看具体变更了哪些文件
创建合入请求
- 选好资源后,点击工具栏的 创建合入请求按钮 $(git-pull-request-create)
- 确认要合入的资源列表
- 输入新分支名(默认格式
merge/你的名字-日期)
- 插件会自动:
- 从
origin/master 创建新分支
- 只把你选中的资源文件从个人分支 cherry-pick 到新分支
- 提交并推送到远程
- 完成后会提示你打开 MR 页面,在代码仓库中创建 Merge Request
在代码仓库中完成合并
- 点击提示中的「打开 MR 页面」按钮跳转到 Git 仓库
- 创建 MR,经过 Code Review 后合入 master
- 其他团队成员下次拉取更新时就能同步到你的资源了
示意流程
个人分支 (user/xxx) 新分支 (merge/xxx-20260317)
┌────────────────────┐ ┌────────────────────┐
│ ✓ coding-skill │ ──选择──▶ │ coding-skill │
│ ✗ test-skill │ │ │ ──推送──▶ MR → master
│ ✓ my-rule.md │ ──选择──▶ │ my-rule.md │
│ ✗ draft-mcp │ │ │
└────────────────────┘ └────────────────────┘
💡 提示:合入操作不会影响你的个人分支,你可以继续在个人分支上开发和测试。
📤 推送本地变更
当你在同步目录(如 .codebuddy/skills/my-skill/)中修改了文件,插件会自动检测到变更:
- 自动检测:文件监控会实时检测同步目录的变动,底部状态栏会显示变更数量
- 查看变更:在「本地变更」面板中查看具体变更了哪些文件
- 推送变更:
- 点击「本地变更」面板工具栏的上传图标
- 输入提交信息(插件会自动生成默认消息)
- 变更会被回写到缓存仓库并推送到你的个人分支
user/xxx
⚠️ 推送的目标是你的个人分支(user/你的名字),不是 master。要合入 master 请使用「合入 Master」功能。
新建资源也能检测
如果你在同步目录中手动创建了新的 Skill 文件夹(包含 SKILL.md),插件同样会检测到并在推送时自动注册到同步清单中。
🔁 多仓库切换
插件支持在多个 AI Hub 仓库之间切换,切换时会自动暂存/还原已同步的资源。
切换仓库
- 在「状态」面板中点击仓库地址,或通过 设置 →
aiHubSync.repoUrl 修改仓库地址
- 插件检测到地址变更后会弹出确认对话框
- 确认后:
- 当前仓库的已同步资源会被暂存到
.ai-hub-stash/ 目录
- 清理旧缓存,克隆新仓库
- 如果新仓库之前有同步记录,会自动还原暂存的资源
切回旧仓库
当你把仓库地址改回之前用过的地址时:
- 插件会检测到历史同步记录(显示 "目标仓库有 N 个历史同步记录")
- 确认切换后,之前暂存的资源文件会被自动还原到同步目录
💡 每个仓库的同步清单是独立的(按仓库 URL 哈希隔离),互不影响。
⚙️ 配置项
| 配置项 |
说明 |
默认值 |
aiHubSync.repoUrl |
AI Hub Git 仓库地址(SSH 或 HTTPS) |
(必填) |
aiHubSync.syncTarget |
同步目标目录 |
.codebuddy |
aiHubSync.customSyncTarget |
自定义同步目录(syncTarget 为 custom 时生效) |
— |
aiHubSync.autoSyncInterval |
自动同步间隔,单位分钟(0 为禁用) |
30 |
aiHubSync.autoPushDetect |
自动检测本地变更并提示推送 |
true |
aiHubSync.cloneDepth |
Git 克隆深度(0 为完整克隆) |
1 |
aiHubSync.customResourceDirs |
资源目录的覆盖配置 |
[] |
进阶:自定义资源目录
Hub 仓库中的所有顶层目录会被自动发现。如果你需要覆盖特定目录的显示名称、图标或扫描策略,可以使用 customResourceDirs 配置:
{
"aiHubSync.customResourceDirs": [
{
"name": "agents",
"label": "🤖 Agents",
"icon": "robot",
"scanStrategy": "depth",
"scanDepth": 2
},
{
"name": "skills",
"requiredGroups": ["comm"]
}
]
}
配置字段说明:
| 字段 |
说明 |
name |
目录名,必须与仓库中实际目录名一致(如 skills、agents) |
label |
显示名称(如 🤖 Agents) |
icon |
VSCode ThemeIcon 名称(如 robot) |
scanStrategy |
扫描策略:marker(递归找标记文件)或 depth(固定深度扫描) |
markerFile |
标记文件名,scanStrategy 为 marker 时生效(默认 SKILL.md) |
scanDepth |
扫描深度,scanStrategy 为 depth 时生效(默认 1) |
requiredGroups |
必须同步的分组列表,该分组下的资源会在初始化后自动同步 |
📂 工作空间结构
初始化后,你的工作空间目录结构如下:
your-project/
├── .ai-hub-cache/ # Hub 仓库本地缓存(自动加入 .gitignore)
│ ├── skills/
│ ├── rules/
│ ├── mcp/
│ └── mcp.json
├── .codebuddy/ # 同步目标目录(可配置)
│ ├── skills/ # 已同步的 Skills
│ ├── rules/ # 已同步的 Rules
│ ├── mcp/ # 已同步的 MCP 配置
│ ├── mcp.json # 已同步的根级文件
│ ├── .ai-hub-sync.xxxxx.json # 同步清单(按仓库隔离)
│ ├── .ai-hub-active-repo # 当前活跃仓库指针
│ └── .ai-hub-stash/ # 仓库切换时的暂存目录
├── .gitignore # 自动管理的忽略规则
└── ... 你的项目文件
🛡️ Git 隔离机制
插件会自动管理 .gitignore,确保同步的 AI 资源不会被项目仓库追踪:
# >>> AI Hub Sync (auto-generated, do not edit) >>>
.ai-hub-cache/
.codebuddy/
# <<< AI Hub Sync <<<
❓ 常见问题
Q: 支持私有 Git 仓库吗?
A: 支持!只要你的本地 Git 有访问权限(SSH 密钥或 HTTPS 凭据),插件就能正常使用。
Q: 同步的文件会被提交到项目仓库吗?
A: 不会。所有同步的文件和缓存目录都会自动加入 .gitignore。
Q: 推送变更是推到 master 吗?
A: 不是。推送的目标是你的个人分支 user/你的名字。如果你想合入 master,请使用「合入 Master」面板中的选择性合入功能。
Q: 合入 Master 时对比的是什么?
A: 对比的是你的本地个人分支 HEAD 与远程 origin/master 的差异。每次刷新会先 fetch origin 确保对比最新的 master。
Q: 合入 Master 会影响我的个人分支吗?
A: 不会。合入操作会从 master 创建一个全新的分支(如 merge/xxx-20260317),只包含你选中的资源文件,不影响个人分支。
Q: 切换仓库后之前同步的资源会丢失吗?
A: 不会。切换仓库时,当前仓库的已同步资源会被暂存。切回时会自动还原。
Q: 遇到合并冲突怎么办?
A: 插件会检测冲突并给出指引。个人分支的变更优先(使用 ours 策略)。大多数情况下重新拉取 master 即可解决。
Q: 可以用来管理非 AI 资源吗?
A: 当然可以!插件会自动发现 Hub 仓库中的所有顶层目录,你可以用它来管理任何共享资源。
Q: 自动同步的间隔是多少?
A: 默认 30 分钟,可在设置中通过 aiHubSync.autoSyncInterval 调整,设为 0 可禁用。