本篇解决Gemini的登录地区限制问题和如何在Docker中配置sandbox

Gemini的CLI并不像codex那样自动分配沙箱隔离

所以需要我们自己配置

使用Gemini API登录

powershell
1
npm i -g @google/gemini-cli@latest

初次下载Gemini的需要登录,当然你也可以用CC switch反代其他的api

​ image-20260420101137242

​ image-20261008101031398

不过也可以用api

前往谷歌ai studio官网

​ image-20260420101504377

创建api并接入cli

​ image-20260420101654934

此时会显示no sandbox

由于Google Gemini采用 cli 和sandbox分离策略,所以我们需要自己在docker中配置

Docker中配置sandbox

下载Docker以及下载docker汉化补丁(可选)

安装完毕后启动docker

先打开Gemini的CLI

powershell
1
gemini

先使用这个命令更新

powershell
1
npm install -g @google/gemini-cli@latest

看看你的Gemini的CLI的版本

powershell
1
gemini --version    #例如我的是0.62.0

然后再把你的API告诉终端(临时操作,终端关掉仍然需要重新认证)

powershell
1
$env:GEMINI_API_KEY="你的key"

当然也可以写入用户变量或系统变量持久化

powershell
123
[Environment]::SetEnvironmentVariable("GEMINI_API_KEY", "你的key", "User")

[Environment]::SetEnvironmentVariable("GEMINI_API_KEY", "你的key", "Machine")

​ image-20260420105310444

配置wsl到其他盘,因为后续在docker中安装的东西会默认安装在wsl会占用很多磁盘空间

​ image-20261008102422244

在docker中安装镜像,sandbox的版本就是你的gemini的版本,自行替换,更新的话就是重新执行这个命令(注意版本号与gemini一致)

powershell
1
docker pull us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.62.0   #sandbox的版本就是你的gemini的版本,自行替换

​ image-20261008102834210

然后在sandbox沙盒中启用gemini(注意,此时要打开docker,否则会报错系统找不到sandbox)

powershell
123
gemini --sandbox
#或者
gemini -s

​ 此时就可以正常使用了

可能出现的问题(对于gemini 0.63.0)

​ image-20261008182538375

如图,我们使用gemini -s选择信任工作区文件夹或者其父文件夹的时候会发现始终无法信任,会显示

Skipping project agents due to untrusted folder. To enable, ensure that the project root is trusted.

不过我们如果不使用sandbox的话,直接用gemini命令打开Gemini,此时工作区目录信任是正常的

此时我们只能选择不信任(Don't trust),结果就是工作目录里的这些文件夹里的东西不会被加载

text
123456
.gemini
GEMINI.md
MCP
Hooks
Commands
Skills

不过我们的沙盒依旧正常运行,我们可以在Gemini终端启动时新开一个终端使用 docker ps 检查Docker容器的正在运行的容器

powershell
1
docker ps

可以看到当前我们的sandbox运行的很正常image-20261008183941739

信不过的话可以直接让Gemini检测自己现在在什么环境下运行,只要sandbox是和我们docker上的对得上就没问题,而且docker的wsl2本质是linux,我们当前的容器相当于是在linux中运行

shell
1
run shell command: echo "SANDBOX=$SANDBOX"; echo "HOSTNAME=$HOSTNAME"; uname -a; pwd

可以看到

​ image-20261008184645308

解决方法

我们可以让Gemini跳过这个信任

--skip-trust 参数用于本次 session 直接信任当前 workspace, 跳过 Folder Trust 检查

这样就不会看到这个烦人的弹窗了,然后我们试试,只要sandbox显示的是current process就没问题

powershell
1
gemini -s --skip-trust 
image-20261008190127783

或者我们修改powershell的Profile配置文件配置一个自动转换,这样下一次我们只需要用gemini -s或者gemini --sandbox

powershell
12345678910111213
Add-Content $PROFILE @'

# Gemini CLI: 使用 -s/--sandbox 时自动追加 --skip-trust
function gemini {
    $c = (Get-Command gemini.cmd -CommandType Application).Source
    if (($args -contains "-s" -or $args -contains "--sandbox") -and -not ($args -contains "--skip-trust")) {
        & $c @args --skip-trust
    } else {
        & $c @args
    }
}
'@
. $PROFILE

或者我们也可以打开Microsoft.PowerShell_profile.ps1自己在文件下方添加然后保存关闭文件

先找到这个文件在哪

powershell
1
$PROFILE

然后

powershell
1234567891011121314
# Gemini CLI: 使用 -s/--sandbox 时自动跳过文件夹信任确认
function gemini {
    $geminiCmd = (Get-Command gemini.cmd -CommandType Application -ErrorAction Stop).Source

    $useSandbox = $args -contains "-s" -or $args -contains "--sandbox"
    $hasSkipTrust = $args -contains "--skip-trust"

    if ($useSandbox -and -not $hasSkipTrust) {
        & $geminiCmd @args --skip-trust
    }
    else {
        & $geminiCmd @args
    }
}

​ image-20261008193401672