“
早高峰,地铁里。
你一手扶栏杆,一手敲手机,远程给同事发指令:”把昨晚的慢查询重跑,再把结果同步到 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.json
与GEMINI.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
你会看到终端里依次出现:
-
MCP 调用 looker:run_query -
查询返回 JSON → 自动生成 Vega-Lite 柱状图 -
调用 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,再通知值班经理
模型会连续调用:
-
list_tickets(assignee=me, created=-1d, priority=P0) -
update_ticket(priority=P1) -
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。
建议落地三步走
-
先在 CI 里跑 gemini extensions update --all
,锁定版本; -
给不同团队分配 scope: --scope Workspace
避免全局污染; -
把 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:智能体模式工具白名单配置