JianFeeeee
d4764e3682
fix(scheduler)!: D1 更正为「中断从上一个任务之前的完整状态开始」,并实现现场合回
用户明确语义(我此前对 D1 的解析就是错的——当时回答里的“A”指的是 git 选项,
D1 实际要的是方案 B):
中断打断时,上个任务到达以来的所有上下文现场被保护(含 toolcall),
然后中断在「上个任务前的那个完整状态」上开始运行;
中断结束后再把被挂起的任务与其上下文现场加载回中断任务之上,并继续运行。
实现:
- 删除 SeedMsgs 与 D1=A 的“只读前缀”机制:中断任务不再继承被打断任务的任何内容,
它就是普通新任务,正常走完整 prepare(system prompt + timeline + 自己的输入)
- TaskFrame 新增 PrefixLen(基础前缀长度)与 InputBlocks;
stepPrepare 在 buildMessages 之后记录 PrefixLen
- 新增 rebaseFramePrefix:恢复时重建基础前缀(中断已提交进 a.context,
重建的 timeline 含中断效果=“加载回中断之上”),再把本任务自己的尾部
(Stage 上下文 + 工具轮产物 + 占位)接回;并补回 IsInterrupt 标记与多模态块
- resumeTask 在 runTaskSteps 之前调用 rebaseFramePrefix
- 设计稿 §5.3 改写为「已定:D1=B」并写明实现对应;§6.2 补“重建前缀→接回尾部”;
§12 的 D1 行更新
测试:
- TestPreempt_HigherPreemptsAndResumes 改为断言「中断不继承、恢复后看得见中断内容」
- 新增 TestPreempt_ResumeRebaseRestoresTailDecorations(前缀重建后尾部装饰补回)
- 原 TestPreempt_SeedPathDoesNotLeakInterruptFlag 随之删除(机制已不存在)
验收:agent 全量 + -race;全仓 build/vet 通过
2026-09-13 06:24:20 +08:00
..
2026-08-05 09:59:33 +08:00
2026-08-14 00:48:40 +08:00
2026-09-11 11:45:24 +08:00
2026-09-13 06:17:49 +08:00
2026-07-25 11:17:31 +08:00
2026-09-11 11:45:24 +08:00
2026-09-11 11:45:24 +08:00
2026-09-11 11:45:24 +08:00
2026-09-13 06:24:20 +08:00
2026-08-18 09:07:21 +08:00
2026-09-12 08:23:30 +08:00
2026-09-11 11:45:24 +08:00
2026-09-11 11:45:24 +08:00
2026-07-28 11:42:29 +08:00
2026-09-11 11:45:24 +08:00
2026-09-11 13:45:25 +08:00
2026-09-11 13:45:25 +08:00
2026-09-11 11:45:24 +08:00
2026-09-13 00:25:52 +08:00
2026-09-04 06:25:51 +08:00
2026-09-04 06:25:51 +08:00
2026-09-10 20:36:39 +08:00
2026-09-12 13:57:06 +08:00
2026-09-12 13:57:06 +08:00
2026-07-16 12:11:16 +08:00
2026-08-18 09:07:21 +08:00
2026-09-12 23:47:12 +08:00
2026-09-11 20:31:50 +08:00
2026-09-10 23:59:12 +08:00
2026-09-13 00:38:30 +08:00
2026-09-13 00:45:28 +08:00
2026-09-13 06:24:20 +08:00
2026-09-13 06:10:44 +08:00
2026-09-13 06:24:20 +08:00
2026-09-12 23:49:55 +08:00
2026-09-13 06:24:20 +08:00
2026-09-10 20:36:39 +08:00
2026-09-10 20:36:39 +08:00
2026-08-18 11:49:57 +08:00
2026-09-03 12:37:58 +08:00
2026-07-24 14:49:08 +08:00
2026-09-03 12:37:58 +08:00
2026-09-12 14:56:25 +08:00
2026-09-13 00:45:28 +08:00
2026-08-25 10:50:37 +08:00
2026-08-26 16:10:02 +08:00
2026-09-13 06:24:20 +08:00
2026-09-13 06:24:20 +08:00
2026-09-13 06:17:49 +08:00
2026-09-13 06:24:20 +08:00
2026-07-27 15:26:23 +08:00
2026-09-12 13:57:06 +08:00
2026-09-12 13:57:06 +08:00
2026-09-10 20:36:39 +08:00
2026-09-06 09:51:31 +08:00