想试用 Jev 给 Codex 自动选模型?直接抄下面教程即可

想试用 Jev 给 Codex 自动选模型?直接抄下面教程即可

先简单说明一下:
上一个帖子中,模型可以选择 「Jev Codex Router」 表示:当前任务交给 Jev 做“模型选择”,而不是固定使用某一个模型。

简单说:每个任务开始时,Jev 会根据难度选择合适的模型和推理强度。

所以它更像一个“自动变速箱”:
在同一个用户回合里,如果只是连续执行工具,Jev 可能维持同一个模型;遇到新问题、新回合、错误或上下文变化时,会重新判断。

下面是教程部分:
我没有直接运行网上的 curl | bash,是一套我实际走通的、可回滚的安装方法。

目标是:
▸ 不覆盖原来的 Codex 配置
▸ 不把 Jev 设成永久默认模型
▸ 不让 secret 进入 Git 或日志
▸ 随时可以恢复到安装前状态

完整流程分 7 步,建议照顺序执行。

第 1 步:准备环境和试用目录

要求:
•macOS
•Codex 已正常登录
•Node.js ≥ 22.19
•Python 3.12
•Git
•TypeSafe API Key

终端运行:
export TRIAL_ROOT="$HOME/Documents/jev-router-trial-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$TRIAL_ROOT"/{backup,logs,private,source}
chmod 700 "$TRIAL_ROOT/private"

node --version
python3 --version
git --version

如果 Node 版本太旧,先切换到 Node 24:
nvm install 24
nvm use 24

第 2 步:备份 Codex 配置

cp -p "$HOME/.codex/config.toml" \
"$TRIAL_ROOT/backup/config.toml"

/usr/bin/shasum -a 256 \
"$TRIAL_ROOT/backup/config.toml" \
> "$TRIAL_ROOT/backup/config.sha256"

确认备份有效:
/usr/bin/shasum -a 256 -c \
"$TRIAL_ROOT/backup/config.sha256"

输出必须是 OK。

同时记录当前默认模型:
grep -E '^(model|model_provider|model_reasoning_effort)' \
"$HOME/.codex/config.toml"
这一阶段不要修改任何 Codex 文件。

第 3 步:固定仓库版本,并先读安装脚本

git clone \
https://github.com/0xNatoshi/jev-codex-router.git \
"$TRIAL_ROOT/source/jev-codex-router"

git -C "$TRIAL_ROOT/source/jev-codex-router" \
checkout 8701ef788aa8cb0948f299538747fb01029d32b8

先看文档和脚本:
sed -n '1,240p' \
"$TRIAL_ROOT/source/jev-codex-router/README.md"

sed -n '1,260p' \
"$TRIAL_ROOT/source/jev-codex-router/install.sh"

sed -n '1,220p' \
"$TRIAL_ROOT/source/jev-codex-router/server/INSTALL.md"

不要直接运行根目录安装脚本。

我在固定版本中发现:根安装脚本会先关闭 discovery,再尝试启用 ChatGPT session,顺序存在冲突。
所以后面使用审阅过的手动安装步骤。

第 4 步:安装本地 Codex Router

export REPO_ROOT="$TRIAL_ROOT/source/jev-codex-router"
export ROUTER_ROOT="$REPO_ROOT/router"

cd "$ROUTER_ROOT"

npm ci --include=dev --ignore-scripts

./install.sh --no-provider --no-tray
这里不要加 --no-discovery。
安装后检查:

"$ROUTER_ROOT/bin/codex-router" status
"$ROUTER_ROOT/bin/codex-router" doctor

如果安装器最后因为“没有 provider”返回非零,但状态里显示 Router 已启动、4200–4203 正在监听,不要立即重装。接下来注册 Jev provider 后再重新检查。

第 5 步:配置 TypeSafe 和 Jev provider

先创建只允许当前用户读取的 secret 文件:

umask 077
touch "$TRIAL_ROOT/private/jev.env"
chmod 600 "$TRIAL_ROOT/private/jev.env"
用编辑器打开:
"${EDITOR:-vi}" "$TRIAL_ROOT/private/jev.env"

写入下面这一行,把值替换成你自己的 key:

TYPESAFE_API_KEY=你的_API_KEY

不要把 key 写进命令行、Git、截图或日志。

然后执行:

cd "$REPO_ROOT"

export JEV_ENV_FILE="$TRIAL_ROOT/private/jev.env"

node server/configure-model.mjs
node server/configure-auth.mjs

"$ROUTER_ROOT/bin/codex-router" refresh-catalog
"$ROUTER_ROOT/bin/control" picker set jev/auto show
"$ROUTER_ROOT/bin/codex-router" chatgpt-session enable

检查模型目录里是否出现 jev/auto:

"$ROUTER_ROOT/bin/codex-router" status

第 6 步:启动 Jev 服务并重新加载父 Router

cd "$REPO_ROOT"

bash server/install-service.sh
"$ROUTER_ROOT/bin/control" service restart

检查 Jev 服务:

curl -fsS http://127.0.0.1:4319/health

预期看到:
{"ok":true,"service":"jev-router",...}

再检查端口:

/usr/sbin/lsof -nP -iTCP:4202 -sTCP:LISTEN
/usr/sbin/lsof -nP -iTCP:4319 -sTCP:LISTEN

注册 provider 后必须重启父 Router,否则它可能还不知道 jev/auto 已经存在。

第 7 步:做 3 个真实 smoke test

先做最小测试:

cd "$REPO_ROOT"
python3 server/smoke.py

然后分别测试:
A:简单文本修改
B:小型代码实现
C:安全审查或架构分析

观察每次的:

→实际模型
→thinking / effort
→是否 fallback
→是否 retry
→HTTP 状态
→总耗时

我这次的结果是:
A → GPT-5.6-Luna / low
B → GPT-5.6-Terra / low
C → GPT-6-Astra / high

三次都是 HTTP 200,没有 fallback,也没有 retry。

最后运行:
"$ROUTER_ROOT/bin/codex-router" doctor
git -C "$REPO_ROOT" status --short

确认 doctor 通过、仓库没有源码改动,再退出并重新打开 Codex,在模型选择器里手动选择 Auto (Jev)。

如果成功,重启后就可以在对话框中选择「Jev Codex Router」模型了!


分类