配置 Arize Phoenix 会话追踪

运行安装向导并选择 Phoenix,通过 notify 发送会话追踪。凭证存于 ~/.arize/harness/config.json,已有 notify 配置时先备份。

Arize Phoenix 官方 Codex 追踪:clone 后 ./install.sh codex,走顶层 notify 不是 /hooks。这是把 Codex 会话追踪发送到 Phoenix(或 Arize AX),不是 marketplace 插件,也不是 MCP。官方 Phoenix 集成页写明走 Codex 的 notify 事件(agent-turn-complete),从 rollout 重建 OpenInference span。仓库 tracing/codex/README.md 仍写 /hooksarize-hook-codex-*,那是旧布局;现行 install.py_codex_toml_apply 只保证 notify 二进制出现一次,不会改你现有的 [[hooks.]]。以前留下的 arize-hook-codex-* 要卸装才会清。

更稳是 clone 再跑安装器(官方也给了 curl 管道,不是唯一路径):

git clone https://github.com/Arize-ai/coding-harness-tracing.git
cd coding-harness-tracing
./install.sh codex

Windows 才 install.bat codex。向导里选 Phoenix,填 endpoint(自建默认 http://localhost:6006)和可选 API key,再填项目名。装完开新 shell。凭证在 ~/.arize/harness/config.json。按类覆盖写 ~/.codex/arize-env.sh(notify 进程会 source),环境变量赢过 json:

export PHOENIX_ENDPOINT="http://localhost:6006"
export PHOENIX_API_KEY="..."
export PHOENIX_PROJECT="codex"
export ARIZE_TRACE_ENABLED="true"

Phoenix 项目名用 PHOENIX_PROJECTPHOENIX_PROJECT_NAMEARIZE_PROJECT_NAME 只给 Arize AX,在 Phoenix 上会被忽略。ARIZE_TRACE_ENABLED 不论后端都保留 ARIZE_ 前缀。密钥不要写进 config.tomlenv 表。该服务不是 MCP,不要 codex mcp login

notify 是用户层一组命令 argv,必须写在任何 [table] 之前,项目 .codex/config.toml 里的 notify 会被忽略。安装器若发现数组里还没有自己的二进制,就 append。你已经有 notify = ["python3", "/home/you/.codex/notify.py"] 时,再塞进 Arize 路径会变成三个参数,桌面提醒和追踪都会坏。先备份 ~/.codex/config.toml。冲突时先卸装或自己做 fanout,不要当多条钩子叠。

默认会记 prompt、工具名/参数和工具输出。要脱敏才把对应旗标设成字符串 false

export ARIZE_LOG_PROMPTS="false"
export ARIZE_LOG_TOOL_DETAILS="false"
export ARIZE_LOG_TOOL_CONTENT="false"

含密钥或客户数据的会话不要开正文采集。临时关掉:ARIZE_TRACE_ENABLED=false 后重启 Codex。测的时候跑一条短 codex exec,再看 Phoenix 里按 session.id 分组的回合,以及 ~/.arize/harness/logs/codex.log。网页 Cloud 不跑这份本机 notify。

配置说明:

  • 不要把仓库 README 的 /hooksarize-hook-codex-* 当成现行主路径。
  • 不要 codex mcp add phoenix,也不要 mcp login
  • 不要一上来把 curl 管道当唯一路径,也不要 --yolo
  • 不要覆盖别人已经在用的 notify argv。

卸装:

./install.sh uninstall codex

改完用新 shell 跑一轮短任务,核对 Phoenix 出现 span,config.toml 顶层 notify 里有 Arize 二进制。

来源