P2 ops-practical
从"人工排查"到"AI驱动":Claude Code 错误自愈系统最佳实践
深入理解 Harness Engineering 在 Claude Code 中的错误自愈实践
在使用 Claude Code 进行日常开发时,你是否遇到过这样的场景:
npm ERR! code ENOENT
npm ERR! syscall open /app/package.json
于是开始:查日志、搜 Google、问同事… 20分钟过去了,问题还在。
如果 AI 能自动分析错误并给出修复建议,甚至自动执行修复,会怎样?
这就是 Harness Engineering 要解决的问题。
<hr />
一、问题:为什么需要错误自愈系统?
1.1 传统错误处理流程
遇到错误 → 人工排查 → 搜索引擎 → 尝试修复 → 失败 → 重复
↓
时间浪费 + 效率低下 + 知识不积累
1.2 我们的核心诉求
-
快速定位:错误发生时,快速获得专业级分析
-
具体建议:不是泛泛的”检查一下”,而是可以直接执行的步骤
-
自动积累:同类错误下次出现时,AI 已经”学会”了
-
按置信度行动:高置信度自动执行,低置信度通知人工
二、解决方案:Harness Self-Healing Architecture
2.1 整体架构
用户/系统 → Webhook → n8n Workflow → Python 分析服务器 → Claude API
↓ ↓
Slack 通知 ← 结构化分析结果 ← AI 决策引擎
↓
知识库积累
↓
置信度校准循环
2.2 核心组件
| 组件 | 技术选型 | 作用 |
|---|---|---|
| 分析引擎 | Python HTTP Server | 调用 Claude API,提供结构化分析 |
| 工作流 | n8n | Webhook 路由、Slack 通知、定时任务 |
| AI Provider | Claude API (MiniMax) | 错误分析和决策 |
| CLI 工具 | /analyze-error | Claude Code 内直接使用 |
2.3 关键创新
1. AI 输出结构化
{
"analysis": "npm ENOENT 表示找不到 package.json",
"suggested_fix": "1. 确认 package.json 存在\n2. 检查 COPY 指令顺序",
"confidence": 0.95,
"auto_action": {
"can_auto_execute": true,
"action_type": "cleanup"
}
}
2. 置信度驱动决策
-
≥90%:自动执行
-
70-89%:执行 + 监控
-
<50%:通知人工
<hr />
三、技术实现细节
3.1 为什么用 Python 作为中间层?
问题: n8n 在 Docker 环境中运行,无法直接调用 Claude API,且文件系统操作受限。
解决: Python 服务器作为独立进程,处理所有 AI 调用和文件 IO。
# 关键代码:禁用 thinking 模式
api_payload = {
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 500,
"thinking": {"type": "disabled"}, # 关键!
"messages": [{"role": "user", "content": prompt}]
}
3.2 置信度如何计算?
基于三个维度:
- 错误明确性:错误信息是否包含具体的错误码和上下文
- 修复确定性:同类问题的历史成功率
- 执行风险:操作是否可逆(删除/回滚 = 高风险,必须人工)
3.3 知识积累机制
每日定时扫描会话日志
↓
提取错误模式 + AI 分析结果
↓
写入月度错误日志(Markdown)
↓
用于:置信度校准 + 提示词优化
<hr />
四、使用示例
4.1 CLI 使用(推荐)
# 在 Claude Code 中直接分析错误
/analyze-error "npm ERR! code ENOENT"
输出:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔍 Harness Error Analysis
📋 Error: npm ERR! code ENOENT
📊 Analysis: ✅ (95% confidence)
npm 无法找到 package.json,通常是因为文件未复制到 Docker 镜像
🔧 Suggested Fix:
1. 确认 package.json 存在于构建上下文
2. 检查 Dockerfile 的 COPY 指令顺序
📁 Category: file
🎯 Action: 🤖 Auto-executable (cleanup)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
4.2 Webhook 调用
curl -X POST https://your-n8n.com/webhook/harness-analyze \
-H "Content-Type: application/json" \
-d '{
"error_message": "npm ERR! code EINTEGRITY",
"context": "CI pipeline",
"source": "github-actions"
}'
<hr />
五、关键经验总结
5.1 避坑指南
| 问题 | 原因 | 解决方案 |
|---|---|---|
| API 返回空 analysis | MiniMax thinking 模式 | 添加 "thinking": {"type": "disabled"} |
| JSON 被截断 | max_tokens 不足 | 设置 500+ |
| 端口占用 | TIME_WAIT 状态 | allow_reuse_address = True |
5.2 为什么选择 Claude API?
-
中文理解能力强:对中文错误信息也能准确分析
-
结构化输出稳定:JSON 格式一致性好
-
成本可控:MiniMax 代理性价比高
六、扩展性思考
6.1 从错误分析到自动修复
当前系统处于 Phase 1(分析 + 建议),Phase 2 将实现:
置信度 ≥ 90% + auto_action 可执行 → 自动执行
↓
验证结果 → 记录学习
6.2 可移植性
核心组件(Python 服务器 + n8n Workflow)均可独立部署:
# 一键安装
curl -fsSL https://example.com/harness/install.sh | bash
<hr />
七、结论
Harness Engineering 不是要”替代人工”,而是要”放大人工”:
- AI 做:重复性分析、日志解读、方案推荐
- 人做:创造性任务、复杂决策、风险把控
核心价值公式:
效率提升 = AI 处理 80% 的常见错误
+ 人聚焦 20% 的复杂问题
+ 知识自动积累