【让Claude自己抓自己的Bug,才是AI编程的正确姿势】
Claude写代码快,写Bug也快。安全漏洞、类型错误、藏在随机文件里的API密钥,每次会话生成500行代码,靠人工审查根本不现实。
解决方案很简单:让Claude自己测试自己。
第一步,在项目根目录创建CLAUDE.md文件,写入强制检查清单:完成任何任务前必须扫描硬编码密钥、检查SQL注入和路径遍历漏洞、验证用户输入、运行测试套件、检查类型错误。Claude每次会话都会自动读取这个文件,相当于内置了一道安全门。
第二步是关键的提示词技巧。
让Claude“写20个专门用来破坏这个函数的单元测试”,它自己清楚哪里偷了懒,让它亲自举报自己。
让它“像渗透测试员一样找出文件中所有安全漏洞”,SQL注入、认证绕过、权限提升都会被揪出来。
让它“生成50个边缘用例:null、空字符串、负数、Unicode、十万项数组”,然后用hypothesis做自动化模糊测试。
有评论提出一个更狠的思路:在写代码之前先让Claude写安全测试。先问它这个功能可能引入哪些危险漏洞,再让它写能捕获这些漏洞的测试,最后才写实现代码。这样Claude就被自己设的规则约束住了。
第三步是工具链集成。claude-code-action可以在GitHub上自动审查每个PR,claude-agent-sdk能批量扫描整个目录,factory.ai的droid命令能扫描全仓库并直接提交修复PR。
第四步是堆叠自动化扫描器:semgrep扫OWASP十大漏洞,bandit检查Python安全问题,ruff做代码规范自动修复,mypy做严格类型检查,snyk检测依赖项漏洞,gitleaks检测泄露的密钥。
第五步是设置pre-commit钩子。把上面所有工具都加进配置文件,物理上阻止你提交有问题的代码。
最终形成完整闭环:Claude写代码,CLAUDE.md强制自审,自动扫描器兜底,pre-commit阻止垃圾提交,GitHub Action审查PR。你只需要关注什么地方出了问题。
有人说CLAUDE.md在长会话中会被忽略,可以用单独的SECURITY_CHECKLIST.md文件,每次提示词都明确引用它。
说到底,核心思路是把CLAUDE.md当作安全契约来用,而不只是风格偏好说明。假设模型又快又马虎,然后围绕这个事实设计整套系统。
#How I AI#
x.com/pipelineabuser/status/2015531634255098266
