程序员 AI 工具实战:OpenClaw + Claude Code 24小时自动修 Bug
凌晨3点47分,PagerDuty 的刺耳警报把我从睡梦中拽了出来。
又是那个老问题——用户下单时支付回调超时。我眯着眼睛打开笔记本,SSH 连上服务器,翻看日志,定位 Bug,写修复,跑测试,提交 PR。等一切搞定,天已经亮了。这种 on-call 的痛苦,做过后端的同学都懂。
但说实话,这种 Bug 根本不值得我凌晨起床。它是典型的”已知问题类型”——网络超时后重试机制没写好。修复也很简单:加个指数退避,捕获异常,记录日志。这种重复性的工作,为什么不能让 AI 代劳?
后来我搭了一套 OpenClaw + Claude Code 的混合工作流。OpenClaw 24小时盯着 Sentry,发现 Bug 自动派单;Claude Code 接单后拉分支、修代码、跑测试、提交 PR;我早上醒来只看到一封邮件:“已自动修复 3 个问题,请审查 PR。“
OpenClaw vs Claude Code——不是竞争,是互补
很多人问我:OpenClaw 和 Claude Code 到底用哪个?
说实话,这俩根本不是竞争关系。它们的定位完全不同,组合起来才是王炸。
OpenClaw 是 24/7 待命的”个人 AI 管家”。它常驻后台,能接 webhook、能监控各种数据源、能在你睡觉的时候继续干活。官方对它的定义是 “persistent personal AI”——持久化的个人 AI。它不擅长写复杂代码,但擅长”看着”事情发生,然后触发相应的动作。
Claude Code 是专业的”AI 程序员”。它不懂怎么监控你的服务器,但让它看代码、改 Bug、重构逻辑,那是它的强项。它能深度理解代码库,知道哪里该改、怎么改才安全。
你看,这俩完美互补:一个负责”看”,一个负责”干”。
我在 OpenClaw Directory 上看到一个叫 “Sentry → Auto-Debug → Open PR” 的配方,简直就是为这种场景设计的。它的思路是:
- Sentry 监控到错误,触发 webhook
- OpenClaw 接收告警,分析堆栈信息
- OpenClaw 派生子代理,调用 Claude Code 修复
- Claude Code 生成修复代码,跑测试
- 测试通过后,自动打开 GitHub PR
整个流程完全自动,不需要人工介入。我在 Substack 上看到有人分享使用体验,说这套配置让他实现了”overnight code review with no human in the loop until the PR is ready”——晚上出 Bug,早上看 PR。
架构设计——混合工作流的核心组件
要理解这套工作流,你得先搞清楚 OpenClaw 的”子代理”机制。
OpenClaw 本身是个”大管家”。它负责监听各种事件(webhook、定时任务、消息通知),但具体的执行可以派给”子代理”去做。子代理是临时创建的、专注于特定任务的 AI 实例。
打个比方:OpenClaw 是项目经理,Claude Code 是程序员。项目经理接到需求(Sentry 告警),分析后派给程序员(子代理),程序员干活,干完汇报。
整体架构长这样:
┌─────────────────────────────────────────────────────────────┐
│ 外部世界 │
│ ┌──────────┐ ┌──────────┐ ┌─────────────────────────┐ │
│ │ Sentry │ │ GitHub │ │ Slack/Discord/Telegram │ │
│ └────┬─────┘ └────▲─────┘ └──────────▲──────────────┘ │
└───────┼─────────────┼───────────────────┼──────────────────┘
│ │ │
│ webhook │ create PR │ notify
│ │ │
┌───────▼─────────────┴───────────────────┴──────────────────┐
│ OpenClaw Gateway │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ OpenClaw 主代理(监控者) │ │
│ │ • 24小时监听 Sentry webhook │ │
│ │ • 分析错误类型和严重程度 │ │
│ │ • 决策:自动修复 / 人工介入 / 忽略 │ │
│ └─────────────────────┬────────────────────────────────┘ │
│ │ spawn │
│ ▼ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Claude Code 子代理(执行者) │ │
│ │ • 拉取最新代码 │ │
│ │ • 分析 Bug 根因 │ │
│ │ • 编写修复代码 │ │
│ │ • 运行测试验证 │ │
│ │ • 推送分支并创建 PR │ │
│ └──────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────┘
关键点在于:OpenClaw 不直接改代码。它只做”决策”和”协调”,真正的代码修改交给 Claude Code 子代理。这样既保证了安全性(OpenClaw 有权限控制),又保证了修复质量(Claude Code 专业对口)。
数据流向是这样的:
- Sentry webhook → OpenClaw(错误事件、堆栈信息、环境数据)
- OpenClaw → Claude Code 子代理(修复指令、上下文信息)
- Claude Code 子代理 → GitHub(修复代码、PR 描述)
- GitHub → OpenClaw(PR 状态、CI 结果)
- OpenClaw → Slack(通知人类审查)
OpenClaw 的状态管理能力在这里很重要。它可以记录每个 Bug 的处理状态:“已接收”、“分析中”、“修复中”、“待审查”、“已合并”。这样即使流程中断,也能从断点恢复。
实战配置——从监控到自动提交 PR
好,概念讲完了,来看具体怎么配置。
第一步:Sentry 配置 webhook
登录 Sentry,进入项目设置 → Integrations → Webhooks。添加你的 OpenClaw webhook URL:
https://your-openclaw-gateway.com/hooks/sentry?sessionKey=bug-fix-pipeline
然后在 Alert Rules 里创建一条规则:当 error count > 5 in 5 minutes 时,触发 webhook。
第二步:OpenClaw 配置监控代理
在 OpenClaw 里创建一个专门的 agent 来处理 Sentry 事件。配置文件大概长这样:
name: sentry-bug-monitor
hooks:
sentry:
path: /hooks/sentry
defaultSessionKey: bug-fix-pipeline
steps:
- id: parse-error
command: json.parse stdin
description: "解析 Sentry 的错误数据"
- id: classify
command: llm-task "分析错误类型和严重程度"
args:
error: $parse-error.stacktrace
message: $parse-error.message
schema: error-classification.json
- id: decision
command: state.set "action" $classify.recommended_action
- id: auto-fix
command: subagent.spawn
args:
type: claude-code
task: "修复 Bug: ${parse-error.title}"
context: $parse-error
repo: $parse-error.project.repo
condition: $classify.severity == "medium" && $classify.auto_fixable == true
- id: notify-human
command: slack.send "#alerts"
args:
message: "发现严重错误,需要人工介入: ${parse-error.url}"
condition: $classify.severity == "critical"
这里有几个关键点:
classify步骤用 LLM 分析错误类型,判断是否适合自动修复decision根据严重程度分流:中等优先级且可自动修复的走 Claude Code,严重的通知人工subagent.spawn是派生子代理的指令,这里指定了 type 为 claude-code
第三步:Claude Code 子代理配置
子代理的任务是具体的代码修复。OpenClaw 会把上下文传递给它,包括错误堆栈、相关代码文件、环境信息。
子代理的工作流程:
# 1. 拉取最新代码
git clone $REPO_URL /tmp/fix-workspace
cd /tmp/fix-workspace
# 2. 创建修复分支
git checkout -b auto-fix/$ERROR_ID
# 3. 分析问题(Claude Code 介入)
claude-code --context $ERROR_CONTEXT --prompt "分析这个 Bug 的根因"
# 4. 编写修复
claude-code --prompt "编写修复代码,确保包含测试"
# 5. 运行测试
npm test
# 6. 提交并推送
git add .
git commit -m "fix: auto-fix for $ERROR_TITLE [skip ci]"
git push origin auto-fix/$ERROR_ID
# 7. 创建 PR
gh pr create --title "Auto-fix: $ERROR_TITLE" --body "..."
Claude Code 在这里的核心价值是”代码理解”。它不只是根据错误堆栈盲目修改,而是会:
- 读取相关代码文件,理解业务逻辑
- 分析错误传播路径,找到真正的根因
- 编写符合项目代码风格的修复
- 生成单元测试验证修复效果
第四步:GitHub PR 自动化
PR 创建后,OpenClaw 会继续监听 GitHub 的 webhook:
- id: watch-pr
command: github.watch-pr $auto-fix.pr_number
- id: ci-status
command: poll "github.checks $auto-fix.pr_number"
until: $ci-status.completed == true
timeout: 30m
- id: notify-review
command: slack.send "#dev"
args:
message: |
自动修复 PR 已就绪: ${auto-fix.pr_url}
CI 状态: ${ci-status.conclusion}
请审查后合并
这样你就收到了一条 Slack 消息,包含 PR 链接和 CI 结果。你点进去审查代码,没问题就合并。整个过程中,你完全不需要手动拉代码、写修复、跑测试。
进阶技巧——让工作流更智能
基础配置跑起来后,你可以加一些进阶功能让它更好用。
Bug 分级处理
不是所有 Bug 都值得自动修复。我在 classify 步骤加了个简单的规则引擎:
- P0(Critical):系统宕机、数据丢失 → 立即通知人工
- P1(High):核心功能不可用 → 通知 + 尝试自动修复(人工确认后提交)
- P2(Medium):非核心功能异常 → 全自动修复
- P3(Low):边缘 case、优化建议 → 记录到 backlog,每周批量处理
人工检查点
有些修复虽然技术上是正确的,但业务上可能有问题。我加了一个 approval 步骤:
- id: propose-fix
command: claude-code.generate-fix
- id: human-approval
command: slack.interactive
args:
message: "AI 建议以下修复,是否批准提交?"
buttons: ["批准", "拒绝", "需要修改"]
timeout: 4h
- id: submit-if-approved
command: github.create-pr
condition: $human-approval.choice == "批准"
这样对于敏感操作,AI 不会自作主张。
失败重试和回滚
Claude Code 也不是每次都能修好。如果测试失败,可以自动重试:
- id: fix-attempt
loop: 3
sub-lobster: claude-code-fix
break-on: $fix-attempt.tests_passed
- id: escalate-if-failed
command: slack.send "#dev-escalation"
condition: !$fix-attempt.tests_passed
如果三次都失败,就通知人工接手。
多仓库支持
我们公司有十几个微服务,每个都有独立仓库。OpenClaw 可以配置多个项目映射:
projects:
payment-service:
repo: github.com/acme/payment
sentry_project: payment-api
auto_fix: true
user-service:
repo: github.com/acme/users
sentry_project: user-api
auto_fix: false # 这个暂时不开自动修复
这样一套 OpenClaw 实例可以服务多个项目。
效果评估与注意事项
这套系统我跑了三个月,数据是这样的:
- 总捕获 Bug:127 个
- 自动修复成功:89 个(70%)
- 修复后测试通过:78 个(61%)
- 人工审查后合并:72 个(57%)
也就是说,接近六成的 Bug 完全不需要我动手,早上看看 PR 点一下合并就行。
时间节省更明显。以前一个典型 Bug 的处理流程:发现(平均 2 小时)→ 定位(30 分钟)→ 修复(30 分钟)→ 测试(20 分钟)→ 提交 PR(10 分钟)。总共 4.5 小时。
现在:发现(实时)→ AI 修复(10 分钟)→ 人工审查(5 分钟)。从 4.5 小时缩短到 15 分钟。
但说实话,这套系统也有局限:
适用场景:
- 已知问题类型的重复 Bug(如空指针、边界条件、API 超时)
- 有明确堆栈信息的运行时错误
- 代码库结构清晰、测试覆盖良好的项目
不适用场景:
- 架构设计层面的问题(需要人类决策)
- 需要跨多个系统协调的复杂 Bug
- 没有测试覆盖的遗留代码(AI 改完你不敢合)
风险控制:
- 永远不要给 AI 生产环境写权限
- 所有自动修复必须通过 PR,走正常审查流程
- 保留完整的审计日志,知道 AI 改了什么
- 定期检查 AI 的修复质量,调整模型 prompt
总结
说了这么多,OpenClaw + Claude Code 的混合工作流,本质上是把”监控”和”修复”这两个环节自动化了。OpenClaw 做它不擅长但必要的事情(24小时盯着),Claude Code 做它擅长的事情(写代码)。两者结合,实现了一个”永不疲倦的初级程序员”——能干活,但需要你把关。
这套配置的核心价值不是”替代程序员”,而是消除重复性工作,让你把精力集中在真正需要人类智慧的地方。
如果你也在为 on-call 痛苦,或者团队经常被重复 Bug 困扰,我建议试试这套方案。从最简单的场景开始——比如自动修复特定的错误类型——然后逐步扩展。
未来的编程工作流,大概率就是这种”人类决策 + AI 执行”的模式。早点拥抱它,早点下班。
OpenClaw + Claude Code 自动修复 Bug 完整配置指南
从零开始配置 OpenClaw 24小时监控 + Claude Code 自动修复的混合工作流
⏱️ 预计耗时: 2 小时
- 1
步骤1: 环境准备:安装和配置 OpenClaw
安装 OpenClaw:
• 克隆 openclaw/openclaw 仓库
• 按官方文档完成安装和初始化
• 配置 Gateway 服务,确保 webhook 可接收外部请求
• 验证:curl http://localhost:8787/health 应返回 200
创建专用 Session:
• openclaw session create bug-fix-pipeline
• 记录 session key,后续配置会用到
• 建议使用固定 session key 便于管理 - 2
步骤2: 配置 Sentry webhook 接入
Sentry 项目设置:
• 进入 Project Settings → Integrations → Webhooks
• 添加 URL: https://your-gateway.com/hooks/sentry?sessionKey=bug-fix-pipeline
• 选择触发事件:issue.created, issue.resolved
创建告警规则:
• 进入 Alerts → Create Alert Rule
• 条件:When issue is created, and event count is greater than 5 in 5 minutes
• 动作:Send a notification via Webhook
• 测试:手动触发一个错误,确认 OpenClaw 能收到 webhook - 3
步骤3: 配置 OpenClaw 监控代理
创建 agent 配置:
• 在 ~/.openclaw/agents/ 下创建 sentry-monitor.yaml
• 配置 hooks.sentry 接收 webhook
• 添加 classify 步骤分析错误类型
• 设置条件分支:auto_fixable 走子代理,critical 通知人工
关键配置项:
• defaultSessionKey: bug-fix-pipeline
• classify schema: 定义 error_type, severity, auto_fixable 字段
• subagent.spawn: 指定 type 为 claude-code,传递完整错误上下文 - 4
步骤4: 配置 Claude Code 子代理
子代理工作流程:
• 接收 OpenClaw 传递的上下文(堆栈、代码位置、环境信息)
• 自动拉取代码仓库到临时工作区
• 创建以 auto-fix/ 开头的修复分支
• 调用 Claude Code 分析并生成修复
Claude Code Prompt 优化:
• "分析这个错误的根因,定位到具体代码行"
• "编写修复代码,保持原有代码风格"
• "为这个修复编写单元测试"
• "运行测试确保修复有效"
GitHub 集成:
• 配置 gh CLI 或 GitHub API token
• 自动推送分支并创建 PR
• PR 标题格式:"Auto-fix: [错误简述]" - 5
步骤5: 配置通知和审查流程
Slack/Discord 通知:
• 创建 #auto-fix 频道接收所有自动修复通知
• 配置三种消息模板:修复成功、需要审查、修复失败
• 添加交互按钮:批准/拒绝/查看 PR
人工审查检查点:
• 对于 sensitive 操作(涉及支付、用户数据等)添加 approval
• 设置 4 小时超时,过期自动升级给上级
• 批准后自动合并,拒绝后记录原因用于模型优化
监控和日志:
• 定期审查自动修复的成功率
• 收集失败案例用于改进 classify 逻辑
• 设置 metrics 追踪处理时长和合并率 - 6
步骤6: 测试和优化
渐进式上线策略:
• 第一周:仅监控不修复,观察 classify 准确性
• 第二周:开放低风险的空指针、边界条件修复
• 第三周:逐步扩大自动修复范围
持续优化:
• 每周 review 自动修复的 PR 质量
• 调整 classify prompt,提高 auto_fixable 判断准确率
• 根据失败案例更新 Claude Code 的修复策略
• 建立反馈循环:人工修复的模式反哺 AI 模型
常见问题
OpenClaw 和 Claude Code 的分工是什么?
• OpenClaw:负责"看"和"协调"——24小时监控、接收 webhook、分析错误、决策路由、派生子代理、通知人类。它不直接修改代码。
• Claude Code:负责"干"——分析代码、定位 Bug、编写修复、运行测试、提交 PR。它是实际的代码执行者。
这个分工保证了安全性(OpenClaw 控制权限)和专业性(Claude Code 擅长编程)。
AI 自动修 Bug 会不会很危险?
• 无生产环境写权限:AI 只能创建 PR,不能直接 push 到主分支
• 强制人工审查:所有修复必须通过 PR 审查流程,至少一个人批准
• 分级处理:严重 Bug 不会自动修复,只会通知人工
• 审计日志:记录 AI 的所有操作,便于追踪和问题定位
• 逐步放开:先监控观察,再低风险修复,最后扩大范围
本质上,AI 是"初级程序员"角色,负责重复性工作,但关键决策仍由人类把控。
这套方案的成本如何?
• OpenClaw:自托管,主要成本是服务器(约 $10-50/月)
• Claude Code:Anthropic API 调用,按 token 计费
• Sentry:监控服务,根据事件量收费
收益方面:
• 实测节省 70% 的重复 Bug 处理时间
• 对于时薪 $50+ 的程序员,每月节省 20+ 小时就是 $1000+ 的价值
• 更重要的是减少 on-call 痛苦,提升生活质量
ROI 计算:一个小团队(3-5 人)每月处理 50+ Bug,这套系统能自动处理 30 个左右,投资回报率通常 3-6 个月回本。
什么样的 Bug 适合自动修复?
• 已知问题模式:空指针、数组越界、类型错误、API 超时
• 有明确堆栈:能定位到具体代码行和调用链
• 修复模式固定:如"加个 try-catch"、"补个边界检查"
• 有测试覆盖:能验证修复是否有效
不适合自动修复的情况:
• 架构设计问题:需要重构而不是简单修复
• 跨系统 Bug:涉及多个服务的协调
• 业务逻辑复杂:需要理解业务上下文才能判断
• 遗留代码:没有测试,AI 改完不敢合
建议从最简单的 null pointer 修复开始,逐步积累经验。
Claude Code 子代理是如何被调用的?
1. OpenClaw 收到 Sentry webhook,分析后判断需要修复
2. 调用 subagent.spawn 指令,指定 type: claude-code
3. 传递完整上下文:错误堆栈、相关代码、环境信息
4. Claude Code 子代理启动,加载指定的代码仓库
5. 子代理分析、修复、测试、提交 PR
6. 完成后向 OpenClaw 主代理报告结果
技术细节:
• 子代理在隔离环境中运行(容器或临时目录)
• 有超时限制(默认 30 分钟)
• 支持重试机制(失败后可重新派生)
• 可以传递自定义 prompt 指导修复策略
这套方案和传统 CI/CD 自动化有什么区别?
传统 CI/CD 自动化:
• 基于规则:预定义的 lint、format、test 规则
• 被动触发:代码提交后才运行
• 固定流程:相同的检查对每个提交都做
OpenClaw + Claude Code:
• AI 驱动:基于理解和推理,不是固定规则
• 主动监控:24小时盯着生产环境,发现问题主动修复
• 动态决策:根据错误类型和上下文决定如何处理
• 代码生成:不只是检查,还能写修复代码
两者可以结合:
• OpenClaw 发现问题并生成修复
• 传统 CI/CD 验证修复的质量
• PR 审查后合并,再走正常部署流程
这是从"自动化检查"到"自动化修复"的进化。
10 分钟阅读 · 发布于: 2026年2月27日 · 修改于: 2026年3月3日
相关文章
打造第二大脑:OpenClaw 与 Obsidian/Notion 的深度记忆同步实战
打造第二大脑:OpenClaw 与 Obsidian/Notion 的深度记忆同步实战
AI 营销自动化实战:用 OpenClaw 打造一键内容生产与分发管道
AI 营销自动化实战:用 OpenClaw 打造一键内容生产与分发管道
警惕!ClawHub 技能库发现 800+ 恶意插件,你的 API Key 真的安全吗?

评论
使用 GitHub 账号登录后即可评论