项目快照:google-gemini/gemini-cli,约 106,529 个 Star,14,444 个 Fork;最新推送时间 2026-08-16T01:09:18Z。本文基于仓库公开资料撰写。
项目地址:https://github.com/google-gemini/gemini-cli · https://geminicli.com

项目速览(TL;DR)
gemini-cli 是一个使用 TypeScript 编写的开源终端人工智能代理(AI agent),项目描述为“An open-source AI agent that brings the power of Gemini directly into your terminal.”。它的主要交互入口是命令行中的 gemini,仓库同时包含核心包、命令行包、开发工具、Visual Studio Code 配套组件、SDK、测试工具和 A2A 服务器相关工作区。
根据所给 GitHub 仓库元信息,该项目默认分支为 main,许可证为 Apache-2.0,语言为 TypeScript;资料记录的 Star 数为 106529,Fork 数为 14444。版本信息来自当前资料中的 package.json,为 0.56.0-nightly.20260806.g761f604c1,该版本字符串包含 nightly 标识,不能据此推断稳定版发布状态。
- 项目形态:开源命令行人工智能代理。
- 运行入口:安装包提供
gemini命令,对应文件为bundle/gemini.js。 - 实现语言:TypeScript,项目配置使用 ES Module。
- 最低 Node.js 要求:
>=20.0.0。 - 许可证:Apache License 2.0。
定位与目标用户
该项目的定位不是独立的图形化聊天应用,而是把 Gemini 能力接入终端工作流的命令行代理。读者可以从仓库脚本和包划分中确认,它同时关注命令行运行、核心逻辑、开发工具、编辑器配套和自动化测试。
从已提供资料能够确认的用户画像,主要包括需要在终端中使用 Gemini 的开发者、需要研究命令行代理实现的 TypeScript 团队,以及希望在本地构建、测试或扩展相关工作区的贡献者。身份认证、模型选择、服务端 API 以及具体提示词协议未出现在给定资料中,官方仓库未提供该信息,建议以最新 README 为准。
- 需要将人工智能辅助融入 Git、代码、文件和命令行操作流程的个人开发者。
- 需要审查多工作区 TypeScript 项目构建方式、测试脚本和打包过程的工程团队。
- 需要在授权的本地环境或隔离容器内验证代理行为的测试人员。
- 需要研究 A2A 服务器、模型上下文协议(Model Context Protocol,MCP)或 Visual Studio Code 配套能力的开发者;资料只证明相关依赖或脚本存在,不代表所有功能均已在本文资料中完整说明。
核心功能
仓库资料显示,核心能力围绕“终端中的 Gemini 代理”组织,并通过可执行入口、工作区包、测试套件和沙箱构建脚本形成工程闭环。由于未提供 README 的完整功能章节,下面仅说明能够由项目描述、package.json 和 Dockerfile直接核查的部分。
终端代理入口
命令行包通过 bin 字段把 gemini 命令映射到 bundle/gemini.js。生产启动脚本使用 NODE_ENV=production 调用 scripts/start.js,开发启动脚本则设置 NODE_ENV=development;输入输出格式、交互命令和认证流程未在资料中给出。
核心逻辑与命令行界面
仓库包含 @google/gemini-cli-core 和命令行工作区,命令行界面(Command-Line Interface,CLI)使用 Ink 及 React 相关依赖构建终端交互层。核心包的具体公开 API、消息生命周期、工具调用协议和错误返回结构未提供,不能从依赖名称推断完整接口。
沙箱运行与集成测试
项目定义了 GEMINI_SANDBOX=false、docker 和 podman 三类集成测试脚本,并提供 build:sandbox。这表明测试流程能够区分不使用沙箱、使用 Docker 沙箱和使用 Podman 沙箱;沙箱内可用命令与权限边界应以仓库最新文档和实际镜像定义为准。
编辑器与代理协议配套
工作区名称包含 vscode-ide-companion、devtools 和 a2a-server,开发依赖中还出现 Agent Client Protocol(ACP)SDK 和 Model Context Protocol(MCP)SDK。资料能够证明项目编译或开发环境声明了这些组件,但没有提供其完整使用手册、协议兼容矩阵或稳定性承诺。
系统架构与关键模块
从根目录工作区配置和 Docker 构建流程看,项目采用 npm workspaces 的多包架构;源代码先分包构建,再将 CLI 与核心包打包为 npm 压缩包并安装到运行镜像中。该架构将开发依赖、构建产物和运行时环境分离,便于在容器中执行最小化安装流程。
| 模块或工作区 | 资料中的证据 | 可核查职责 | 未提供的信息 |
|---|---|---|---|
packages/cli |
Dockerfile、根脚本、bin 配置 |
命令行包,提供 gemini 入口 |
具体命令和参数 |
packages/core |
Dockerfile、predocs:settings |
核心包,参与构建和打包 | 核心 API 与调用协议 |
packages/vscode-ide-companion |
根工作区与 Dockerfile 复制路径 | Visual Studio Code 配套工作区 | 编辑器功能清单 |
packages/devtools |
bundle 脚本 |
参与开发工具构建和浏览器相关打包 | 工具界面和使用方式 |
packages/sdk |
Dockerfile 复制路径 | SDK 工作区 | SDK 类型、方法和发布状态 |
packages/a2a-server |
start:a2a-server 脚本 |
A2A 服务器工作区 | 协议端点和认证细节 |
packages/test-utils |
Dockerfile 复制路径 | 测试辅助工作区 | 辅助 API |
根据 Dockerfile,构建阶段使用 Node.js 20 slim 镜像安装依赖并运行 npm run build,随后分别对核心包和 CLI 包执行 npm pack。运行阶段再次使用 Node.js 20 slim,安装两个生成的 tgz 包,最后以 /usr/local/share/npm-global/bin/gemini作为容器入口。
依赖与运行环境
本项目的明确运行前提是 Node.js 20 或更高版本,包管理方式依赖 npm workspaces。根配置将项目声明为私有工作区,并使用 package-lock.json配合 npm ci进行可重复安装;资料没有给出操作系统支持矩阵。
- 运行时:Node.js
>=20.0.0,来自engines.node。 - 模块系统:ES Module,来自
"type": "module"。 - 包管理:npm workspaces,工作区匹配
packages/*。 - 主要开发依赖:TypeScript 5.8.3、Vitest 3.2.4、ESLint 9.24.0、Prettier 3.5.3、esbuild 0.25.0。
- 终端界面相关依赖:Ink 使用项目覆盖的
npm:@jrichman/ink@6.6.9。 - 可选依赖:包括
@github/keytar、node-pty及按平台拆分的 node-pty 包。
Docker 运行镜像另外安装了 Python 3、make、g++、git、curl、jq、gh、ripgrep、Dockerfile 中列出的系统工具及证书包。这里的系统包清单只代表该 Dockerfile 的运行镜像构成,不代表在宿主机直接运行 CLI 时必须安装全部软件。
快速开始
资料中可以直接核查的最小本地闭环是:准备 Node.js 20 或更高版本,使用 npm ci安装锁定依赖,构建项目,再启动开发模式。由于认证和 API 配置没有出现在给定资料中,首次启动是否能够访问 Gemini 服务需要以最新 README 的认证说明为准。
安装依赖
git clone https://github.com/google-gemini/gemini-cli.git
cd gemini-cli
node --version
npm cinpm ci来自仓库的 Dockerfile 和 preflight脚本,适合依据锁文件安装依赖。示例只涉及本地代码和依赖安装,不包含访问第三方目标的操作。
构建、运行与验证
npm run build
npm run start
npm run build
npm run lint:ci
npm run typecheck上述命令分别对应仓库现有的构建、开发启动、代码检查和类型检查脚本。若要验证打包后的入口,资料只明确说明 Docker 构建后执行 gemini --version作为入口可用性检查;没有提供独立的本地发布包安装命令,因此不应把未给出的命令写成官方安装方式。
关于凭据占位符
本文不虚构环境变量名,也不把 API 密钥写入命令行。资料未提供 Gemini API 密钥字段、认证命令或配置文件格式;需要凭据时,应使用官方文档规定的安全凭据机制,并将示例中的敏感值替换为 <你的-API-KEY>,不要提交到 Git 仓库、日志或镜像层。
配置说明
给定资料中最完整的配置来源是根目录 package.json 的字段、脚本和 Dockerfile 的构建参数。下表只列出可以直接核查的配置项;“未提供”表示资料没有明确给出默认值,而不是该字段在运行时一定不存在。
| 字段名 | 类型 | 默认值 | 作用 |
|---|---|---|---|
name |
字符串 | @google/gemini-cli |
根 npm 包名称 |
version |
字符串 | 0.56.0-nightly.20260806.g761f604c1 |
资料所示项目版本 |
engines.node |
版本范围字符串 | >=20.0.0 |
声明 Node.js 最低版本要求 |
type |
字符串 | module |
将项目按 ES Module 方式处理 |
workspaces |
字符串数组 | ["packages/*"] |
声明 npm 工作区匹配范围 |
bin.gemini |
字符串 | bundle/gemini.js |
把 gemini命令映射到构建入口 |
config.sandboxImageUri |
字符串 | us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.56.0-nightly.20260806.g761f604c1 |
声明沙箱镜像地址 |
GEMINI_SANDBOX |
环境变量字符串 | 脚本按场景设置为 false、docker或 podman |
选择集成测试的沙箱模式 |
CODER_AGENT_PORT |
环境变量字符串 | 41242,仅见于 A2A 启动脚本 |
启动 A2A 服务器时设置代理端口 |
表中 CODER_AGENT_PORT的值来自 "start:a2a-server": "CODER_AGENT_PORT=41242 ...",不能扩展为所有模式下的通用端口。认证、模型、代理地址、超时、日志等级和数据目录等配置项,官方仓库未提供该信息,建议以最新 README 和对应包文档为准。
进阶用法
进阶操作应优先使用仓库已经提供的脚本,因为这些脚本同时体现了项目维护者认可的构建、测试和发布准备路径。以下命令均来自 package.json,适合在本地开发或测试环境执行。
npm run build:packages:对工作区执行构建。npm run build:all:依次执行普通构建、沙箱构建和 Visual Studio Code 配套构建。npm run build:binary:调用仓库提供的二进制构建脚本;具体输出平台和格式未提供。npm run bundle:生成 Git 提交信息、构建开发工具和浏览器 MCP 包后执行打包。npm run schema:settings与npm run docs:settings:生成设置模式和设置文档。npm run docs:keybindings:生成按键绑定文档。
评估和测试脚本也被拆分为多个层级,包括 test:always_passing_evals、test:all_evals、test:memory、test:perf以及不同沙箱模式的集成测试。评估数据集、性能指标定义、基线文件位置和通过阈值未在资料中出现,不能据此宣称具体准确率、吞吐量或延迟。
可观测性与运维
仓库提供了有限但明确的开发诊断入口,包括调试启动、构建验证、代码检查、类型检查和多类测试脚本。它们适合定位本地构建问题或回归问题,但资料没有给出生产日志格式、指标名称、链路追踪协议、告警规则或服务等级目标(SLA)。
npm run debug:设置DEBUG=1并使用 Node.js Inspector,在启动脚本前暂停。npm run lint:ci:执行仓库定义的完整 lint 流程。npm run typecheck:执行工作区及评估、集成测试、记忆测试目录的 TypeScript 检查。npm run test:ci:执行工作区测试、脚本测试和 SEA 启动测试。npm run clean:调用仓库清理脚本,适合在重新安装和构建前清理产物。
Dockerfile 还在安装后执行 gemini --version,并通过读取两个已安装包的 package.json验证包内容可解析。对于长期运行的 A2A 服务器,端口暴露方式、健康检查、日志轮转和进程托管策略,官方仓库未提供该信息,建议以最新部署文档为准。
安全与合规边界
终端人工智能代理可能读取本地工程、调用命令或处理凭据,因此必须把使用范围限定在用户拥有或明确获授权的环境内。本文只讨论本地开发、测试和受控容器场景,不提供面向未授权目标的攻击教程、检测绕过技巧或凭据窃取方法。
- 授权边界:仅在本人设备、组织授权的代码库和测试服务中运行代理及其工具调用。
- 数据边界:在发送提示、代码、日志或文件前确认其中不含密钥、个人信息、客户数据和未公开源代码;仓库资料未说明数据保留和训练策略。
- 执行边界:优先使用 Docker 或 Podman 沙箱进行测试,并为容器分配满足任务所需的最小权限;Dockerfile 展示了非 root 的
node用户,但没有提供完整的运行时隔离承诺。 - 凭据边界:不要把 API 密钥写入命令、源码、Dockerfile、npm 包或版本控制提交;认证方式缺失时,以官方文档为准。
- 供应链边界:锁定依赖版本,审查 npm 包、Docker 镜像和可选原生模块来源,并在升级 nightly 版本前执行测试。
项目含有 GitHub、Git、网络请求、终端伪终端和协议 SDK 等依赖或工具链组件,但资料没有列出威胁模型、权限清单、CVE 状态或安全审计报告。不能因为采用 Apache-2.0 或容器构建就推断项目不存在安全风险。
许可证与商用条款
仓库的 LICENSE文件是 Apache License 2.0。该许可证授予永久、全球、非排他、免版税且不可撤销的版权许可,并在许可证约定范围内授予与贡献者贡献相关的专利许可。
从许可证条款看,允许复制、修改、公开展示、公开执行、再许可和分发,也包括商业使用场景;但使用者必须遵守许可证的前提条件。本文不是法律意见,分发前应由使用组织根据实际产品、依赖和商标使用方式进行审查。
- 分发作品或衍生作品时,应向接收者提供 Apache License 2.0。
- 修改文件时,应保留显著的修改说明。
- 分发源代码形式的衍生作品时,应保留相关版权、专利、商标和归属声明。
- 如果作品包含
NOTICE文件,分发的衍生作品还需要按许可证要求保留其中适用的归属通知;给定资料只展示了LICENSE内容,没有确认仓库是否包含NOTICE文件。 - Apache-2.0 不授予许可方商号、商标、服务标志或产品名称的使用权,合理描述作品来源的使用除外。
许可证还包含专利诉讼导致相关专利许可终止的条款,以及免责声明和责任限制。具体分发、商标、专利和 NOTICE 处理应以仓库 LICENSE为准,不应仅依据本文摘要作出法律结论。
局限性与已知限制
当前资料足以确认项目结构和构建路径,但不足以完整描述终端代理的业务能力。对生产选型而言,最大的信息缺口在于认证方式、模型配置、数据处理、工具权限和稳定版本政策。
- 未提供完整 README,因此无法核查所有命令、参数、安装渠道和首次认证步骤。
- 未提供 API 接口签名、模型列表、请求限制、上下文限制或响应格式。
- 未提供性能基准、并发上限、资源消耗、可用性目标或服务级别协议。
- 仓库版本为带 nightly 标识的版本字符串,资料没有说明该版本对应的发布渠道和兼容保证。
- 虽有 Docker、Podman 和沙箱测试脚本,但没有给出安全隔离强度、网络策略和宿主机访问边界。
- 可选依赖包含平台相关的 node-pty 包,但资料没有提供各操作系统的安装成功条件。
- 根配置声明
private: true,同时通过工作区脚本打包子包;根包是否作为独立发布物使用,不能仅由该字段推断。
根据本文作者的经验判断,如果系统需要可审计的工具调用、固定模型版本、严格的数据驻留控制或明确的生产 SLA,应先完成源代码审查、权限测试和运行时验证,再决定是否纳入关键业务流程。
适合谁
选择该项目的前提是团队能够接受命令行代理的工程形态,并愿意自行核查认证、权限和数据流。以下信号越多满足,越适合进行本地试用或二次开发。
- 团队已经使用 Node.js 20 或更高版本,并能够维护 TypeScript、npm workspaces 和 Vitest 工具链。
- 主要工作流发生在终端,需要把 Gemini 能力放入代码检索、工程操作或开发辅助流程中。
- 能够在本地、Docker 或 Podman 隔离环境中提供测试项目,而不是直接连接未授权的生产资源。
- 需要研究 CLI、核心包、Visual Studio Code 配套、SDK 或 A2A 服务器工作区的组合方式。
- 组织能够执行 Apache-2.0 的版权、许可证、NOTICE 和商标合规审查。
不适合谁
如果项目必须具备资料中没有承诺的稳定性、合规性或集成能力,直接采用会增加验证成本。以下任一信号成立,都应先补充技术与法律评估。
- 生产环境无法安装 Node.js 20,或团队不接受 npm workspaces 和 TypeScript 构建链。
- 业务要求供应商提供明确 SLA、性能基准、并发配额或长期稳定版本,而当前资料没有这些承诺。
- 系统需要已核验的数据驻留、审计日志、细粒度权限和密钥托管方案,但官方仓库未提供对应说明。
- 使用场景涉及未授权主机、第三方账号、隐私数据或高风险自动化,无法建立明确的书面授权和隔离边界。
- 团队只需要一个固定输入输出的轻量模型 API,不希望引入终端代理、沙箱和多工作区构建复杂度。
资料没有明确列出替代方案,因此本文不对其他产品或“主流方案”进行比较。具体替代决策应基于组织已有技术栈、数据策略和运维能力,而不是依据 Star 或 Fork 数量单独判断。
常见问题与排查(FAQ / Troubleshooting)
排查顺序应从版本、依赖、构建、类型检查和测试开始,再处理认证或外部服务问题。这样可以先区分本地工程问题与运行时服务问题。
Node.js 版本不满足怎么办
先运行 node --version检查版本。根 package.json声明 node >=20.0.0;低于该范围时,应先切换到满足要求的 Node.js 版本,再重新执行 npm ci。
npm ci或构建失败怎么办
确认当前目录是仓库根目录,并确认工作区目录与锁文件完整存在。可以先执行 npm run clean,再重新执行 npm ci和 npm run build;若失败原因涉及操作系统原生依赖,资料只列出了 Dockerfile 中的系统包,宿主机解决方案未提供。
如何定位类型或代码风格问题
使用 npm run typecheck检查 TypeScript 类型,使用 npm run lint:ci执行仓库定义的 lint 流程。不要把 npm run format当作测试替代品,它调用 Prettier 写入格式化结果,适合在确认修改范围后使用。
集成测试如何选择沙箱
无沙箱测试使用 npm run test:integration:sandbox:none,Docker 沙箱测试使用 npm run test:integration:sandbox:docker,Podman 沙箱测试使用 npm run test:integration:sandbox:podman。Docker 模式的脚本会先执行 npm run build:sandbox;具体容器权限、网络和测试数据需要查阅仓库实现。
启动后无法访问 Gemini 服务怎么办
给定资料没有认证配置、API 地址或错误码说明,因此不能提供未经核查的环境变量或命令。应先确认本地构建和入口检查通过,再按照最新 README 或官网文档配置凭据,并避免把敏感值写入 shell 历史、日志和源码。
A2A 服务器端口如何确认
根脚本明确以 CODER_AGENT_PORT=41242启动 @google/gemini-cli-a2a-server工作区。该端口只应视为脚本中的配置值;协议路径、监听地址和外部访问要求官方仓库未提供该信息,建议以最新文档为准。
构建与容器化路径
Dockerfile 使用多阶段构建,核心思路是先安装依赖和生成构建包,再在运行阶段使用非 root 用户安装打包产物。该路径适合需要统一 Node.js 运行环境、减少开发源码进入运行镜像的测试部署场景。
FROM docker.io/library/node:20-slim AS builder
WORKDIR /build
COPY package*.json ./
RUN HUSKY=0 npm ci --ignore-scripts
COPY packages/ ./packages/
RUN HUSKY=0 npm run build
FROM docker.io/library/node:20-slim
USER node
ENTRYPOINT ["/usr/local/share/npm-global/bin/gemini"]上面的代码片段摘取并压缩了仓库 Dockerfile 的关键阶段,完整构建还会复制多个工作区清单、脚本和配置文件,并执行核心包与 CLI 包的 npm pack。运行镜像安装 Python 3、Git、ripgrep、gh 等工具,具体清单以仓库 Dockerfile 为准。
镜像通过 NPM_CONFIG_PREFIX=/usr/local/share/npm-global设置全局 npm 目录,并把该目录加入 PATH。Dockerfile 还设置了 SANDBOX和 CLI_VERSION构建运行变量,但资料未说明它们在所有命令中的行为,因此不应将其扩展为完整配置接口。
维护与贡献检查清单
项目已经在根脚本中提供格式化、静态检查、类型检查、单元测试、集成测试、评估和预检流程。贡献者可以把这些脚本作为提交前的可核查清单,但测试通过不等同于生产安全审计或兼容性证明。
- 执行
npm ci,确保依赖按锁文件安装。 - 执行
npm run format,检查格式化变更是否仅限预期文件。 - 执行
npm run build,验证构建产物生成。 - 执行
npm run lint:ci,确保 lint 流程无错误。 - 执行
npm run typecheck,检查工作区及测试目录类型。 - 执行
npm run test:ci,运行 CI 测试路径。 - 涉及沙箱时,分别确认目标环境支持 Docker 或 Podman,并执行对应集成测试。
- 提交修改时遵守 Apache-2.0 贡献和版权通知要求,具体以仓库许可证及贡献指南为准。
“An open-source AI agent that brings the power of Gemini directly into your terminal.”
来源:README
项目地址与资源
以下链接仅列出资料中给出的项目仓库和官网、文档入口。版本、安装方式、认证说明和功能变化应以这些官方资源的最新内容为准。



