本篇解决Gemini的登录地区限制问题和如何在Docker中配置sandbox
Gemini的CLI并不像codex那样自动分配沙箱隔离
所以需要我们自己配置
使用Gemini API登录
npm i -g @google/gemini-cli@latest
初次下载Gemini的需要登录,当然你也可以用CC switch反代其他的api
不过也可以用api
创建api并接入cli
此时会显示no sandbox
由于Google Gemini采用 cli 和sandbox分离策略,所以我们需要自己在docker中配置
Docker中配置sandbox
安装完毕后启动docker
先打开Gemini的CLI
gemini
先使用这个命令更新
npm install -g @google/gemini-cli@latest
看看你的Gemini的CLI的版本
gemini --version #例如我的是0.62.0
然后再把你的API告诉终端(临时操作,终端关掉仍然需要重新认证)
$env:GEMINI_API_KEY="你的key"
当然也可以写入用户变量或系统变量持久化
[Environment]::SetEnvironmentVariable("GEMINI_API_KEY", "你的key", "User")
[Environment]::SetEnvironmentVariable("GEMINI_API_KEY", "你的key", "Machine")
配置wsl到其他盘,因为后续在docker中安装的东西会默认安装在wsl会占用很多磁盘空间
在docker中安装镜像,sandbox的版本就是你的gemini的版本,自行替换,更新的话就是重新执行这个命令(注意版本号与gemini一致)
docker pull us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.62.0 #sandbox的版本就是你的gemini的版本,自行替换
然后在sandbox沙盒中启用gemini(注意,此时要打开docker,否则会报错系统找不到sandbox)
gemini --sandbox
#或者
gemini -s
此时就可以正常使用了
可能出现的问题(对于gemini 0.63.0)
如图,我们使用gemini -s选择信任工作区文件夹或者其父文件夹的时候会发现始终无法信任,会显示
Skipping project agents due to untrusted folder. To enable, ensure that the project root is trusted.
不过我们如果不使用sandbox的话,直接用
gemini命令打开Gemini,此时工作区目录信任是正常的
此时我们只能选择不信任(Don't trust),结果就是工作目录里的这些文件夹里的东西不会被加载
.gemini
GEMINI.md
MCP
Hooks
Commands
Skills
不过我们的沙盒依旧正常运行,我们可以在Gemini终端启动时新开一个终端使用 docker ps 检查Docker容器的正在运行的容器
docker ps
信不过的话可以直接让Gemini检测自己现在在什么环境下运行,只要sandbox是和我们docker上的对得上就没问题,而且docker的wsl2本质是linux,我们当前的容器相当于是在linux中运行
run shell command: echo "SANDBOX=$SANDBOX"; echo "HOSTNAME=$HOSTNAME"; uname -a; pwd
可以看到
解决方法
我们可以让Gemini跳过这个信任
--skip-trust 参数用于本次 session 直接信任当前 workspace, 跳过 Folder Trust 检查
这样就不会看到这个烦人的弹窗了,然后我们试试,只要sandbox显示的是current process就没问题
gemini -s --skip-trust
或者我们修改powershell的Profile配置文件配置一个自动转换,这样下一次我们只需要用gemini -s或者gemini --sandbox
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自己在文件下方添加然后保存关闭文件
先找到这个文件在哪
$PROFILE
然后
# 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
}
}










