Codex其实自带沙盒,但我更喜欢放到Docker容器里,然后把工作项目文件通过宿主机的一个目录映射挂载进容器内。
这样能保证宿主机和容器的隔离,防误操作,同时也方便项目文件的查看修改等操作。
1
| mkdir -p /opt/docker/agent
|
这个文件夹用来放工作项目文件和docker compose.yml,创建的路径自己根据需求来。
1
| mkdir -p /opt/docker/agent/{.codex,.claude,workspace}
|
生成Codex和Claude Code的配置文件夹,工作项目。(其实Docker -v挂载卷如果对应文件夹不存在,默认会创建)
1 2
| cd /opt/docker/agent vim Dockerfile
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| FROM node:lts-slim
RUN apt-get update && apt-get install -y --no-install-recommends \ git \ curl \ sudo \ ca-certificates \ bubblewrap \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN npm install -g @anthropic-ai/claude-code @openai/codex \ && npm cache clean --force \ && rm -rf /root/.npm
WORKDIR /workspace
|
Docker容器最常见的一般是Alpine版本,但这类Agent工具对Alpine的支持恐怕有限,这里用Debian的slim版本。
我已经在这个Dockerfile体现了分层构建的好处,并尽量减少镜像的体积。
1 2 3 4 5 6 7 8 9 10 11 12 13
| services: ai-agent: build: . container_name: ai-agent stdin_open: true tty: true restart: unless-stopped volumes: - ./workspace:/workspace - ./.claude:/root/.claude - ./.codex:/root/.codex
|
接下来在宿主机添加环境变量方便直接调用工具。
添加这两行
1 2
| alias codex='docker exec -it ai-agent codex' alias claude='docker exec -it ai-agent claude'
|
然后:
不出意外的话,直接在宿主机的shell里输入codex或者claude就能直接打开了。
.codex和.claude的配置文件有需求的话,自行修改。
平时使用anyrouter比较多。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| model_provider = "AnyRouter" model = "gpt-5.5" review_model = "gpt-5.5" model_reasoning_effort = "xhigh" plan_mode_reasoning_effort = "xhigh" approval_policy = "never" sandbox_mode = "danger-full-access" disable_response_storage = true network_access = "enabled" windows_wsl_setup_acknowledged = true
[model_providers.AnyRouter] name = "AnyRouter" base_url = "https://anyrouter.top/v1" wire_api = "responses" requires_openai_auth = true
[features] goals = true
[projects."/workspace"] trust_level = "trusted"
[mcp_servers.exa] url = "https://mcp.exa.ai/mcp"
[tui.model_availability_nux] "gpt-5.5" = 4
|
provider这个字段如果是OpenAI的话,Codex默认启用的是远程压缩,请求/v1/responses/compact。
anyrouter不支持远程压缩,把这个provider换成非OpenAI字段,就可以走本地压缩了。
虽然本地压缩的效果不如远程好。
1 2 3 4
| # 全局记忆指令
1. 每次对话开始前应该称呼用户为Alpha。 2. 需要使用网络搜索和抓取 , 即websearch和webfetch功能时,应该使用exa mcp,不要用系统自带的内容。
|