This commit is contained in:
周瑞哲
2026-07-30 16:08:13 +08:00
4 changed files with 127 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
请审查当前 Pull Request 的代码改动。改动内容在仓库根目录的 `pr.diff` 文件里——请先用 Read 读取它。
结合本仓库的 CLAUDE.md(项目约定、构建/测试方式)和 .claude/skills/ 下的技能,对本次 diff 做代码审查。
直接输出 Markdown 审查结论,不要任何前言。格式:
## 🔍 审查结论
### 严重问题(必须修复)
-`文件:行号` 说明问题与建议
### 建议改进
- ...
### 测试与验证建议
- 应补充的测试或手动验证步骤
要求:
1. 只针对 diff 的真实改动,不要凭空臆测未改动的代码。
2. 每条结论都给出 文件路径与行号,便于定位。
3. 区分"必须修复"与"可选建议",减少噪音。
4. 若 diff 只是文档/配置等无害改动,直接说明无需改动。
+17
View File
@@ -0,0 +1,17 @@
---
name: build-and-test
description: 构建本项目并运行测试套件,用于在改动后验证是否破坏功能。当用户要求"跑测试 / 构建验证 / 确认没破坏"时使用。
---
# 构建并测试
按以下顺序在本项目里执行验证:
1. 安装依赖:`<!-- 填入,如 npm ci -->`
2. 构建:`<!-- 填入,如 npm run build -->`
3. 运行测试:`<!-- 填入,如 npm test -->`
规则:
- 任意一步失败时,先读错误信息,定位到本次 diff 相关的代码。
- 给出修复建议(被要求时再直接改代码)。
- 不要把环境/网络类错误误判为代码缺陷。
+62
View File
@@ -0,0 +1,62 @@
# AI 代码审查:每次 PR 触发,用 Claude Code 调用智谱 GLM(glm-5.2) 审查 diff
# 并把结论评论到 PR。走 GLM 的 Anthropic 兼容端点,无需访问 Anthropic 官方。
name: AI Code Review
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
review:
runs-on: ubuntu-latest
env:
# 关键:把 Claude Code 指向智谱 GLM 的 Anthropic 兼容端点(已验证可用)
ANTHROPIC_BASE_URL: https://open.bigmodel.cn/api/anthropic
ANTHROPIC_API_KEY: ${{ secrets.ZHIPU_API_KEY }}
ANTHROPIC_MODEL: glm-5.2
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1" # 关闭遥测,避免访问被墙地址
DISABLE_AUTOUPDATER: "1"
IS_SANDBOX: "1" # CI 容器以 root 运行,需此项才能用 --dangerously-skip-permissions
steps:
- name: 检出代码
# 手动克隆,避免从 github.com 下载 actions/checkout(内网不可达)
env:
REVIEW_PAT: ${{ secrets.REVIEW_PAT }}
run: |
git clone "http://oauth2:${REVIEW_PAT}@gitea:3000/${{ gitea.repository }}.git" .
git checkout "${{ gitea.event.pull_request.head.ref }}"
- name: 生成 PR diff
run: |
BASE="${{ gitea.event.pull_request.base.ref }}"
git fetch origin "$BASE"
git diff "origin/$BASE...HEAD" > pr.diff
echo "diff 行数: $(wc -l < pr.diff)"
- name: 安装 Claude Code
run: npm install -g @anthropic-ai/claude-code --registry=https://registry.npmmirror.com
- name: 运行 AI 审查
# Claude Code 会自动读取本仓库 CLAUDE.md 与 .claude/skills/*
run: |
claude -p "$(cat .claude/review-prompt.md)" \
--model glm-5.2 \
--output-format text \
--dangerously-skip-permissions \
--max-turns 15 > review.md || true
- name: 把审查结论评论到 PR
env:
REVIEW_PAT: ${{ secrets.REVIEW_PAT }}
API: ${{ vars.MAIN_API }}
REPO: ${{ gitea.repository }}
PR: ${{ gitea.event.pull_request.number }}
run: |
if [ -s review.md ]; then
BODY=$(node -e 'let d="";process.stdin.on("data",c=>d+=c).on("end",()=>process.stdout.write(JSON.stringify({body:d})))' < review.md)
curl -fsS -X POST "$API/repos/$REPO/issues/$PR/comments" \
-H "Authorization: token $REVIEW_PAT" \
-H "Content-Type: application/json" \
-d "$BODY"
else
echo "review.md 为空,跳过评论"
fi
+26
View File
@@ -0,0 +1,26 @@
# CLAUDE.md
> 本文件会被 Claude Code(本地开发 + CI 中的 AI 审查)自动读取,用于理解本项目。
> 建议在本仓库里运行 `/init` 自动生成更完整版本,再按需补充。
## 项目简介
<!-- 一句话:这个仓库是什么、做什么 -->
## 技术栈
<!-- 语言、框架、关键依赖 -->
## 目录结构
<!-- 主要目录用途 -->
## 构建与运行
<!--
- 安装依赖:npm ci
- 启动:npm run dev
- 构建:npm run build
-->
## 测试
<!-- 例:npm test / pytest -->
## 代码规范与约定
<!-- 命名、分支策略、提交信息格式、需避免的反模式 -->