阶段五:AI BOSS 受控主动工作循环
状态:已完成并归档;最终事实见阶段五完成归档
本阶段在 AI BOSS 核心交互、预算、记忆、任务恢复和审计能力稳定后,增加受控的后台主动工作循环。目标不是让模型自由决定系统行为,而是让 Runtime 按 Benson 预先创建并启用的策略,在明确时间、预算、数据等级和动作白名单内唤醒 AI BOSS,生成可追溯任务并回收结果。
计划状态
- 计划名称:阶段五:AI BOSS 受控主动工作循环
- 当前状态:已完成并归档;完整生产与公网交互验收见阶段五完成归档。
- 当前记录:阶段四已经完成并归档;P5 已新增 Runtime SQLite 策略与运行审计、进程内受控循环和 Console 主动工作区。生产开关已开启,但没有常驻启用策略或真实事件生产者;所有生产验收策略均在验证后停用。
- 2026-08-17 补充生产回归:间隔策略
8b75cf3a68374a1ab10fc6f5d454bbe2在 Runtime 内部循环中真实到期并生成运行9b5b6a2d6508402baef7947482e63bfb;结果为脱敏 Runtime 状态摘要,side_effects=none,未调用模型、Worker、Nomad 或外部系统,随后策略已停用。旧的重启验收运行p5-restart-proof-03a66c187f2f在本次 Runtime 启动中被持久化标为interrupted,不重放调用。 - 2026-08-17 最终内部任务生产复验:合成事件启动固定
p4_internal_analysis工作流,运行e377035ff1da4c658efe435d4ece30df关联 P4-v1 任务b0b41bbc5c7d4500。该任务使用冻结的当前 AI Worker 通道,生成一份 Runtime SQLite 成果;确定性检查、证据登记和 AI BOSS 结构化审核全部通过,成果b31dfaa19cd14f318014ad9642bccc81最终为accepted,needs_benson=0。运行只有在关联任务进入completed后才标记completed,未执行外部业务写入、Provider 管理、系统操作或部署。 - 2026-08-17 取消与受控重新运行生产复验:取消运行
0f12149807dc47c5a1a389c536905e7b后,关联任务保持cancelled;受控重新运行创建不同的运行a7d6208d00e44b99a87e1944f43bfac8和新任务,并最终完成。它没有重放原模型调用或复用原运行 ID。 - 目标与完成边界:定时唤醒、事件触发、幂等、预算、暂停、终止、失败退避、重启恢复、审计和 Console 管理已完成自动化、生产与公网交互验收。阶段五不包含真实求职应用,也不启用 Codex 工程 Specialist。
简化架构
flowchart TB
Benson["Benson / Console 主动工作区"] --> Policy["主动策略:目标、计划、预算、边界"]
Policy --> Store["Runtime SQLite:策略、触发、运行和审计"]
Clock["Runtime 持久调度循环"] --> Store
Events["已登记事件"] --> Store
Store --> Boss["AI BOSS:规划、审核和受控任务创建"]
Boss --> Runtime["现有 Adapter 与任务图"]
Runtime --> Nomad["Nomad Batch / Worker"]
Runtime --> Storage["Cloudreve Artifact"]
Runtime --> Audit["统一事件、Token、证据和告警"]
Kill["全局暂停 / 单策略暂停 / 立即终止"] --> Store
主动策略是唯一启动依据。模型不能创建、启用、扩大或延长主动策略;自然语言回复不能变成定时器、系统命令或外部写入。
技术与架构选择
| 方案 | 可维护性 | 部署复杂度 | 性能 | 学习成本 | 后续扩展 | 结论 |
|---|---|---|---|---|---|---|
| FastAPI Runtime 内部循环 + SQLite 持久策略与幂等键 | 与现有交互、任务和预算共用权威状态 | 不新增服务 | 单用户规模足够 | 低 | 可扩展事件触发和应用策略 | 采用 |
| systemd timer 直接调用模型或任务接口 | 调度分散到主机配置 | 中 | 足够 | 中 | 策略与审计容易漂移 | 不采用 |
| Nomad Periodic Job 承担 AI BOSS 唤醒 | 把业务控制循环放入执行调度器 | 中 | 足够 | 中 | 会模糊 Runtime 与 Nomad 边界 | 不采用 |
| Celery / Redis / 独立消息队列 | 适合高并发多租户 | 高 | 高 | 高 | 当前明显过度设计 | 暂不采用 |
Runtime 每次扫描持久 next_run_at,通过策略 ID、计划时间窗和触发序号生成唯一幂等键。Runtime 停机期间默认不补跑历史窗口;策略可以显式选择“恢复后最多补跑一次”,禁止追赶式批量重放。
预备工作包
P5-1 主动策略契约
- 策略固定保存目标、工作流、启用状态、触发方式、时区、预算档位、每日最大运行次数、单次最长时间、数据等级、允许工具和验收标准。
- 默认策略为禁用;只有 Benson 的管理员 Console 可以创建、修改、启用和停用。
- 模型、Worker、MCP Tool、告警事件和任务结果均不能修改策略或提高预算。
- 不使用普通状态 TTL、Run lease、epoch 或审批单;以持久状态、唯一幂等键和明确暂停/终止控制防止重复执行。
P5-2 触发与运行状态
- 首版支持固定时间表、固定间隔和已登记内部事件三类触发;不接受模型自由生成 Cron 表达式。
- 运行状态使用
scheduled/queued/running/completed/failed/cancelled/interrupted/suppressed。 - 同一策略默认只允许一个活动运行;重复触发写入
suppressed事实,不重复调用模型或创建任务。 - Runtime 重启把未完成调用标为
interrupted,不自动重放模型调用;恢复必须由确定性状态判断或 Benson 显式重试。
P5-3 预算与停止边界
- 主动运行与人工对话共用 AI BOSS 工作台当前显示的每日 Token 设置,不建立隐藏额度池;工作台设置为无限制时,Runtime 不增加 Token 拒绝。
- 策略只保留每日运行次数与单次运行时间等可见的运行控制;不保存每日 Token 或任务 Token 上限。
- 瞬时错误最多自动重试一次;连续失败达到策略阈值后自动停用并告警,不允许无限重试。
- Console 提供全局暂停/恢复、单策略暂停/恢复、取消当前运行和终止后续运行;暂停状态持久化并在 Runtime 重启后保持。
P5-4 权限与动作白名单
- 首版只允许读取已登记公开来源、读取 Runtime 状态、生成规划、创建普通受控任务、审核证据和写入统一日志。
- 当前已登记两种工作流:
runtime_status_summary只生成无模型的脱敏状态摘要;p4_internal_analysis只创建一项固定主节点 P4-v1 内部分析计划,沿用既有 P4 的 Artifact、检查、证据和 AI BOSS 最终验收闭环。后者只能使用当前 AI Worker 通道,不接受外部来源、文件、Provider 管理、系统操作、部署、后续任务或外部业务写入。它必须等关联任务进入最终验收状态后才把主动运行标记为完成;任务创建后的失败不得重放整个工作流或创建第二项任务。 - 禁止自动付款、投递、发信、注册账号、交易、删除、修改凭据、修改 Provider/Combo、修改网络、防火墙、Git、部署或任意系统操作。
- 现有固定 SystemOperationsAdapter 继续保留人工触发或专用 Incident Handler 边界,不因定时唤醒自动放开。
- 主动循环沿用 P4 的统一会话权威:Runtime 保留原始记录,CLI Gateway 只接受
runtime_redacted外发上下文;不得因后台运行放宽凭据、基础设施或附件安全边界。
P5-5 Console 与可观测性
- 阶段四的四区工作台在本阶段增加第五个“主动工作”区;该区是主动循环的唯一 Console 控制入口,展示总开关、策略、下次运行、最近结果、当前工作台额度、连续失败、暂停状态和证据。
- 顶部提供“全部暂停/恢复”控制;策略行提供“启用/停用”“暂停/恢复”“编辑计划”;当前运行提供“取消”;失败、取消或中断的历史运行提供“重新运行”。没有权限或状态不允许时按钮必须禁用并说明原因。
- “编辑计划”只允许固定时间表、固定间隔或已登记事件;策略页面显示每日运行次数、单次最长时间,以及“Token 使用当前 AI 工作台设置”。
- “重新运行”不是重放旧模型调用,也不是重启 Runtime 服务:它必须经过确认,生成新
run_id、新的审计快照和新的幂等键,并引用原运行;同一原运行只允许一个活动重试。 - 所有写操作由 Runtime 校验管理员身份、当前状态、版本号和幂等键;高影响的全部暂停、终止后续运行和重新运行必须二次确认,成功后立即回显持久状态,重复点击不得产生第二次操作或费用。
- 所有触发、抑制、模型调用、任务创建、取消、失败、恢复和策略变更写入追加式审计。
- 页面不展示完整 Prompt、凭据、内部地址或隐藏思维链;只展示结构化目标、阶段、Token、工具、任务和证据引用。
- 告警只报告真实失败和停止原因,不把普通无任务窗口伪报为异常。
Console 控制与状态映射
| 控制 | 可用条件 | Runtime 语义 | 必须显示的反馈 |
|---|---|---|---|
| 全部暂停 / 恢复 | 管理员;全局状态允许切换 | 阻止或恢复新的主动触发,不中断正在运行的任务 | 生效时间、操作者、受影响策略数 |
| 启用 / 停用策略 | 策略配置完整且预算有效 | 决定该策略是否参与触发扫描 | 当前状态、下次运行、禁用原因 |
| 暂停 / 恢复策略 | 已启用策略 | 暂停或恢复该策略的新触发,不改写历史运行 | 持久暂停状态、恢复后的下一窗口 |
| 编辑计划 | 没有冲突写入 | 保存新策略版本,只影响新触发 | 时区、触发类型、下一运行时间 |
| 当前工作台额度 | AI BOSS 工作台当前设置 | 保存的策略不复制 Token 上限;有限额度由工作台统一显示,无限制不产生 Runtime Token 拒绝 | 当前设置、已用和生效范围 |
| 取消当前运行 | queued/running |
请求现有 Runtime/Nomad 取消路径,结果落为 cancelled 或真实失败 |
取消进度、最终状态、是否仍有子任务 |
| 终止后续运行 | 策略存在 | 停用策略并取消尚未开始的排队运行;不删除历史 | 被终止队列数、策略状态、审计 ID |
| 重新运行 | failed/cancelled/interrupted 且没有活动重试 |
创建引用原运行的新运行,不复用旧调用 | 新运行 ID、新审计快照、关联原运行 |
P5-6 无破坏生产验证
- 使用只读系统状态摘要、公开文档更新检查和受控测试任务验证主动循环,不接入真实求职投递或其他外部业务写入。
- 至少跨越一次真实计划窗口和一次 Runtime 重启,验证不重复调用、不丢失暂停状态、不追赶式补跑。
- 验证全局暂停后没有新模型调用、任务或费用;恢复后只执行新的到期窗口。
- 用桌面和移动端 Playwright 验证上述每个控制的可用、禁用、确认、失败和刷新后恢复状态;断网重试与重复点击不得创建重复运行或重复费用。
分布式底座接入声明
- 接入结论:接入现有底座,不新增第二调度器、消息队列或执行网关。
- 使用层:Network 只承载现有受控服务通信;Nomad 仅执行 Runtime 已登记 Batch;Compute 使用 101/103 无状态 Worker;Storage 使用 Runtime SQLite 和 Cloudreve;Observability 使用 Runtime 事件、Token、审计和 API Gateway 脱敏告警。
- Adapter 归属:复用 NomadAdapter、StorageAdapter、ToolAdapter、FeedbackAdapter、OmniRouteAdapter 和现有固定 SystemOperationsAdapter;主动循环本身不新增通用命令 Adapter。
- 执行映射:主节点 Runtime 保存策略、触发、运行、当前工作台额度引用和审核;101/103 只执行已登记任务,不保存主动策略或模型凭据。
- 数据路径:策略、触发、运行和审计进入 Runtime SQLite;临时结果进入
AgentMeshOS-临时,确认的长期证据进入AgentMeshOS-长期。 - 凭据路径:所有凭据继续留在主节点 root-only 配置;策略、模型、Worker、MCP Tool 和浏览器不可见。
- 生命周期:策略长期保存且不设置人为 TTL;运行按状态完成、取消或中断;任务结束只清理明确临时数据和一次性凭据。
- 验收证据:SQLite 迁移与
quick_check、唯一幂等键、触发和抑制事件、Token 结算、Nomad Job/Allocation、Storage 回读、暂停/终止、重启恢复、双层审计、告警与 Console 浏览器证据。
实施步骤
- 在阶段四完成归档后重新核对生产基线、备份 Runtime SQLite,并冻结阶段五契约。
- 增量增加主动策略、触发和运行表,完成幂等、状态机和重启恢复。
- 接入当前 AI BOSS 工作台 Token 设置、任务图、事件、告警和 Adapter,不新增第二套执行路径。
- 增加 Console 主动工作区、全局暂停/恢复、策略计划编辑、单策略控制、当前运行取消和受控重新运行。
- 先执行时间模拟和故障注入,再进行真实计划窗口与 Runtime 重启验证。
- 完成生产和公网验收后归档阶段五,才允许阶段六接入真实应用来源。
验收与发布
- 代码、文档和运行态检查:覆盖重复触发、跨时区、停机窗口、预算耗尽、连续失败、取消、全局暂停、Runtime 重启中断、受控重新运行、数据分级和未授权动作拒绝。
- 底座接入的真实证据:至少一个受控 Nomad 任务、一个 Storage 结果、一个抑制事件、一个失败停用事件和一次重启恢复;所有事实可从 Runtime 与 Console 追溯。
- 安全验收:证明模型不能创建/启用策略、提高预算、解除暂停、调用任意 Action 或执行外部业务写入。
- 发布顺序:Runtime、Console、Docs;每步分别记录 GitHub revision、镜像摘要、数据库备份、健康和真实运行证据。
- 回滚和清理:回滚代码不得删除新表或历史运行;回滚后保持策略禁用并保留审计,临时测试 Artifact 按引用清理。
阶段五出口与阶段六进入条件
只有主动策略、定时与事件触发、幂等、预算、失败退避、暂停、终止、重启恢复、审计、无破坏生产验证和公网 Console 验收全部通过,才进入阶段六应用发现与试验。
2026-08-18:后续路线更正
上述出口文字保留阶段五制定时的历史事实。现行阶段六已调整为应用中心基础与本地应用样板;旧求职和外部来源发现方向从未实施,不再是 P6 权威计划。