AI写代码到底靠不靠谱?我让Claude Code+GLM5写了5个项目
2026年,AI写代码已经不是新鲜事。但AI写代码到底靠不靠谱?我让Claude Code写了5个真实项目,给出了成功率、代码质量、踩坑经验。

测试环境
工具: Claude Code(Anthropic的AI编程助手)
模型: GLM5
项目类型: 全栈Web应用、工具库、数据处理、脚本、API
测试周期: 2026年3月-4月
项目1:全栈Web应用(个人博客)
▪ 需求
功能:
-
文章发布、编辑、删除 -
标签分类 -
评论功能 -
Markdown编辑器 -
响应式设计
技术栈:
-
前端:React + TypeScript + Tailwind CSS -
后端:Node.js + Express + PostgreSQL -
部署:Docker + Nginx
▪ 结果
成功率: 85%
能做的:
-
✅ 生成项目脚手架(create-react-app + Express) -
✅ 设计数据库schema -
✅ 实现CRUD接口 -
✅ 实现前端页面布局 -
✅ 集成Markdown编辑器
不能做的:
-
❌ 复杂的交互逻辑(如拖拽排序) -
❌ 性能优化(如虚拟滚动) -
❌ 安全细节(如CSRF防护)
▪ 踩坑
坑1:生成的API没有错误处理
// Claude生成的代码app.get(‘/api/posts’, async (req, res) => { const posts = await db.query(‘SELECT * FROM posts’); res.json(posts);});// 需要手动添加app.get(‘/api/posts’, async (req, res) => { try { const posts = await db.query(‘SELECT * FROM posts’); res.json(posts); } catch (error) { console.error(error); res.status(500).json({ error: ‘Internal server error’ }); }});
坑2:SQL注入风险
// Claude生成的代码(有注入风险)app.get(‘/api/posts/:id’, async (req, res) => { const { id } = req.params; const post = await db.query(`SELECT * FROM posts WHERE id = ${id}`); res.json(post);});// 需要手动修复app.get(‘/api/posts/:id’, async (req, res) => { const { id } = req.params; const post = await db.query(‘SELECT * FROM posts WHERE id = $1’, [id]); res.json(post);});
▪ 评分
代码质量: ⭐⭐⭐⭐☆ (4/5)
可维护性: ⭐⭐⭐☆☆ (3/5)
安全性: ⭐⭐☆☆☆ (2/5)
项目2:工具库(日期处理)
▪ 需求
功能:
-
日期格式化 -
日期计算(加减天数) -
日期比较 -
时区转换 -
相对时间(如”3天前”)
技术栈:
-
TypeScript -
Jest(测试)
▪ 结果
成功率: 95%
能做的:
-
✅ 实现所有核心功能 -
✅ 处理边界情况(如闰年) -
✅ 编写单元测试 -
✅ 生成文档
不能做的:
-
❌ 性能优化(如大量日期的批量处理)
▪ 踩坑
坑1:时区处理有bug
// Claude生成的代码(有时区bug)function formatDateTime(date: Date, timeZone: string): string { return date.toLocaleString(‘en-US’, { timeZone });}// 实际测试时发现某些时区不准确// 需要手动修复function formatDateTime(date: Date, timeZone: string): string { return date.toLocaleString(‘en-US’, { timeZone, year: ‘numeric’, month: ‘2-digit’, day: ‘2-digit’, hour: ‘2-digit’, minute: ‘2-digit’, second: ‘2-digit’, hour12: false });}
▪ 评分
代码质量: ⭐⭐⭐⭐⭐ (5/5)
可维护性: ⭐⭐⭐⭐☆ (4/5)
测试覆盖: ⭐⭐⭐⭐☆ (4/5)
项目3:数据处理脚本(日志分析)
▪ 需求
功能:
-
解析日志文件 -
统计错误数量 -
生成报表 -
发送邮件通知
技术栈:
-
Python -
pandas -
smtplib
▪ 结果
成功率: 90%
能做的:
-
✅ 解析日志文件 -
✅ 统计错误数量 -
✅ 生成CSV报表 -
✅ 发送邮件
不能做的:
-
❌ 大文件处理(日志文件超过1GB时会OOM)
▪ 踩坑
坑1:大文件OOM
# Claude生成的代码(有OOM风险)def parse_log_file(file_path): with open(file_path, ‘r’) as f: lines = f.readlines() # 一次性读取所有行 # 处理逻辑…# 需要手动修复def parse_log_file(file_path): results = [] with open(file_path, ‘r’) as f: for line in f: # 逐行读取 # 处理逻辑… results.append(result) return results
▪ 评分
代码质量: ⭐⭐⭐⭐☆ (4/5)
性能: ⭐⭐⭐☆☆ (3/5)
健壮性: ⭐⭐⭐☆☆ (3/5)
项目4:RESTful API(任务管理)
▪ 需求
功能:
-
创建任务 -
更新任务 -
删除任务 -
查询任务列表 -
任务状态流转
技术栈:
-
Go + Gin -
PostgreSQL -
Docker
▪ 结果
成功率: 90%
能做的:
-
✅ 设计API规范 -
✅ 实现所有CRUD接口 -
✅ 数据库迁移 -
✅ 生成Swagger文档
不能做的:
-
❌ 复杂的查询(如多表联查) -
❌ 性能优化(如索引优化)
▪ 踩坑
坑1:并发安全问题
// Claude生成的代码(有并发问题)func UpdateTaskStatus(c *gin.Context) { id := c.Param(“id”) var req UpdateStatusRequest c.BindJSON(&req) // 查询 task, _ := db.GetTask(id) // 更新 task.Status = req.Status db.UpdateTask(task) c.JSON(200, task)}// 需要手动添加事务和乐观锁func UpdateTaskStatus(c *gin.Context) { id := c.Param(“id”) var req UpdateStatusRequest c.BindJSON(&req) tx := db.Begin() defer tx.Rollback() // 查询(加锁) task, _ := tx.GetTaskForUpdate(id) // 检查版本 if task.Version != req.Version { c.JSON(409, gin.H{“error”: “conflict”}) return } // 更新 task.Status = req.Status task.Version++ tx.UpdateTask(task) tx.Commit() c.JSON(200, task)}
▪ 评分
代码质量: ⭐⭐⭐⭐☆ (4/5)
并发安全: ⭐⭐⭐☆☆ (3/5)
性能: ⭐⭐⭐☆☆ (3/5)
项目5:CLI工具(文件转换)
▪ 需求
功能:
-
转换图片格式(PNG→JPG, JPG→PNG) -
批量处理 -
压缩图片 -
生成缩略图
技术栈:
-
Rust -
clap(命令行解析) -
image库
▪ 结果
成功率: 80%
能做的:
-
✅ 命令行参数解析 -
✅ 图片格式转换 -
✅ 批量处理 -
✅ 生成缩略图
不能做的:
-
❌ 复杂的压缩算法 -
❌ 多线程优化
▪ 踩坑
坑1:内存泄漏
// Claude生成的代码(有内存泄漏)fn convert_image(input: &Path, output: &Path) -> Result<()> { let img = image::open(input)?; img.save(output)?; Ok(())}// 需要手动添加资源清理fn convert_image(input: &Path, output: &Path) -> Result<()> { let img = image::open(input)?; let mut out_file = File::create(output)?; img.write_to(&mut out_file, ImageFormat::Png)?; drop(out_file); // 显式释放 Ok(())}
▪ 评分
代码质量: ⭐⭐⭐☆☆ (3/5)
性能: ⭐⭐⭐☆☆ (3/5)
安全性: ⭐⭐⭐⭐☆ (4/5)
总结:AI写代码的优缺点
▪ 优点
- 速度快
生成脚手架、CRUD代码比手写快10倍 - 覆盖广
各种编程语言、框架都能处理 - 代码规范
生成的代码通常符合最佳实践 - 降低门槛
新手也能快速搭建项目
▪ 缺点
- 不擅长复杂逻辑
如性能优化、并发安全、安全防护 - 有bug
生成的代码需要测试和review - 缺乏上下文
不知道项目的业务逻辑和架构 - 过度依赖
可能导致开发者能力退化

如何正确使用AI写代码?
▪ 1. 搭建脚手架
✅ 适合: 生成项目结构、基础配置
❌ 不适合: 复杂的架构设计
▪ 2. 生成样板代码
✅ 适合: CRUD接口、基础页面
❌ 不适合: 核心业务逻辑
▪ 3. 编写测试
✅ 适合: 单元测试、集成测试
❌ 不适合: 性能测试、压力测试
▪ 4. 代码审查
✅ 适合: 检查代码风格、常见错误
❌ 不适合: 业务逻辑review
一句话记住核心
AI写代码 = 快速生成脚手架 + 大量样板代码 + 需要人工测试和优化
AI是助手,不是替代。真正有价值的是:理解业务、架构设计、性能优化、安全防护——这些都需要人的判断。
AI已来,程序员的天已经塌了!
有产品Sense的程序员将统治世界!
夜雨聆风