# Harness Escalate To Human

> 人工转交技能，当系统遇到无法自动处理的错误或达到熔断阈值时，生成详细报告并请求人工介入

- Skill: `konglong87/harness-escalate-to-human` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add konglong87/harness-escalate-to-human`
- Raw SKILL.md: https://api.skillmd.com/api/skills/konglong87/harness-escalate-to-human/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: konglong87 (https://skillmd.com/u/konglong87)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/konglong87/harness-escalate-to-human

---


# harness-escalate-to-human 人工转交技能

## 核心能力
1. 检查前置条件（harness-handle-failure已完成）
2. 收集完整的失败上下文
3. 生成人工转交报告
4. 分析失败根本原因
5. 提供人工干预建议
6. 仅在真实阻塞时触发人工决策
7. 记录转交事件

## 前置条件
- harness-init 已完成
- harness-handle-failure 已完成
- 存在需要人工介入的失败事件（熔断触发或无法自动处理）
- `.EnjoyHarness/EXECUTION_CONTRACT.md` 标记 `human_escalation_policy: true_blockers_only`

## 执行步骤

### Step 1: 检查前置条件

使用 Read 工具读取：`.EnjoyHarness/SKILL_REGISTRY.md`

检查条件：
- harness-handle-failure 已标记为完成

如果未完成：
```
❌ 错误: 失败处理未执行
💡 请先运行: harness-handle-failure
```

### Step 2: 识别触发原因

人工转交的触发场景：

**强制边界**：
- 本技能不是常规流程步骤。
- 只有自动回滚、自动重试、自动恢复全部失败，且确认属于真实阻塞时，才允许触发。
- 任何“仅需要执行偏好选择”或“普通任务确认”的场景，都不应调用本技能。

#### 2.1 任务级熔断
触发条件：
- 同一任务错误计数 ≥ 3
- 熔断文件存在：`.EnjoyHarness/.circuit-breaker-task-{TASK_ID}`

#### 2.2 迭代次数熔断
触发条件：
- 迭代计数达到上限（100次）
- 熔断文件存在：`.EnjoyHarness/.circuit-breaker-iteration`

#### 2.3 Token消耗熔断
触发条件：
- 单任务Token消耗 > 10000

#### 2.4 架构级错误
触发条件：
- 严重架构违规
- 无法自动修复的架构问题

#### 2.5 多次重试失败
触发条件：
- 经过多次自动重试后仍然失败
- 策略A、策略B均无法解决

### Step 3: 收集失败上下文

使用 Read 工具读取多个文件：

#### 3.1 读取错误追踪
读取：`.trace/ERROR_TRACE.md`

提取：
- 最近的失败记录
- 错误类型和详情
- 错误序列（如果多次失败）

#### 3.2 读取全局状态
读取：`.EnjoyHarness/GLOBAL_STATE.md`

提取：
- 当前任务ID
- 当前迭代次数
- 技能错误计数
- 活跃子代理状态

#### 3.3 读取迭代计数
读取：`.EnjoyHarness/ITERATION_COUNTER.md`

提取：
- 当前迭代：N/100
- 开始时间
- 任务关联

#### 3.4 读取事件日志
读取：`.EnjoyHarness/EVENT_LOG.md`

提取：
- 最近10个事件
- 失败相关事件
- 熔断触发事件

#### 3.5 读取失败报告
读取：`.trace/FAILURE_REPORT_{TASK_ID}.md`

提取：
- 失败处理摘要
- 已尝试的措施
- 建议的下一步

### Step 4: 分析失败根本原因

根据收集的上下文，AI分析失败的根本原因：

#### 4.1 表面原因
- 直接错误信息
- 失败的技能和任务

#### 4.2 深层原因
- 为什么会失败
- 是否有隐藏的依赖问题
- 环境是否满足要求

#### 4.3 影响范围
- 哪些文件受影响
- 哪些技能受影响
- 是否影响其他任务

### Step 5: 生成人工转交报告

使用 Bash 工具获取当前时间：

```bash
TIMESTAMP=$(date -Iseconds)
TASK_ID={当前任务ID}

echo "时间戳: $TIMESTAMP"
echo "任务ID: $TASK_ID"
```

使用 Write 工具创建报告：`.trace/ESCALATION_REPORT_{TASK_ID}.md`

内容：

```markdown
---
escalation_id: ESC-{TIMESTAMP}
created_at: {TIMESTAMP}
task_id: {TASK_ID}
status: ESCALATED
priority: {CRITICAL/HIGH/MEDIUM}
---

# 人工转交报告

## 执行摘要

**转交时间**: {TIMESTAMP}
**任务ID**: {TASK_ID}
**优先级**: {CRITICAL/HIGH/MEDIUM}
**转交原因**: {熔断触发/多次失败/架构错误/其他}

---

## 触发原因详情

### 熔断信息
- 熔断类型: {任务级/迭代级/Token级}
- 触发条件: {具体条件}
- 熔断文件: {文件路径}

### 错误计数
- 技能: {技能名}
- 错误次数: {N}/3
- 错误类型: {代码/架构/流程}

### 迭代信息
- 当前迭代: {N}/100
- 开始时间: {开始时间}
- 已执行时长: {时长}

---

## 失败上下文

### 错误序列
{时间线方式展示失败序列}

示例：
```
T0: 任务开始
T+5min: 第一次失败（代码错误）→ 重试
T+10min: 第二次失败（不同原因）→ 重试
T+15min: 第三次失败（流程错误）→ 熔断触发
```

### 失败详情

#### 失败 #1
- 时间: {时间}
- 技能: {技能名}
- 错误: {错误信息}
- 处理: {处理措施}

#### 失败 #2
- 时间: {时间}
- 技能: {技能名}
- 错误: {错误信息}
- 处理: {处理措施}

#### 失败 #3
- 时间: {时间}
- 技能: {技能名}
- 错误: {错误信息}
- 处理: {处理措施}

---

## 已尝试的自动处理措施

- [x] 错误分类和分析
- [x] 失败上下文记录
- [x] Git回滚（{是/否}）
- [x] 自动重试（策略A，{N}次）
- [x] 调整后重试（策略B，{N}次）
- [x] 架构检查重新执行
- [x] 错误诊断技能触发

**结果**: 所有自动处理措施均未成功解决问题

---

## 根本原因分析

### 表面原因
{直接原因，如：编译错误、架构违规}

### 深层原因
{分析后的深层原因，如：
- 设计缺陷导致无法满足需求
- 环境配置不满足要求
- 依赖的服务不可用
- 需求理解有误
}

### 影响范围
- 受影响文件: {文件列表}
- 受影响技能: {技能列表}
- 阻塞任务: {任务列表}

---

## 当前系统状态

### 迭代计数
- 当前: {N}/100
- 状态: {正常/接近上限/已达上限}

### 技能错误计数
```yaml
harness-validate-output: {N}/3
harness-spawn-subharness-agent: {N}/3
{其他技能}: {N}/3
```

### 全局状态
- 当前任务: {任务ID}
- 状态: {熔断/暂停}
- 活跃子代理: {数量}
- 最近事件: {最近5个事件}

---

## 人工干预建议

### 建议1: 检查并修复代码
**适用场景**: 代码错误、语法错误

**具体操作**:
1. 检查文件：{文件路径}
2. 修复错误：{具体错误}
3. 运行测试验证
4. 手动清除熔断文件：`.EnjoyHarness/.circuit-breaker-*`
5. 重新启动任务

### 建议2: 调整架构设计
**适用场景**: 架构错误、分层违规

**具体操作**:
1. 检查架构违规：{具体违规}
2. 调整代码结构以符合架构规则
3. 更新ARCHITECTURE_GUARDRAILS.md（如果需要）
4. 重新运行架构验证
5. 清除熔断后重新执行

### 建议3: 检查环境配置
**适用场景**: 流程错误、依赖问题

**具体操作**:
1. 检查依赖服务状态
2. 验证环境变量配置
3. 确认权限设置
4. 调整执行顺序（如果需要）
5. 重新启动任务

### 建议4: 调整需求或方案
**适用场景**: 需求理解偏差、方案不可行

**具体操作**:
1. 重新审视原始需求
2. 评估当前方案的可行性
3. 调整方案或寻求澄清
4. 更新目标文件（memory/goals/）
5. 从头开始执行

### 建议5: 人工完成该任务
**适用场景**: 所有自动处理失败、复杂问题

**具体操作**:
1. 人工检查代码和日志
2. 手动修复问题
3. 提交代码
4. 更新目标文件状态为completed
5. 清理熔断文件

---

## 标准处置选项

人工接管后可参考以下标准处置路径：

### 选项A: 修复后继续
- 人工修复问题
- 清除熔断文件
- 系统自动继续执行

### 选项B: 调整方案后重新开始
- 调整需求或方案
- 更新目标文件
- 从头开始执行

### 选项C: 人工完成并结束
- 人工完成剩余工作
- 更新目标状态为completed
- 记录经验教训

### 选项D: 放弃任务
- 记录放弃原因
- 清理临时文件
- 标记任务为abandoned

---

## 后续步骤（待人工决策后执行）

### 如果选择选项A（修复后继续）
```bash
# 1. 人工修复完成后
# 2. 清除熔断文件
rm .EnjoyHarness/.circuit-breaker-*

# 3. 重置错误计数（手动编辑GLOBAL_STATE.md）
# 4. 系统自动检测熔断清除，继续执行
```

### 如果选择选项B（调整后重新开始）
```bash
# 1. 更新目标文件（手动编辑 memory/goals/）
# 2. 清理工作目录（可选）
# 3. 清除熔断和错误记录
# 4. 重新调用harness-init或相关技能
```

### 如果选择选项C（人工完成）
```bash
# 1. 人工完成工作并提交代码
# 2. 手动编辑目标文件：status: completed
# 3. 清理熔断和错误记录
# 4. 记录经验到.learnings/
```

### 如果选择选项D（放弃）
```bash
# 1. 手动编辑目标文件：status: abandoned
# 2. 清理临时文件和工作目录
# 3. 记录放弃原因到ERROR_HANDBOOK.md
```

---

## 联系信息（如果适用）

如需进一步协助，请提供：
- 任务ID: {TASK_ID}
- 转交报告路径: .trace/ESCALATION_REPORT_{TASK_ID}.md
- 错误追踪路径: .trace/ERROR_TRACE.md
- 全局状态路径: .EnjoyHarness/GLOBAL_STATE.md

---

## 附录：相关文件清单

### 日志文件
- 错误追踪: `.trace/ERROR_TRACE.md`
- 事件日志: `.EnjoyHarness/EVENT_LOG.md`
- 失败报告: `.trace/FAILURE_REPORT_{TASK_ID}.md`

### 状态文件
- 全局状态: `.EnjoyHarness/GLOBAL_STATE.md`
- 迭代计数: `.EnjoyHarness/ITERATION_COUNTER.md`
- 技能注册: `.EnjoyHarness/SKILL_REGISTRY.md`

### 目标文件
- 目标文件: `memory/goals/{TIMESTAMP}_{关键词}.md`

### 熔断文件
- 熔断文件: `.EnjoyHarness/.circuit-breaker-*`

---

**报告生成时间**: {TIMESTAMP}
**报告生成技能**: harness-escalate-to-human v3.0.0
```

### Step 6: 输出人工提示

使用 Bash 工具输出醒目的人工介入提示：

```bash
echo ""
echo "🚨🚨🚨 需要人工介入 🚨🚨🚨"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "人工转交报告已生成"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "📋 报告路径: .trace/ESCALATION_REPORT_{TASK_ID}.md"
echo "🆔 转交ID: ESC-{TIMESTAMP}"
echo "⚡ 优先级: {CRITICAL/HIGH/MEDIUM}"
echo ""
echo "触发原因:"
echo "  {触发原因详情}"
echo ""
echo "已尝试的自动处理:"
echo "  - 错误分类和分析 ✓"
echo "  - Git回滚 {是/否} ✓"
echo "  - 自动重试 {N}次 ✓"
echo "  - 所有措施均未成功"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "请查看完整报告并选择处理方案:"
echo "  A. 修复后继续"
echo "  B. 调整方案后重新开始"
echo "  C. 人工完成并结束"
echo "  D. 放弃任务"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "⚠️  注意: 系统已暂停，等待人工决策"
echo "⚠️  熔断文件: .EnjoyHarness/.circuit-breaker-*"
echo ""
```

### Step 7: 记录转交事件

使用 Edit 工具追加到：`.EnjoyHarness/EVENT_LOG.md`

```markdown
{TIMESTAMP} | ESCALATION | harness-escalate-to-human | 转交人工介入 (任务: {TASK_ID}, 原因: {原因}) | ESCALATED
{TIMESTAMP} | SYSTEM_PAUSE | harness-escalate-to-human | 系统暂停，等待人工决策 | PAUSED
```

### Step 8: 更新全局状态

使用 Edit 工具更新：`.EnjoyHarness/GLOBAL_STATE.md`

```markdown
## 当前任务
- 任务ID: {TASK_ID}
- 状态: ESCALATED（人工转交）
- 开始时间: {开始时间}
- 转交时间: {当前时间}
- 转交原因: {原因}

## 系统状态
- 状态: PAUSED（等待人工决策）
- 转交报告: .trace/ESCALATION_REPORT_{TASK_ID}.md
```

### Step 9: 更新迭代计数

使用 Edit 工具更新：`.EnjoyHarness/ITERATION_COUNTER.md`

增加计数（本技能约8次迭代）：
```markdown
current_iteration: N+8
```

### Step 10: 标记技能完成

使用 Edit 工具更新：`.EnjoyHarness/SKILL_REGISTRY.md`

```markdown
- [x] harness-escalate-to-human - 人工转交技能 ✅
```

### Step 11: 等待人工决策

系统状态已设置为PAUSED，等待人工：

1. 阅读转交报告
2. 选择处理方案（A/B/C/D）
3. 执行相应操作
4. 清除熔断文件或更新状态
5. 通知系统继续或结束

### Step 12: 输出完成信息

使用 Bash 工具输出：

```bash
echo ""
echo "✅ harness-escalate-to-human 执行完成"
echo ""
echo "📋 转交报告已生成:"
echo "   .trace/ESCALATION_REPORT_{TASK_ID}.md"
echo ""
echo "📌 系统状态: PAUSED（等待人工决策）"
echo ""
echo "💡 提示:"
echo "   - 请查看转交报告了解详细情况"
echo "   - 选择处理方案后，清除熔断文件或更新状态"
echo "   - 需要帮助请提供任务ID: {TASK_ID}"
echo ""
```

## 成功标准
- [ ] 触发原因已识别
- [ ] 失败上下文已完整收集
- [ ] 人工转交报告已生成
- [ ] 根本原因已分析
- [ ] 人工干预建议已提供
- [ ] 决策选项已明确
- [ ] 事件已记录到EVENT_LOG.md
- [ ] 全局状态已更新为ESCALATED
- [ ] 系统已暂停等待人工决策
- [ ] 迭代计数已更新
- [ ] 技能已标记为完成

## 失败兜底
- 前置条件未满足 → 终止执行，提示运行前置技能
- 无法生成报告 → 记录错误，输出紧急提示
- 报告文件创建失败 → 尝试多次，仍失败则输出到控制台

## 联动关系
- 前置技能: harness-handle-failure
- 触发场景: 任务级熔断、迭代熔断、架构错误、多次失败
- 触发前提: 必须已经穷尽自动恢复手段，且属于真实阻塞
- 人工决策后:
  - 选项A: 清除熔断后自动继续
  - 选项B: 更新目标后重新开始
  - 选项C: 标记完成
  - 选项D: 标记放弃

## 迭代计数
本技能执行预计迭代次数: 约8次（Write 1次 + Edit 4次 + Read 3次 + Bash 2次）

## 测试用例

### 测试场景1：任务级熔断转交
**输入**：
```
触发: 同一任务失败3次
熔断文件: .EnjoyHarness/.circuit-breaker-task-001
错误计数: 3/3
```

**预期输出**：
- 读取所有相关文件（ERROR_TRACE, GLOBAL_STATE, EVENT_LOG）
- 生成ESCALATION_REPORT_task-001.md
- 报告包含完整失败序列
- 提供5个人工干预建议
- 输出醒目的人工提示
- 系统状态设为PAUSED

### 测试场景2：迭代熔断转交
**输入**：
```
触发: 迭代计数达到上限
当前迭代: 100/100
熔断文件: .EnjoyHarness/.circuit-breaker-iteration
```

**预期输出**：
- 分析迭代次数超限原因
- 生成包含迭代详情的转交报告
- 建议：简化方案或分阶段执行
- 提供决策选项

### 测试场景3：架构错误转交
**输入**：
```
触发: 严重架构违规
错误类型: ARCHITECTURE_ERROR
已尝试: 架构修复（失败）
```

**预期输出**：
- 分析架构违规详情
- 建议架构调整方案
- 提供详细的架构修复步骤
- 建议选项B（调整后重新开始）

### 测试场景4：Token消耗超限转交
**输入**：
```
触发: Token消耗 > 10000
单任务Token: 12500
```

**预期输出**：
- 分析Token消耗分布
- 建议优化方案或分阶段执行
- 提供Token使用详情
- 建议选项B（简化方案）

### 测试场景5：多次重试失败转交
**输入**：
```
失败序列:
- 第一次: 代码错误 → 重试（策略A）
- 第二次: 不同错误 → 重试（策略A）
- 第三次: 流程错误 → 重试（策略B）
- 第四次: 失败 → 熔断
```

**预期输出**：
- 完整失败序列时间线
- 每次失败的处理措施
- 根本原因分析
- 建议选项A或C（修复或人工完成）

### 测试场景6：人工决策后继续（选项A）
**输入**：
```
人工修复完成
选择: 选项A（修复后继续）
操作: 清除熔断文件
```

**预期输出**：
- 检测到熔断文件已清除
- 系统状态从PAUSED恢复为ACTIVE
- 重置错误计数
- 继续执行后续技能

### 测试场景7：人工决策后放弃（选项D）
**输入**：
```
人工决定放弃任务
选择: 选项D（放弃任务）
```

**预期输出**：
- 目标文件状态更新为abandoned
- 清理临时文件
- 记录放弃原因到ERROR_HANDBOOK.md
- 系统状态恢复正常（无当前任务）

