en un clic
harness-handle-failure
失败处理技能,包含错误分类、自动回滚、重试策略,失败时触发熔断机制,防止错误扩散
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Menu
失败处理技能,包含错误分类、自动回滚、重试策略,失败时触发熔断机制,防止错误扩散
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Basé sur la classification professionnelle SOC
EnjoyHarness 唯一强制入口,初始化全局状态、文件体系、技能注册表
配置文件读取和验证技能,确保用户配置正确且完整
全流程自动执行超级组合技能,编排所有16个基础技能,从用户需求到完整交付的全自动化流程
头脑风暴技能,在实现前探索用户意图、需求和设计,防止返工
实施计划执行技能,逐任务执行实施计划,支持检查点、错误恢复和进度跟踪
10倍产能提效超级组合技能,通过并行执行、智能调度、优化策略实现10倍开发效率提升
| name | harness-handle-failure |
| description | 失败处理技能,包含错误分类、自动回滚、重试策略,失败时触发熔断机制,防止错误扩散 |
| trigger_words | ["harness-handle-failure","失败处理","handle failure","错误处理","rollback"] |
| priority | HIGH |
| dependencies | ["harness-enable-circuit-breaker"] |
| version | v3.0.0 |
harness-escalate-to-human.EnjoyHarness/EXECUTION_CONTRACT.md 可读使用 Read 工具读取:.EnjoyHarness/SKILL_REGISTRY.md
使用 Read 工具读取:.EnjoyHarness/EXECUTION_CONTRACT.md
检查条件:
如果未完成:
❌ 错误: 熔断机制未启用
💡 请先运行: harness-enable-circuit-breaker
失败事件来源:
失败事件格式:
{TIMESTAMP} | FAILURE | {技能名} | {任务ID} - {错误详情} | FAILURE
使用 Read 工具读取:.trace/ERROR_TRACE.md
分析错误类型:
特征:
处理策略:
特征:
处理策略:
特征:
处理策略:
使用 Bash 工具获取失败上下文:
TIMESTAMP=$(date -Iseconds)
TASK_ID={当前任务ID}
SKILL_NAME={失败的技能}
ERROR_TYPE={代码/架构/流程}
echo "失败时间: $TIMESTAMP"
echo "任务ID: $TASK_ID"
echo "技能: $SKILL_NAME"
echo "错误类型: $ERROR_TYPE"
使用 Write 工具创建失败记录:.trace/ERROR_TRACE.md
追加内容:
## 失败记录 #{N}
### 基本信息
- 时间: {TIMESTAMP}
- 任务ID: {TASK_ID}
- 技能: {SKILL_NAME}
- 错误类型: {ERROR_TYPE}
### 错误详情
{详细错误信息}
### 上下文
- 当前迭代: {N}/100
- 当前Token消耗: {N}
- 错误计数: {N}/3
### 影响范围
- 影响文件: {文件列表}
- 影响技能: {技能列表}
### 失败原因分析
{AI分析失败原因}
使用 Read 工具读取:.EnjoyHarness/GLOBAL_STATE.md
获取当前错误计数:
技能错误计数:
{技能名}: {当前计数}
使用 Edit 工具更新:.EnjoyHarness/GLOBAL_STATE.md
增加错误计数:
技能错误计数:
{技能名}: {当前计数}+1
检查是否达到熔断阈值:
满足以下条件之一则回滚:
使用 Bash 工具执行Git回滚:
# 检查当前状态
git status
# 如果有未提交的修改
if [ -n "$(git status --porcelain)" ]; then
# 暂存当前修改(以防需要恢复)
git stash push -m "failure-backup-{TASK_ID}-{TIMESTAMP}"
# 记录暂存信息
echo "✅ 已暂存当前修改: failure-backup-{TASK_ID}-{TIMESTAMP}"
fi
# 回滚到上一个稳定版本
git log --oneline -5
# 按最近一次成功提交、稳定标签或预设规则自动选择稳定提交
STABLE_COMMIT={上一个稳定提交hash}
# 执行回滚
git reset --hard $STABLE_COMMIT
echo "✅ 已回滚到稳定版本: $STABLE_COMMIT"
使用 Edit 工具追加到:.EnjoyHarness/EVENT_LOG.md
{TIMESTAMP} | ROLLBACK | harness-handle-failure | 回滚到 {STABLE_COMMIT} | SUCCESS
满足以下条件可重试:
策略A:自动重试
策略B:调整后重试
策略C:不继续重试,进入真实阻塞升级
harness-escalate-to-human自治模式附加规则:
human_escalation_policy: true_blockers_only 时,不得为了普通失败询问用户下一步怎么做。如果决定重试:
使用 Edit 工具更新:.EnjoyHarness/EVENT_LOG.md
{TIMESTAMP} | RETRY | harness-handle-failure | 重试 {技能名} (第{N}次) | STARTING
重新执行失败的技能。
触发条件:
执行动作:
使用 Write 工具创建熔断文件:.EnjoyHarness/.circuit-breaker-task-{TASK_ID}
内容:
---
triggered_at: {TIMESTAMP}
trigger_type: TASK_LEVEL
task_id: {TASK_ID}
skill_name: {技能名}
error_count: {N}
max_retries: 3
---
# 任务级熔断触发
## 触发原因
同一任务失败次数达到阈值:{N}/3
## 建议
1. 检查错误日志:.trace/ERROR_TRACE.md
2. 分析失败原因
3. 优先执行自动诊断、自动回滚或自动拆分方案
## 后续行动
- 默认触发 harness-handle-failure / harness-diagnose-and-improve
- 仅在真实阻塞时升级,不等待普通任务级人工决策
使用 Edit 工具追加到:.EnjoyHarness/EVENT_LOG.md
{TIMESTAMP} | CIRCUIT_BREAKER_TRIGGERED | harness-handle-failure | 任务级熔断 (任务: {TASK_ID}, 错误: {N}/3) | CRITICAL
使用 Read 工具读取:.EnjoyHarness/ITERATION_COUNTER.md
检查:
使用 Write 工具创建报告:.trace/FAILURE_REPORT_{TASK_ID}.md
内容:
---
generated_at: {TIMESTAMP}
task_id: {TASK_ID}
status: FAILED
---
# 失败处理报告
## 执行摘要
- 失败时间: {TIMESTAMP}
- 任务ID: {TASK_ID}
- 失败技能: {SKILL_NAME}
- 错误类型: {ERROR_TYPE}
## 错误详情
{详细错误信息}
## 处理措施
- [x] 错误分类完成
- [x] 失败上下文已记录
- [x] 错误计数已更新: {N}/3
- [x] 回滚决策: {是/否}
- [x] 重试决策: {策略A/B/C}
## 回滚信息
- 是否回滚: {是/否}
- 回滚到: {COMMIT_HASH}
- 暂存备份: {STASH_NAME}
## 重试信息
- 重试策略: {A/B/C/无}
- 重试次数: {N}
- 重试结果: {成功/失败/进行中}
## 熔断状态
- 任务级熔断: {触发/未触发}
- 错误计数: {N}/3
## 下一步建议
1. {建议1}
2. {建议2}
3. {建议3}
根据处理结果,触发相应技能:
错误计数 < 3 且 有修复方案:
错误计数 ≥ 3:
harness-escalate-to-human架构错误:
使用 Edit 工具更新:.EnjoyHarness/GLOBAL_STATE.md
## 技能错误计数
- {技能名}: {N}/3
## 最近事件
- {TIMESTAMP} | harness-handle-failure | FAILURE_HANDLED | {任务ID} | {SUCCESS/FAILURE}
使用 Edit 工具更新:.EnjoyHarness/ITERATION_COUNTER.md
增加计数(本技能约10次迭代):
current_iteration: N+10
使用 Edit 工具更新:.EnjoyHarness/SKILL_REGISTRY.md
- [x] harness-handle-failure - 失败处理技能 ✅
使用 Bash 工具输出:
echo ""
echo "✅ harness-handle-failure 执行完成!"
echo ""
echo "📋 失败处理报告: .trace/FAILURE_REPORT_{TASK_ID}.md"
echo ""
echo "🔍 处理摘要:"
echo " - 错误类型: {ERROR_TYPE}"
echo " - 错误计数: {N}/3"
echo " - 回滚: {是/否}"
echo " - 重试: {策略A/B/C/无}"
echo " - 熔断: {触发/未触发}"
echo ""
echo "📌 下一步:"
if [ "$ERROR_COUNT" -lt 3 ]; then
echo " - 触发 harness-diagnose-and-improve 诊断错误"
else
echo " - 若确认为真实阻塞,则触发 harness-escalate-to-human"
fi
echo ""
本技能执行预计迭代次数: 约10次(Write 2次 + Edit 5次 + Read 3次 + Bash 3次)
输入:
错误: harness-validate-output 执行失败
原因: Go编译错误 - 未定义的变量
错误计数: 1/3
预期输出:
输入:
错误: harness-validate-output 执行失败
原因: 违反分层架构 - UI层直接调用Repo层
错误计数: 1/3
预期输出:
输入:
错误: harness-spawn-subharness-agent 执行失败
错误计数: 3/3(第三次失败)
预期输出:
.EnjoyHarness/.circuit-breaker-task-{TASK_ID}输入:
第一次失败: 语法错误
回滚: 否
重试: 策略A(自动修复后重试)
预期输出:
输入:
第一次失败: 代码错误
第二次失败: 代码错误(不同原因)
第三次失败: 流程错误
预期输出:
harness-escalate-to-human