前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
返回 AI 情报前线
All News · 全部资讯9295
  • PowerToys预览版集成Phi Silica端侧模型,高级粘贴支持本地AI
  • AI代写代码让我忽视了测试:我发现的六个静默失败
  • 对待每个新开源模型要像升级依赖:预检门控 checklist
  • Muse Glimmer:30B本地Agent开源模型发布
  • 开源模型来了别急着上:5步浸泡测试法
  • OpenAI 收购 NextSlide 将 AI 生成 PPT 引入 ChatGPT
  • Hugging Face:让知识蒸馏廉价到可大规模运行
  • OpenAI发布网络安全专项模型GPT-5.6-Cyber
  • 语音 Agent 节省 70% Groq 调用的实战优化
  • 程序员常犯的8个安全错误:硬编码密钥居首
  • 我给Claude Code加了护栏:防止它无意泄露密钥
  • 模型架构趋同后,Physical AI 的竞争关键转向硬件与仿真
  • AI Agent隔离沙箱与向量化搜索的新动向
  • AI大模型周榜:阿里Qwen3.8-Max杀入前六
  • AI for Science需要推理能力,而非仅靠数据
  • 用评分卡而非直觉选择LLM:零成本的模型评测框架
  • AI Agent处理不可信文本时如何做边界校验
  • AI执行正确也可能亏损:生产环境的隐性成本陷阱
  • 给编程Agent加上Preflight检查的安全框架
  • 大模型价格周报:GLM 5.2和Kimi K2.6大幅涨价
  • AI代码审查也需要审查:免费的压力测试流水线
  • System Prompt不是安全边界:Agent工具调用的攻防探测
  • Claude Code Auto Mode 正式默认启用,实测开发效率提升 25%
  • PDF 隐藏文本可劫持 Atlassian Rovo AI Agent 窃取 Jira/Confluence 数据
  • 用临时沙箱安全测试 AI 编程 Agent 的实战模式
  • AI 助手的 Shell 命令必须过干运行才能上机
  • 免费服务器上构建可复现的 AI Agent 边界测试平台
  • 用记分板量化评估AI代码评审,而非靠Demo感觉
  • Graphify:把代码库转为知识图谱供AI助手查询
  • Agent权限应写成机器可读文件而非提示词
  • 免费编程模型打补丁引入了多少回归?
  • 流式 AI 界面错误处理:需要声明式播报策略而非重试按钮
  • OpenAI 兼容不等于真的兼容:AI 编程 Agent 兼容性检查清单
  • Claude Code 将自动执行模式改为默认,批准权限需手动开启
  • 模型没失败,界面失败了:企业 AI 落地七成失败根因分析
  • AI Agent权力过大:如何审计过度代理风险
  • WordPress七月贡献24个PR实录
  • 美团图灵两年实践总结:Agent评测体系搭建方法论
  • Claude Code安全配置:欧盟团队必须知道的GDPR合规风险
  • SDK包应为AI Coding Agent设计专用接口规范
  • 云GPU上的「吵闹邻居」:共享GPU性能波动根因分析
  • NVIDIA开源VoiceChat 11B:端到端语音对话,448ms打断响应
  • Harvey开源法律Agent评测基准LAB:真实法律任务+量化评分
  • Claude Code Agent 调试指南:读转录、追踪工具调用、定位错误
  • 使用 AI 生成代码不丢失代码库理解的实践策略
  • Docker Sandboxes:面向AI Agent的临时隔离沙箱
  • 使用AI而不被AI淘汰:desirable difficulties原则
  • 字节Seed发布全双工音视频大模型:看听说三位一体
  • Claude Code 5天后默认自动模式,费用由Anthropic承担
  • LLM与强化学习全栈指南:从RLHF到推理模型
  • Claude Code 自动执行模式 8 月 14 日起默认开启
  • 已加载 51 / 9295
8.0
热点
AI SCORE
编程提效2026-08-10 16:50

AI代码审查也需要审查:免费的压力测试流水线

dev.to · AI#AI代码审查#测试#质量保障
Editor brief · 编辑速览

对AI生成的代码改动进行隔离仓库验证、行为探测、静态扫描和对抗性二次审查,确保不引入边缘情况bug。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

上个月,我对一个重试循环应用了一个 AI 建议的修复,却没有properly检查。这个改动看起来很干净:代码行数更少,命名更清晰,测试套件也保持绿灯。但我没注意到的是,模型把一个 sleep 移到了条件语句外面,导致每次成功请求现在都要付出一个本来只适用于重试的延迟。测试通过了,因为没有测试曾经覆盖过那个代码路径。

这次经历改变了我对待 AI 代码审查建议的方式。建议本身是一个假设,而不是答案,假设需要实验来验证。本文描述了我现在对每个非平凡建议运行的实验设置:一个隔离的仓库副本、一个拒绝接受"零测试运行"为成功的behavioral probe、一个静态扫描,以及一个adversarial的第二次模型审查。整个流程运行在免费的模型访问和免费的托管服务器上,所以没有per-call cost的借口来跳过second opinion。

建议的 diff 实际会出现什么问题

明显的垃圾很容易拒绝。伤害你的建议有三个共同特征:

它们在局部看起来合理,但违反了一个存在于模型所看到的代码片段之外的invariant。

它们改变了edge-case行为——短路顺序、正则可达性、错误路径——而stated reasoning从未提及这些。

它们偶尔会削弱一个validation或sanitization步骤,重新打开一类多年前有人修复过的bug。

因此,验证pipeline需要产生三种证据:改变的代码仍然正常行为(测试),它没有引入已知bad patterns(静态分析),它的stated reasoning经得起 hostile scrutiny(第二个模型被要求寻找divergence,而不是同意)。

第一步:隔离建议

模型的编辑永远不会触碰我真正的working tree。我在一个一次性的git worktree中应用它,这样一个坏建议就是一个rm -rf就能让它消失的东西:

#!/usr/bin/env bash
# quarantine.sh — isolate an AI-suggested patch for verification
set -euo pipefail

PATCH_FILE="$1"
SCRATCH="$(mktemp -d)/suggestion-check"

git worktree add "$SCRATCH" HEAD
git -C "$SCRATCH" apply "$PATCH_FILE"
echo "$SCRATCH"   # hand the path to the next stage

这不花一分钱,而且改变了审查的心理:建议是一个放在玻璃罩下的标本,不是一个我已经投入情感想要保留的half-merged编辑。

第二步:一个不能谎报零测试的behavioral probe

这类automation中经典的self-deception是一个匹配不到任何东西的测试选择器。绿灯输出,零信号。所以probe先计算匹配的测试数,然后将零作为一个hard failure:

#!/usr/bin/env bash
# probe.sh <worktree> <test-selector>
set -uo pipefail
cd "$1"

MATCHED=$(pytest --collect-only -q -k "$2" 2>/dev/null | grep -c '::' || true)

if [ "$MATCHED" -eq 0 ]; then
  echo "REJECT: selector matched no tests — the suite has nothing to say about this change."
  exit 2
fi

pytest -x -q -k "$2" || { echo "REJECT: behavioral probe failed ($MATCHED tests ran)."; exit 1; }
echo "OK: $MATCHED targeted tests passed."

零匹配时的REJECT是本文中最高价值的一行。在我的个人使用中,那个guard捕获的坏merge比静态扫描器还多——通常是因为它揭示了我信任的"通过套件"根本从未覆盖过被改动的模块。

第三步:静态扫描,仅限新发现

一个基于pattern的扫描器(带有默认registry规则的Semgrep,或者你所用语言的等价工具)只针对改动的文件运行。它不会捕获逻辑bug,但能可靠地捕获"简化了input validation"这类回归。把diff上的任何发现作为人工审查门禁,而不是自动拒绝——false positives存在,但审查只需两分钟。

第四步:hostile cross-examination

这里是人们因为第二次模型调用在按量计费计划上会花钱而跳过的地方。我不是问模型"这个改动正确吗?"——这会邀请一个自信地重新推导相同推理的过程——而是要求它攻击这个改动:

You are a skeptical examiner reviewing a proposed patch.

CONTEXT BEFORE THE CHANGE:
{original}

PATCH:
{diff}

AUTHOR'S STATED REASONING:
{rationale}

Rules:
- Do not summarize or praise the patch.
- Name up to three concrete inputs or system states whose behavior this
  patch changes without the reasoning mentioning it.
- Classify each as SAFE, UNSAFE, or UNDETERMINABLE from the shown context.
- If the patch touches parsing, authentication, concurrency, or error
  handling, state the one invariant a human must verify by hand.
- If there is genuinely nothing, output exactly: NO DIVERGENCE FOUND.
  Fabricating concerns is a failure.

任何OpenAI兼容的客户端都可以发送这个。黄金在UNDETERMINABLE bucket中:这是一份精确的、生成式的清单,列出我个人仍然欠审查的东西。"看起来没问题"的回答几乎不携带信息;而三不可验证声明的列表携带很多。

让second opinion免费

Cross-examination阶段曾经是成本悄悄混入的地方——每个建议多一次模型调用,乘以每个PR。两种方法将边际成本降至零:

托管的免费额度。MonkeyCode目前提供免费的模型访问以及免费的服务器选项,这意味着第四阶段的调用可以打到托管端点而不是计费的API key,所以adversarial pass可以运行在每个建议上,而不是只在那些令人生畏的建议上。披露:本文是作为MonkeyCode产品推广的一部分准备的。把"免费"理解为关于当前可用性的声明,而不是永久契约——免费额度会改变它们的配额、延迟和模型阵容,所以在将其接入你的团队所依赖的任何东西之前,先确认当前的条款。

你自己的硬件。一个OpenAI兼容的本地服务器(Ollama、llama.cpp)通过改变一个base URL就能插入同一个客户端。中等规模的量化模型比frontier模型弱,但上面的cross-examination prompt是一个结构化的checklist任务,中等规模的模型处理这些比它们的benchmark排名所显示的要好。

这个pipeline故意对哪个后端回答不敏感。prompt、证据类别和decision rules保持不变。

这在哪里会失效

独立性是必需的。用与创作建议的相同模型进行cross-examination会保留其blind spots。使用不同的模型,理想情况下是不同的provider。

扫描器有一个已知的上限。它们匹配模式,而不是novel exploitable逻辑。

免费产品会移动。任何免费额度的配额、可用性和延迟都可能毫无预警地变化;保持本地fallback被常态化使用,这样在你需要的那天它能正常工作。

范围很重要。这个pipeline假设一个review-sized的diff。一个40文件的agent生成的refactor需要characterization tests和分阶段推出,而不是一个checklist。

谁应该跳过这个:已经有强制coverage gates和成熟mutation testing的团队已经拥有这个价值的大部分。而且如果你的代码由于合规原因不能离开你的边界,托管的免费额度根本就不是一个选项——在本地运行examiner或者干脆不运行。

结论

这不是关于怀疑;这是关于让信任成为每个建议单独赢得的东西,而不是工具默认享有的东西。一个隔离的worktree、一个在零测试时大声失败的probe、一个pattern扫描,以及一个hostile的second opinion覆盖了大部分风险——而且凭借免费的模型访问和免费的服务器,second opinion的成本只是三十秒。如果你采用了这个pipeline,我想听到的是哪个阶段对你触发得最多——我的赌注仍然在零测试guard上。

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
大模型价格周报:GLM 5.2和Kimi K2.6大幅涨价
下一篇
System Prompt不是安全边界:Agent工具调用的攻防探测