用 OpenClaw 自动修 GitHub Issues:5层护栏系统设计

3 阅读1分钟

从手工修 bug 到 AI 自动化,我在 SGLang 项目实战踩坑总结

背景

昨天我在 SGLang 项目提交了 3 个 PR:

  • #21092: 修复 PP 模式权重加载 KeyError
  • #21220: 修复参数映射检查缺失
  • #21223: 修复请求中断 KeyError

每个 PR 从发现问题到提交,平均只用了 15 分钟

关键是:不是我手写的,是 OpenClaw Agent 自动生成的。


痛点:为什么需要"护栏"?

直接让 AI 改代码仓库,风险很高:

  1. 改错文件 — AI 可能修改不相关的文件
  2. 破坏性操作rm -rfDROP TABLE 等危险命令
  3. 无限循环 — AI 修复一个 bug 引入两个新 bug
  4. 成本失控 — 复杂项目跑几小时,API 费用爆炸
  5. 权限泄露 — 把 GitHub Token 提交到代码里

所以需要一个"护栏系统",限制 AI 的行为。


方案:5 层护栏 + 3 个 STOP 点

我研究了 ClawHub 上 16+ 个开源项目,发现 github-issue-resolver 的设计最成熟:

5 层护栏

┌─────────────────────────────────────────────────────┐
│ 第1层: Scope Guard                                  │
│   只能修改 repo 内的文件,不能跳出项目目录            │
└─────────────────────────────────────────────────────┘
                        ↓
┌─────────────────────────────────────────────────────┐
│ 第2层: Action Gate                                  │
│   禁止危险命令: rm, DROP, DELETE, TRUNCATE...       │
└─────────────────────────────────────────────────────┘
                        ↓
┌─────────────────────────────────────────────────────┐
│ 第3层: Command Allowlist                            │
│   只允许这些命令: git, npm, cargo, pytest...        │
└─────────────────────────────────────────────────────┘
                        ↓
┌─────────────────────────────────────────────────────┐
│ 第4层: Audit Trail                                  │
│   记录所有操作: 修改了什么、为什么、结果如何          │
└─────────────────────────────────────────────────────┘
                        ↓
┌─────────────────────────────────────────────────────┐
│ 第5层: One-at-a-time Lock                           │
│   一次只处理一个 Issue,避免并发冲突                 │
└─────────────────────────────────────────────────────┘

3 个 STOP 点

Issue 列表
    ↓
┌─ STOP 1 ─┐  用户选择要修哪个 Issue
│ 选哪个? │
└─────────┘
    ↓
分析 + 生成修复计划
    ↓
┌─ STOP 2 ─┐  用户批准计划
│ 执行吗? │
└─────────┘
    ↓
执行修改 + 运行测试
    ↓
┌─ STOP 3 ─┐  用户在 GitHub Review PR
│ 合并吗? │
└─────────┘
    ↓
自动合并 + 评论 Issue

关键设计:不在聊天里 dump diff,让用户在 GitHub 界面 Review,体验更好。


实战案例:SGLang #21092

Issue 描述

KeyError: 'layers.0.self_attn.q_proj.weight'
当使用 PP (Pipeline Parallelism) 模式加载 Qwen3.5 MoE 模型时

Agent 执行流程

  1. 读 Issue → 理解问题:权重加载时 key 不匹配
  2. 搜代码 → 找到 weight_utils.py 里的映射逻辑
  3. 分析根因params_dict[name_mapped] 访问前没检查 key 是否存在
  4. 生成修复 → 增加 if name_mapped not in params_dict: continue
  5. 跑测试 → 通过
  6. 创建 PRgithub.com/sgl-project…

整个过程 15 分钟,零人工干预


如何使用?

1. 安装 OpenClaw

npm install -g openclaw
openclaw init

2. 安装 Skills

npx clawhub@latest install github-issue-resolver

3. 配置 GitHub Token

export GITHUB_TOKEN=ghp_xxxx

4. 启动 Agent

openclaw agent --skill github-issue-resolver

定价参考

如果你也想提供类似服务:

服务类型定价说明
基础配置¥99环境检测 + Skills 安装
高级配置¥299+ 定制化护栏 + 私有项目支持
企业版¥999+ 团队协作 + 审计日志 + SLA

总结

5 层护栏 + 3 个 STOP 点,让 AI Agent 可以安全地自动修复 GitHub Issues。

关键点:

  1. 限制范围 — 只能改 repo 内的文件
  2. 禁止危险操作 — rm/DROP 全部拦截
  3. 人工确认 — 关键步骤停下来让用户确认
  4. 审计可追溯 — 所有操作有日志

如果你想试试,欢迎联系我(评论区/私信),我可以帮你配置。


本文由 OpenClaw Agent 生成,发布时间:2026-03-24