| name | master-recovery |
| description | 挂起任务恢复流程。Master Agent 处理 blocked_reason.md 时调用。 |
挂起任务恢复流程
触发条件
- 收到
[BLOCK_NEED_MASTER] 标签
- 需要处理挂起任务
执行流程
1. 读取阻塞原因
读取 `.trae/blocked_reason.md` 获取阻塞详情
2. 判断原因类型
根据 reason_type 字段判断恢复策略:
| reason_type | 含义 | 恢复策略 |
|---|
missing_context | 缺少 DOM 结构等上下文 | 调用 test-agent 嗅探,携新数据重试 |
logic_unimplementable | 核心逻辑无法实现 | 停止流转,交出控制权给人类 |
mcp_failure | MCP 调用连续失败 | 检查 MCP 配置,人工干预 |
retry_exhausted | 重试次数耗尽(熔断触发) | 人工审查后决定是否继续 |
恢复策略详解
策略 1:missing_context(缺少上下文)
执行步骤:
- 读取
blocked_reason.md 中的"需要的信息"部分
- 调用 test-agent 单独执行 Playwright 嗅探操作(不运行全量测试)
- 获取 DOM 结构或选择器信息
- 更新
current_task.md,添加新获取的上下文
- 重新唤醒 dev-agent
嗅探命令:
python -c "
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto('<目标URL>')
# 获取 Accessibility Tree
snapshot = page.accessibility.snapshot()
print(snapshot)
browser.close()
"
策略 2:logic_unimplementable(核心逻辑无法实现)
执行步骤:
- 在终端输出阻断日志
- 停止任务流转
- 彻底交出控制权给人类
输出格式:
========================================
⚠️ 任务阻断通知
========================================
任务ID: <task_id>
阻断原因: 核心逻辑无法实现
已尝试方案:
1. <方案 1>
2. <方案 2>
3. <方案 3>
Traceback:
<最后 10 行错误堆栈>
========================================
请人工审查后决定是否继续任务。
如需继续,请重置 dev_retry_count 并重新分发任务。
========================================
策略 3:mcp_failure(MCP 调用失败)
执行步骤:
- 检查 MCP 配置是否正确
- 检查网络连接
- 输出诊断信息
- 等待人工干预
诊断命令:
python -c "from playwright.sync_api import sync_playwright; print('Playwright OK')"
gh repo view Disaster-Terminator/RewardsCore
策略 4:retry_exhausted(重试耗尽)
执行步骤:
- 输出熔断通知
- 等待人工审查
- 根据人工决定:
- 继续任务:重置
dev_retry_count: 0,重新分发
- 放弃任务:清理媒介文件,结束任务
输出格式:
========================================
🔴 熔断器触发通知
========================================
任务ID: <task_id>
重试次数: <dev_retry_count> / <max_retries>
阻断原因: 重试次数耗尽
历史失败记录:
轮次 1: <失败原因>
轮次 2: <失败原因>
轮次 3: <失败原因>
请人工审查后决定:
1. 继续任务:重置 dev_retry_count 并重新分发
2. 放弃任务:清理媒介文件并结束
========================================
人工干预后恢复
继续任务
- 重置
dev_retry_count: 0
- 更新
current_task.md 中的上下文信息
- 重新分发任务
---
task_id: <任务ID>
dev_retry_count: 0
max_retries: 3
status: pending
---
放弃任务
- 清理媒介文件
- 记录放弃原因
echo "---\nstatus: abandoned\n---" > .trae/current_task.md
输出格式
恢复成功
---
task_id: <任务ID>
status: recovered
recovery_type: <missing_context | mcp_failure>
---
### 恢复操作
- 获取的上下文:<描述>
- 下一步:重新唤醒 dev-agent
需要人工干预
---
task_id: <任务ID>
status: human_required
reason_type: <logic_unimplementable | retry_exhausted>
---
### 阻断信息
<阻断详情>
### 人工操作建议
<建议的人工操作>