baa-conductor

git clone 

baa-conductor / tasks
im_wower  ·  2026-03-29

T-BUG-026.md

  1# Task T-BUG-026:修复 conductor-daemon 测试中 localApiBase undefined 错误
  2
  3## 状态
  4
  5- 当前状态:`已完成`
  6- 规模预估:`S`
  7- 依赖任务:无
  8- 建议执行者:`Claude`(需要理解 conductor-daemon 测试初始化流程,定位 config 注入缺失)
  9
 10## 直接给对话的提示词
 11
 12`/Users/george/code/baa-conductor/tasks/T-BUG-026.md` 任务文档,完成开发任务。
 13
 14## 当前基线
 15
 16- 仓库:`/Users/george/code/baa-conductor`
 17- 分支基线:`main`
 18- 提交:`ee40b9a`
 19
 20## 分支与 worktree(强制)
 21
 22每个任务必须使用独立的分支和 worktree,禁止直接在 main 上修改,禁止多个任务共用同一个 worktree。
 23
 24- 分支名:`bug/fix-daemon-test-localApiBase`
 25- worktree 路径:`/Users/george/code/baa-conductor-fix-daemon-test-localApiBase`
 26
 27开工步骤:
 28
 291. `cd /Users/george/code/baa-conductor`
 302. `git worktree add ../baa-conductor-fix-daemon-test-localApiBase -b bug/fix-daemon-test-localApiBase main`
 313. `cd ../baa-conductor-fix-daemon-test-localApiBase`
 324. 在这个 worktree 目录里开发,不要回到主仓库目录
 33
 34完成后提交与推送(由执行者完成,不要合并):
 35
 361. 在 worktree 里提交所有变更(包括更新后的任务文档)
 372. `git push -u origin bug/fix-daemon-test-localApiBase`
 38
 39## 目标
 40
 41修复 conductor-daemon 测试中多个 `handleConductorHttpRequest` 相关的 `TypeError: Cannot read properties of undefined (reading 'localApiBase')` 错误,让所有测试通过。
 42
 43## 背景
 44
 45多个任务(T-S042、T-S045)执行过程中报告 conductor-daemon 测试有预存的 `localApiBase` undefined 失败。这些失败在 main 分支上已存在,不是某个任务引入的回归。根本原因是测试中构造 HTTP request context 时缺少必要的 config 字段。
 46
 47## 涉及仓库
 48
 49- `/Users/george/code/baa-conductor`
 50
 51## 范围
 52
 53- 定位所有 `localApiBase` 相关的测试失败
 54- 修复测试中的 config/context 初始化
 55- 确保所有 conductor-daemon 测试通过
 56
 57## 允许修改的目录
 58
 59- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/` (测试文件和被测代码)
 60
 61## 尽量不要修改
 62
 63- `/Users/george/code/baa-conductor/packages/`
 64- `/Users/george/code/baa-conductor/plugins/`
 65- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/instructions/` (除非是 context 初始化问题)
 66
 67## 必须完成
 68
 69### 1. 复现并定位
 70
 71- 运行 `pnpm -F @baa-conductor/conductor-daemon test`
 72- 收集所有失败的测试用例
 73- 定位 `localApiBase` 在哪个 context/config 对象中缺失
 74
 75### 2. 修复
 76
 77- 补全测试中缺失的 config 字段
 78- 如果是被测代码缺少默认值保护,补上合理的默认值
 79- 不要通过跳过测试来"修复"
 80
 81### 3. 验证
 82
 83- 所有 conductor-daemon 测试通过
 84- 其他 package 的测试不受影响
 85
 86## 验收标准
 87
 88- `pnpm -F @baa-conductor/conductor-daemon test` 全部通过,0 failures
 89- `pnpm test` 全部通过
 90- 没有通过跳过测试来解决问题
 91
 92## 推荐验证命令
 93
 94- `cd /Users/george/code/baa-conductor-fix-daemon-test-localApiBase && pnpm build`
 95- `cd /Users/george/code/baa-conductor-fix-daemon-test-localApiBase && pnpm -F @baa-conductor/conductor-daemon test`
 96- `cd /Users/george/code/baa-conductor-fix-daemon-test-localApiBase && pnpm test`
 97
 98## 执行记录
 99
100> 以下内容由执行任务的 AI 填写,创建任务时留空。
101
102### 开始执行
103
104- 执行者:`Codex`
105- 开始时间:`2026-03-29 01:30:13 CST`
106- 状态变更:`待开始` → `进行中`
107
108### 完成摘要
109
110- 完成时间:`2026-03-29 01:34:40 CST`
111- 状态变更:`进行中` → `已完成`
112- 修改了哪些文件:
113  - `apps/conductor-daemon/src/local-api.ts`
114  - `apps/conductor-daemon/src/index.test.js`
115  - `tasks/T-BUG-026.md`
116- 核心实现思路:
117  -`handleConductorHttpRequest` 及 codexd/claude-coded 代理读取增加快照空值保护,避免缺失可选 backend snapshot 字段时直接抛出 `TypeError`
118  - 补全 `index.test.js` 里的本地 API 测试夹具与持久化重启场景快照,显式提供 `claudeCoded.localApiBase: null`
119  - 保持测试语义不变,只修正 context/snapshot 初始化缺失与运行时代码的默认值保护
120- 跑了哪些测试:
121  - `pnpm build`
122  - `pnpm -F @baa-conductor/conductor-daemon test`
123  - `pnpm test`
124
125### 执行过程中遇到的问题
126
127> 记录执行过程中遇到的阻塞、环境问题、临时绕过方案等。合并时由合并者判断是否需要修复或建新任务。
128
129- 新 worktree 初始没有安装依赖,首次运行 `pnpm -F @baa-conductor/conductor-daemon test``pnpm exec tsc` 找不到命令失败;在 worktree 内执行 `pnpm install` 后完成复现与修复验证。
130
131### 剩余风险
132
133- 当前修复覆盖了测试夹具缺失 `claudeCoded.localApiBase` 的场景,并为 local-api 增加了缺省保护;若后续引入新的最小快照夹具,仍建议保持与 `ConductorRuntimeApiSnapshot` 一致的结构。