运行时主干
Nova 的事件循环负责接收输入、更新状态,并安排模型调用和执行任务。耗时工作在后台运行,因此执行器还没返回时,用户仍然可以继续对话。
事件按顺序处理,任务异步执行
运行时每次处理一个事件,先更新状态,再安排后续工作。模型调用和执行器任务完成后,将结果作为新事件送回队列;事件循环不会停下来等待执行器。
例如,编码任务尚未结束时,新的用户输入仍能进入事件队列。系统不需要在当前对话里再嵌套一套等待工具返回的对话循环,也不需要额外的工作流解释器。
三类协调机制
- 模型并发控制。
fast、surrogate.watch、compress各有独立槽位;同一槽位同时只运行一次模型调用。忙碌期间收到的新唤醒请求会合并,完成后再处理。 - 执行任务跟踪。 每项已分派任务都有 delegate 标识,用于关联进度、完成结果和取消请求。执行器的生命周期独立于前台模型调用。
- 发言控制。 Floor 管理唯一的用户可听见的回复通路,避免多个模块同时说话。
每次模型唤醒还会记录原因,保留触发来源、优先级和关联任务。这样,无论是用户追加要求,还是后台任务返回结果,运行时都能确定接下来为什么需要调用模型。