【AI全职下属】不要只让 Agent 追求 CI 变绿,要把验收标准变成它不能绕过、不能单方面修改的工程边界
AI Agent 防作弊 CI 实战自动拦截assertTrue(true)、跳过测试和空 catch系列导读本系列用一个可运行的 Spring Boot 秒杀 Demo拆解“当 AI 成为我的全职下属”之后研发工作流应该如何重建。五期内容从一次超卖事故开始依次讨论并发正确性、上下文裁剪、防作弊 CI、Agent 友好架构和 Human-in-the-loop 上线门禁。主线不是证明 AI 能不能写代码而是回答一个更实际的问题当 Agent 已经能高吞吐地产出代码时工程师如何用边界、验证和审批机制把它变成可靠的执行者。文章目录AI Agent 防作弊 CI 实战自动拦截 assertTrue(true)、跳过测试和空 catch1. 问题现场CI 绿了但问题没有修好2. 验证目标3. 原因绿色流水线为什么可能是假成功4. 原理把禁止项变成机器可执行规则5. 在 Demo 中验证审计器6. 解决办法不能让 Agent 修改守门脚本7. 正则扫描的边界8. 把奖励函数改写成验收函数实验环境小结发布到团队 CI 前的边界测试 Demo 仓库参考资料1. 问题现场CI 绿了但问题没有修好你给 Agent 的任务是“让测试通过”。它确实做到了流水线变绿PR 看起来也能合并。但代码里可能出现了Disabled、assertTrue(true)、空catch甚至把并发度从 100 改成 1。业务问题没有修好失败信号被消音了。本文实现一个轻量级完整性审计器在进入 Maven 测试前检测Disabled、assertTrue(true)、空catch、捕获Throwable和把并发度降为 1 等模式。重点不是依赖几个正则表达式而是建立不可由执行者自行修改的验收边界。2. 验证目标验证目标包括两部分恶意样例必须被检出当前合规工程必须以退出码 0 通过。只满足其中一项都不能证明审计器可用。3. 原因绿色流水线为什么可能是假成功下面几种改动都能让失败的并发测试“恢复绿色”Disabled(偶发失败先关闭)voidshouldHandleConcurrency(){}assertTrue(true);intconcurrentCount1;try{executeSeckill();}catch(Throwableignored){}它们没有修复任何业务问题只是移除了失败信号。配套动画假绿色流水线对比动画GIF 版本4. 原理把禁止项变成机器可执行规则Demo 中的规则定义如下RULES(Rule(DISABLED_TEST,re.compile(rDisabled\b),禁止跳过核心测试),Rule(ALWAYS_TRUE,re.compile(rassertTrue\s*\(\s*true\s*\)),禁止万能真断言),Rule(EMPTY_CATCH,re.compile(rcatch\s*\([^)]*\)\s*\{\s*\}),禁止空 catch 块),Rule(SWALLOW_THROWABLE,re.compile(rcatch\s*\(\s*Throwable\b),禁止捕获 Throwable 掩盖失败),Rule(LOW_CONCURRENCY,re.compile(rconcurrent(?:Count|cy)\s*\s*1\b),禁止把并发度降为 1),)执行审计python pipeline\verify_integrity.py通过时输出Integrity audit passed.如果测试中出现万能断言脚本以非零状态退出流水线立即失败。例如在临时目录中放入一个只包含assertTrue(true);的BrokenTest.java后实际输出格式如下%TEMP%\cheat-demo\BrokenTest.java:1 [ALWAYS_TRUE] 禁止万能真断言 EXIT_CODE1这段输出有三个关键信息命中的文件、行号和规则码。CI 不需要理解业务语义只要看到非零退出码就能阻断这次提交。配套动画CI 流水线拦截动画GIF 版本5. 在 Demo 中验证审计器不能因为工具名叫“审计器”就默认它可靠。项目使用临时目录构造恶意样例deftest_detector_finds_weakened_assertion(self)-None:withtempfile.TemporaryDirectory()asdirectory:rootPath(directory)(root/BrokenTest.java).write_text(assertTrue(true);,encodingutf-8,)self.assertTrue(any(ALWAYS_TRUEinitemforiteminscan(root)))运行python-m unittest discover-s ai_firm\tests-v当前 Demo 的两项 Python 测试均已通过一项验证作弊模式检测一项验证上下文裁剪依赖遍历。再对当前仓库执行正向验证python pipeline\verify_integrity.pyif($LASTEXITCODE-ne0){throw完整性审计失败}6. 解决办法不能让 Agent 修改守门脚本如果 Agent 能同时修改业务代码、测试和审计脚本它仍可以删除规则后提交。生产环境应至少采用以下一种隔离方式审计脚本放在独立仓库由平台团队维护。CI 从固定版本的制品或容器中加载规则。使用 CODEOWNERS修改pipeline/必须由人类审批。核心测试在远端私有测试集执行不暴露全部断言。这就是“只读门禁”的真正含义不是文件系统只读而是任务执行者没有单方面改变验收标准的权限。最小团队落地可以从两段配置开始。先在 CI 中把完整性审计放在 Maven 测试之前name:integrity-gateon:pull_request:jobs:verify:runs-on:ubuntu-lateststeps:-uses:actions/checkoutv4-uses:actions/setup-pythonv5with:python-version:3.12-name:Run integrity auditrun:python pipeline/verify_integrity.py-name:Run Maven testsrun:mvn test再用 CODEOWNERS 约束守门脚本的修改权限/pipeline/ platform-reviewers /ai_firm/cheat_detector.py platform-reviewers这样 Agent 可以提交业务修复但凡它试图改掉审计脚本或流水线规则都必须经过独立维护者审批。配套动画只读门禁权限边界动画GIF 版本7. 正则扫描的边界本例故意保持简单适合教学和本地前置检查。生产环境还应组合Checkstyle、PMD 或 Error ProneJava 语义和代码风格。SpotBugs字节码级缺陷分析。SonarQube质量门、覆盖率和重复代码。Maven Enforcer依赖版本与禁止依赖。Git diff 策略限制 Agent 可修改路径。静态扫描无法证明代码正确但能快速淘汰一批确定错误的提交。8. 把奖励函数改写成验收函数不要给 Agent 下达“让 CI 通过”而要给出分层验收第一层编译通过 第二层禁止模式扫描通过 第三层核心并发测试通过 第四层订单数、库存、成功响应三者一致 第五层人类 Review SQL、事务边界和锁释放。Agent 的目标越接近业务不变量钻空子的空间越小。实验环境项目版本或参数Python3.12.5 实测只依赖标准库被审计 DemoJDK 17、Spring Boot 3.5.15、Maven 3.6.3核心验证恶意样例能检出合规工程以退出码 0 通过小结测试不是装饰它是人类把意图固化为机器约束的方式。让 Agent 自动写代码之前先确保它不能随意改写裁判规则。下一期将从代码结构本身入手为什么职责单一、依赖倒置和小接口会直接提高 Agent 修改代码的成功率。发布到团队 CI 前的边界正则扫描可能误报注释、字符串和规则文件自身也可能漏掉换行、别名封装后的作弊方式。本文工具适合作为快速前置门禁不能替代 AST、覆盖率差异检查、私有测试集和人工 Review。测试 Demo 仓库配套 Demo 仓库地址https://github.com/quan020406/xiaozhan-blog-column-demos上一篇用 AST 依赖裁剪治理 AI 编程上下文下一篇小z疯狂码字ing…感谢阅读记得点赞、关注、收藏欢迎各位评论区交流参考资料JUnit 5 条件执行与禁用测试

相关新闻

StarCore SC100链接器深度解析:从符号解析到缓存优化的嵌入式DSP开发实践

StarCore SC100链接器深度解析:从符号解析到缓存优化的嵌入式DSP开发实践

1. 项目概述:深入StarCore SC100链接器的工程世界在嵌入式DSP开发,尤其是像StarCore SC100这类高性能数字信号处理器平台上,我们常常把大部分精力倾注在算法优化、代码编写和编译器调优上。然而,一个经常被忽视却至关重要的环节&a…

2026/6/18 13:54:49阅读更多 →
Fluent Python 示例代码仓库:Python 进阶学习的一手素材

Fluent Python 示例代码仓库:Python 进阶学习的一手素材

文章目录Fluent Python 示例代码仓库:Python 进阶学习的一手素材仓库定位仓库现状内容组织代码特点适合人群注意事项Fluent Python 示例代码仓库:Python 进阶学习的一手素材 Luciano Ramalho 写的《Fluent Python》是 Python 进阶领域的知名读物。与之配…

2026/6/18 13:54:49阅读更多 →
如何用3个步骤实现鸣潮自动化,每天节省2小时游戏时间

如何用3个步骤实现鸣潮自动化,每天节省2小时游戏时间

如何用3个步骤实现鸣潮自动化,每天节省2小时游戏时间 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 你是否厌倦了在《…

2026/6/18 13:54:49阅读更多 →
PCL-Silane 硅烷改性PCL普通PCL与硅烷PCL性能对比

PCL-Silane 硅烷改性PCL普通PCL与硅烷PCL性能对比

一、分子结构差异1. 普通 PCL 基础骨架:仅由 ε- 己内酯开环聚合形成线性聚酯链,末端多为羟基或烷基封端,无额外活性功能基团 分子作用方式:分子间仅依靠酯基弱极性作用力结合,无法与无机基底形成化学键合 结构局限&am…

2026/6/18 16:41:28阅读更多 →
095、PCIE物理层测试模式:从信号眼图到误码率实战

095、PCIE物理层测试模式:从信号眼图到误码率实战

095、PCIE物理层测试模式:从信号眼图到误码率实战 最近在调一块新板卡,链路训练老是失败,LTSSM卡在Recovery状态出不来。示波器抓到的差分信号看起来幅度正常,但就是无法稳定锁定。后来打开物理层的测试模式,才发现发送端的预加重参数配置有问题,导致接收端眼图张开度不…

2026/6/18 16:41:28阅读更多 →
如何解决自动驾驶多传感器标定的3大技术挑战:OpenCalib实战指南

如何解决自动驾驶多传感器标定的3大技术挑战:OpenCalib实战指南

如何解决自动驾驶多传感器标定的3大技术挑战:OpenCalib实战指南 【免费下载链接】SensorsCalibration OpenCalib: A Multi-sensor Calibration Toolbox for Autonomous Driving 项目地址: https://gitcode.com/gh_mirrors/se/SensorsCalibration 在自动驾驶系…

2026/6/18 16:41:28阅读更多 →
Selenium自动化测试面试核心:从WebDriver原理到框架集成实战

Selenium自动化测试面试核心:从WebDriver原理到框架集成实战

1. 项目概述:一份面试题的深度价值最近在整理资料时,翻出了几年前准备面试时收集和整理的一份关于Selenium的面试与笔试题集,其中不少题目来自当时字节跳动等一线互联网公司的考察点。时过境迁,虽然具体的题目可能已经更新&#x…

2026/6/18 16:41:28阅读更多 →
Windows系统文件vcruntime140d.dll丢失找不到问题解决

Windows系统文件vcruntime140d.dll丢失找不到问题解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

2026/6/18 16:41:28阅读更多 →
Skill一键生成专业性能测试计划,7个Skill技能亲测好用,实现全链路压测落地(第二篇)

Skill一键生成专业性能测试计划,7个Skill技能亲测好用,实现全链路压测落地(第二篇)

一个真实场景周一早上,你收到业务方的压测需求:"双十一要来了,帮我们测一下订单提交接口,目标并发 5000。"你打开 JMeter,开始新建测试计划。并发填 5000,Ramp-up 填多少?你犹豫了一下…

2026/6/18 16:36:27阅读更多 →
ZigBee HA智能家居开发实战:从集群模型到NXP JN516x代码实现

ZigBee HA智能家居开发实战:从集群模型到NXP JN516x代码实现

1. ZigBee HA:智能家居的“通用语言”与开发基石如果你正在或计划踏入智能家居设备开发领域,尤其是基于ZigBee协议,那么“ZigBee Home Automation”这个名词你一定不陌生。它不仅仅是ZigBee联盟定义的一套应用层规范,更是确保不同…

2026/6/18 0:00:24阅读更多 →
Java毕设选题推荐:基于 Spring Boot 的个人随笔博客运维管理系统的设计与实现 基于 Spring Boot 的用户原创博客分享社区【附源码、mysql、文档、调试+代码讲解+全bao等】

Java毕设选题推荐:基于 Spring Boot 的个人随笔博客运维管理系统的设计与实现 基于 Spring Boot 的用户原创博客分享社区【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/6/18 0:00:24阅读更多 →
JN517x嵌入式开发实战:看门狗、脉冲计数器与I2C接口的深度解析与避坑指南

JN517x嵌入式开发实战:看门狗、脉冲计数器与I2C接口的深度解析与避坑指南

1. 项目概述在嵌入式开发领域,尤其是基于NXP JN517x这类无线微控制器的项目中,系统稳定性和与外设的可靠交互是两大核心挑战。前者关乎产品能否在无人值守的复杂环境中长期运行,后者则决定了设备能否准确感知世界并与其他芯片“对话”。JN517…

2026/6/18 0:00:24阅读更多 →