im_wower
·
2026-03-23
0002-codexd-independent-daemon.md
1# 0002 codexd 独立常驻进程决策
2
3## 状态
4
5已采纳。
6
7## 决策
8
9`codexd` 必须是 `mini` 上的独立常驻进程,不允许把 Codex 的长期运行面内嵌到 `conductor-daemon` 里。
10
11同时明确:
12
13- `codexd` 由 `launchd` 托管
14- `codexd` 是唯一 Codex 运行面
15- `conductor-daemon` 只通过本地接口调用 `codexd`
16- `codexd` 主接口基于 `codex app-server`
17- 正式运行面只保留 session / turn / status / events
18- 不实现 `codex exec` 式无交互正式模式
19
20## 原因
21
22- 目标需求是 Codex 常驻、双工、多轮和可恢复,不是一次性调用
23- `codex exec` 在当前环境里卡顿明显且容易假死,不适合作为正式运行面
24- 内嵌在 `conductor-daemon` 内会把系统真相和 Codex 会话状态混在一起
25- 独立进程更容易做崩溃隔离、日志落盘、会话恢复和运行态排障
26- `conductor-daemon` 与 `codexd` 都由 `launchd` 管理时,可以各自重启并重新建立连接
27
28## 直接影响
29
30- 不再接受“把 `/v1/codex/*` 直接绑到 conductor 进程内 bridge”作为最终方案
31- 后续 `conductor` 侧的 `/v1/codex/*` 只能作为 `codexd` 的代理面
32- `codexd` 自己维护:
33 - `logs/codexd/**`
34 - `state/codexd/**`
35 - session / turn / recent event 真相
36
37## 运行边界
38
39- `launchd` 负责硬重启和开机自启动
40- `conductor-daemon` 与 `codexd` 负责健康感知、重连和降级
41- 不做“一个进程直接拉起另一个进程”的无约束互救
42
43## 接口方向
44
45- 本地命令/查询面:HTTP
46- 本地双工事件流:WS 或 SSE
47- 远程 AI / CLI / 网页入口仍通过 `conductor.makefile.so`