自主监督参考
自主监督参考页描述公开配置面和行为边界。需要先理解概念时,阅读自主监督。
状态对象
标题为“状态对象”的章节GET /api/v1/session-os/main-brain/autonomous 返回:
{ "autonomous": { "enabled": true, "turns_used": 3, "max_turns": 60, "task_hint": "把当前文档 PR 盯到闭环" }}autonomous 可以是 null,表示从未开启过自主监督。
| 字段 | 类型 | 说明 |
|---|---|---|
enabled |
boolean | 当前是否启用自主监督。 |
turns_used |
integer | 已经消耗的自动监督轮次数。 |
max_turns |
integer | 本次自动监督轮次上限。默认 60。 |
task_hint |
string | 主脑记录的本次监督目标。 |
主脑工具
标题为“主脑工具”的章节这些工具暴露给主脑,用于控制自主监督。
| 工具 | 参数 | 说明 |
|---|---|---|
enable_supervision |
task_hint?, max_turns?, scope_mode?, scope_session_ids? |
开启自主监督。默认最大 60 轮。重复调用会重置 turns_used。 |
finish_supervision |
summary? |
关闭自主监督,并记录本次收尾摘要。 |
supervision_status |
无 | 只读查询当前监督状态、轮次和范围。 |
set_supervision_scope |
mode, session_ids? |
设置哪些会话会唤醒主脑。 |
scope_mode 和 set_supervision_scope.mode 使用同一组主脑工具模式,见监督范围模式。
REST API
标题为“REST API”的章节| 方法与路径 | Body | 返回 | 说明 |
|---|---|---|---|
GET /api/v1/session-os/main-brain/autonomous |
无 | { "autonomous": ... } |
查询自主监督状态。 |
POST /api/v1/session-os/main-brain/autonomous |
{ "enabled": true, "task_hint"?: string, "max_turns"?: number } |
{ "autonomous": ... } |
开启或关闭自主监督。UI 开关使用这个端点。 |
PATCH /api/v1/coding-sessions/{session_id}/supervision |
{ "excluded": true / false } |
会话状态 | 排除或纳入单个会话。excluded=true 表示不盯它。 |
POST /api/v1/coding-sessions/supervision-scope |
{ "mode": "...", "session_ids": [...] } |
范围设置结果 | 批量设置监督范围。支持主脑工具模式;UI 还会用 invert 做当前可见列表反选。 |
关闭自主监督时,POST /api/v1/session-os/main-brain/autonomous 的 body 为:
{ "enabled": false}Slash command
标题为“Slash command”的章节/supervise [任务目标] 会开启自主监督,并立即触发一次初始监督轮。
/supervise 盯住当前 PR 的 CI、链接检查和最终合入,遇到失败先定位原因[任务目标] 会作为 task_hint。
监督范围模式
标题为“监督范围模式”的章节主脑工具只暴露 all、only、except。REST 批量范围端点还支持 UI 专用的 invert。
| 模式 | 用途 | session_ids |
|---|---|---|
all |
清空排除列表,所有会话都能唤醒主脑。 | 忽略 |
only |
只监督列出的会话,其余活跃会话全部排除。 | 必填,且至少一个有效 ID |
except |
排除列出的会话,其余会话纳入监督。 | 必填,且至少一个有效 ID |
invert |
REST/UI 专用。反选当前可见会话范围。 | 当前可见会话 ID |
only 和 except 如果没有解析出任何有效会话,会失败而不是静默写入错误范围。
会话 ID 可以使用完整 cs_... ID。主脑工具也支持 list_sessions 展示的短别名,例如 cc1、cx1。
触发条件
标题为“触发条件”的章节| 触发源 | 会唤醒主脑吗 | 说明 |
|---|---|---|
会话进入 待处理 |
是 | 通常表示需要主脑继续派发或收尾。 |
会话进入 待授权 |
是 | 通常表示运行时或工具权限需要处理。 |
会话进入 待拍板 |
是 | 通常来自人工问题或需要决策的状态。 |
| worker exit | 视情况 | 如果仍有其它活跃的被监督 worker,会触发主脑检查;如果已经没有活跃被监督 worker,则走收敛关闭。 |
report_progress(working) |
否 | 普通心跳不会触发,避免噪声。 |
report_progress(completed) |
是 | 里程碑完成后主脑可检查产出或派发下游。 |
report_progress(blocked) |
是 | 阻塞会升级给主脑处理。 |
report_progress(needs_review) |
是 | 需要审查时唤醒主脑。 |
notify_blocked |
是 | 明确阻塞,始终触发。 |
ask_human |
是 | 问题会回到主聊天,并唤醒主脑。 |
request_context |
否 | 只是上下文请求,不作为监督触发源。 |
| stall watchdog | 是 | 当被监督会话长期停在需要处理的状态时兜底触发。 |
触发会经过去抖和单飞保护。短时间内多个 worker 同时变化,通常只会合并成一个监督轮。
Workflow auto_supervise
标题为“Workflow auto_supervise”的章节| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
auto_supervise |
boolean | true |
Workflow run 启动时自动开启主脑监督。run 收敛后,如果这次监督是 Workflow 自动开启的,就自动关闭。 |
如果用户已经手动开启自主监督,Workflow 会复用当前监督态,不会在 run 收敛后误关用户手动开启的监督。
Workflow 节点推进由 Pipeline 引擎完成;自主监督只负责观察、异常干预、人工沟通和收尾。
环境变量
标题为“环境变量”的章节| 变量 | 默认值 | 说明 |
|---|---|---|
JARVIS_SUPERVISION_RESTORE_TTL_S |
900 |
后端重启后允许恢复监督态的快照新鲜度上限,单位秒。 |
JARVIS_SUPERVISION_STALL_WATCHDOG_INTERVAL_S |
90 |
stall watchdog 扫描间隔,单位秒。小于等于 0 表示禁用。 |
JARVIS_SUPERVISION_STALL_THRESHOLD_S |
900 |
会话停在需要处理状态多久后视为可触发兜底监督,单位秒。 |
JARVIS_SUPERVISION_STALL_COOLDOWN_S |
1800 |
watchdog 对同类停滞触发后的冷却时间,单位秒。 |
JARVIS_SUPERVISION_STALL_WATCHDOG_STARTUP_DELAY_S |
45 |
后端启动后延迟多久再开始 watchdog 扫描,单位秒。 |
这些变量是实例级运行参数,普通用户通常不需要修改。
安全边界
标题为“安全边界”的章节| 边界 | 说明 |
|---|---|
| 权限 | 自主监督不会绕过运行时权限、Agent Profile 权限或本机权限。 |
| 高风险动作 | 主脑仍应在删除、发布、合并、外部通知等不可逆动作前问用户。 |
| 无限循环 | 默认 60 轮上限、去抖、单飞锁和自动收敛用于防止无限唤醒。 |
| 重启恢复 | 短时间后端重启可能恢复监督态,但没有可恢复 worker 或快照过期时不会恢复。 |
| 旧自主引擎 | 自主监督不是旧 AutonomousEngine,也不是通用后台任务调度器。 |