大多数代码评审,是在会议间隙挤进浏览器标签页里完成的。最近不少团队把这件事交给机器人,机器人留下一堆评论,多数没被读过就被标记为已解决。
![]()
有人想换个更安静的地方读一次代码变更,旁边坐着一个自己挑的AI。它回答问题、指出位置,最终决定什么内容进入PR的,还是人。这就是Clúsia——一个免费的macOS应用,Apache-2.0开源,用Rust写成,作者认为它可以交给其他人试用了。
打开一个拉取请求,Clúsia会在本地工作树里把它检出。你可以对某一行或某个范围发表评论,回复和解决讨论串,所有内容都留在本机的一份草稿里。按下Finalize review,草稿才作为一次评审发到GitHub。在那之前,什么都不会被发布。
草稿还能扛住新的推送。作者在你评审到一半时推了新提交,你的评论会跟着代码移动到新位置。如果一份评审保存了几天再回来,代理可以逐条对照新提交,建议保留、移动、标记过时还是改写。你可以一条条过,也可以一次性全部接受。
代理用你自己的账号
Clúsia本身不带模型。它对接你已经在用的Claude Code或Codex,用你自己的登录,或者对接任何按一套小型JSON-lines协议编写的程序。你的GitHub令牌不会到达代理,代理也从不写入git或GitHub。发布这件事归你管。
评审打开时,代理会写一份摘要,之后你可以就这个PR和它聊天。它能自行读取和搜索工作树。至于其他操作,比如运行cargo test或编辑文件,会弹出一个窗口,显示确切命令、代理给出的理由和一个倒计时。你不回应,请求就被拒绝。命令默认在沙箱中运行,没有网络,只能在本次评审的工作树内写入。
安全检查和分区审计
打开评审时,代理还会检查这次变更的安全问题。每条发现都带有严重程度(高、中、低)、对应的行,有时还有一段代码建议,写成可直接使用的评审评论。你可以把它加进草稿、先编辑或直接忽略。如果发现落在PR没有触及的行上,它会变成一条通用评论。
作者在措辞上很谨慎。什么都没查出来时,Clúsia会说类似“Claude Code在7个文件中未发现安全问题”。它不会告诉你这次变更安全,因为读过PR的代理没法做这个承诺,作者更希望你自己继续读下去。
Security旁边还有一个Audits标签。代理会从正确性、并发、错误处理、性能、测试,以及文档和变更日志几个方面过一遍变更,每个领域给出各自的发现。你可以关掉某些领域,也可以自己加一个,填上名称和不超过500字符的简短指令,比如“检查每个新端点是否都有速率限制”。
如果代理没有回答某个领域,标签会显示Not checked。作者不想在那里放一个沉默的“ok”。每次检查都在一个从评审聊天分叉出的会话里运行,所以它已经知道代理读过什么,而你的聊天在它工作时保持空闲。所有评审加起来最多同时跑两个检查,因为每一个都是你账号上真实的一轮调用。
把变更画成图
Diagrams标签让代理用最多八张图解释这个PR,图的类型按变更特点挑选:流程图、依赖图、时序图、实体关系图、用例图、数据流图、状态机或类图。Clúsia会校验每一张图并自行排版,让箭头保持笔直可读。点一个方框,你能看到它在绘制时那个提交上的代码,PR新增的行会高亮。你可以就这些行发表评论,评论直接进入草稿。每张图按提交保存,新推送之后可以回看各个版本,看它们之间增加了、改变了还是删除了什么。
列表最后一张是3D图,作者叫它“Where the words live”。代理挑出这次变更新增或触及的词,把它们分成若干族,命名几个用例和三个坐标轴。Clúsia随后找出这些词在仓库中出现的每一处,代理把每个文件和函数放到坐标轴上。你可以转动这张地图,筛选出只有PR改动过的部分,点任意一个点读代码并评论。当你评审不是自己写的代码、想在批准一次重命名前知道还有谁依赖这个名字时,它最有用。
菜单栏的弹出面板会显示等着你的PR、已经过期的已保存评审,以及你的评审活动热力图。评审请求、你评审过的PR有新提交、回复、提及和CI失败都会通知你,还可以设置免打扰时段。如果你更愿意待在终端里,也有命令行工具:clusia prs、clusia open owner/repo#123、clusia review publish。
运行它需要一台Mac,Apple silicon或Intel都行。脚本用Homebrew或Rust从源码构建Clúsia,从不索要sudo,首次构建大约五分钟。首次运行会使用你的gh登录,询问克隆仓库放在哪里,并找到你已安装的代理。之后从托盘打开一个PR,或者用clusia open owner/repo#123。
Clúsia还很年轻,现在人们告诉作者的东西,会塑造接下来的大部分走向。如果你每天都评审代码,他很想知道这套东西是否契合你的工作方式。仓库在github.com/rzorzal/clusia,一个star能帮其他评审者找到它。遇到崩溃、困惑或缺失的功能,欢迎提issue。如果想让Clúsia支持它还不支持的模型或工具,那套harness协议很短,里面有一个可用的Python示例。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.