关联 RFC / 架构
目标问题
NeoCode 已有 Todo DAG Scheduler,但它不是主 Run 的编排真源,也不能恢复 provider/tool 节点执行。需要一个以持久化 Workflow 状态为真源的 Scheduler,统一处理依赖、只读并发、单写者、取消、固定失败策略和进程重启后的节点级恢复。
实现设计(How)
实现受约束 Workflow DAG 校验器,节点类型固定为 route、explore、synthesize、execute、verify、finalize。
Scheduler 从 Store snapshot 计算 ready 节点,使用 revision 原子 claim,调用 【实现】 Agent Loop 重构 Phase 2:提取统一 AgentLoop 执行内核 #724 AgentLoop,并通过 【实现】 Agent Loop 重构 Phase 1:Workflow 领域模型与持久化 #723 事务提交结果。
Explore 可按配置并发;Execute 获取 Workflow 写租约,任意时刻最多一个写节点 running。
固定节点失败策略:Route 回退、Explore 有限重试并允许部分成功、Synthesize 必须成功、Execute 写后中断需要恢复、Verify 区分检查失败与基础设施错误。
启动时扫描非终态 Workflow,将遗留 running 标为 interrupted;只读节点可重试,发生成功写入的 Execute 转 needs_recovery。
Execute 恢复审计联合 tool receipt、node transcript、run/per-edit checkpoint 与当前 diff,禁止盲目重放写工具。
迁移 Todo Scheduler 中通用的图校验、priority、retry/backoff 思路;Workflow Scheduler 成为唯一编排真源后删除重复调度路径。
影响模块:Runtime orchestration、Workflow Store、Checkpoint bridge、Todo/subagent scheduler 迁移和恢复事件。
边界与非目标:本阶段使用静态工作流 fixture,不实现模型 Router/Planner;不实现并行写入、路径租约或 worktree 合并。
任务拆解
测试与验证(Done)
风险与回滚
风险:Scheduler 与 Store 状态竞态导致重复节点。所有 claim/result 使用 revision,stale worker 结果不得提交。
风险:错误恢复造成重复写入。写后中断一律 needs_recovery,不自动调用写工具。
风险:迁移 Todo Scheduler 影响现有 Todo 展示。先保持 Todo 作为用户计划视图,Workflow Node 作为执行真源,明确单向投影。
回滚:可将执行入口切回 【实现】 Agent Loop 重构 Phase 2:提取统一 AgentLoop 执行内核 #724 的单节点 adapter;新增 Workflow 数据保留但停止调度,不回滚已产生的工作区修改。
关联 RFC / 架构
目标问题
NeoCode 已有 Todo DAG Scheduler,但它不是主 Run 的编排真源,也不能恢复 provider/tool 节点执行。需要一个以持久化 Workflow 状态为真源的 Scheduler,统一处理依赖、只读并发、单写者、取消、固定失败策略和进程重启后的节点级恢复。
实现设计(How)
needs_recovery。影响模块:Runtime orchestration、Workflow Store、Checkpoint bridge、Todo/subagent scheduler 迁移和恢复事件。
边界与非目标:本阶段使用静态工作流 fixture,不实现模型 Router/Planner;不实现并行写入、路径租约或 worktree 合并。
任务拆解
测试与验证(Done)
go test ./...、race 相关测试和 【实现】 Agent Loop 重构 Phase 0:建立任务质量评测基线与迁移护栏 #722 评测通过,新增修改逻辑达到 100% 覆盖目标。风险与回滚