从Claude Code/Codex迁移到Gajae-Code:/extensions一键导入Skills、Hooks与MCP完全教程
【免费下载链接】gajae-codeGajae Code MVP项目地址: https://gitcode.com/gh_mirrors/ga/gajae-code
Gajae-Code 是一款面向开发者的 AI 编程智能体(coding agent),支持 Claude、Codex 等多模型接入。如果你已经在 Claude Code 或 Codex 中积累了自己的 Skills、Hooks 和 MCP 配置,Gajae-Code 提供了/extensions命令,可以一键预览、确认并导入这些定制内容到本地或全局作用域,迁移过程安全可回滚、全程可视化。
为什么需要迁移?
Claude Code 和 Codex 都是优秀的编程助手,但不同工具生态之间,你的"个人经验资产"——自定义技能(Skills)、生命周期钩子(Hooks)、外部工具服务器(MCP)——往往被锁死在各自的配置目录里。
Gajae-Code 的迁移设计目标很明确:不让你重写任何配置,而是读懂旧格式、转换到原生格式。🎯
先认识 /extensions:统一的定制管理面板
在 Gajae-Code 的交互式会话中,输入/extensions即可打开定制化管理面板。它是 Skills、Hooks、MCP 三大扩展的"统一入口":
- 作用域管理:同时覆盖项目级(
<project>/.gjc/)和用户全局(~/.gjc/agent/)两个作用域 - 状态诊断:显示每个扩展的启用/禁用状态、来源(provenance)等信息
- 安全操作:支持启用、禁用、删除,且所有写入采用"原子写 + 失败回滚"策略
导入功能的实现位于 customization/import.ts,清单聚合逻辑位于 customization/inventory.ts。
一键导入:Skills、Hooks、MCP 各支持什么
/extensions内置了Import from Claude Code / Codex引导流程。启动后会按三类内容分别扫描:
📚 Skills(技能)
| 来源 | 扫描目录 |
|---|---|
| Claude Code | .claude/skills |
| Codex | .codex/skills |
扫描覆盖项目级和全局两个作用域。导入时 SKILL.md 的 frontmatter 会被规范化,保证加载名称与目录 slug 一致。
🪝 Hooks(钩子)
| 来源 | 目录约定 |
|---|---|
| Claude Code | .claude/hooks/<pre\|post>/ |
| Codex | 扁平结构.codex/hooks/<phase>-<tool>.ts\|js |
两侧的钩子会被统一归一化为 Gajae-Code 规范的<root>/hooks/<pre|post>/布局(归一化逻辑见 hooks/normalize.ts),并按"项目优先、同名先到先得"去重。
🔌 MCP 服务器
- Claude Code 的
mcp.json和 Codex 的 TOML 配置,都会经过兼容性适配器(discovery/mcp-compat.ts)转换并校验,再原子合并进 Gajae-Code 的 MCP 配置。 - 面板展示时对密钥、token 类字段自动打码,不会泄露凭据。
导入流程四步走:预览 → 决策 → 确认 → 原子写入
/extensions的导入不是"一把梭",而是事务式的安全流程:
- 归一化预览:先列出所有候选项(会导入什么、写入哪里),预览内容经过脱敏,不含密钥
- 冲突策略:遇到同名冲突时,可逐条选择跳过(skip)/ 重命名(rename)/ 覆盖(overwrite);内置工作流技能名称受保护,不会被误覆盖
- 显式确认:预览完必须手动确认才执行
- 原子写入 + 回滚:每个目标路径先做包含性与符号链接检查,写入采用"同目录临时文件 + rename"方式;任何一步失败(包括校验失败)都会精确回滚本次事务写过的文件,不会触碰任何已有文件
导入成功后,Skills 的 frontmatter 会写入x-gjc-imported-from键,记录来源,方便日后追溯。
非交互场景:gjc migrate 命令行
如果你更喜欢脚本化或 CI 环境,可以用 CLI:
# 干跑,只看报告不写入 gjc migrate --from all --dry-run # 从指定来源导入 gjc migrate --from claude-code --from codex # 机器可读报告 gjc migrate --from all --json支持的来源为claude-code、codex、opencode,--from all会按固定顺序展开。每种导入结果都有清晰的状态语义:imported(新导入)、updated(更新)、skipped_exists(已存在跳过)、failed_io(IO 失败)等,失败状态会以非零退出码结束,方便自动化判断。类型与状态定义见 migrate/types.ts,Claude Code 适配器见 migrate/adapters/claude-code.ts。
MCP 服务器也可以直接用gjc mcp命令单独管理。
导入之后的日常管理
迁移完成后,日常维护全部回到/extensions面板:
- 查看项目/全局两个作用域下的全部 Skills、Hooks、MCP 清单
- 一键启用/禁用某个扩展(对应
skill:<name>、mcp:<name>标记) - 被遮蔽(shadowed)的重复钩子、格式错误的配置文件都会以
invalid行明确标出
更多扩展体系细节可参考官方文档:docs/customization.md、docs/standalone-mcp.md,以及扩展开发示例目录 examples/extensions/。
迁移小贴士
- 🔍先 dry-run 再真跑:无论面板还是 CLI,都先看预览报告,确认目的地作用域(项目 vs 全局)是否符合预期
- 🗂同名冲突优先重命名:除非你确定旧版本已废弃,否则重命名比覆盖更安全
- 🧹清理旧配置:导入并验证无误后,可以移除旧的
.claude/、.codex/目录,避免双份维护 - 🔐检查密钥:MCP 导入的是连接方式,API Key 等敏感值请按需重新配置
Gajae-Code 的完整 README 中还介绍了/extensions与 SDK 扩展能力,详见 README.md。现在就可以在你的项目里输入/extensions,把 Claude Code / Codex 的心血一次性带过来吧。🚀
【免费下载链接】gajae-codeGajae Code MVP项目地址: https://gitcode.com/gh_mirrors/ga/gajae-code
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考