baa-conductor


baa-conductor / tasks / archive
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` 现在各自状态