密钥被 commit 了
@@ -12,1 +12,4 @@
import Stripe from "stripe";const stripe = new Stripe("sk_live_••••••••");export const charge = (amount: number) => stripe.charges.create({ amount });以前要写一天的东西,AI 几分钟就写完。跟着一起来的那些,谁也没空细看。谁都踩过。
@@ -12,1 +12,4 @@
import Stripe from "stripe";const stripe = new Stripe("sk_live_••••••••");export const charge = (amount: number) => stripe.charges.create({ amount });@@ -41,3 +41,3 @@
} catch (error) { logger.error("export failed", error.message); logger.error("export failed", payload.patient);codecorvusbot· 刚刚阻断
payload.patient 把姓名和身份证号写进了日志。只记报表 id 就行。
已验证
throw error;@@ -27,2 +27,4 @@
const size = 20;const start = (page - 1) * size;return orders.slice(start, size);codecorvusbot· 刚刚重要
slice 的第二个参数是结束位置,不是条数。从第 2 页开始,列表就是空的。
}@@ -8,3 +8,3 @@
export function seniorDiscount(age: number) { return age >= 60 ? 0.3 : 0; return age > 60 ? 0.3 : 0;codecorvusbot· 刚刚重要
仓库里的规则写的是“60 岁及以上”。用了 >,刚好 60 岁的人就没折扣了。
}PR #517 · 重构计费 · 47 个文件
巨型 PR,没人会认真看。
Corvus 一行行读,只在真有事的时候才开口。
Corvus 审查
corvus -b main
已审查 · 46s · 步骤 12
PR 里的每个文件,连同仓库上下文。评论直接落在出问题的那一行。
告诉你为什么有问题,再把修复做成 Commit suggestion 递给你。点一下,搞定。
阻断会拦下 merge。重要只是提醒。建议就只是建议,不强求。
行内评论、按严重程度的计分板,外加一枚徽章,来自那个想推翻结论却没成功的 AI。
CodeCorvus 审查
🔴 1 阻断·🟡 2 重要·🔵 3 建议
审查了 4 个文件。1 个阻断问题扛住了对抗式验证。
| 41 | 41 | } catch (error) { | |
| 42 | - | logger.error("export failed", error.message); | |
| 42 | + | logger.error("export failed", payload.patient); | |
| 43 | 43 | throw error; |
🔴 患者数据可能会进日志
payload.patient 里有姓名和身份证号。日志里只记报表 ID 就行。
| 42 | - | logger.error("export failed", payload.patient); | |
| 42 | + | logger.error("export failed", { report: payload.id }); |
要带理由放行:/corvus ok 或 /corvus fp
Merge 被拦下了
有 1 个阻断问题,要么修掉,要么写明理由放行。
拦之前,另一个 AI 会专门给这个结论挑毛病。挑出来了?不拦。挑不出来?打上“已验证”徽章,拦下 merge。
试试这个 Gate
拨一下开关,merge 结果马上跟着变。
不同意?发个 /corvus fp 附上理由,接着干活。都有记录。
Merge 被拦下
已验证问题打上“已验证”徽章,建议的修复直接落在那一行。
每个版本,Corvus 都要跑一遍由真实案例和埋点案例组成的 golden set,结果直接公开。这份来自 Grupo Mais Saúde 的案例。
仅代表这套 13 个案例的 golden set 的结果,不保证适用于所有仓库。
name: CodeCorvuson: [pull_request]permissions: contents: read pull-requests: write id-token: write # short-lived OIDC sessionjobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: corvus review在你的 runner 上审查每个 PR。
$ corvus -b main⠹ 46s · 步骤 12 · 正在读 src/report.js1阻断2重要3建议开 PR 之前先跑一遍,实时看进度。
问题直接出现在编辑器里。在 PR 里问一句就行:/corvus explica。
仅为示例。请按你的 CI 环境安装和配置 CLI。
Cloud · 即将上线还是那个 Corvus,不用 AI 密钥,外加一个仪表盘。
一个开源的 AI 代码审查工具,跑在 GitHub Actions 里。它会读每一个 pull request,直接在对应的行上评论并给出修复建议;只有发现严重问题,而且第二个 AI 也推翻不了时,才会拦下 merge。
开源版免费:用你自己的 AI 密钥,或者在 CLI 里用你的订阅。Cloud 还没定价,很快就来。
workflow 跑在你的 GitHub Actions runner 上。代码从那里直接发给你选的 AI 服务商。
不会。只有严重问题才会拦下 merge,而且要先让另一个 AI 试着推翻。不同意?/corvus ok 或 /corvus fp,附上理由,接着干。
暂时不支持。CI 集成针对的是 GitHub Actions 和 GitHub pull request。
Corvus 自带规则,覆盖日志、payload 和响应里的巴西证件号和患者数据,还会记录审查证据。它不能代替法律意见。
codecorvusbot· 刚刚阻断
生产环境的密钥写进了代码。Gitleaks 当场拦下,评论里的值也会打码。