PR Lens

把代码变更转成动画架构与数据流图,让评审者先看懂改动再读代码。

Star 数
★ 1.9k
最近更新
5 天前
License
MIT
主语言
TypeScript

30 秒速览

运行形态
Agent 插件 / 技能命令行工具聊天机器人
可在哪里用
通用 · 跨平台Codex
费用
有免费版,另有付费云服务
上手难度
低 · 几分钟可跑通
开始前需要
Node 20.11 或更高版本pnpm 10GitHub CLIShell / 命令行网络访问本地文件系统
典型场景
评审者在大型 PR 中想先定位受影响的组件和调用路径,再逐文件阅读 diff。
不适合
  • 要求分析数据绝不离开自有环境的团队
  • 需要 Bitbucket 为 fork PR 自动运行流水线的团队

这个 Agent 能做什么,适合哪些场景?

PR Lens 可通过 GitHub App、GitHub Action、CLI 或 coding agent skill 运行,为 pull request 生成架构和数据流图。核心格式是 `@coldtea/pr-lens-schema` 的 JSON graph,由 `@coldtea/pr-lens-renderer` 渲染为自包含的明暗主题 SVG。GitHub App 会在 PR 评论中发布图示,并在后续 push 时更新;CLI 和 Action 则可使用你提供的模型密钥分析 diff。项目还提供 GitLab CI/CD component 和 Bitbucket pipe,支持在相应的合并请求或 pull request 流程中生成图示。它适合希望在代码评审中快速理解跨组件改动的团队;需要自行选择模型、配置流水线和提供密钥的团队应考虑相应部署成本。

PR Lens 读取相对 merge base 的代码 diff,并在分析路径中调用所选模型生成 graph JSON。@coldtea/pr-lens-cli analyze 可执行分析,render 生成每个图示的明暗 SVG,validate 检查 graph 和仓库配置,comment 输出适用于目标代码托管平台的 Markdown,export 可导出系统 map。图示以 lane、card 和连接路径呈现变更涉及的组件与调用;架构图用绿色表示新增、琥珀色表示修改、红色表示删除。数据流图按步骤展示路径,也可查看箭头承载的请求或响应形状。GitHub App、GitHub Action、GitLab component 和 Bitbucket pipe 可将图示与评论集成到各自的评审流程;coding agent skill 可让兼容的本地 coding agent 为代码变更绘图。

  1. 评审者在大型 PR 中想先定位受影响的组件和调用路径,再逐文件阅读 diff。
  2. 维护单体仓库的工程师需要查看变更跨越哪些 lane、组件及数据流步骤。
  3. 使用 coding agent 的开发者想在 PR 创建前为刚完成的改动生成 SVG 图。
  4. GitHub 团队希望安装 App,让 PR 评论在每次 push 后更新图示。
  5. 使用 GitLab 或 Bitbucket 的团队希望通过 CI/CD component 或 pipe 在评审中发布图示。

如何安装或部署这个 Agent?

本地 CLI 和 coding agent skill 的安装方式如下。仓库要求 Node 20.11 或更高版本及 pnpm 10;GitHub App 用户可从其安装页安装。若通过 Action、GitLab component 或 Bitbucket pipe 部署,需按各自配置文件设置模型密钥及相应评论权限凭据。

npx skills add coldteadotai/pr-lens
pnpm install

如何使用这个 Agent?

首次 CLI 分析需要设置模型提供方对应的 API key。默认提供方是 Gemini;也可选择 OpenAI,或配置兼容 /chat/completions 的服务。以下命令从 origin/main 的 merge base 分析变更并渲染 SVG:

export GEMINI_API_KEY=…
npx @coldtea/pr-lens-cli analyze --base origin/main
npx @coldtea/pr-lens-cli render .pr-lens/graph.json

CLI 也可在分析后运行 validate、comment 和 export。GitHub Action 示例使用 pull_request 触发器;将模型密钥保存为仓库 secret,并授予发布 SVG 和写入 PR 评论的权限:

name: PR Lens

on:
  pull_request:

permissions:
  contents: write
  pull-requests: write

jobs:
  lens:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: coldteadotai/pr-lens/packages/action@v0
        with:
          api-key: ${{ secrets.GEMINI_API_KEY }}

这个 Agent 有哪些优点和局限?

优点
  • 自定义渲染器输出带动画的 SVG,并为新增、修改和删除的代码使用不同颜色。
  • PR 评论支持折叠的分段图示,另有可缩放、可平移的交互画布和逐步 walkthrough。
  • 同一项目提供 GitHub App、CLI、GitHub Action、GitLab component、Bitbucket pipe 和 coding agent skill 等入口。
  • Action 和 CLI 可配置 Gemini、OpenAI 或兼容 /chat/completions 的提供方。
局限
  • CLI 与自托管流水线分析 diff 时需要用户提供模型 API key;diff 会发送到所选提供方。
  • 仓库要求 Node 20.11 或更高版本和 pnpm 10;CLI 还需要本地 Git 仓库及 shell。
  • Bitbucket 不会为来自 fork 的 pull request 运行 pipeline,因此该 pipe 无法绘制这类 PR。
  • Bitbucket 评论展示为纯 Markdown,无法提供可折叠分段及明暗主题图示对。

这个 Agent 与同类方案有什么区别?

README 将 PR Lens 与 Mermaid 作了明确对比:PR Lens 使用自定义渲染器生成动画图示,并突出代码新增、删除和修改;README 未提供与其他同类工具的功能或价格对照。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
PR Lens 当前 61 · 存在缺口 Agent 插件 / 技能免费版 + 付费版 ★ 1.9k 5 天前 TypeScript Codex
Vet 代码变更验证器 65 · 存在缺口 命令行工具免费 + 模型费 ★ 521 25 天前 Python Codex · Claude Code · OpenAI API · Claude API
Coder Eval 86 · 表现良好 命令行工具免费 + 模型费 ★ 151 2 天前 Python Codex · Claude Code · OpenAI API · Claude API
no_human 67 · 存在缺口 命令行工具免费 + 模型费 ★ 324 今天 Python Claude Code

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
存在缺口
61/ 100 五分制 3.1 / 5
信任安全 10/29
可靠稳定 8/14
适用触发 15/18
规范维护 14/18
有效结果 10/13
证据核验 4/8
查看各维度的扣分理由
信任安全10 / 29 · 1.7/5

README 说明 Action 将密钥通过环境传给 CLI、diff 发往所选模型,并指出 GitLab 私有项目附件链接可被持有链接者访问;这些信息支持数据流透明度得 2 分。示例授予 contents: write 和 pull-requests: write,GitLab/Bitbucket 也要求可写令牌,但没有细化到更窄权限或说明撤销流程,因此最小权限得 1 分。自动发布或修改评论没有普遍的逐次确认或回滚说明,用户确认得 1 分、外部影响得 1 分、回滚得 0 分。密钥处理说明存在,但没有完整的敏感数据保留或托管服务处理细节;依赖安全也没有版本审计或缓解证据,分别得 1 分。SECURITY.md 提供联系渠道,但给定材料不足以核实发布者身份或外部声明来源,来源归属得 1 分。

可靠稳定8 / 14 · 2.9/5

README 描述 App、Action、CLI 和配置方式;所给 Action 测试文件还检查输入、脚本、CLI 版本及评论归属的一致性,支持自洽性得 2 分。测试源码为被测行为提供佐证,但没有依赖可用性或锁定状态的充分证据,因此依赖可用性得 1 分。Action 测试要求发布脚本重试,并检查评论脚本在无法查询 PR head 时明确报错;这些是源码中的故障处理证据,失败消息得 2 分。

适用触发15 / 18 · 4.2/5

README 覆盖代码审查者、编码代理、CI 用户和多种代码托管平台,并提供 PR 前后、本地与托管场景,受众与场景得 3 分。CLI、Action 与托管服务的能力差异有所说明,例如 Action 评论中的复选框不可用、Bitbucket fork PR 不运行、GitLab 私有附件存在访问限制,因此能力边界得 2 分。触发方式在配置示例中较明确,包括 pull_request 和 GitLab merge request 规则,但 App 的完整事件范围未见于材料,触发精度得 2 分。Node 版本、各平台配置和模型提供方选项均有说明,环境适配得 3 分。

规范维护14 / 18 · 3.9/5

README 内容按功能、配置和运行方式组织,并链接到包文档,但所给内容在包表格处截断,信息架构得 2 分。安装步骤、配置样例、所需密钥和权限说明详尽,安装说明得 3 分。包名和命令整体一致,不过同时出现多个包及版本标记,未给出完整发布策略,命名稳定性得 2 分。README 提供可操作示例和若干常见限制,但没有看到完整 FAQ,示例与 FAQ 得 2 分。它明确列出 fork、附件访问和平台能力限制,已知限制得 3 分。MIT LICENSE 文件完整,许可证得 3 分。根包版本为 0.0.0,示例使用 v0 和 0.1.0,但材料中没有变更日志,版本与变更记录得 1 分。SECURITY.md 给出漏洞报告邮箱及处理承诺,但没有维护者名单或发布责任机制,维护责任得 2 分。

有效结果10 / 13 · 3.8/5

README 展示评论内图表、分层视图、交互画布与逐步讲解;CLI 还提供校验和导出流程,输出可用性得 3 分。可视化 PR 变更可能降低理解成本,且示例覆盖大型变更,但效果证据主要来自项目自身描述和展示图,边际价值得 2 分。开源免费和多种运行方式有助于适配成本偏好,但模型调用、密钥管理及 CI 写权限带来实际成本或操作负担,成本收益得 2 分。

证据核验4 / 8 · 2.5/5

README 将功能描述对应到包文档、配置参考和代码托管平台示例,部分主张可追溯;但材料没有提供这些被链接文件的内容,主张可追溯性得 2 分。README 主张与 Action、评论脚本及技能镜像测试源码在部分行为上互相印证,交叉佐证得 2 分;这些测试仅作为源文件证据审阅,未声称执行。描述、展示图和产品效果主张没有持续清楚地区分已实现行为与宣传性推断,因此事实与推断分离得 1 分。

风险与缓解建议
  • 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
  • 使用 Action、GitLab CI 或 Bitbucket pipe 前,应核对所需写权限和令牌范围;GitLab 私有项目附件链接可能让项目成员以外的持有者看到图表。
  • 模型会接收代码 diff;选择提供方前,请确认其数据处理方式符合仓库要求。
证据充分度:低 评估于 2026年10月9日 审查版本 7a9115c8202d
查看完整评分方法 →

常见问题

使用 PR Lens 是否需要付费模型密钥?
README 称 GitHub App 对开源项目免费,且不需要用户提供模型密钥。CLI 和自有 CI 方案需要提供模型密钥;可用 Gemini、OpenAI 或兼容 /chat/completions 的提供方。
PR Lens 会读取什么,分析结果发到哪里?
分析流程读取相对 merge base 的 diff。CLI 文档说明只有 analyze 会调用模型;使用 CLI 或自有 Action 时,diff 会发送给所选模型提供方。
能否在 pull request 打开前生成图示?
可以。用 CLI 运行 analyze --base origin/main,再运行 render;安装 skill 后,也可让 coding agent 绘制刚完成的改动。
Bitbucket 能否处理来自 fork 的 PR?
不能通过文档中的 Bitbucket pipe 处理:Bitbucket 不会为 fork pull request 运行 pipeline。
部署 GitHub Action 需要哪些权限?
示例工作流授予 contents: write 以发布 SVG,并授予 pull-requests: write 以发布评论;还需将模型 key 保存为仓库 secret。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents