mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-11-03 05:44:44 +08:00
docs(agent): record queued event boundary
This commit is contained in:
@@ -122,7 +122,7 @@ uv run --locked --no-sync python -m scripts.evaluation --live \
|
||||
|
||||
WebAgent 的排队消息已补齐稳定留存和真实时序展示:后端展示快照和 `AgentChatMessage` 记录 `steering_message_id`,前端把 queued 消息写入本地会话、把 snake_case 字段同步到服务端,并在断流、刷新或服务端快照替换时合并保留;迟到的 applied 事件会按稳定 ID 更新同一条用户气泡。应用点会收口前一段助手、把用户消息插入其后并创建 continuation 助手,后续文本和工具事件按真实事件流进入 continuation。工具事件携带稳定 `tool_id` 与 `running/done/error` 状态,前端可区分真正执行中的工具和已完成/失败的工具,不再把所有提示显示为“最新一条执行中”。追加验证发现 continuation 助手插入后若把原始对象直接存入 steering 映射,后续工具状态会写入但不会触发 Vue 重渲染;前端提交 `44e19778b70fd17bc0a7ddf63021866ef45bdaa5` 改为从响应式消息数组取回 continuation,并增加“工具 1 完成 → 插入用户消息 → 工具 2 running”的时序回归。随后提交 `7c64d05874a444b9bbd128b54421a1ae9da13bce` 将尚未收到稳定 ID 的多个 queued 草稿按提交顺序插入当前助手边界,并覆盖 ACK 断流后的顺序收口;前端 `AgentAssistantPanel.spec.ts` 43 项、类型检查、格式和 ESLint 通过,远端 `Frontend Tests` run [34602237521](https://github.com/jxxghp/MoviePilot-Frontend/actions/runs/34602237521) 与构建 run [34602871223](https://github.com/jxxghp/MoviePilot-Frontend/actions/runs/34602871223) 成功。
|
||||
|
||||
前端后续修复把未收到稳定 `steering_message_id` 的本地草稿改为有序集合,并在 queued ACK 阶段直接插入当前助手段之后的真实边界;应用事件只负责收口旧助手、创建 continuation 和绑定稳定 ID。这样主流事件、短 ACK、断流恢复或多个补充消息交错时,用户消息从首次显示开始就保持工具调用之间的顺序,不会先落在列表末尾再跳到顶部,也不会因单一草稿引用被覆盖。新增回归覆盖两个 ACK 断流后按提交顺序应用的补充消息;前端 `AgentAssistantPanel.spec.ts` 现为 43 项,类型检查、格式和 ESLint 均通过。
|
||||
前端后续修复把未收到稳定 `steering_message_id` 的本地草稿改为有序集合,并在 queued ACK 阶段直接插入当前助手段之后的真实边界;queued ACK 同时封闭当前助手段、创建 continuation,使 ACK 之后到达的文本和工具事件不会越过用户消息,applied 事件再绑定稳定 ID、更新状态,若边界尚未建立则补做切分。这样主流事件、短 ACK、断流恢复或多个补充消息交错时,用户消息从首次显示开始就保持工具调用之间的顺序,不会先落在列表末尾再跳到顶部,也不会因单一草稿引用被覆盖。新增回归覆盖两个 ACK 断流后按提交顺序应用的补充消息,以及 queued 插入后仍按顺序承接后续工具;前端提交 `e39d3f0b928de2e1cf4ef935eeb0614f9441917d`,`AgentAssistantPanel.spec.ts` 现为 44 项,类型检查、格式和 ESLint 均通过,远端 `Frontend Tests` run [34618601646](https://github.com/jxxghp/MoviePilot-Frontend/actions/runs/34618601646) 成功。
|
||||
|
||||
因此当前真实 Gemini 结果证明了工具合同读取和未知结果诚实边界已经能被实测,但不能宣称达到 Codex 的整体智能水平。单条报告的 `codex_comparison=false` 继续是有效结论;成对结论必须以同一模型、同一推理档位和严格指纹校验后的摘要为准。
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ uv run --locked --no-sync python -m scripts.evaluation \
|
||||
- **浏览器**:工具目录必须明确导航、读取、交互、等待和截图的动作与权限;浏览器会话、页面状态和失败重试由宿主持有,不能由模型字符串冒领。新增 `browser_navigation` 场景使用回环动态页面验证生产工具;原生 CLI 探针没有广告浏览器工具,原生配对保持 blocked,等待可用的 Codex browser harness。
|
||||
- **子代理**:主 Agent 自动选择通用子代理;专用画像只有在 held-out 任务上证明提高成功率、减少调用或降低副作用风险时才保留。子代理不能自行发送消息、执行高影响写操作或继承兄弟任务句柄。
|
||||
- **API Skill 与合同读取**:`skills/moviepilot-api/SKILL.md` 只负责路由索引和工作流;`api/*.md` 各自包含完整操作合同及该类别需要的 Body Models,不再依赖单独的 `api/models.md`。真实 Agent 先用 `read_skill` 得到 supporting-file 清单,再用同一个工具的 `file=api/<category>.md` 参数按需读取类别文档;评测目录必须提供同一条链路,不能只返回文件名而不给模型读取能力。operation 输入错误还要返回该 operation 的允许字段、必填字段和类型约束,帮助模型纠正后重试。
|
||||
- **长任务与新消息**:入站消息在任务运行时仍可接受并进入有界队列;应用到下一模型边界时必须保留 tool-call/tool-result 配对和取消语义,不能只把文本拼到系统提示词。WebAgent 将工具开始/完成/失败作为带稳定 `tool_id` 的结构化事件;前端按事件序列维护每个工具状态,并在 steering applied 的真实位置切分助手消息,避免“最新工具覆盖全部状态”或把用户消息挪到顶部。
|
||||
- **长任务与新消息**:入站消息在任务运行时仍可接受并进入有界队列;应用到下一模型边界时必须保留 tool-call/tool-result 配对和取消语义,不能只把文本拼到系统提示词。WebAgent 将工具开始/完成/失败作为带稳定 `tool_id` 的结构化事件;前端按事件序列维护每个工具状态,queued ACK 先建立当前显示边界并把后续事件路由到 continuation,applied 事件负责稳定 ID 和状态收口,避免“最新工具覆盖全部状态”或把用户消息挪到顶部。
|
||||
- **观察证据**:最终答案只能引用宿主记录的工具结果和业务 oracle;“模型说完成”不能替代数据库、下载器、浏览器或进程状态核验。
|
||||
|
||||
## 通过标准与未完成边界
|
||||
|
||||
Reference in New Issue
Block a user