Documentation
¶
Overview ¶
Package flow 实现垂类路由:Host 根据事实决定下一个调哪个子代理做什么。
设计原则:
- Route 是纯函数:输入 State,输出 *Instruction。无 IO、无 Store 调用,可单测。
- State 由 LoadState(非纯)从 Store 构造,一次性把路由需要的事实读齐。
- 返回 nil 是合法的:表示当前没有可由确定性事实推出的 Worker 指令; Engine 再按终态、启动补裁或等待用户干预处理。
Router 覆盖的是"查表型"决策(每章下一步、弧末后处理、队列驱动), 不覆盖"语义理解型"决策(选规划师、处理用户 Steer、输出总结)。
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func StartsForwardChapter ¶
func StartsForwardChapter(inst *Instruction, progress *domain.Progress, pending *domain.PendingCommit) bool
StartsForwardChapter 判断一条指令是否会开始尚未完成的正向新章。 它只读事实,不决定是否放行;Task/Reason 文案不参与判断。
Types ¶
type AdvanceHoldResolution ¶
type AdvanceHoldResolution int
AdvanceHoldResolution 是一次性暂停在当前事实下的处理结果。
const ( AdvanceHoldKeep AdvanceHoldResolution = iota AdvanceHoldConsume AdvanceHoldConsumeAndStop )
func ResolveAdvanceHold ¶
func ResolveAdvanceHold(hold *domain.AdvanceHold, progress *domain.Progress) (AdvanceHoldResolution, error)
ResolveAdvanceHold 纯函数解析一次性暂停。未知条件和缺失事实显式报错, 不允许按“继续运行”静默降级。
type Instruction ¶
type Instruction struct {
Agent string // architect_long / architect_short / writer / editor
Task string // 给子代理的任务描述
Reason string // 路由理由(用于事件、日志与失败裁定)
Chapter int // writer 任务涉及的章节号(续写/重写/打磨);0 表示不涉及(editor/architect 任务)
}
Instruction 指示 Engine 下一步直接运行的 Worker 与任务。
func Route ¶
func Route(s State) *Instruction
Route 根据事实返回下一步确定性指令;返回 nil 由 Engine 按调用上下文处理。
决策优先级(互斥,自上而下匹配第一个):
- Phase=Complete → nil(Host 确定性输出总结)
- 规划期设定缺项且规划师可判定 → 同一规划师补齐;否则 nil(Engine 启动补裁)
- PendingRewrites 非空 → writer 按队列重写/打磨
- Flow=Reviewing → nil(dormant:当前无写入者,评审期 Flow 实为 writing)
- Flow=Steering → nil(用户干预处理中)
- 弧末评审缺失 → editor(arc review)
- 弧末评审有但弧摘要缺失 → editor(arc summary)
- 卷末弧摘要有但卷摘要缺失 → editor(volume summary)
- 下一弧是骨架 → architect_long(expand_arc)
10. 卷末需决策下一卷 → architect_long(append_volume / complete_book) 11. 非分层全局审阅到期 → editor(global review) 12. 非分层大纲已耗尽 → architect(决定完结或续接大纲) 13. 其它 → writer(写 next_chapter)
type State ¶
type State struct {
Progress *domain.Progress
// 上一个已完成章节(Progress.CompletedChapters 末尾);为 0 表示尚未开始写作。
LastCompleted int
// 上一章的弧边界信息;IsArcEnd=false 时其他字段无意义。
// 当 LastCompleted=0 或非 Layered 模式时应为 nil。
ArcBoundary *storepkg.ArcBoundary
// 弧末后处理的三个事实:评审 / 弧摘要 / 卷摘要是否已完成。
HasArcReview bool
HasArcSummary bool
HasVolumeSummary bool
// 基础设定缺项(规划阶段的补齐信号)。
FoundationMissing []string
// 已落盘的规划级别(save_foundation 落 scale 时写入 RunMeta)。
// 空 = 首次规划尚未产出任何设定,规划师身份不可判定。
PlanningTier domain.PlanningTier
// 非分层书:最近完成章是否已有 scope=global 的全局审阅
//(仅在 ShouldReview 触发点有意义;分层书恒 false)。
HasGlobalReview bool
}
State 是 Route 的输入:所有事实必须在此显式声明,禁止 Route 内部读 Store。