扩展发布、平台资产与迁移
区分 Git 与 Release 更新,构建自包含归档并让目录自动发现扩展。
This page has not been translated into English yet. The original Chinese version is shown below.
Git 仓库适合分支开发;GitHub Releases 可提供单个归档,减少初次克隆开销并分发平台二进制。发布包必须含完整可运行的扩展。
目录收录
公开 GitHub 仓库添加 gemini-cli-extension topic,gemini-extension.json 放仓库或归档根。官方爬虫每日检查,验证通过后收录;不需通过邮件或 issue 申请,也不保证添加 topic 后立即出现。
Git 与 Release
Git 安装可用 --ref 指向分支、tag 或 commit。GitHub Release 默认检查 Latest;可指定 release tag,--pre-release 允许预发布选择。
| 安装方式 | 更新检测 |
|---|---|
| Git clone | 比较远程 commit 与本地 HEAD |
| GitHub Release | GitHub API 的 release tag |
| 本地复制安装 | 源目录 manifest version |
Release 检测不使用 manifest version,但 UI 显示它,因此 tag 与 manifest 应同步。安装类型可查看 ~/.gemini/extensions/<name>/.gemini-extension-install.json 的 type。
平台归档
优先匹配 {platform}.{arch}.{name}.{extension},其次 {platform}.{name}.{extension};没有特定匹配时可使用单一通用资产。platform 为 darwin、linux、win32,arch 为 x64、arm64,格式为 tar.gz 或 zip。
例如 darwin.arm64.my-tool.tar.gz、linux.x64.my-tool.tar.gz、win32.my-tool.zip。manifest 必须在归档根,不能多套一层导致加载器找不到。
产物完整性
发布指南要求归档自包含;最佳实践建议缩小包体并排除源码和 node_modules。只有依赖已打包或运行时无需它们时才能排除,不能为了包小破坏可运行性。
官方 Actions 示例构建 x64 后列出的上传文件却有 arm64,二者不一致。本页不复制该 workflow,实际流水线应让构建目标、输出文件名与上传清单一致,并验证最终归档。
迁移仓库
旧仓库 manifest 增加 migratedTo 指向新仓库,提升 version 并发布旧仓库更新。新仓库至少需有一次 release 才能成为有效迁移目标。用户检查更新后 CLI 验证新来源并迁移安装与设置。
迁移属于更新来源变化,发布前应确保新仓库实际可安装,不能只修改 URL 而没有可用发行版。