站点图标 高效码农

Gemini CLI Extensions:打造你的专属AI瑞士军刀

早高峰,地铁里。
你一手扶栏杆,一手敲手机,远程给同事发指令:”把昨晚的慢查询重跑,再把结果同步到 Figma,记得把新版 API 文档 push 到 Postman。”
如果是过去,你会收到一堆”怎么操作”的问号。
今天,同事只回了句:”搞定,Gemini CLI 全帮你跑完了。”
这就是 Extensions 的魔法——让大模型真正”动手”而不是”动嘴”。


一、从”聊天框”到”工具链”:为什么你需要 Extensions

三个月前,Google 把 Gemini 搬进终端,开源了 Gemini CLI
它最大的卖点不是聊天,而是 MCP(Model Context Protocol)——一条让模型与外部世界”握手”的通用总线。
Extensions 则是把这次握手做成了”即插即用”的乐高积木:

  • 一条命令就能把数据库、设计、支付、运维等 20+ 官方/第三方服务 拉进终端;
  • 自带 playbook,模型 零样本 知道该调用谁、传什么参数;
  • 完全开源,任何人都能写一块自己的积木。

一句话:Extensions 让大模型从”顾问”升级为”外包团队”


二、5 分钟上手:装一个扩展,跑一条命令

下面带你真机演示——给终端装上 Looker 扩展,并用自然语言让 AI 帮你生成数据看板。

1. 装好 CLI(Node≥20)

npm i -g @google/gemini-cli
gemini --version   # 验证 ≥ 0.4.x

2. 一键拉取官方扩展

gemini extensions install \
  https://github.com/gemini-cli-extensions/looker

扩展被克隆到 ~/.gemini/extensions/looker/,目录里自带 gemini-extension.jsonGEMINI.md playbook。

3. 配置连接

把 Looker 实例的 API 凭证塞到环境变量:

export LOOKER_BASE_URL="https://yourcompany.looker.com"
export LOOKER_CLIENT_ID="xxxxxxxx"
export LOOKER_CLIENT_SECRET="xxxxxxxx"

不需要改任何 JSON,扩展启动时会自动读取。

4. 进入交互,直接开口要数据

gemini
> 给我过去 7 天按国家分的 GMV 趋势,用柱状图,再导出 PNG

你会看到终端里依次出现:

  1. MCP 调用 looker:run_query
  2. 查询返回 JSON → 自动生成 Vega-Lite 柱状图
  3. 调用 looker:export_png → 文件写入 ./gmv_by_country.png

全程 零手动 SQL,零截图操作
如果你装了 Slack 扩展,还能追加一句:”把图发到 #daily-metrics 频道”。一句话工作流,就这么丝滑


三、写自己的扩展:把公司老系统包成 MCP 积木

官方模板已帮你搭好骨架,只需三步:

文件 作用
gemini-extension.json 声明 MCP 服务器、上下文、排除工具
GEMINI.md 给模型的”使用说明书”,支持 Markdown & 变量占位
tool.js/py/go 任何语言,只要实现 MCP JSON-RPC 接口

示例:把内部”工单系统”包装成扩展

目录结构:

ticket-ext/
 ├─ gemini-extension.json
 ├─ GEMINI.md
 ├─ package.json
 └─ ticket-server.js   // 暴露 list_tickets / create_ticket

gemini-extension.json 只需 10 行:

{
  "name": "ticket-ext",
  "version": "1.0.0",
  "mcpServers": {
    "ticket": {
      "command": "node ticket-server.js"
    }
  },
  "contextFileName": "GEMINI.md"
}

安装:

gemini extensions install --path ./ticket-ext

马上就能在终端说:

> 列出我昨天提交的 P0 工单,把优先级降到 P1,再通知值班经理

模型会连续调用:

  1. list_tickets(assignee=me, created=-1d, priority=P0)
  2. update_ticket(priority=P1)
  3. send_slack(user=oncall-manager, msg=”…”)

你再也不用打开 Jira 网页点来点去


四、深度原理解析:Extension 如何给模型”长记忆”和”手”

层级 作用 冲突策略
系统 prompt 全局人设、安全护栏 最底层
GEMINI.md(扩展级) 工具说明书、领域知识 同名指令覆盖系统
用户 prompt 即时意图 最优先

运行时的调用链:
用户输入 → Intent Router → Playbook 选择 → MCP Server → Tool → 结果回流模型 → 下一步决策
扩展可以:

  • 排除高危工具,例如 "excludeTools": ["run_shell_command(rm -rf)"]
  • 给同一工具加”命令级白名单”,例如只允许 ls -l
  • 通过上下文文件把 几万字业务规范 塞进记忆,避免每次 prompt 重复。

五、安全与治理:当 AI 真的能”删库”

Google 给出的默认护栏是 沙箱 + 白名单

  • 敏感命令需用户显式确认;
  • 扩展禁用/启用实时生效,无需重启 CLI;
  • 企业可自建 registry,审计日志接入 Cloud Audit / Splunk。

建议落地三步走

  1. 先在 CI 里跑 gemini extensions update --all,锁定版本;
  2. 给不同团队分配 scope:--scope Workspace 避免全局污染;
  3. excludeTools 写进公司 golden image,禁止任何扩展执行 * 级 shell。

六、常见问题解答(FAQ)

Q1: 扩展跟 MCP 服务器是什么关系?
A: 扩展 = MCP 服务器 + 上下文 + 自定义命令的”打包体”。它让模型”知道”何时以及如何调用服务器。

Q2: 安装后模型没调用工具?
A:/mcp 看服务器是否 Ready;再检查 GEMINI.md 是否写明触发关键词;最后确认工具名没有出现在 excludeTools

Q3: 能否一条命令同时装多个扩展?
A: 目前不支持批量,但你可以 cat extensions.txt | xargs -n1 gemini extensions install 循环安装。

Q4: 公司内网 GitLab 扩展怎么写?
A: 只要 GitLab 有 OpenAPI,就能用官方 openapi-mcp-server 自动生成 MCP 层,再包一层 GEMINI.md 即可。


七、收束与展望:终端的下一个十年

从 bash → zsh → fish,我们换过无数 shell,但本质仍是”人驱动命令”。
Extensions 把顺序颠倒了:让命令被人用自然语言驱动
当扩展生态从 20 到 2000 再到 2 万,”终端”不再是黑框,而是 通用 AI 代理的驾驶舱

还等什么?
打开你的终端,输入第一行 gemini extensions install ...
下一块乐高积木,或许就出自你手。

Happy hacking!


参考与延伸阅读

: Gemini CLI 扩展官方文档(中文版)
Gemini CLI v0.4.x 扩展管理升级详解
Google Cloud 官方教程:连接 Looker 与 Gemini CLI
Google Developers:智能体模式工具白名单配置

退出移动版