im_wower
·
2026-03-28
T-S001.md
1# Task T-S001:修复 codexd turn 完成状态
2
3## 直接给对话的提示词
4
5读 `/Users/george/code/baa-conductor/tasks/archive/T-S001.md` 任务文档,完成开发任务。
6
7如需补背景,再读:
8
9- `/Users/george/code/baa-conductor/bugs/BUG-010-codexd-turn-status-stuck-inprogress.md`
10- `/Users/george/code/baa-conductor/bugs/BUG-008-codexd-second-thread-turn-timeout.md`
11- `/Users/george/code/baa-conductor/apps/codexd/src/daemon.ts`
12- `/Users/george/code/baa-conductor/apps/codexd/src/app-server-transport.ts`
13- `/Users/george/code/baa-conductor/apps/codexd/src/index.test.js`
14- `/Users/george/code/baa-conductor/docs/runtime/codexd.md`
15
16## 当前基线
17
18- 仓库:`/Users/george/code/baa-conductor`
19- 分支:`main`
20- 提交:`e62e98d`
21- 开工要求:不要从其他任务分支切出;如需新分支,从当前 `main` 新切
22
23## 建议分支名
24
25- `fix/codexd-turn-completion-state`
26
27## 目标
28
29修复 codexd 在 turn 实际完成后 `session.lastTurnStatus` 仍停留在 `inProgress` 的问题,并把它和 `BUG-008` 的关系收口清楚。
30
31## 背景
32
33- 当前 `BUG-010` 表现是:agent 已经产出最终消息,但 codexd 侧 session / turn 状态没有完成收尾。
34- `BUG-008` 已经部分缓解,但两者都落在 codexd 的 transport / lifecycle / turn 状态处理上,容易互相影响。
35- 这会直接破坏 codexd 作为多 session / thread 代理的稳定性,也会让上游调用方无法可靠判断 turn 是否完成。
36
37## 涉及仓库
38
39- `/Users/george/code/baa-conductor`
40
41## 范围
42
43- 修复 codexd turn 完成态收口逻辑
44- 增加能稳定覆盖问题与修复的测试
45- 在 runtime 文档和 bug 文档里补齐当前行为结论
46
47## 路径约束
48
49- 只在 `apps/codexd/**`、`packages/codex-app-server/**`、`docs/runtime/codexd.md` 和对应 bug 文档内工作。
50- 如果需要补测试,优先落在现有 `apps/codexd/src/index.test.js` 或同目录最小新增文件里。
51
52## 推荐实现边界
53
54建议优先检查:
55
56- `codexd` 对 app-server 消息流结束、turn 完成、session 状态回写的边界
57- `app-server-transport` 的 close / reconnect / detach 触发条件
58- 第二个 session / thread 与第一个 session 完成后的状态复用问题
59
60## 允许修改的目录
61
62- `/Users/george/code/baa-conductor/apps/codexd/`
63- `/Users/george/code/baa-conductor/packages/codex-app-server/`
64- `/Users/george/code/baa-conductor/docs/runtime/codexd.md`
65- `/Users/george/code/baa-conductor/bugs/BUG-008-codexd-second-thread-turn-timeout.md`
66- `/Users/george/code/baa-conductor/bugs/BUG-010-codexd-turn-status-stuck-inprogress.md`
67
68## 尽量不要修改
69
70- `/Users/george/code/baa-conductor/apps/conductor-daemon/`
71- `/Users/george/code/baa-conductor/apps/status-api/`
72- `/Users/george/code/baa-conductor/bugs/README.md`
73
74## 必须完成
75
76### 1. 修复 turn 完成态收口
77
78- 让 codexd 在收到最终完成信号后可靠把 `lastTurnStatus` 从 `inProgress` 推进到完成态
79- 不要靠超时、重试或额外轮询掩盖问题
80
81### 2. 覆盖多 session / thread 场景
82
83- 至少覆盖第一个 session 完成后,第二个 session / thread 继续发 turn 的稳定路径
84- 明确 `BUG-008` 现在是仍独立存在,还是已随本次修复一并消失
85
86### 3. 回写文档和 bug 状态
87
88- 更新 `docs/runtime/codexd.md`,说明当前完成态行为
89- 在 `BUG-008` / `BUG-010` 文档里写清楚根因关系、当前状态和剩余风险
90
91## 需要特别注意
92
93- 不要恢复旧的 codex exec 正式模式
94- 不要顺手做大重构,优先最小修复
95- 本任务与其它并行任务边界明确,不要修改 `apps/conductor-daemon/**` 或 `apps/status-api/**`
96
97## 验收标准
98
99- codexd turn 完成后,状态不会再卡在 `inProgress`
100- 至少有一个测试稳定覆盖修复前会失败、修复后通过的路径
101- 能明确说明 `BUG-008` 和 `BUG-010` 当前各自状态
102- `git diff --check` 通过
103
104## 推荐验证命令
105
106- `npx --yes pnpm -C /Users/george/code/baa-conductor -F @baa-conductor/codexd typecheck`
107- `npx --yes pnpm -C /Users/george/code/baa-conductor -F @baa-conductor/codexd build`
108- `node --test /Users/george/code/baa-conductor/apps/codexd/src/index.test.js`
109- `git -C /Users/george/code/baa-conductor diff --check`
110
111## 交付要求
112
113完成后请说明:
114
115- 修改了哪些文件
116- 根因是什么
117- 修复点落在哪些 lifecycle / transport / session 状态逻辑
118- 跑了哪些测试
119- `BUG-008`、`BUG-010` 现在各自状态