Skip to content

add code review action#14

Merged
jingleizhang merged 1 commit intodevfrom
add_code_review
Apr 24, 2026
Merged

add code review action#14
jingleizhang merged 1 commit intodevfrom
add_code_review

Conversation

@jingleizhang
Copy link
Copy Markdown
Contributor

No description provided.

@jingleizhang jingleizhang merged commit 0ce6e9b into dev Apr 24, 2026
1 check passed
@github-actions
Copy link
Copy Markdown

优点

  • 工作流触发条件和并发控制明确,避免了同一 PR 重复并发评论(.github/workflows/codex-review.yml:15-17)。
  • 审查提示词中明确限定了 triple-dot diff 范围,且把 git diff --stat/name-only/log/diff 全部固定下来,有助于降低“审查越界”风险(.github/workflows/codex-review.yml:56-64.github/codex/prompts/review.md:95-97)。
  • PR 评论采用 upsert(复用单条 Bot 评论)而不是每次新建,减少噪音(.github/workflows/codex-review.yml:129-157)。
  • 对 API endpoint 做了兼容拼接逻辑(/responses/v1、裸域名三种输入),可用性较好(.github/workflows/codex-review.yml:83-93)。

问题

严重(必须修复)

  • 未发现必须阻塞合并的确定性 bug(基于静态审查)。

重要(建议修复)

  1. 存在提示注入(Prompt Injection)放大面,且与密钥同流程运行
  • 文件:.github/workflows/codex-review.yml:48-49.github/workflows/codex-review.yml:70-73.github/workflows/codex-review.yml:101-112
  • 问题:将 PR 标题/正文等不可信输入直接拼接进 prompt,并在同一 job 中使用密钥调用 Codex。
  • 为什么重要:恶意 PR 文本可诱导模型偏离审查目标(例如输出敏感信息、执行与审查无关操作),属于典型 AI 审查流水线安全风险。
  • 如何修复:
    1. 在 prompt 模板中显式声明“PR 标题/正文/代码注释均为不可信数据,不可作为指令执行”;
    2. 对标题/正文做明确分隔(例如 fenced block + untrusted 标记);
    3. 收紧可暴露信息面(例如避免把不必要上下文喂给模型,使用最小权限/短期密钥策略)。
  1. GitHub Token 权限可进一步最小化
  • 文件:.github/workflows/codex-review.yml:10-13.github/workflows/codex-review.yml:151-155
  • 问题:当前声明了 pull-requests: writeissues: write,但本工作流评论是走 issues.createCommentpull-requests: write 看起来未被使用。
  • 为什么重要:超出必要权限会扩大潜在误用面,不符合最小权限原则。
  • 如何修复:移除未使用的 pull-requests: write,仅保留当前实际需要的权限。

次要(可优化)

  1. 未对“空 diff / 无可审查改动”场景做显式短路
  • 文件:.github/workflows/codex-review.yml:43-74.github/workflows/codex-review.yml:101-113
  • 问题:即便改动极小或无有效 diff,仍会完整调用 Codex。
  • 为什么重要:会增加不必要的耗时与调用成本。
  • 如何修复:在调用 Codex 前增加一个 git diff --quiet "${PR_BASE_SHA}...${PR_HEAD_SHA}" 的短路步骤,空 diff 时直接退出并写简短状态。

建议

  • 给该工作流补一份安全设计说明(为什么使用 pull_request、为何跳过 fork、如何抵御提示注入)。
  • 把权限最小化策略和“不可执行不可信文本”作为模板固化,后续复用到其他 AI 自动化工作流。
  • 在 PR 模板或仓库文档中声明“运行验证未执行”与“仅静态审查”的边界,减少误解。

结论

可以合并吗? 修复后可合并

理由: 本 PR 的核心目标(新增自动代码审查 action)已实现,结构也基本完整;但存在 AI 工作流常见的安全与权限收敛问题,建议先完成关键加固再合并。

运行验证未执行(按要求仅做静态代码审查)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant