一些关于AI编程的经验和教训,欢迎指点

原文在这里 https://mp.weixin.qq.com/s/y6y5sf-OtaTrHshRG6VlXg

介绍一下我自己的情况,我使用了一年左右的AI编程了,一年前,我还在为了一个bug大骂AI不靠谱,现在可以说目前90%的代码都是用AI来帮我完成的,不论工作上还是日常开发,AI基本都能出色地完成我布置的任务,这中间的转变,一方面是因为模型能力的增强,另一方面也是我踩了无数的坑。现在我将我的经验和教训给大家分享一下,我拧干水分,保证全是干货。

如果你是正在使用AI编程,相信我,这篇文章或多或少会让你有所收获!

工具选择

AI编程现在的工具选择非常的多,那么我们要如何来选择一个合适的呢?请看下表

td {white-space:nowrap;border:0.5pt solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}
名字 上手难度 费用 编码能力 可用模型 适用人群
claudeCode 高,主要是是靠命令行 毕竟贵,官方的要200美刀一个月,国内中转镜像也要300左右 强,有所降智但是我认为还是目前的No.1 以claude系列为主,也可以外接其他的模型 适合有一定编程基础的,对编码要求较高的人群
cursor 中等,有UI界面,大部分为英文,需要中文插件 略贵,20美刀一个月只能用五百次左右请求,基本要开60美刀的套餐 比较强,比cc差一点 选择性比较多,出来claude系列还有gpt,gemini 适合零基础,有一定经济基础的
trae 简单,字节开发的,对国内用户友好 首月3美刀,然后10美刀一个月,无限制使用 比cursor略差一点 和cursor基本一致 新人我建议无脑冲,经济实惠,前期做简单项目完全够了
codeX 高,主要是是靠命令行 20美刀的GPT套餐够日常需求 我觉得不必CC差多少 GPT5 最佳用法是和claude code一起搭配使用,比如用来做代码审查和文档评审

我一直用的就是Claude Code也推荐大家,如果经济条件允许还是要第一梯队的产品,给到的体验是完全不一样的

但是如果你是纯小白,我建议还是先从trae开始,经济实惠,界面友好,非常适合用于学习

规则

不管使用哪个编程工具,都会有一个类似于规则或者记忆的东西,这个非常的重要,如果你刚接触AI编程,一定要先了解规则。我就用我最熟悉的Claude Code为例,看看他的规则在哪里

  1. 用户记忆:~/.claude/CLAUDE.md

这里存放一些所有项目都希望遵守的规则,比如说我们默认的语言,在什么时候调用什么mcp

说实话,这个是有点玄学在身上的,不知道各位有没有和我一样,总感觉有时候遵守,有时候不遵从,我试了很多个规则,我推荐我当下的一个 AI编程规则

  1. 项目记忆:./CLAUDE.md

这里是存放当前项目的一些规范,比如项目架构,技术栈,API设计约定,能让AI在开始工作前就对项目有全局认知,减少后续的沟通成本。

这里我推荐大家按照 AGENTS.md的规范填写,现在很多AI编程工具都支持的,核心是构建以下内容

  • Project overview 项目概述

  • Build and test commands 构建和测试命令

  • Code style guidelines 代码风格指南

  • Testing instructions 测试说明

  • Security considerations 安全注意事项

我一般会直接让Claude Code帮我生成

关于一些示例,大家可以在网站 AGENTS.md 里面去查看一下其他的

高质量Prompt编写

前两天我听到了一个播客,里面说现在的AI已经很强大了,如果没有完成我们的任务,大概率是由于我们的上下文没有提供足够。

我觉得挺有道理,你给它的上下文,比你提的需求更重要

比如有个场景,你把项目中的一个函数发给Claude,让它优化。它完美地重构了这一个函数,但是运行起来以后,整个应用都崩溃了。因为Claude不知道,这个函数被项目里另外五个地方用不同的方式调用着。

再比如有些人直接说

创建一个管理用户的服务"

而我会这么写

分析现有UserService的模式,创建ProfileService并遵循相同约定。

要求:

  • 集成AWS Cognito认证

  • 继承BaseService处理错误

  • 使用Spring Cache + Redis实现缓存

  • 测试遵循项目的Given-When-Then模式

然后要适当引用部分的文件,比如需要model的代码,我们就指定相关的model代码,而不要一股脑全部丢进去

记住我们的提示词越精准,AI完成度就越高,比如以下的提示词

这是一个很详细的提示词,直接一轮就帮我完成了所有代码,我们在让AI帮我们干活的时候,我是比较建议在一个文档上面,先把提示词写清楚,确保没有歧义,然后逻辑说清楚了再给到AI帮我们实现。

如果你怕搞不清楚,你和AI说:在开始写代码前,先问我一些澄清问题

确保没有歧义了,我们让它进行代码编写

spec工作模式

写好单个Prompt只是基础,但想让AI完成复杂项目,就需要一套更宏观的工作流,比如规范驱动开发

就是我们要先创建用户需求文档,然后技术文档,然后再是任务,这个我不过多阐述,主要就是一种方法论,防止AI乱飞的方式,大家可以看我往期的两篇文章

其实还有一种开发方式就是 测试驱动开发(TDD)

这种理念就是先写测试代码,然后再写实现,然后不断增加测试用例,来完善实现,这种方式可以很好的保证功能实现,我建议大家在一些复杂逻辑的功能,可以和AI说,采用TDD的规范进行开发,现在先写测试代码

善用MCP

有个场景:你让Claude使用一个的第三方库来处理数据,它自信满满地给了一段代码,你复制运行,满屏报错。经过半小时的排查,你才发现代码里那个关键的函数,是Claude自己发明的,那个库里根本没有。

我相信有很多人都会有共鸣,这时候我们就要用mcp来解决问题,比如我们如果安装了 context7 这个mcp会去拉取第三方库的官方文档,这样就能规避这个问题,当然还有很多其他的mcp,你可以参考我的这篇文章

学会禁止

我觉得禁止让AI干什么比告诉它要干什么更重要,应该更多的说什么不能干

比如很多时候一些简单逻辑是不需要测试代码的,还有README文件,AI很喜欢突然写个README文件,说实话,我觉得它在故意浪费我的Token

架构设计

在开始编码之前一定要和AI先沟通整体架构,尽可能的拆分的足够细致,比如复杂逻辑拆成多个子模块,遵循高内聚,低耦合,拆分的越细致,AI改崩的概率越低

记住你对软件工程的理解,决定你对AI编程的上限

对于没有经验的小白来说这一点真的很难,所以我这里也是建议小白不要想着搞一个什么大项目,我们先从一些小的项目开始做起,做一个MVP产品,慢慢迭代

这里还需要说一下,我们架构一定要简单一点,特别是MVP产品,我们尽量全部用node.js开发,这样部署简单,能够快速的拿到结果

推荐架构:

  • react作为前端框架

  • vercel serverless functions 完成后端实现

  • supabase作为数据库

  • vercel进行部署

这一套技术栈对AI编程非常友好,生态也很熟悉,特别适用于小而美的项目,最重要的是都可以白嫖,不花钱

UI设计

我总结了以下方法

  • 要设定组件库

    • React UI组件库有Material-UI、Ant Design

    • Vue.js UI组件库有Element UI

    • 通用UI组件库有Bootstrap等

  • 指定风格

    • 苹果的Apple Design

    • 谷歌的Material Design

    • 适合企业应用的Ant Design

    • 以及磨砂玻璃风的Glassmorphism

    • 扁平风的Flat Remix

  • 运用参考图

    • dribbble找到设计图片

    • 然后让AI生成包含设计规范的json

    • 让AI参照规范进行制作

  • Figma/Pixso将设计稿转成code

前端先行

在UI设计以后,我是建议先完成前端开发,我们先让AI用开发出整体样式,不要考虑功能实现,等整个前端功能完成以后,我们再进行后端接入

版本管理,你的后悔药

一定一定要用git进行版本管理,这是你的后悔药。

代码写崩了的时候 直接 git reset --hard直接从头再来

比如我前段时间写了一个项目,就是接入supabase的时候搞错了第三方库,给我弄得乱七八糟的,不停地让改bug,反而越改越多。我选择直接回滚,将库指定好然后就很快搞好了。

我是建议你每完成一个重要的需求,你就让AI帮你Git提交一下

安全

主要需要检查三点:

  1. 用户输入区域,只要是用户输入的都要进行校验,我记得有一个攻击方式就是在用户注册的时候,用户名没有限制,破坏者直接用脚本输入一个5M大小的用户名,直接给干崩了

  2. 第三方依赖,我们尽量不要去使用一些小的开源项目,还是要找一些star比较多的项目

  3. 敏感数据,主要就是一些apiKey,我们决定禁止放在前端,必须放到后端环境变量中。因为我们这些数据泄露了是很严重的,比如我们接入了 Deepseek的api,如果我们的发生了泄露,别人就可以用你的apikey进行调用API,你可能突然就没钱了

慢就是快

这句话大家一定要记在心里,不要想着别人说一个小时就做出来个项目,然后你也直接一股脑让AI一次性生成代码,这样你大概率是直接崩溃的

一行一行地写,比一次性生成更高效。比如说让它先写函数A,测试通过后,再让它基于函数A写函数B,像搭积木一样前进。

写到最后

我一直以来对 AI 的定义都是:人人都配备的高潜实习生

对当下的 AI 实习生,应该安排合适的任务,给予合适的指导及信息输入,并随时做好帮它兜底,并随时接手,就像你带一个真人实习生一样没啥区别,要么没用好,要么没雇好。

现在不要只收藏,快去试一下,给你的实习生分配一下任务,做出一个自己的应用

226 个赞

感谢佬友分享 :folded_hands:

干货啊佬

感谢分享

感谢大佬分享!很受用

先赞了,最近在关注这些资料

写的很棒

1 个赞

感谢分享!

:cow_face::beer_mug:

1 个赞

感谢大佬分享 :+1:

1 个赞

很有道理,感谢分享

感谢大佬

感谢分享,蛮不错的

1 个赞

感谢分享,干货。

有时间好好学习一下

感谢分享

1 个赞

写的真不错,给你点赞了,佬能否也给我点个赞。

1 个赞

写得真好啊,受教了

感谢分享,有心了。

感谢分享