I used AI. It worked. I hated it
核心观点
一位 AI 安全专家的亲身经历:使用 Claude Code 完成了一个生产级项目,但整个过程"极其痛苦"。作者是坚定的反 genAI 主义者,但因工作需要必须使用这些工具。
关键洞察:"Human in the loop is necessary, but the current process itself makes the loop stultifying"(人机循环是必要的,但当前流程本身使得这个循环变得令人窒息)
项目背景
- 目标:为 Taggart Institute 构建一个课程完成证书生成系统
- 技术栈:Rust + Svelte + Typst(PDF生成)+ Claude Code
- 耗时:3 周完成(vs 过去类似项目 6 个月)
- 结果:功能正常,但开发过程"极其痛苦"
方法论
- Plan Mode:每个功能先用模型生成计划,写入外部 Markdown 文件
- TDD:每个功能先写测试,再实现代码
- 逐行审查:每行代码都必须人工审查
- 安全审计轮:完成后让模型扮演安全审计员角色
安全发现
安全审计轮发现的问题:
- 🔴 路径遍历漏洞:模板管理系统中的严重漏洞
- 🟠 Typst 模板注入:可能导致 DoS
- 🟡 时序侧信道:Argon2 哈希实现中,错误密码快速失败,正确密码耗时更长
"The model found some whopper vulns—most of which, but not all, I had observed emerging in the codebase."
核心教训
1. 功能有效,但代价巨大
代码最终比作者自己写的更完善(审计日志、GDPR 数据删除、加密验证等),但过程令人窒息——"大部分时间都在阅读代码变更并按下 1 键接受"。
2. 认知危害
"I let this thing into my brain, and now it is always there. For any new potential project, there is a voice in my head telling me how much easier it would be to let the model do it."
作者意识到这些模型是一种认知成瘾物质——它们以对人类繁荣有害的方式改变认知。
3. 人才流失危机
"The tool requires expertise to validate, but its use diminishes expertise and stunts its growth"——工具需要专业知识的验证,但使用它会削弱专业知识的发展。新开发者如何学习规则?如果日常工作只是"照顾"模型,如何成为专家?
4. Rust 是完美匹配
作者认为 Rust 是 AI 编程的最佳语言选择——类型安全、编译时检查、健壮的测试框架,能够帮助模型保持正轨。
深度评论
这是一篇罕见的、来自 AI 批评者的第一手实践报告。作者不是盲目反对 AI,而是在承认其功能有效的同时,深刻揭示了过程中的认知危害和职业危机。
对于 AI 编程工具的讨论,这篇文章提供了重要的平衡视角:
- ✅ 确实能快速完成项目
- ✅ 代码质量可以很高
- ✅ 安全审计环节有价值
- ❌ 过程极其痛苦
- ❌ 让人变成"观众"而非"作者"
- ❌ 存在认知成瘾风险
- ❌ 阻碍新手成为专家