图 06 · 跨会话规划

目标太大、决策不明时,如何跨多个会话推进?

/wayfinder 的决策票据循环:从模糊终点开始,每个会话解决一个关键决策分支,逐步收敛到足够清晰的 spec,才切换到功能流。

Wayfinder 跨会话决策循环图 起始状态 模糊的大目标 「改进代码库架构」 但不知道从何开始 [用户 / 工程] /wayfinder 映射已知决策 生成决策票据 评估进展,判断是否足够 内部使用 {grilling} 决策票据板(Decision Ticket Board) 会话 1 · OPEN 决策:模块边界如何划分? 需要:audit + {codebase-design} 影响:后续 5 张工单的范围 阻塞 → 其他决策无法推进 ⊳ 本会话重点 会话 2 · PENDING 决策:测试策略? 需要:决策 1 完成后可推进 选项:集成测试 / 单元 + 测试缝 阻塞于:决策 1 会话 0 · RESOLVED ✓ 决策:使用 TypeScript strict mode? 结论:是。所有新文件启用,存量文件按模块迁移。已记录 ADR-001。 已解锁:决策 1(边界划分可以在 strict 约束下设计) 折叠阈值(Collapse Threshold) 当已知决策 ≥ 80%,剩余不确定性不影响开始构建 → 切换到图 01 功能流 剩余未知量(持久化到 CONTEXT.md) · bundle size 目标(将在第一个工单完成后验证) · CI 速度要求(待 /implement 第一个切片后测量) 明确已知的不知道,比假装都知道更安全 记录到:handoff 产物 解决一个 → 更新地图 退出条件:折叠阈值达到 → 切换到图 01 功能流 /grill-with-docs → /to-spec → ...

/wayfinder 的核心机制

  • 映射决策依赖图:哪些决策阻塞其他决策?
  • 生成决策票据:每个未知量对应一张可追踪的票据
  • 内部使用 {grilling}:通过采访引擎挖掘分支
  • 评估折叠阈值:每个会话结束时问:现在足够开始了吗?

折叠阈值 ≠ 所有问题都答完

等待所有问题都有答案再开始构建是一种错觉。折叠阈值是「剩余不确定性不影响开始构建第一个切片」。

明确记录「已知的不知道」(CONTEXT.md 中的剩余未知量),比假装知道更安全,也让后续工单有明确的探索目标。

会话 0(已解决)

决策:strict mode?
→ 是。Audit 显示 97% 的文件可以直接启用。ADR-001 已记录。
解锁:边界划分可以在 strict 约束下进行。

折叠后(切换到图 01)

第一张工单:将 EntityRegistry 模块边界迁移到 strict mode,覆盖 onMount/onUnmount 接口。
这是第一个可验证的切片,而不是「全面迁移」。

线性阅读顺序:大目标 → /wayfinder 映射决策依赖图,生成决策票据板 → 每个会话:选最阻塞的票据 → 使用 {grilling} / {research} / {prototype} 解决 → 解决后更新地图,解锁下游决策 → 重复直到折叠阈值(≥80% 已知,可以开始构建)→ 切换到图 01 功能流,持久化剩余未知量到 CONTEXT.md。