prx 发布:用本地编码智能体自动审查 GitHub PR,批准仍由人操作
Show HN: prx – Automated PR Reviews in macOS Menu Bar
prx(Pull Request eXaminer)发布,它监控指定 GitHub 仓库,调用本地编码智能体 CLI(pi、claude、codex 或自定义)或 LLM API 审查每个开放的 PR,把结果发到 GitHub 并通知用户,同时保留每次审查的历史记录。
prx(Pull Request eXaminer)让你已经在运行的编码代理来审查你的拉取请求,而把批准权留给你。它会监视你选择的 GitHub 仓库,让本地代理 CLI(pi、claude、codex 或你自己的)或 LLM API 审查每个打开的拉取请求,将发现结果自行发布到 GitHub,通知你,并保留每次审查的历史记录。
它作为单个 Rust 二进制文件在你的机器上运行:一个 CLI、一个后台守护进程和一个 localhost API。在 macOS 上还有 PRX.app,一个菜单栏客户端。它唯一通信的服务是 GitHub(通过你已登录的 gh CLI)以及你配置的 LLM 端点。
23 秒的 prx:先是菜单栏菜单,然后是应用窗口。完整演示时长 109 秒(MP4,1080p),还展示了拉取请求的操作以及从菜单中批准。
为什么
一个能向 GitHub 发布内容的代理也可以批准拉取请求、合并它,或遵循隐藏在 diff 中的指令。prx 的设计使审查代理永远不需要向 GitHub 写入任何内容,方法是将工作拆分为三部分:
- 代理只读取。它分析拉取请求并写入一个 JSON 文件,即审查清单:一个结论、一个摘要和一份发现列表。它被告知永远不要向 GitHub 写入,并将 PR 中的所有内容视为不可信数据。
- prx 负责写入。它验证清单,然后通过
gh发布审查正文和行内评论。prx 本身从不执行 PR 中的任何内容。 - 只有人类才能批准。prx 只有一条批准路径:你,运行
prx approve或在应用中点击批准…。
有一个限制需要了解:代理 CLI 以你的身份运行,因此其只读规则是提示中的一条指令,而不是沙箱。LLM API 引擎完全没有工具;它只接收提示和 diff。安全模型中有详细信息。
prx daemon ──poll──> gh pr list ──> lifecycle state machine ──> desktop notifications
│ │
│ render prompt + run agent state.json / history.jsonl
v │
read-only agent ──writes──> review manifest (JSON) └──> localhost IPC API
│ ^ ^
prx validates & posts │ │
v │ │
gh api (inline) + gh pr review (body) CLI commands menu bar client
^ (separate GUI)
prx approve (human only)
更多内容见架构。
截图
此处显示的所有内容都是一个虚构的团队(acme、globex),并非真实仓库。
PRX.app 位于 macOS 菜单栏中,其菜单是你最常使用它的地方:你的拉取请求按状态分组,审查和批准操作只需点击一下。
每个拉取请求都会打开一个子菜单,其中包含结论、一行简介以及所有操作:审查、批准…、阻止(请求更改)…、稍后提醒、忽略(截图)。批准总是会先询问。PRX.app 指南会带你了解菜单。
PRX.app 中的仪表板:需要你处理的事项,以及每个拉取请求的通俗语言简介。
来自命令行的相同数据:
更多截图在指南中,从 PRX.app 开始。
安装
prx 可从最新版本下载;无需编译。你需要已登录的 GitHub CLI(gh auth status),以及一个编码代理 CLI(pi、claude、codex)或一个 LLM API 的 API 密钥。
PRX.app(macOS 12 或更高版本,Apple 芯片)
菜单栏应用,内含 CLI 和守护进程。三个步骤。
1. 获取 PRX.app,选择你喜欢的方式:
-
选项 1:从 Releases 页面下载。在浏览器中打开最新版本并下载
PRX-<version>-macos-arm64.zip。在 Finder 中双击该 zip 文件(Safari 可能已经解压了它),然后将 PRX 拖入你的 Applications 文件夹。 -
选项 2:使用命令行。
cd ~/Downloads gh release download --repo vs4vijay/prx --pattern 'PRX-*-macos-arm64.zip' ditto -x -k PRX-*-macos-arm64.zip /Applications # unpacks PRX.app into Applications
2. 允许它打开。两种选项相同,在你打开 PRX 之前执行一次:
重要
首次打开前,请在终端中运行以下命令:
xattr -dr com.apple.quarantine /Applications/PRX.app
PRX.app 尚未经过 Apple 公证,因此 macOS 会阻止下载的副本,提示 Apple 无法验证“PRX”,或提示“PRX”已损坏(具体措辞因 macOS 版本而异)。该应用并未损坏;此命令会清除 macOS 所针对的下载标记。如果不使用终端:请先尝试打开 PRX 一次,然后在系统设置 → 隐私与安全性下选择仍要打开。关于此步骤的更多信息。
3. 打开它。在“应用程序”中双击 PRX,或运行 open /Applications/PRX.app。菜单栏中会出现 PRX 图标,PRX 窗口会在仪表板上打开,在那里添加仓库即可开始。无需先进行任何设置:PRX 会自行写入默认配置(~/.config/prx/config.yml)并启动其守护进程。
要在终端中使用 prx 命令,请打开 PRX 中的设置 → 通用,然后选择安装命令行工具…。
CLI 与守护进程(macOS 和 Linux)
在 Intel Mac、Linux 上,或不使用该应用时。该版本为每个平台提供一个 tarball,prx-<version>-<target>.tar.gz,其中 <target> 为 aarch64-apple-darwin(macOS,Apple 芯片)、x86_64-apple-darwin(macOS,Intel)、x86_64-unknown-linux-gnu(Linux,x86_64)或 aarch64-unknown-linux-gnu(Linux,arm64)。
1. 获取 tarball 并解压,以你喜欢的任意方式:
-
选项 1:从 Releases 页面下载。从最新版本下载适用于你机器的 tarball 并解压:在 macOS 上双击它,或运行
tar -xzf prx-*.tar.gz。 -
选项 2:使用命令行,在你希望下载到的文件夹中:
target=aarch64-apple-darwin # or one of the other three targets above gh release download --repo vs4vijay/prx --pattern "prx-*-$target.tar.gz" tar -xzf prx-*-"$target".tar.gz
无论哪种方式,你现在都有一个名为 prx-<version>-<target> 的文件夹,其中包含 prx。
2. 在 macOS 上,允许其运行。两种选项相同,在包含解压后文件夹的文件夹中:
重要
xattr -dr com.apple.quarantine prx-v*/prx 也尚未经过 Apple 公证。被隔离的副本一启动就会被阻止:shell 只打印 killed,别无其他。Linux 上不需要。
3. 将 prx 放到你的 PATH 中并创建配置:
mkdir -p ~/.local/bin install -m 755 prx-v*/prx ~/.local/bin/prx # or any directory on your PATH prx --version prx init # writes ~/.config/prx/config.yml
安装中有详细信息:系统要求、校验和、更新和卸载。要自行构建 prx,请参阅从源代码构建。
快速开始
如果你安装了 PRX.app,请跳过 prx init 和 prx daemon start:该应用会自行创建配置并启动守护进程。监视仓库、审查和批准也可以在应用中完成。
prx init # write ~/.config/prx/config.yml prx repos add acme/api # watch a repository prx doctor # check config, gh auth, engines, data directory prx status # list open PRs and their state prx review acme/api#42 --dry-run # run the whole pipeline and print it; posts nothing prx review acme/api#42 # review one PR now and post the result prx daemon start # keep going in the background: polling, queue, notifications
然后根据审查发现采取行动:
prx approve acme/api#42 # post your own GitHub approval prx snooze acme/api#42 --hours 2 # or: prx ignore, prx pause --hours 2 prx history # what was reviewed, merged, or failed prx insights # throughput, recurring blockers, effectiveness
功能
- 审查生命周期。每个 PR 一个状态机,在首次审查前和重新审查之间有冷却时间,针对草稿、作者、标签和分支的跳过规则,暂停、忽略和 diff 大小上限。
- 三种审查模式。审查并发布评论、审查但不发布(
monitor),或off。可全局、按组织或按仓库设置。 - 自选引擎。内置支持
pi、claude和codexCLI,通过配置支持任何其他 agent CLI,或使用 Anthropic、OpenAI 和 OpenAI 兼容 API(包括 Ollama 等本地服务器)。支持该功能的 agent 会在重新审查时恢复同一会话。 - 调度与暂停。Cron 表达式限制审查运行时间;定时暂停可在演示或发布冻结期间暂停自动审查。
- 控制发布内容。自定义审查提示、审查正文模板、内联评论开关,以及任何提示编辑都无法移除的固定输出契约。
- 简报。用简短平实的语言描述每个 PR 做了什么,供尚未打开 diff 的人阅读。
- 历史记录、洞察和 token 用量。仅追加的本地日志,针对反复出现的阻塞问题和审查有效性的分析,以及按引擎划分的 token 和成本报告。
- 桌面通知,可按事件配置通知级别。
- 适用于 macOS 的 PRX.app。菜单栏项,包含针对每个 PR 的操作,以及一个包含仪表盘、历史记录、用量图表和设置的窗口。
- 本地 API。CLI 和应用都是守护进程 bearer-token JSON API 的瘦客户端,你也可以针对该 API 编写脚本。
- 实时配置重载,以及通过 launchd 或 systemd 实现登录自启动。
文档
所有内容都在 docs/ 下。
| 章节 | 从以下开始 |
|---|---|
| 快速上手 | 安装、快速开始、你的第一次审查 |
| 指南 | 审查模式、计划、暂停、提示词、评论、简报、引擎、Token 用量、洞察、通知、自启动、PRX.app |
| 参考 | 配置、CLI、环境变量、IPC API、审查清单、数据文件 |
| 概念 | 架构、安全模型、范围 |
| 帮助 | 故障排除 |
安全
- 不存储凭据。每次 GitHub 调用都通过你的
gh会话进行。LLM API 密钥和备用 GitHub token 通过环境变量名引用,绝不写入磁盘。 - 仅限本地。API 在
127.0.0.1上监听,并受每次启动生成的 bearer token 保护。状态和历史记录保留在你的磁盘上。没有遥测。唯一可选的外连是你配置的 LLM API,它会收到审查提示词和 PR diff。 - 无自动批准。prx 中没有任何代码路径允许引擎进行批准;PR 内容被当作数据处理。
参见安全模型。要报告漏洞,请遵循 SECURITY.md。
范围
prx 是面向个人机器的审查管理器。它不会合并拉取请求、批准它们,也不会在 CI 中运行,并且没有团队或托管功能。除最早到期优先之外的优先级排序、增量审查、文件路径过滤和导出目前也不在范围内。参见 范围和非目标。
GitHub 是唯一支持的代码托管平台。PRX.app 仅支持 macOS;CLI 和守护进程可在 macOS 和 Linux 上运行。
贡献
欢迎提交 bug 报告和拉取请求。CONTRIBUTING.md 包含设置和 推送前要运行的检查;AGENTS.md 包含项目的不变约定和 规范,供人和编码代理参考;开发涵盖 从源码构建、测试层级、发布流程,以及截图和演示 视频如何重新生成。
许可证
来源:Hacker News · github.com

