扩展系统

构建和分享扩展来扩展 Gemini CLI 的功能。为社区创建工具、命令、主题和集成。

扩展类型

您可以创建的不同类型的扩展

工具扩展

添加新的工具和功能

示例:

  • 数据库连接器
  • API 集成
  • 文件处理器
  • 数据分析器

命令扩展

添加新的 CLI 命令

示例:

  • 项目生成器
  • 部署脚本
  • 测试工具
  • 代码格式化器

主题扩展

自定义 CLI 外观

示例:

  • 配色方案
  • 输出格式
  • 进度指示器
  • 自定义提示

集成扩展

连接外部服务

示例:

  • GitHub 集成
  • Slack 通知
  • 邮件提醒
  • 云存储

扩展结构

如何组织您的扩展文件

目录结构

my-extension/
├── package.json          # Extension metadata
├── index.js              # Main entry point
├── tools/                # Custom tools
│   ├── my-tool.js
│   └── another-tool.js
├── commands/             # Custom commands
│   └── my-command.js
├── themes/               # Custom themes
│   └── my-theme.json
├── README.md             # Documentation
└── tests/                # Test files
    └── extension.test.js

package.json 示例

{
  "name": "gemini-cli-my-extension",
  "version": "1.0.0",
  "description": "My awesome Gemini CLI extension",
  "main": "index.js",
  "keywords": ["gemini-cli", "extension", "tools"],
  "author": "Your Name",
  "license": "MIT",
  "gemini-cli": {
    "version": "^2.0.0",
    "type": "extension",
    "tools": ["./tools/my-tool.js"],
    "commands": ["./commands/my-command.js"],
    "themes": ["./themes/my-theme.json"]
  },
  "dependencies": {
    "@google/generative-ai-cli": "^2.0.0"
  }
}

开发步骤

创建扩展的分步指南

1

创建扩展

初始化新的扩展项目

命令:

mkdir my-extensioncd my-extensionnpm init -ynpm install @google/generative-ai-cli
2

开发功能

实现工具、命令或主题

命令:

mkdir tools commands themestouch tools/my-tool.jstouch commands/my-command.jstouch themes/my-theme.json
3

测试扩展

本地测试您的扩展

命令:

gemini extension link .gemini extension listgemini my-command --help
4

发布扩展

将扩展发布到 npm

命令:

npm testnpm version patchnpm publish

扩展管理

管理扩展的命令

安装命令

gemini extension install <name>

从 npm 安装扩展

gemini extension load <path>

加载本地扩展

gemini extension uninstall <name>

移除扩展

管理命令

gemini extension list

列出已安装的扩展

gemini extension info <name>

显示扩展详情

gemini extension search <query>

搜索扩展

最佳实践

创建高质量扩展的指导原则

开发

  • 遵循单一职责原则
  • 提供清晰的文档
  • 包含全面的测试
  • 使用语义化版本控制

性能

  • 最小化启动时间
  • 避免阻塞操作
  • 实现延迟加载
  • 优化内存使用

兼容性

  • 支持多个 CLI 版本
  • 处理向后兼容性
  • 测试不同环境
  • 提供迁移指南

发布

  • 使用描述性包名
  • 包含相关关键词
  • 提供使用示例
  • 维护向后兼容性

相关资源

了解更多关于扩展开发的信息