AI Coding Assistant 实战一年:它能做什么,不能做什么
先说背景
2023 年 9 月,GPT-4 发布半年,Copilot 已经成了我每天离不开的工具,Claude 2 刚出来。那时候我大概已经重度使用 AI coding assistant 将近一年。
这篇文章不是来唱赞歌或泼冷水的。就是一年用下来,真实的工程反馈。
不聊"AI 会不会取代程序员"这种宏观话题。只聊:在真实的日常开发中,它有用吗?
它能做什么
1. 样板代码生成(Boilerplate)
这是最可靠的场景。给 AI 一个大致描述,它能快速生成标准模板。
# 我:帮我写一个 FastAPI 的 CRUD endpoint,传入 user_id 返回用户信息
# AI 输出:
@router.get("/users/{user_id}")
async def get_user(user_id: int):
user = db.query(User).filter(User.id == user_id).first()
if not user:
raise HTTPException(status_code=404, detail="User not found")
return {"id": user.id, "name": user.name, "email": user.email}这个 Copilot 做得很好,基本不用怎么改。
2. 生僻 API 的快速上手
比如你要用一个新的库,但不想通读文档:
我:用 Python 的 sendgrid 库发送邮件,怎么配置 API key 和发件人?AI 能给出可运行的示例代码,比查文档快。这个场景的成功率大概 80%。
3. 正则表达式
这应该是 Copilot 最被低估的功能。
我:帮我写一个正则,验证邮箱格式,不能用简单版本,要有基本的域名后缀检查import re
email_pattern = re.compile(
r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
)AI 写的正则通常比我自己写的更全面。
4. SQL 查询构建
-- 我:帮我写一个 SQL,统计每个月的订单数,要求只统计金额大于 100 的订单
SELECT
DATE_TRUNC('month', created_at) AS month,
COUNT(*) AS order_count
FROM orders
WHERE amount > 100
GROUP BY DATE_TRUNC('month', created_at)
ORDER BY month DESC;这个很稳。
它不能做什么
1. 复杂业务逻辑
业务逻辑有大量隐含假设和上下文。AI 不知道你公司的业务规则,它只能基于 prompt 里给的信息推断。
一个典型失败场景:
我:帮我写一个计算用户等级和积分的函数AI 会按它理解的"常识"写一套逻辑。但你公司的积分规则可能跟它假设的完全不同。这种代码看起来能跑,一上线就是 bug。
教训:业务逻辑代码,AI 只能辅助,不能主导。
2. 多文件协同的修改
让 AI “把这个函数的逻辑改一下” 很容易。但让它 “把这个函数改一下,然后确保所有调用这个函数的地方都兼容” 就难了。
AI 缺乏对整个代码库全局上下文的感知能力(至少在 2023 年 9 月这个版本是这样)。
3. 性能优化
让 AI 优化一段慢代码,它通常会给你一个听起来合理但实际不对的方案。
# AI 建议:把数据库查询放到循环外面
# 听起来对,但如果查询结果本身需要按行处理呢?性能问题需要理解数据特征和系统行为,AI 在这方面的推理经常出错。
4. 调试我自己的 bug
这是最让我意外的。AI 极不擅长调试由它自己生成的代码。
当你拿着一个报错问 AI"这个 bug 怎么修",它倾向于按最常见的错误模式猜测,而不是真的分析你当前的代码上下文。
更糟糕的是,它有时候会"自信地重构",把你本来没问题的代码改出新的 bug。
真实的效率数据
我统计过自己大概两个月的数据:
| 任务类型 | 节省时间 | 成功率 |
|---|---|---|
| Boilerplate 生成 | ~40% | 90% |
| API 文档查询 | ~60% | 80% |
| 正则表达式 | ~70% | 85% |
| SQL 构建 | ~50% | 85% |
| 业务逻辑代码 | ~10% | 40% |
| Bug 调试 | ~5% | 30% |
结论:样板代码场景性价比极高,业务逻辑场景性价比极低。
我的工作流
2023 年 9 月,我的实际工作流是这样的:
用 AI 的场景:
- 查不熟悉的库/框架的 API
- 生成测试用例(特别是边界条件)
- 写正则
- 生成 SQL
- 写文档注释
- 翻译代码(TypeScript ↔ JavaScript)
不用 AI 的场景:
- 业务逻辑实现
- 架构决策
- 调试
- 性能敏感代码
- 任何需要理解公司已有系统的地方
工具选择
2023 年 9 月我实际在用的组合:
- Copilot:主力,主要用于代码补全和简单生成
- ChatGPT (GPT-4):复杂任务,多轮对话,主要用于查文档和生僻问题
- Claude 2:长文本分析和代码审查,对超长 context 有需求时用
总结
AI coding assistant 是一个极其强大的样板代码生成器,加上一个还行的新型搜索引擎。
把它当成高级鹦鹉:能模仿,能生成,看着像那么回事,但不理解业务逻辑,也不真正"思考"。
用好了能省 20-30% 的开发时间(主要在样板代码场景)。用不好会浪费时间(特别是业务逻辑场景)。
最大的风险不是 AI 取代你,而是你开始过度依赖 AI 生成业务逻辑代码而不验证,最后上线出 bug。