最近在折腾开发环境的时候,有个小需求其实挺普遍的:为了处理不同的任务,我习惯同时开四五个 Codex CLI 的终端窗口。比如一个在写前端代码,一个在写脚本,还有一个在调试旧项目。

但问题随之而来:默认情况下,打开的这些 CLI 窗口往往共用一套模型配置。这就导致我想在这个窗口用 GPT-4 跑逻辑,那个窗口用 GPT-3.5 快速补全代码时,得频繁切换配置,非常折腾。有没有办法让不同的 CLI 实例拥有各自独立的模型设置呢?经过一番摸索,答案当然是肯定的。

为什么会“打架”?

大多数 CLI 工具在启动时,都会去读取用户目录下的默认配置文件(比如 ~/.config 或者项目根目录下的配置文件)。当你打开多个进程时,它们读取的是同一个文件源头,自然就共享了模型参数(API Key、模型名称、温度 Top-P 等)。

要解决这个问题,核心思路就是打破这种共享机制,让每个实例读取不同的配置源。

方案一:环境变量大法(最推荐)

这是最通用也最优雅的方法,不需要你改动任何系统全局配置文件,也不会污染其他项目的设置。

在启动新的 CLI 实例前,直接在当前的 Shell 会话中临摹环境变量。Codex CLI 通常支持通过环境变量来覆盖配置文件中的设置。

假设你想启动一个使用 o1-preview 模型的专用窗口,操作流程如下:

  1. 打开一个新的终端窗口。
  2. 输入以下命令(具体变量名请参照你使用的 CLI 工具文档,通常类似 MODEL_NAMEAI_MODEL):
    export AI_MODEL=o1-preview
    export AI_TEMPERATURE=0.7
    
  3. 正常启动你的 CLI 工具:codex start

Terminal window showing AI_MODEL environment variable being set

通过设置环境变量来指定该终端实例使用的模型

此时,这个窗口内的进程就会优先读取刚才设置的环境变量,而忽略全局配置。你可以再开一个窗口,这次设为 gpt-4o-mini,两边互不干扰。

进阶技巧: 如果你经常这么做,可以写几个简单的 Shell 函数或者 alias。比如写一个 dev-pro 自动加载高端模型,写一个 dev-mini 自动加载轻量模型,一键切换,效率起飞。

方案二:带参数启动

看看你手头的 Codex CLI 工具是否支持在启动命令后直接加参数。

很多优秀的工具都支持诸如:

codex start --model=gpt-4 --max_tokens=2000

如果支持,那恭喜你,这是最简单的方式。直接给每个启动命令创建不同的桌面快捷方式或者 Shell 脚本即可。

方案三:工作区级配置

Diagram showing project directory with local configuration file

项目目录下的配置文件结构示意

如果你是在不同的项目文件夹下工作,最好的办法是将配置文件下沉到项目中。

检查一下 CLI 工具是否支持读取当前工作目录下的配置文件(例如 .codexrccodex.config.json)。工具通常会遵循“当前目录优先级高于全局目录”的原则。

操作方法:

  1. 进入项目 A 的目录。
  2. 创建配置文件,写入需要的模型 ID。
  3. 进入项目 B 的目录。
  4. 创建另一个配置文件,写入不同的模型 ID。

这样,只要你在哪个目录下启动 CLI,它就会自动加载该目录专属的配置,完全不需要手动干预。【划重点:记得把配置文件加入到 .gitignore 里,防止把 API Key 传到 GitHub 上去!】

方案四:多用户或多配置文件路径(高阶)

如果以上方法都不行,或者你想彻底隔离,可以使用“配置文件路径”参数。

有些 CLI 允许你指定配置文件的位置:

codex start --config ~/.codex_pro_config

你可以在家里准备两套配置文件,一套是日常用的,一套是重型任务用的,每次启动时指定路径。

总结

多开窗口本来是为了并行工作,配置冲突反而成了累赘。其实解决这个问题并不难,最简单的先用环境变量试试,如果不行就看看有没有启动参数支持,最后再考虑项目级配置

折腾好了,左边窗口用 o1 深度思考,右边窗口用 4o-mini 快速生成 Boilerplate 代码,这才是多屏开发的正确姿势。希望这些小技巧能帮到同样在纠结这事的你!

标签: none

AI Skills Smart Station on Nick Launches

评论已关闭