Skip to main content

AI 能做什么,不能做什么

使用 AI Coding 前,最重要的不是先记住多少提示词技巧,而是建立正确的能力边界:AI 很擅长快速生成候选方案,但不擅长独立确认真实需求、保证事实正确或承担最终责任。 如果把 AI 当成万能专家,容易盲目接受错误;如果把它当成只能聊天的玩具,又会错过大量效率提升。更合理的定位是:AI 是速度很快、知识面很广,但需要明确任务、充分上下文和持续审查的开发助手。

先做一个判断

假设你对 AI 说:“帮我做一个安全、好用、性能优秀的登录系统。” AI 可以迅速生成页面、接口和数据库代码,但它并不知道:
  • 你的真实用户是谁;
  • 公司采用什么安全规范;
  • 项目现有架构和历史约束;
  • “性能优秀”的具体指标;
  • 哪些登录方式符合业务成本和法律要求;
  • 生成的代码在真实环境中是否一定正确。
这说明 AI 的能力取决于任务类型、输入质量、工具权限和验证流程,而不是仅仅取决于模型“聪不聪明”。

AI 擅长做什么

1. 解释代码与技术概念

AI 可以把复杂代码翻译成更容易理解的语言,说明函数作用、数据流和常见设计模式。 适合的请求包括:
  • “逐步解释这个函数做了什么”;
  • “比较 REST 与 GraphQL 的区别”;
  • “解释这条报错信息中的每一部分”;
  • “用零基础能理解的方式说明异步编程”。
但解释仍要结合真实代码和官方资料验证,尤其是冷门库或新版本功能。

2. 生成代码初稿和样板代码

AI 对常见、结构清晰、重复性高的代码通常表现较好,例如:
  • 表单、列表、接口调用等常见功能;
  • 数据结构、类型定义和基础配置;
  • CRUD 接口和样板模块;
  • 正则表达式、脚本和数据转换;
  • 测试、注释、README 和接口文档初稿。
关键词是“初稿”。生成后仍需检查逻辑、边界、安全性和项目一致性。

3. 协助调试

当你提供完整报错、相关代码、输入数据和期望结果时,AI 可以:
  • 解释错误信息;
  • 列出可能原因;
  • 建议添加哪些日志;
  • 帮助构造最小复现;
  • 比较不同修复方案;
  • 根据测试反馈继续缩小范围。
AI 最适合帮助提出和整理假设,而不是在没有证据时“一键修复”。

4. 审查与改进代码

AI 可以从多个角度快速扫描代码:
  • 潜在逻辑错误和遗漏的边界情况;
  • 重复代码和可读性问题;
  • 常见安全风险;
  • 不一致的命名和风格;
  • 可能缺失的测试;
  • 文档与实现不一致之处。
它可以成为第一轮审查助手,但不能替代项目维护者或安全专家的最终评审。

5. 拆解任务和提供方案

面对一个较大的需求,AI 可以协助:
  • 澄清模糊点;
  • 把目标拆成可执行步骤;
  • 对比技术方案及其优缺点;
  • 生成实施计划和验收清单;
  • 识别依赖关系和潜在风险。
最终方案需要人结合团队能力、成本、时间和长期维护做出取舍。

6. 执行重复性工作

连接编辑器或终端工具后,AI 可以协助完成:
  • 批量重命名和格式调整;
  • 迁移重复的 API 用法;
  • 生成多组相似测试;
  • 更新注释和文档;
  • 运行构建、检查和测试命令;
  • 根据明确规则修改多个文件。
这类任务应提前限定范围,并通过版本差异确认没有误改。

AI 不能可靠地做什么

这里的“不能”不是指永远无法生成某种结果,而是指:不能在缺少人工监督的情况下稳定保证正确。

1. 不能自动知道你没有提供的信息

AI 不知道你的隐含想法、口头约定、未打开的文件和真实业务背景。如果提示词里没有说明,它通常只能根据常见模式猜测。 错误期待:
你应该知道我想要什么。
正确做法:提供目标、环境、相关代码、限制条件和验收标准。

2. 不能保证输出一定正确

AI 可能生成:
  • 不存在的函数、库或参数;
  • 与当前版本不兼容的写法;
  • 语法正确但业务逻辑错误的代码;
  • 只处理正常流程、忽略异常情况的实现;
  • 表面修复报错但破坏其他功能的改动。
因此,任何代码都需要运行、测试和审查。

3. 不能独立定义真实需求

AI 可以帮助提问和整理需求,却无法替代真实用户、产品负责人或业务团队决定:
  • 功能到底解决什么问题;
  • 哪些需求优先;
  • 什么体验可以接受;
  • 成本、风险和时间如何权衡;
  • 功能是否真正有价值。
AI 可以提供候选答案,但真实需求来自现实世界。

4. 不能承担安全、隐私和合规责任

AI 可以指出常见风险,却不能保证系统绝对安全,也不能替组织承担责任。 高风险领域必须由人严格把关,例如:
  • 身份认证与权限控制;
  • 密码、密钥和隐私数据处理;
  • 支付与财务计算;
  • 医疗、法律和监管相关功能;
  • 删除数据、生产部署和权限变更。
遇到这些任务,应限制 AI 权限、进行专业评审并保留审计记录。

5. 不能用流畅表达代替真实证据

AI 的回答可能结构完整、语气肯定,但“说得像真的”不等于“已经证明”。 当 AI 声称“测试全部通过”“没有安全风险”或“已经兼容旧版本”时,应继续追问:
  • 实际运行了哪些命令?
  • 测试结果在哪里?
  • 修改了哪些文件?
  • 依据的是哪段代码或哪份官方文档?
  • 哪些情况尚未验证?

6. 不能替你承担最终决策

是否合并代码、发布功能、迁移数据或执行高风险命令,必须由有责任和权限的人决定。

不同任务的适合程度

判断一个任务能否放心交给 AI

可以用下面五个问题做快速检查:
  1. **任务是否清晰?**是否有明确输入、输出和验收标准?
  2. **错误代价多大?**失败只是页面样式不佳,还是会造成数据、金钱或安全损失?
  3. **结果能否验证?**是否有测试、日志、预览或人工检查方法?
  4. **修改能否回滚?**是否使用版本控制、备份和小步提交?
  5. **AI 权限是否合适?**它是否只能访问完成任务所需的文件和工具?
任务越清晰、风险越低、越容易验证和回滚,就越适合让 AI 多做;任务越模糊、风险越高、越难验证,人就必须更深度参与。

一个对比例子:同样是“删除”

低风险:删除测试项目中的临时日志

AI 可以搜索特定日志、列出修改计划、删除后运行测试,再由人查看差异。任务明确、可回滚、影响范围有限。

高风险:删除生产数据库中的重复用户

AI 可以协助分析重复规则和生成查询草案,但不能直接执行。人需要确认识别规则、备份数据、预览影响行数、设计恢复方案,并经过授权后再操作。 两者都叫“删除”,但风险和验证成本完全不同,因此人机分工也不同。

小练习:哪些可以多交给 AI?

请判断以下任务中,哪些可以让 AI 多做,哪些需要人重点把关:
  1. 给一个学习项目生成 README 初稿;
  2. 根据明确接口生成数据类型定义;
  3. 决定是否将全部用户数据迁移到新数据库;
  4. 分析一条带完整堆栈的测试报错;
  5. 审核支付接口是否可以直接上线;
  6. 批量重命名项目中的一个内部函数。

参考答案

**判断原则:**低风险、规则明确、容易验证和回滚的任务,可以让 AI 多做;高风险、需求模糊、难以验证或责任重大的任务,必须由人主导。

本节结论

AI 能快速解释、生成、拆解、调试、审查和执行重复工作,却不能自动知道隐含信息、保证永远正确、独立定义真实需求或承担安全与上线责任。 掌握 AI Coding 的关键,不是把所有工作都交给 AI,而是学会判断:什么可以让 AI 起草,什么必须由人决定,什么一定要用代码、测试和真实反馈验证。