从提交代码到自动审查、修复、归档,一条龙搞定,还能实时产出可复用的技能文件
在日常开发中,代码走查(Code Review)是最耗时但也最必要的环节。如果能把这部分交给AI自动化处理,不仅节省时间,还能保证每次审查的标准一致。本文将手把手教你如何用OpenClaw(小龙虾)搭建一套全自动代码走查流水线,并且在这个过程中实时生成Skill文件,让你今天搭好的流程,明天就能一键复用。
一、整体思路:流水线要做什么
我们要搭建的自动化代码走查流水线,包含以下几个环节:
text
代码提交(Push/PR)
↓
① 自动触发审查 ← 监听Git事件
↓
② 代码质量检测 ← 语法、风格、安全漏洞
↓
③ AI智能审查 ← 逻辑问题、边界条件、最佳实践
↓
④ 自动修复 ← 可自动修复的问题直接处理
↓
⑤ 生成审查报告 ← 结构化输出
↓
⑥ 沉淀为Skill ← 将本次流程保存为可复用的技能文件
最终目标:开发者只需要提交代码,小龙虾自动完成以上所有步骤,并把整个流程封装成一个Skill,下次同类项目可以直接调用。
二、环境准备
在开始之前,确保你已经完成了OpenClaw的基础部署。如果还没部署,可以参考上一篇文章《OpenClaw(小龙虾)零基础饲养手册》,或者按以下步骤快速检查:
2.1 验证OpenClaw运行状态
bash
# 检查OpenClaw是否运行 openclaw status # 如果未运行,启动gateway openclaw gateway start
访问 http://localhost:18789,确认控制台可正常访问。
2.2 安装必要的技能和插件
代码走查流水线需要用到以下技能/插件:
名称用途安装命令autoquality-claw质量门禁,自动审查代码变更openclaw plugins install autoquality-clawgithubGit操作和PR管理内置,无需安装programming-assistant代码分析和修复建议clawhub install programming-assistant
bash
# 安装autoquality-claw(质量门禁核心插件) openclaw plugins install autoquality-claw openclaw plugins enable autoquality-claw # 安装clawhub技能管理器(如未安装) npm install -g clawhub # 安装编程助手技能 clawhub install programming-assistant
2.3 配置GitHub集成(可选但推荐)
如果想让流水线自动处理PR,需要配置GitHub访问权限:
bash
# 配置GitHub CLI认证 gh auth login # 选择HTTPS方式,按照提示完成认证 # 需要授予repo读写权限
💡 如果没有GitHub账号或不需要自动PR,也可以只做本地代码审查,跳过此步骤。
三、搭建代码走查流水线
3.1 创建工作区并初始化配置
bash
# 创建专门用于代码走查的工作目录 mkdir -p ~/code-review-pipeline && cd ~/code-review-pipeline # 初始化OpenClaw配置 openclaw init
3.2 创建审查规则文件
代码走查的核心是审查规则。我们需要创建一个review-rules.md文件,告诉AI按什么标准审查代码。
bash
touch review-rules.md
写入以下内容(可根据团队规范调整):
markdown
minIterations: 1 maxIterations: 4 qualityGate: "reviewer reports zero error-severity issues AND every behavior change is covered by a test" # 代码走查规则 v1.0 ## 审查触发条件 - 任何对 `src/` 目录下文件的修改 - 任何对 `tests/` 目录下测试文件的修改 ## 跳过审查的场景 - 仅修改 `docs/` 目录 - 仅修改 `.gitignore` 或 `README.md` ## 审查维度(按优先级排序) ### P0 - 必须通过(阻断级) - 安全漏洞(SQL注入、XSS、硬编码密钥) - 空指针/未定义变量引用 - 内存泄漏风险(未释放的资源、未关闭的连接) ### P1 - 强烈建议修复 - 逻辑错误(条件判断、循环边界) - 异常处理缺失(try-catch 空块或过于宽泛) - 并发安全问题 ### P2 - 建议优化 - 代码重复(DRY原则违反) - 命名不规范 - 函数过长(超过50行) - 过深的嵌套(超过4层) ### P3 - 风格提示 - 注释缺失或过期 - 导入语句未使用 - 格式化问题 ## 审查输出格式 每次审查完成后,必须按以下格式输出: ### 📊 审查摘要 - 审查文件数:X - 发现问题数:P0=?, P1=?, P2=?, P3=? - 可自动修复数:? - 审查耗时:X秒 ### 🔴 严重问题(P0) | 文件 | 行号 | 问题描述 | 建议修复 | |------|------|----------|----------| ### 🟡 建议修复(P1) ... ### 🔵 优化建议(P2) ... ### ⚪ 风格提示(P3) ... ## Reviewer 指令 - 必须逐行分析代码变更,不可跳跃 - 遇到不确定的问题,标记为"需人工确认"并说明原因 - 对每个P0/P1问题,必须给出具体的修复代码示例 ## Fixer 指令 - 优先修复P0级别问题 - 修复后必须运行测试验证 - 每次修复记录变更内容
3.3 配置autoquality-claw插件
编辑OpenClaw的配置文件(通常在.openclaw/config.json或openclaw.yml),添加autoquality-claw配置:
json
{
"plugins": {
"entries": {
"autoquality-claw": {
"enabled": true,
"config": {
"enabled": true,
"rulesPath": "review-rules.md",
"gatekeeperModel": "claude-haiku-4-5-20251001",
"defaultReviewerModel": "claude-sonnet-4-6",
"defaultFixerModel": "claude-sonnet-4-6",
"reviewerAgentId": "code-reviewer",
"fixerAgentId": "coder",
"maxIterations": 4,
"loopTimeoutSeconds": 600,
"subagentRunTimeoutSeconds": 180,
"emitLivenessUpdates": true,
"mutatingTools": ["edit", "write", "apply_patch"]
}
}
}
}
}
3.4 创建主工作流配置
创建openclaw.yml文件,定义完整的走查工作流:
yaml
workflows:
# 代码走查主工作流
code-review-pipeline:
trigger:
- on: push
branches: [main, develop, feature/*]
- on: pull_request
actions: [opened, synchronize, ready_for_review]
tasks:
# 任务1:检出代码
- name: checkout-code
command: |
git fetch origin
git checkout ${CI_COMMIT_SHA}
description: "检出待审查的代码版本"
# 任务2:安装依赖(如需要)
- name: install-deps
command: |
if [ -f package.json ]; then npm ci; fi
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
depends_on: [checkout-code]
description: "安装项目依赖"
# 任务3:静态代码分析
- name: static-analysis
command: |
# ESLint for JS/TS
if [ -f .eslintrc* ]; then npx eslint src/ --format json > eslint-report.json; fi
# Pylint for Python
if [ -f .pylintrc ]; then pylint src/ --output-format=json > pylint-report.json; fi
depends_on: [install-deps]
parallel: true
description: "运行静态分析工具"
on_failure:
action: continue
notify: true
# 任务4:AI智能审查(核心)
- name: ai-code-review
command: |
openclaw skill run code-reviewer \
--input-dir ./src \
--rules ./review-rules.md \
--output review-report.json
depends_on: [static-analysis]
description: "调用AI进行代码审查"
timeout: 300
# 任务5:自动修复(仅限可自动修复的问题)
- name: auto-fix
command: |
openclaw skill run auto-fixer \
--report review-report.json \
--max-attempts 3
depends_on: [ai-code-review]
description: "自动修复检测到的问题"
conditions:
- auto_fixable_issues_count > 0
- branch != "main"
# 任务6:运行测试验证
- name: run-tests
command: |
if [ -f package.json ]; then npm test; fi
if [ -f pytest.ini ]; then pytest tests/ -v; fi
depends_on: [auto-fix]
description: "运行测试套件验证修复"
retry:
max_attempts: 2
backoff: exponential
on_failure:
action: rollback_fix
notify: [slack]
# 任务7:生成审查报告
- name: generate-report
command: |
openclaw skill run report-generator \
--input review-report.json \
--format markdown \
--output CODE_REVIEW_REPORT.md
depends_on: [run-tests]
description: "生成结构化的审查报告"
# 任务8:沉淀为Skill(重点!)
- name: archive-as-skill
command: |
openclaw skill create \
--name "code-review-pipeline-$(date +%Y%m%d)" \
--from-workflow code-review-pipeline \
--output ./skills/
depends_on: [generate-report]
description: "将本次流程保存为可复用的Skill文件"
conditions:
- review_passed: true
# 工作流级别的错误处理
on_failure:
action: notify
channels: [slack, email]
message: "代码走查流水线失败:{{error_message}}"
3.5 添加自动化测试技能集成
为了确保代码质量,建议在流水线中加入单元测试自动生成和执行的环节:
yaml
# 任务3.5:单元测试覆盖检查与生成
- name: test-coverage
command: |
openclaw skill run python-testing-patterns \
--source-dir ./src \
--test-dir ./tests \
--coverage-threshold 80
depends_on: [static-analysis]
description: "检查测试覆盖率,自动补充缺失的单元测试"
conditions:
- language == "python"
3.6 启动流水线监听
配置完成后,启动OpenClaw监听模式:
bash
# 启动工作流监听 openclaw workflow start code-review-pipeline --watch # 查看运行日志 openclaw logs --follow
现在,只要有代码推送到配置的分支,流水线就会自动触发。
四、实时生成Skill文件(核心功能)
这是本教程的重点:如何把刚才搭好的流水线,自动保存成一个Skill文件,以后可以直接调用。
4.1 Skill文件的结构
一个标准的OpenClaw Skill文件包含以下部分:
text
my-skill/
├── skill.json # 技能元数据(名称、版本、依赖)
├── prompt.md # AI执行该技能的指令
├── rules/ # 规则文件目录
│ └── review-rules.md
├── scripts/ # 可执行脚本
│ └── run.sh
└── examples/ # 使用示例
└── example.md
4.2 从工作流生成Skill
当工作流成功执行完成后,archive-as-skill任务会自动将整个流程打包成Skill。具体来说,它会做以下事情:
- 提取工作流配置:将
openclaw.yml中的任务定义转换为Skill的指令 - 打包审查规则:将
review-rules.md作为Skill的核心规则文件 - 生成调用接口:创建标准的Skill入口文件
- 记录执行上下文:保存本次执行的成功参数,供下次复用
手动创建Skill的命令:
bash
# 从已有的工作流创建Skill openclaw skill create \ --name "code-review-automation" \ --description "自动化代码走查流水线,支持多语言、自动修复、报告生成" \ --version "1.0.0" \ --from-workflow code-review-pipeline \ --output ./skills/ # 查看生成的Skill ls ./skills/code-review-automation/
4.3 生成的Skill文件示例
执行上述命令后,会生成类似下面的Skill文件结构:
json
// skill.json
{
"name": "code-review-automation",
"version": "1.0.0",
"description": "自动化代码走查流水线,支持多语言、自动修复、报告生成",
"author": "your-team",
"triggers": ["code_push", "pull_request"],
"dependencies": {
"plugins": ["autoquality-claw"],
"skills": ["programming-assistant"]
},
"config": {
"rules_path": "rules/review-rules.md",
"max_iterations": 4,
"auto_fix_enabled": true
}
}
markdown
// prompt.md - Skill的核心指令 # Code Review Automation Skill You are an automated code review agent. When invoked, follow this exact workflow: ## Step 1: Analyze Changes - Identify all files changed in the current commit/PR - Categorize changes by language and file type ## Step 2: Apply Review Rules - Load rules from `rules/review-rules.md` - Scan each changed file against the rules - Assign severity levels (P0/P1/P2/P3) ## Step 3: Generate Report - Create structured report with findings - Include fix suggestions for each issue ## Step 4: Auto-Fix (if enabled) - Attempt to fix P0 and P1 issues automatically - Validate fixes with tests ## Step 5: Output - Return report in the specified format - Optionally create PR with fixes ## Example Usage
/code-review src/ --auto-fix --output report.md
text
4.4 安装和使用生成的Skill
bash
# 安装刚生成的Skill clawhub install ./skills/code-review-automation # 或者直接复制到OpenClaw的技能目录 cp -r ./skills/code-review-automation ~/.openclaw/skills/ # 使用Skill进行代码审查(一行命令搞定) openclaw skill run code-review-automation --input ./src --output review.md # 或者直接在对话中调用 # 在OpenClaw聊天框输入:/skill code-review-automation 审查 src/ 目录
五、进阶:结合autoresearch实现持续优化
如果你的团队追求极致的代码质量,可以将代码走查与autoresearch实验循环结合起来。autoresearch是OpenClaw的一个插件,可以自动运行实验、测量结果、优化参数。
5.1 安装autoresearch插件
bash
openclaw plugins install @gianfrancopiana/openclaw-autoresearch
5.2 配置实验目标
在项目根目录创建autoresearch.md:
markdown
# 代码走查优化实验 ## Metrics to Optimize - review_time_seconds: 审查耗时(目标:降低) - false_positive_rate: 误报率(目标:低于5%) - auto_fix_success_rate: 自动修复成功率(目标:高于80%) ## Experiment Script ./autoresearch.sh ## What's Been Tried - 调整审查规则优先级权重 - 更换不同的AI模型 - 修改修复策略
创建autoresearch.sh基准脚本:
bash
#!/bin/bash # 运行代码走查并输出指标 # 执行审查 start_time=$(date +%s%N) openclaw skill run code-review-automation --input ./test-samples/ end_time=$(date +%s%N) # 计算耗时(秒) review_time=$(echo "scale=2; ($end_time - $start_time) / 1000000000" | bc) # 分析结果 false_positives=$(grep -c "false_positive" review-report.json) total_issues=$(grep -c "\"severity\":" review-report.json) false_positive_rate=$(echo "scale=2; $false_positives / $total_issues * 100" | bc) auto_fix_success=$(grep -c "fix_success" review-report.json) auto_fix_total=$(grep -c "fix_attempt" review-report.json) auto_fix_rate=$(echo "scale=2; $auto_fix_success / $auto_fix_total * 100" | bc) # 输出指标 echo "METRIC review_time_seconds=$review_time" echo "METRIC false_positive_rate=$false_positive_rate" echo "METRIC auto_fix_success_rate=$auto_fix_rate"
5.3 启动自动优化循环
bash
# 启动autoresearch,自动寻找最优配置 /autoresearch setup "优化代码走查的准确率和效率" # 查看实验进展 /autoresearch status
autoresearch会自动运行多轮实验,每次调整参数(如换模型、改规则),保留效果更好的配置,最终沉淀为最优版本的Skill。
六、实战案例:Python项目的代码走查
下面用一个完整的案例来演示整个流程。
场景
你有一个Python项目,刚刚提交了一个PR,希望AI自动完成代码审查并生成报告。
步骤1:触发审查
在OpenClaw对话框中输入:
text
请对 ./my-python-project/src/ 目录进行完整代码走查,项目使用Python 3.11,遵循PEP 8规范,重点关注安全漏洞和逻辑错误
步骤2:AI自动执行
小龙虾会按顺序执行:
- 扫描
src/下所有.py文件 - 加载
review-rules.md中的规则 - 逐文件分析,输出问题清单
- 尝试自动修复P0/P1问题
- 运行
pytest验证修复 - 生成
CODE_REVIEW_REPORT.md
步骤3:查看报告
生成的报告示例:
markdown
# 代码走查报告
生成时间:2026-05-15 14:30:22
审查范围:./my-python-project/src/
审查文件数:12
## 📊 摘要
| 级别 | 数量 | 状态 |
|------|------|------|
| P0(阻断) | 1 | ✅ 已修复 |
| P1(严重) | 3 | ✅ 已修复 |
| P2(建议) | 5 | 待处理 |
| P3(风格) | 2 | 待处理 |
## 🔴 P0问题(已修复)
### 文件:src/auth/login.py 行号:47
**问题**:硬编码的API密钥
**修复**:已替换为环境变量`os.getenv('API_KEY')`
## 🟡 P1问题(已修复)
...
## 总结
- 自动修复成功率:80%(4/5)
- 建议人工关注:P2级别的函数过长问题(user_service.py 第120-210行)
步骤4:沉淀Skill
审查完成后,执行:
bash
openclaw skill create \ --name "python-code-review" \ --from-execution last \ --output ./skills/
以后遇到新的Python项目,只需要:
bash
openclaw skill run python-code-review --input ./new-project/src/
七、常见问题与解决方案
问题可能原因解决方法审查任务卡住不动AI模型响应慢或超时检查网络连接,或降低maxIterations值autoquality-claw不生效未正确配置rulesPath确认review-rules.md存在且路径正确自动修复破坏了代码修复逻辑有问题设置maxIterations: 1先测试,或禁用auto-fixSkill生成失败工作流未完整执行检查所有任务状态,确保archive-as-skill依赖的任务都成功了GitHub PR无法自动创建缺少认证或权限运行gh auth login重新认证,检查token权限
八、总结
通过以上步骤,你已经成功搭建了一套全自动的代码走查流水线,并且掌握了如何将流水线实时生成为Skill文件的核心技能。
回顾一下我们做了什么:
- ✅ 创建了审查规则文件
review-rules.md - ✅ 配置了
autoquality-claw质量门禁插件 - ✅ 编写了完整的
openclaw.yml工作流 - ✅ 实现了自动触发→审查→修复→报告的全流程
- ✅ 将工作流打包成可复用的Skill文件
- ✅ (进阶)集成了autoresearch实现持续优化
现在,你的小龙虾已经具备了“代码审查专家”的能力。无论是日常开发还是CI/CD集成,都可以用这套流水线来保证代码质量。
下次新项目开始时,只需要一行命令:
bash
openclaw skill run code-review-automation --input ./src/
小龙虾就会自动完成整个走查流程,把时间还给你,去写更有价值的代码。🦞
*本文教程基于 OpenClaw v2.7.1 及 autoquality-claw v0.1.0,随着版本迭代,界面和功能可能会有变化,请以实际使用为准。*
相关树洞
暂无相关树洞内容
暂无评论,来发表第一条评论吧