Gemini CLI 新增查询模型列表的命令,并补充了在容器内运行时连接宿主机编辑器的功能。对于希望通过自动化工具读取模型列表,或在隔离开发环境中使用编辑器功能的开发者,列表查询和 IDE 集成都变得更方便。

1. 在终端中查看模型列表并以 JSON 输出

11月4日发布的这个版本可通过 gemini models 查询模型信息。gemini models list 也会输出同一份列表,并可选择适合在终端阅读的文本,或供其他程序处理的 JSON。

JSON 为数组,每项包含模型标识符、显示名称、说明以及输入和输出 token 上限。因此,不仅能查看模型名称,还能在后续脚本中读取列表,用于选择或展示。

列表查询会在初始化交互界面或沙箱之前完成。通过管道,即将命令结果传给下一个程序的连接方式,传递结果时,为避免标准输出这一程序默认输出结果的通道混入认证信息刷新日志,非交互式、即不等待用户输入的列表查询也会跳过不必要的认证刷新。

原文验证流程中,构建软件包后运行的 JSON 输出示例如下。两条命令分别使用独立查询命令和列表输出选项。

node packages/cli/dist/index.js models -o json | jq .
node packages/cli/dist/index.js --list-models -o json | jq .

2. 在隔离容器与宿主机编辑器之间中转

此前,若 CLI 位于作为隔离运行空间的容器沙箱内,而编辑器位于外部宿主机上,IDE 集成就无法工作。原因是编辑器扩展只接受来自宿主机内部的连接,并要求认证令牌,而启动器不会将该令牌传入容器。

新机制由宿主机上的 CLI 启动器保管认证信息并与编辑器通信,再利用容器的命令执行通道及内部套接字这一进程间通信连接点中转通信。连接使用标准输入输出而非网络,因此设计上也可用于单独隔离容器网络的 gVisor 环境。

中转程序会在沙箱会话存续期间运行。若与编辑器扩展断开连接,CLI 会提示重新启用连接,并在下次初始化连接时,由宿主机端重新查找并连接编辑器。

3. 延续编辑器操作,将路径验证交给宿主机

用户在 VS Code 中打开项目并运行 Gemini CLI 配套扩展后,可在编辑器集成终端中以容器方式启动 CLI。容器镜像必须包含 node,且沙箱启动时扩展必须已在运行。

连接后,可通过 /ide status 查看状态,并请求修改,在编辑器中查看修改前后的差异。原文的验证流程还会检查,在编辑器中接受或拒绝修改的结果是否也会传回 CLI。

开发者可以在用容器隔离运行环境的同时,继续使用已打开文件的上下文传递和变更审查功能。相应地,宿主机启动器负责通信中转和访问边界验证。它只放行获准的工具请求和工作文件夹内的路径,并在针对文件夹外文件的差异比较请求到达编辑器之前将其拒绝。

4. 支持范围与已验证环境

这些变更适用于 Docker 和 Podman 运行路径。开发者在变更提案中记录的验证环境为 Linux 工作站和 Docker 29.7,既测试了常规 Docker 运行,也测试了使用 gVisor 运行器 runsc 的运行方式。连接验证同时使用了实际 VS Code 窗口和模拟编辑器的测试程序。

不过,LXC 和 Windows 宿主机不在本次实现范围内,变更前的镜像在没有中转连接时,可能仍显示旧提示。在验证用宿主机上,无管理员权限运行的 Podman 因既有用户 ID 映射、即宿主机与容器之间的账户关联规则问题,在 CLI 启动前便已失败,因此该运行路径仅通过验证小范围行为的单元测试进行确认。

这个版本的核心,是为自动化工具获取模型信息提供入口,并建立在保持容器隔离的同时继续进行编辑器操作的连接通道。