默认情况下,Claude code 在使用系统工具、创建新文件、删除文件等操作的时候,会弹出对话框,让用户确认。
测试一个简单的写文件需求:
在项目根目录创建一个 hello.md 文件,里面写上 Hello, Claude code.
在执行大多数任务的时候,需要频繁的确认,非常浪费时间和影响效率。
Claude code 官方提供了 --dangerously-skip-permissions 参数,可以跳过所有的权限检查,能极大减少任务中断。
但是这个参数是有风险的,可能会对系统造成损害。想象一下,一觉睡醒发现代码库没了,还算好的,毕竟可以从远程仓库恢复;要是本地重要文件被删,想想都可怕。
那有没有什么办法呢,毕竟官方提供了这个参数,还特别说明了要在沙箱里用?
方法有很多,以 Mac OS 系统为例,至少可以用:
- chroot
- sandbox
- App Sandbox
- Docker
经过一番调研,我决定用 Docker 来实现,配置简单、方便。
0x01、环境准备
我使用的是 Apple M3,本地需要提前安装好:
- Docker
- git
0x02、构建 claude-code 镜像
# 从官方下载 claude-code 代码仓库(使用官方的文件构建更放心)
$ https://github.com/anthropics/claude-code
$ cd claude-code/.devcontainer
$ docker build -f ./Dockerfile -t claude-code:latest .
# 检查镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
claude-code latest babf9abdffb0 1 minutes ago 1.4GB
0x03、配置 claude 命令
这里用自定义函数的方式来做,系统用的是 zsh,所以自定义函数需要写在 ~/.zshrc 文件中。
如果你用的是 bash,可以写在 ~/.bashrc 中。
在 ~/.zshrc 中添加如下定义:
# 使用 MiniMax M2 模型,注意替换 <MINIMAX_API_KEY>
# https://platform.minimax.io/docs/guides/text-ai-coding-tools#configure-minimax-api
function open.claudecode.minimax() {
export ANTHROPIC_BASE_URL=https://api.minimax.io/anthropic
export ANTHROPIC_AUTH_TOKEN=<MINIMAX_API_KEY>
export API_TIMEOUT_MS=3000000
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
export ANTHROPIC_MODEL="MiniMax-M2"
export ANTHROPIC_SMALL_FAST_MODEL="MiniMax-M2"
export ANTHROPIC_DEFAULT_SONNET_MODEL="MiniMax-M2"
export ANTHROPIC_DEFAULT_OPUS_MODEL="MiniMax-M2"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="MiniMax-M2"
docker run -it --rm \
--network host \
-v "${PWD}":/workspace \
-w /workspace \
$(env | grep -E '^(ANTHROPIC_|CLAUDE_|OPENAI_)' | sed 's/^/-e /') \
claude-code:latest \
claude --dangerously-skip-permissions "$@"
}
0x04、测试
打开新的命令行,让刚才定义的函数生效,然后执行:
$ open.claudecode.minimax
因为每次执行都会开一个新的环境,所以需要先选择主题:
然后是安全提示:
然后是 Bypass Permissions mode 的警告:
确认之后,进入到操作界面,默认已经是 bypass permissions on了。
再次测试写文件的需求:
执行成功。
如果不想每次都选择主题、确认安全信息,可以使用非交互模式,如:
$ open.claudecode.minimax -p "在项目根目录创建一个 hello.md 文件,里面写上 Hello, Claude code."
已成功创建 hello.md 文件。