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 我们的核心诉求

  1. 快速定位:错误发生时,快速获得专业级分析

  2. 具体建议:不是泛泛的”检查一下”,而是可以直接执行的步骤

  3. 自动积累:同类错误下次出现时,AI 已经”学会”了

  4. 按置信度行动:高置信度自动执行,低置信度通知人工


二、解决方案:Harness Self-Healing Architecture

2.1 整体架构

用户/系统  →  Webhook  →  n8n Workflow  →  Python 分析服务器  →  Claude API
                              ↓                                        ↓
                         Slack 通知  ←  结构化分析结果  ←  AI 决策引擎

                        知识库积累

                      置信度校准循环

2.2 核心组件

组件技术选型作用
分析引擎Python HTTP Server调用 Claude API,提供结构化分析
工作流n8nWebhook 路由、Slack 通知、定时任务
AI ProviderClaude API (MiniMax)错误分析和决策
CLI 工具/analyze-errorClaude Code 内直接使用

2.3 关键创新

1. AI 输出结构化

&#123;
  "analysis": "npm ENOENT 表示找不到 package.json",
  "suggested_fix": "1. 确认 package.json 存在\n2. 检查 COPY 指令顺序",
  "confidence": 0.95,
  "auto_action": &#123;
    "can_auto_execute": true,
    "action_type": "cleanup"
  &#125;
&#125;

2. 置信度驱动决策

  • ≥90%:自动执行

  • 70-89%:执行 + 监控

  • <50%:通知人工

    <hr />

三、技术实现细节

3.1 为什么用 Python 作为中间层?

问题: n8n 在 Docker 环境中运行,无法直接调用 Claude API,且文件系统操作受限。

解决: Python 服务器作为独立进程,处理所有 AI 调用和文件 IO。

# 关键代码:禁用 thinking 模式
api_payload = &#123;
    "model": "claude-3-5-sonnet-20241022",
    "max_tokens": 500,
    "thinking": &#123;"type": "disabled"&#125;,  # 关键!
    "messages": [&#123;"role": "user", "content": prompt&#125;]
&#125;

3.2 置信度如何计算?

基于三个维度:

  1. 错误明确性:错误信息是否包含具体的错误码和上下文
  2. 修复确定性:同类问题的历史成功率
  3. 执行风险:操作是否可逆(删除/回滚 = 高风险,必须人工)

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 '&#123;
    "error_message": "npm ERR! code EINTEGRITY",
    "context": "CI pipeline",
    "source": "github-actions"
  &#125;'
  <hr />

五、关键经验总结

5.1 避坑指南

问题原因解决方案
API 返回空 analysisMiniMax thinking 模式添加 "thinking": &#123;"type": "disabled"&#125;
JSON 被截断max_tokens 不足设置 500+
端口占用TIME_WAIT 状态allow_reuse_address = True

5.2 为什么选择 Claude API?

  1. 中文理解能力强:对中文错误信息也能准确分析

  2. 结构化输出稳定:JSON 格式一致性好

  3. 成本可控: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% 的复杂问题
         + 知识自动积累