目录

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。