forked from Gitlink/gitlink-cli
5.7 KiB
5.7 KiB
| name | version | description | metadata | |||||
|---|---|---|---|---|---|---|---|---|
| gitlink-workflow | 2.0.0 | AI 自动化工作流:代码质量审查(PR Review)。当用户需要 AI 审查 PR 代码质量时触发。 |
|
gitlink-workflow(AI 代码质量看门人)
前置条件: 先阅读
../gitlink-shared/SKILL.md
CRITICAL — GitLink 操作只能用 gitlink-cli。禁止用 gh(GitHub CLI)操作 GitLink 资源。
工作流:代码质量看门人(Code Quality Gatekeeper)
触发词:代码审查、PR review、质量检查、gatekeeper、审查 PR
参数:
--owner:仓库所属组织或用户--repo:仓库名称--pr-id:指定 PR ID(可选,默认审查所有 open PR)--threshold:质量阈值(默认 80)
流程总览
PR 提交 → 获取详情 → 获取 Diff → AI 四维度评分 → 发布审查评论 → 检查 CI → 自动合并
审查单个 PR 的步骤
步骤 1 — 获取 PR 详情:
gitlink-cli pr +view --owner {OWNER} --repo {REPO} --id {PR_ID} --format json
提取字段:
- title:
.data.title // .data.subject // .data.issue.subject - author:
.data.author.login // .data.author.username - state:
.data.state // .data.status
步骤 2 — 获取变更文件列表:
gitlink-cli pr +files --owner {OWNER} --repo {REPO} --id {PR_ID} --format json
文件列表路径:.data.files[],字段:.name(或 .filename)、.additions、.deletions
步骤 3 — 获取代码差异:
gitlink-cli pr +diff --owner {OWNER} --repo {REPO} --id {PR_ID} --format json
提取 diff:.data.files[].sections[].lines[].content,截取前 5000 字符
步骤 4 — AI 四维度代码审查(总分 100):
| 维度 | 满分 | 检查项 |
|---|---|---|
| 代码质量 | 25 | 复杂度、命名规范、注释、格式一致性 |
| 安全性 | 25 | SQL注入、XSS、硬编码凭证、认证绕过、输入验证 |
| 性能 | 25 | 循环效率、资源泄漏、N+1查询、内存占用、阻塞调用 |
| 可维护性 | 25 | 代码重复、职责单一、依赖耦合、测试覆盖 |
评分标准:
- 90-100:优秀,可直接合并
- 75-89:良好,建议合并
- 60-74:一般,需要改进
- <60:较差,不建议合并
问题严重级别:
- CRITICAL:阻止合并(安全漏洞、数据丢失风险)
- HIGH:强烈建议修复(性能问题、逻辑错误)
- MEDIUM:建议修复(代码质量、可维护性)
- LOW:可选修复(风格、命名)
输出要求:AI 必须输出以下 JSON 结构:
{
"total": 85,
"quality": 22,
"security": 25,
"performance": 20,
"maintainability": 18,
"issues": [
{
"severity": "MEDIUM",
"category": "quality",
"file": "src/main.go",
"rule": "naming",
"description": "变量名过于简短",
"suggestion": "使用更具描述性的变量名"
}
],
"positive_notes": [
{"description": "错误处理完善"}
],
"recommendations": [
"建议添加单元测试"
],
"verdict": "PASS"
}
AI 不可用时的降级方案(关键词检测):
- 检测到 password/secret/token/api_key/private_key → security -15
- 检测到 eval()/exec()/system()/os.system → security -10
- 检测到 TODO/FIXME/HACK/XXX → quality -5
- 检测到 SELECT */findAll()/.all() → performance -10
- 检测到 sleep()/Thread.sleep → performance -5
- 变更文件 > 20 个 → maintainability -10
步骤 5 — 组装审查评论 Markdown:
## AI Code Quality Review - PR #{PR_ID}
### Scores
| Dimension | Score | Max |
|-----------|-------|-----|
| Code Quality | {QUALITY} | 25 |
| Security | {SECURITY} | 25 |
| Performance | {PERFORMANCE} | 25 |
| Maintainability | {MAINTAINABILITY} | 25 |
| **Total** | **{TOTAL}** | **100** |
### Issues Found
- [{SEVERITY}] {CATEGORY}: {DESCRIPTION} ({FILE}) → {SUGGESTION}
### Positive Notes
- {NOTE}
### Recommendations
- {REC}
### Verdict
{PASS/FAIL} - Score {TOTAL} {>=/<} threshold {THRESHOLD}
---
*Auto-reviewed by gitlink-cli code-quality-gatekeeper workflow*
步骤 6 — 发布审查评论:
gitlink-cli api POST /{OWNER}/{REPO}/pulls/{PR_ID}/reviews --body '{"body":"{REVIEW_MD}","event":"{EVENT}"}'
- 分数 >= 阈值 → event = "APPROVE"
- 分数 < 阈值 → event = "COMMENT"
步骤 7 — 检查 CI 构建状态:
gitlink-cli ci +builds --owner {OWNER} --repo {REPO} --format json
遍历 .data.builds[] 或 .data[],检查 status 是否为 success/passed/completed
步骤 8 — 自动合并(条件:分数 >= 阈值 且 CI 全部通过):
gitlink-cli pr +merge --owner {OWNER} --repo {REPO} --id {PR_ID} --method merge
审查所有 open PR
如果用户没指定 --pr-id,先获取列表再逐个审查:
gitlink-cli pr +list --owner {OWNER} --repo {REPO} --state open --limit 50 --format json
PR ID 提取:.data.issues[] 或 .data.pulls[] 或 .data[] 中的 .pull_request_number // .number // .id
其他自动化工作流
以下工作流不需要 AI,已实现为 PowerShell 脚本(workflows/ 目录):
| 工作流 | 脚本 | 用法 |
|---|---|---|
| 社区运营自动化 | 01-community-ops.ps1 |
pwsh workflows/01-community-ops.ps1 -Owner zzx-coder -Repo gitlink-cli |
| 项目一键初始化 | 03-project-init.ps1 |
pwsh workflows/03-project-init.ps1 -Owner org -Name my-app -Desc "描述" -Lang go |
| 多仓库协同 | 04-multi-repo-collab.ps1 |
pwsh workflows/04-multi-repo-collab.ps1 -Org myorg |
| 贡献者成长体系 | 05-contributor-growth.ps1 |
pwsh workflows/05-contributor-growth.ps1 -Owner zzx-coder -Repo gitlink-cli |