# 09:单 Agent 任务闭环 ## 本阶段目标 接收来自已认证总控的单条文本任务,在本地持久化任务运行状态,并回传接收、运行和完成事件。 ## 已实现范围 1. 本地 SQLite 新增 `task_runs` 与 `task_events`,以 `task_id` 作为幂等键记录任务生命周期。 2. `ControllerSession` 只处理总控下发的 `task_dispatch`;无效任务载荷会被拒绝。 3. `TaskExecutor` 对重复 `task_id` 返回已有状态,不会重复执行。 4. 当前执行器是受限的内置演示执行器:仅生成文本结果,不运行模型、插件、Shell、浏览器、文件或桌面控制。 5. 各阶段事件通过已配对的 WSS 会话回传;短暂断线时,内存中的待发送事件会在下一次认证连接后发送。 6. 托盘菜单的状态文字会显示最近一次任务阶段。 7. 总控的单独指派与按行 `@` 批量指派沿用同一条文本任务协议;子 Agent 只接收自己的独立任务文本,不保存跨任务上下文,也不会接收附件或远程终端协议。 ## 本阶段刻意限制 - 待发送事件尚未实现跨进程持久化;本地任务记录已保存,后续会补充重启恢复与事件重放。 - 不接收附件、不执行工具、不接入模型供应商,因此不会要求或保存任何模型 API 密钥。 - 取消、超时、资源限制和任务工作目录将进入后续任务运行时阶段。 ## 验收步骤 1. 完成与总控的安全配对,Agent 进入托盘并保持在线。 2. 从总控下发一个文本任务。 3. 确认托盘状态依次变为 `accepted`、`running`、`completed`。 4. 在总控任务记录中确认结果到达;重复下发同一 `task_id` 时不应重复执行。