文章总结: 本文介绍构建自动化代码工厂的方法,实现AI代理编写与审查代码的闭环。核心措施包括制定机器可读契约、设置预检网关、强制校验HEADSHA防过时合并、去重重运行请求及引入自动修复循环。文章强调需保存浏览器证据与事故记忆,确保流程确定性。该方案通过标准化流水线控制,实现了代码仓库的高效自治与风险闭环管理。 综合评分: 89 文章分类: AI安全,安全开发,安全运营,代码审计
代码工厂:如何设置代码仓库,以便代理可以自动编写和审查您 100% 的代码
AI与代码安全
2026年2月24日 13:39 北京
目标
你只需要一个循环:
- 编码代理编写代码
- 该代码库在合并前会强制执行风险感知检查。
- 代码审查代理验证 PR
- 证据(测试+浏览器+审核)可由机器验证
- 研究结果转化为可重复使用的防护案例
- 具体的审核代理可以是 CodeQL + 策略逻辑、自定义 LLM 审核或其他服务。控制平面模式保持不变。
高层级的流程
1)保留一份机器可读契约
您的契约应明确规定:
按路径划分的风险等级
各层级所需检查
控制平面变更的文档漂移规则
UI/关键流量的证据要求
重要性:它消除了歧义,防止了脚本、工作流文件和策略文档之间出现无声的偏差。
2)在昂贵的集成环境中进行网关预检查
可靠的模式是:
- 首先运行
risk-policy-gate - 验证确定性策略 + 审查代理状态
- 只有这样才能启动
test/build/security扇出作业
这样可以避免将 CI 时间浪费在那些因政策或未解决的审查结果而受阻的 PR 负责人身上。
3)强化当前主分支哈希值规范
这是从真实的公关流程中获得的最重要的实践经验。
只有当审查状态与当前 PR 主提交匹配时,才将其视为有效:
- 等待对
headSha进行审查检查 - 忽略与旧 SHA 关联的过时摘要评论
- 如果最近一次审核运行失败或超时,则失败。
- 每次同步/推送后都需要重新运行。
- 通过在同一节点上重新运行策略门来清除过期的门故障。
如果跳过此步骤,您可以使用过时的“干净”证据合并 PR。
4)使用带有 SHA 去重的单个重运行注释写入器
当多个工作流可以请求重新运行时,就会出现重复的机器人评论和竞态条件。
使用一个工作流作为规范的重新运行请求者,并按标记 + sha: 进行去重:。
5)添加自动化修复循环(可选,效果显著)
如果审查结果可执行,则触发编码代理执行以下操作:
- 阅读评论背景
- 补丁代码
- 运行重点本地验证
- 将修复提交推送到同一 PR 分支
然后让 PR 同步触发正常的重新运行路径。保持此过程的确定性:
- 针式模型 + 可复现性工作
- 跳过与当前标题不符的过时评论
- 绝不绕过政策关卡
6)仅在彻底重新运行后自动解决仅限机器人发起的线程
提升生活质量的有效措施:
- 在干净的电流头重新运行后
- 自动解决所有评论均来自评论机器人的未解决主题帖。
- 永远不要自动解决人工参与的讨论串
然后重新运行策略门控,以便所需对话解决方案反映新的状态。
7)将浏览器证据作为一流证据保存。
对于用户界面或用户流程的更改,需要在持续集成 (CI) 中提供证据清单和断言(而不仅仅是 PR 文本中的屏幕截图):
- 所需流程存在
- 使用了预期的入口点
- 已登录流程中存在预期的帐户身份
- 这些东西保存完好且具有真实性。
8)利用安全带间隙环保存事故记忆
这样可以避免修复变成一次性补丁,并提高长期覆盖率。
9)我们在项目中进行此操作所学到的经验
最重要的教训是:
- 确定性的排序很重要:预检门的操作必须先于 CI 分叉操作完成。
- 当前头部 SHA 匹配是不可协商的。
- 重审请求需要一位权威撰稿人。
- 审查摘要解析应将漏洞描述和置信度较低的摘要视为可操作内容。
- 自动解决仅限机器人参与的讨论串可以减少摩擦,但前提是必须有清晰的当前讨论串证据。
- 如果防护措施严格执行,补救措施可以显著缩短循环时间。
10)通用模式与单一实现
通用模式术语:
- 代码审查代理
- 修复
- 风险策略门控
一个具体的实施方案:
- 代码审查工具:Greptile
- 规范的重新运行工作流程:
greptile-rerun.yml - 旧线程清理工作流程:
greptile-auto-resolve-threads.yml - 预检策略工作流程:
risk-policy-gate.yml
11)有用的命令集
| |
| — |
| <span style="font-size:7.5pt; <p>mso-bidi-font-size:7.5pt;<br>font-family:Consolas;<br>mso-ascii-font-family:Consolas;<br>mso-fareast-font-family:Consolas;<br>mso-bidi-font-family:Consolas;<br>font-variant:normal;<br>text-transform:none;<br>color: rgba(72, 166, 226, 1);<br>letter-spacing:0.0pt;<br>font-style:normal;<br>mso-bidi-font-style:normal;<br>background:#16181C;<br>border:solid #2B2E31 1.0pt;<br>mso-border-alt:solid #2B2E31 0.25pt"><span leaf=" "="">npmrun typechecknpmtest npmrun build:ci npmrun harness:legal-chat:smoke npmrun harness:ui:pre-pr npmrun harness:risk-tier npmrun harness:weekly-metrics |
12)最终的复制模式
- 将风险和合并政策合并到一个契约中。
- 在进行昂贵的集成测试之前先执行预检查流程。
- 要求当前 head SHA 处于干净的代码审查代理状态。
- 如果发现问题,则在分支内进行修复,然后确定性地重新运行。
- 清理后重新运行,仅自动解决机器人提交的过期主题。
- 要求提供浏览器端的用户界面/流程变更证明。
- 将事件转换为防护套,并跟踪循环服务级别指标。
- 这样就形成了一个存储库,代理商可以在其中实现、验证并按照确定性、可审计的标准进行审查。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:AI与代码安全 《代码工厂:如何设置代码仓库,以便代理可以自动编写和审查您 100% 的代码》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论