GitHub Smart Code Digest
自动化 GitHub 代码审查与飞书 Wiki 推送工作流,5 分钟生成团队代码质量报告。
适用场景
- 工程团队每日/每周代码审查汇总
- 技术负责人追踪多个仓库的 PR 质量
- 自动化生成工程师日报/周报内容
- 开源项目维护者追踪贡献代码质量
- CI/CD 流水线失败后的审查报告归档
工作流程
Step 1 → github
│ 获取仓库列表 → 筛选目标仓库
│ 获取指定时间范围内的 Commits + PR 列表
↓
Step 2 → code-review-skill
│ 对每个 Open/Recent PR 执行 5 维度 AI 审查
│ 输出:问题列表 + 置信度评分 + 修复建议
↓
Step 3 → card-renderer
│ 生成审查摘要卡片(封面图 + 详情页)
│ 包含:仓库名、PR 数量、问题分布、质量评分
↓
Step 4 → feishu-wiki
创建/更新飞书 Wiki 页面
支持定时任务自动触发
使用方式
手动触发
# 审查单个仓库(默认最近 7 天)
openclaw run github-smart-code-digest --repo owner/repo
# 指定时间范围和仓库
openclaw run github-smart-code-digest \
--repo owner/repo \
--since "2026-04-10" \
--until "2026-04-17" \
--feishu-space-id <知识空间ID>
定时自动推送(推荐)
# 每天早上 9:00 推送代码审查日报
openclaw cron add "0 9 * * *" "github-smart-code-digest" \
--name "代码审查日报" \
--repo owner/repo
# 每周一早上 9:30 推送周报
openclaw cron add "0 9:30 * * 1" "github-smart-code-digest" \
--name "代码审查周报" \
--repo owner/repo1,owner/repo2 \
--period weekly
配置项 (config.yaml)
github:
# 监控的仓库列表
repos:
- owner/repo1
- owner/repo2
# 默认审查时间范围(天)
default_days: 7
# 最小 PR 变更行数(过滤小修改)
min_pr_lines: 10
feishu:
# 飞书知识空间 ID
wiki_space_id: ""
# 飞书 Wiki 父节点(可选,指定挂载位置)
wiki_parent_node: ""
card:
# 卡片风格
style: macbook-pro # macbook-pro | cyberpunk | bauhaus
# 输出格式
format: png # png | jpg
cron:
# 默认启用定时任务
enabled: true
# 推送时间(HH:MM)
push_time: "09:00"
# 报告周期
period: daily # daily | weekly
Step 详解
Step 1: github — 仓库信息采集
# 获取仓库最近 PR 列表(最近 7 天)
gh pr list --repo owner/repo \
--state open \
--search "created:>=$(date -d '7 days ago' +%Y-%m-%d)" \
--json number,title,author,createdAt,changedFiles,additions,deletions
# 获取指定 PR 的文件变更
gh pr diff <pr-number> --repo owner/repo
# 获取最近 Commits
gh api repos/owner/repo/commits?since=<unix-timestamp>
输出中间结果(JSON):
{
"repo": "owner/repo",
"period": "2026-04-10 ~ 2026-04-17",
"prs": [
{
"number": 123,
"title": "feat: add user authentication",
"author": "dev1",
"changed_files": 8,
"additions": 245,
"deletions": 32,
"created_at": "2026-04-14T10:00:00Z"
}
],
"commits": 12
}
Step 2: code-review-skill — AI 代码审查
对每个 PR 独立执行 5 维度审查(并行处理):
| 维度 | 检查内容 | 最低报告置信度 |
|---|---|---|
| 正确性 | 业务逻辑、边界条件、错误处理 | 80% |
| 安全性 | 注入、认证绕过、数据暴露 | 80% |
| 可维护性 | 代码复杂度、命名、可读性 | 80% |
| 性能 | N+1 查询、内存泄漏、资源管理 | 80% |
| 规范合规 | CLAUDE.md、编码规范、测试覆盖 | 80% |
审查输出:
{
"pr_number": 123,
"issues": [
{
"severity": "important",
"file": "src/auth/service.ts",
"line": "45-47",
"description": "数据库操作缺少事务保护",
"confidence": 85,
"suggestion": "使用 BEGIN...COMMIT 包装多个写操作"
}
],
"summary": {
"total_issues": 3,
"critical": 0,
"important": 2,
"minor": 1
},
"approval_ready": false
}
Step 3: card-renderer — 可视化卡片生成
生成审查汇总卡片(两张图):
卡片 ① 封面图:
- 标题:GitHub 代码审查日报 / 周报
- 仓库名称 + 时间范围
- 总体质量评分(五星或雷达图)
- PR 总数 / 问题总数
卡片 ② 详情页:
- 各仓库 PR 分布柱状图
- 问题类型分布饼图
- 高置信度问题列表(Top 5)
- 审查覆盖率(%)
# 调用 card-renderer
python3 scripts/generate_digest_card.py \
--data /tmp/digest_data.json \
--style macbook-pro \
--output /tmp/digest_card.png
Step 4: feishu-wiki — 发布飞书 Wiki
在指定知识空间创建 Wiki 页面:
# GitHub 代码审查报告
**仓库**: owner/repo
**时间范围**: 2026-04-10 ~ 2026-04-17
**生成时间**: 2026-04-17 09:00
## 审查概览
| 指标 | 数值 |
|------|------|
| PR 总数 | 12 |
| 问题总数 | 8 |
| 高置信度问题 | 3 |
| 审查覆盖率 | 100% |
## 详细审查结果
### PR #123: feat: add user authentication
- 问题数:3
- 状态:⚠️ 需要修改
- 关键问题:
- `src/auth/service.ts:45` — 数据库操作缺少事务保护(置信度 85%)
- `src/auth/middleware.ts:22` — 缺少权限验证中间件(置信度 82%)
## 审查卡片

输出文件
| 文件 | 路径 | 说明 |
|---|---|---|
| PR 数据 | /tmp/digest_prs.json | 原始 PR 列表 |
| 审查报告 | /tmp/digest_reviews.json | AI 审查结果 |
| 封面卡片 | /tmp/digest_cover.png | 封面图 |
| 详情卡片 | /tmp/digest_detail.png | 详情页图 |
| Wiki 页面 | 飞书 Wiki | 最终发布的报告 |
注意事项
- 仅报告置信度 ≥ 80% 的问题,避免信息噪音
- 过滤小 PR(变更 < 10 行),减少误报
- 代码审查使用 5 个独立 Agent 并行审查,确保全面性
- 飞书 Wiki 每次运行会创建新页面(历史报告保留)
- 建议一个知识空间用于归档,形成可追溯的审查历史
前置条件
- GitHub CLI (
gh) 已安装并完成gh auth login - 飞书 App 具备 Wiki 写入权限
- 环境变量:
FEISHU_APP_ID、FEISHU_APP_SECRET(飞书应用凭证)