Phase 3 / Ep 14: 本地的第一行代码(TDD 实战算法之战)

⏱ 预计阅读 3 分钟 更新于 2026/4/13

我们在 docs/task_plan.md 的 Phase 2 存下了第一条核心逻辑开发任务:

[ ] (TDD) 建立本地 Task 时长切分为 TimeBlock 的分配逻辑 (block_allocator.spec.ts)。

这是整个 T-Block 系统的核心:如果用户建立了一个耗时 2 小时的“写周报”Task,一旦碰上中午 12 点吃饭时间,它必须能自动裂变为“上午 1 小时块”和“下午 1 小时块”。

1. 放狗:触发任务

在你的指令框输入这句极简的话:

“按序执行 task_plan.md 中的 建立本地 Task 时长切分为 TimeBlock 的分配逻辑 任务。”

你看,我们甚至连要用什么算法、要怎么切分都没废话。因为 Agent 会先去读 task_plan.md 获取上下文,然后去找 PRD_System_Design.md 里确认规则,最后撞在刚才创建的 test-driven-development 技能护栏上回弹。

2. Agent 的自导自演(系统全自动后台运转实录)

此时屏幕背后的 Agent 开始了一系列疯狂的自我博弈:

[回合 1:红灯]

  1. 它读取了 TDD 规矩。
  2. 它自己乖乖去 tests/ 下建立了 block_allocator.spec.ts
  3. 它在测试里 mock 了一个 12:00-13:00 的午休块,并且塞入了一个两小时的 Task。
  4. 它执行了测试!终端爆炸,一片喷红,因为主体业务文件 src/allocator.ts 连函数抛出都是空的。

[回合 2:搏杀绿灯]

  1. AI 冲进 src/allocator.ts 啪啪啪敲了五十行区间碰撞合并(Interval merge)的算法。
  2. AI 继续自主调用 run_command 工具运行一遍测试。
  3. 报错! 某一个临界边界(比如刚好交接在一分钟的边界上)算法写错了,Vitest 抛出了 AssertionError。
  4. AI 读了终端里详细的报错堆栈,马上改代码,它全自动开启了连环改错!

[回合 3:重构与归档] 由于它全自动连轴排雷完成了修补。终于!终端打出了绿色:✓ Task chunks correctly split。 然后,AI 放松了下来,运用上了 Refactor 规则重构了一下杂乱的逻辑圈复杂度。并将这次成功记录在了 progress.md 中,并且把 task_plan.md 里的那项 [ ] 打上了 [x]

3. 人类感受

上述可能花了 3 分钟,在期间你可能只是喝了口咖啡。你什么都没做。 但这并不是因为 AI 有多神圣。如果不用我们在前几期搭建的那些框架去约束它,它早就在第一回合出错时,跑来问你:“主人,这段代码出错了,请问怎么办?”

测试护栏,是唯一能让 AI 实现自我闭环的容器。

算法通了,皆大欢喜。但如果有一次,AI 的算法实在超纲了,它在环境重试了十几次也没通过,整个账单烧掉很多 Token 怎么办?下节课我们传授系统托底之王:三振出局防御机制。