前言

日常主力用Zed写Android Kotlin项目,项目近七千行代码,经常要做全仓代码审计、MVP转MVVM架构迁移、批量整改源码。一直想把Codex CLI接入编辑器,依靠它的多文件Agent调度能力做工程级重构,但不想后端走OpenAI,选择DeepSeek-V4-Flash。

设备是2015款Intel MacBook Pro,系统锁死macOS 12无法升级,16G内存资源有限,前后折腾一晚上,踩遍新版Codex各类兼容坑,最终敲定一套零报错、内存占用极低的稳定方案,记录下来方便后续复用。

整体链路非常直白: 本地Codex CLI读取自身~/.codex/config.toml配置,原生走OpenAI Responses接口直连DeepSeek;Zed编辑器依靠内置ACP协议唤起Codex进程,全程无需手写繁杂JSON接入配置。

全程踩过的所有坑

  1. 新版DeepSeek-V4-Flash完整兼容Responses协议,没必要套Python中转脚本codex-cc,多一层转发只会增加延迟、常驻后台吃掉内存;
  2. Codex CLI v0.146及以上版本,彻底移除官方内置filesystem、terminal两套原生MCP服务;
  3. 手动接入社区通用MCP套件,全部会被标记Unsupported,MCP握手直接断开,启动持续抛出警告;
  4. Mac系统目录权限限制,npm全局安装MCP工具必然报EACCES权限拒绝;
  5. npx临时拉取Node依赖,国内网络极易下载超时,日常使用稳定性很差;

最终取舍方案:彻底删掉所有MCP配置,完全依赖Codex CLI自带原生文件读写、Shell执行能力,剥离全部第三方插件,从根源杜绝兼容故障。

一、环境彻底重置清理

之前多次安装、调试残留的缓存、配置极易引发异常,先全盘初始化一遍:

# 杀掉后台所有Codex常驻进程
pkill codex
# 清空Codex全部配置、缓存文件
rm -rf ~/.codex

重装最新版 Codex CLI 客户端:

curl -fsSL https://codex.openai.com/install.sh | sh
# 校验安装版本
codex --version

全程不用额外安装 Node 全局包、Python 依赖,环境干净无冗余。

二、最终定稿配置:~/.codex/config.toml

适配大 Kotlin 项目分块加载、老旧 Mac 内存优化、沙盒安全权限,通篇无任何 MCP 节点,复制粘贴即可直接生效:

# 默认调用推理模型
model = "deepseek-v4-flash"
model_provider = "deepseek_native"
# 复杂代码重构开启高推理强度
model_reasoning_effort = "high"
model_reasoning_format = "experimental"

# 沙盒权限:仅允许当前项目目录读写文件、执行终端命令,高危操作需手动弹窗确认
sandbox_mode = "workspace-write"
approval_policy = "on-request"

# 关闭遥测上报、本地日志存储,削减内存开销
disable_response_storage = true
disable_telemetry = true

# 大工程上下文阈值,防止一次性载入数千源码内存溢出
max_context_tokens = 120000
context_strategy = "directory_chunk"
chunk_size = 1500

# DeepSeek原生Responses协议直连配置
[model_providers.deepseek_native]
name = "DeepSeek-V4-Flash-Native"
base_url = "https://api.deepseek.com/v1"
wire_api = "responses"
experimental_bearer_token = "填入个人DeepSeek平台API密钥"

# 开启外网访问权限,方便查阅Android开发适配文档
[sandbox_workspace_write]
network_access = true

关键配置细节说明

  1. sandbox_mode = workspace-write 隔离系统目录,仅可操作当前打开的工程文件夹,本地开发兼顾安全与便捷;
  2. directory_chunk 不会一次性加载整个项目所有代码,按照目录分块按需读取,七千文件大项目不会卡顿、内存飙升;
  3. 全文无[mcp_servers]相关内容 新版 Codex 对第三方 MCP 全面限制,删除后启动无握手失败警告,界面清爽干净。

三、本地连通性自测(三项基础校验)

进入 Android 项目根目录,打开终端逐条测试核心能力:

  1. 校验模型调用链路通畅
codex chat "编写兼容Android 4.4(API19)的Kotlin BaseViewModel,附带标准KDoc注释"

正常输出规范代码片段,代表云端推理链路打通。

  1. 校验文件遍历读取(代码审计必备)
codex chat "统计项目内所有.kt Kotlin文件总数量"
  1. 校验终端 Shell 调用(编译自动修复闭环)
codex chat "执行 ./gradlew --version,返回完整输出内容"

三条指令均可顺利执行,文件浏览、命令行执行两大重构核心能力全部就绪。

四、Zed 编辑器最简接入方式(无需手写 JSON 配置)

Zed 新版内置 External Agent 支持,早已适配 Codex ACP 适配器,不需要手动编写 agent_servers 配置,操作一步到位:

  1. 打开 Zed,按下快捷键唤起 AI 智能面板;
  2. 点击面板右上角 + 加号按钮
  3. 下拉菜单选择「外部代理(external agent)」→ Codex
  4. 首次打开会自动拉取轻量 ACP 适配层,等待几秒初始化完成,即可在编辑器内下发审计、重构指令。

可选:绑定快捷键一键唤起会话

想要快速打开 Codex 对话,可编辑按键映射文件,添加自定义快捷键:

[
  {
    "bindings": {
      "cmd+alt+c": [
        "agent::NewExternalAgentThread",
        {
          "agent": {
            "custom": {
              "name": "codex-acp"
            }
          }
        }
      ]
    }
  }
]

重要规则区分

Zed 内置 AI 密钥和 Codex 密钥相互独立: Zed 设置里填写的 DeepSeek 密钥,只会供给编辑器原生 AI 使用;Codex 完全读取~/.codex/config.toml内配置,两套环境互不干扰。

五、日常两套编码工作流划分

1. 日常编写业务代码、修复零散小 Bug

使用Zed 原生 AI 直连 DeepSeek 后台无 Codex 进程常驻,内存占用极低、响应迅速,适合日常编码、代码行内补全。

2. 全项目代码审计、架构迭代、批量源码整改

切换至Zed 内嵌 Codex 会话 可实现整套工程化能力:

  • 全局扫描内存泄漏、静态持有上下文、不符合 Koin 注入规范的代码;
  • 批量多处文件统一修改编码规范、架构分层;
  • 代码改动完成后自动执行 Gradle 打包,依据编译报错自主迭代修复;
  • 会话支持保存、加载,跨多天接续大型架构改造任务。

Codex 内置高频斜杠命令:

  • /review:评审当前 Git 本地变更,排查代码缺陷
  • /save:保存当前重构会话快照
  • /load:读取历史会话,接续未完成工作
  • /clear:清空对话上下文,开启全新任务

六、这套方案优缺点总结

优势

  1. 链路极简无中转进程,老旧 16G Mac 运行流畅不卡顿;
  2. 彻底告别 MCP 握手失败、npm 权限、网络下载超时各类兼容问题;
  3. 原生直连 DeepSeek,Token 计费精准,无多余损耗;
  4. Zed 原生界面交互,代码 Diff 预览、文件跳转体验完整,不用迁就终端界面;
  5. 会话留存、批量改代码、编译校验闭环齐全,完全满足 Android 大项目重构需求。

不足

新版 Codex 锁住第三方 MCP 入口,无法通过 Playwright 自动浏览网页查阅开发文档。 折中办法:Zed 分屏打开安卓官方适配文档,将需要参考的内容复制粘贴至对话上下文即可,影响很小。

七、日常维护常用命令

# 重启Codex后台进程
pkill codex

# 全盘重置所有配置与缓存
rm -rf ~/.codex

收尾感悟

折腾下来发现,堆砌各类插件、追求全能工具链,反而会被版本迭代带来的兼容问题反复拖累。砍掉多余依赖,依托软件原生能力搭建轻量化环境,才是老旧设备长期稳定使用的最优解,这套配置会固定作为我后续 Android 项目架构迭代的标准环境。