news 2026/5/7 22:35:29

AI编程实战:从安装到第一个项目,手把手教你用Cursor做开发

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI编程实战:从安装到第一个项目,手把手教你用Cursor做开发

早上写了篇有关AI编程的理论,具体见公众号今天早上发布的文章《AI编程实战:从安装到第一个项目,手把手教你用Cursor做开发》

下午思考了下,还是需要有一篇如何动手AI编程的实战文章。

见过不少人装了Cursor、下了Claude Code,然后就没然后了。

不是因为工具难用,而是不知道从哪里开始。

这篇文章手把手带你从零开始,到跑通第一个真实项目。

学完之后,你可以:

  • 用Cursor写一个完整的用户管理模块

  • 知道怎么配置项目约束文件

  • 理解什么人该交给AI,什么不该

一、安装Cursor:10分钟搞定

1.1 下载安装

官网地址:cursor.com

支持 Windows、macOS、Linux。安装包约200MB,双击一路点"下一步"即可。

小提示:windows的读者,安装路径建议不要选C盘。Cursor的缓存会占用不少空间。

1.2 登录账号

登录方式

优缺点

GitHub账号

快捷,推荐

邮箱注册

通用

免费版够用(有次数限制,每个重置次数限制),Pro版$20/月。

二、配置AI模型

2.1 支持的模型

模型

提供方

特点

Claude 3.5 Sonnet

Anthropic

编程能力强,推荐

GPT-4o

OpenAI

综合能力强

DeepSeek

深度求索

国内可用,便宜

cursor-small

Cursor自带

免费但较弱

2.2 配置DeepSeek(国内用户推荐)(我用的cursor 3.2.21版本)

1. 打开Cursor设置:Cmd + ,(Mac)或 Ctrl + ,(Windows)

2. 点击左侧 Models 选项卡

3. 找到 OpenAI API Key 输入框,填入你的DeepSeek API Key

4. 找到 Override OpenAI Base URL(有些版本叫Base URL),填入:https://api.deepseek.com/v1

5. 向下滚动,找到 Add Model 按钮,点击

6. 在弹出框中手动输入模型名称:

  • `deepseek-chat`(常规编程,推荐)

  • 或 `deepseek-reasoner`(深度推理)

验证配置:打开任意代码文件,按 Cmd + L 打开Chat面板,在模型下拉菜单中选择DeepSeek,发送一条消息测试。

三、第一个AI编程案例:用户注册功能

3.1 场景

做一个用户注册功能:

  • 输入:用户名、邮箱、密码

  • 处理:密码加密(bcrypt)、参数校验

  • 输出:JWT token

3.2 项目结构

my-project/├── src/│ ├── app.py# Flask应用入口│ ├── models/│ │ └── user.py# 用户模型│ ├── routes/│ │ └── auth.py# 认证路由│ └── utils/│ └── jwt_utils.py# JWT工具├──.cursorrules# 项目约束文件├── requirements.txt └── README.md

3.3 配置项目约束文件

在项目根目录创建 .cursorrules:

# 项目约定 ## 技术栈 - 后端:Python 3.11 + Flask - 数据库:SQLite(开发用) - ORM:SQLAlchemy - 密码加密:bcrypt - Token:PyJWT ## 编码规范 - Python函数命名:snake_case - 类命名:PascalCase - 注释:中文 - 行长度:不超过120字符 ## 错误处理 - 使用自定义异常类 - 所有API都要有try-except包裹 - 错误返回统一格式:{"code": 错误码, "message": "错误信息"} ## 禁止事项 - 不要使用eval() - 不要在代码里硬编码密码或密钥 - 不要省略参数类型注解

3.4 开始写代码

Step 1:创建用户模型

打开 src/models/user.py,输入:

帮我创建用户模型,包含字段:id、用户名、邮箱、密码哈希、创建时间

Cursor生成:

fromdatetimeimportdatetimefromsqlalchemyimportColumn,Integer,String,DateTimefromsqlalchemy.ext.declarativeimportdeclarative_base Base=declarative_base()classUser(Base): __tablename__="users"id=Column(Integer,primary_key=True,autoincrement=True)username=Column(String(50),unique=True,nullable=False,index=True)email=Column(String(100),unique=True,nullable=False,index=True)password_hash=Column(String(255),nullable=False)created_at=Column(DateTime,default=datetime.utcnow)def __repr__(self):returnf"<User {self.username}>"

Step 2:审查并修改

审查后发现:

  • ❌ 缺少密码最小长度验证

  • ❌ 缺少updated_at字段

选中代码,按 Ctrl+K,输入:

添加:1.密码最小8位验证2.updated_at字段3.邮箱格式验证

Cursor修改后:

importrefromdatetimeimportdatetimefromsqlalchemyimportColumn,Integer,String,DateTimefromsqlalchemy.ext.declarativeimportdeclarative_baseimportbcrypt Base=declarative_base()classUser(Base):__tablename__="users"id=Column(Integer,primary_key=True,autoincrement=True)username=Column(String(50),unique=True,nullable=False,index=True)email=Column(String(100),unique=True,nullable=False,index=True)password_hash=Column(String(255),nullable=False)created_at=Column(DateTime,default=datetime.utcnow)updated_at=Column(DateTime,default=datetime.utcnow,onupdate=datetime.utcnow)defset_password(self,password:str)->None:"""设置密码,自动加密"""iflen(password)<8:raiseValueError("密码至少8位")ifnotre.match(r"[^@]+@[^@]+\.[^@]+",self.email):raiseValueError("邮箱格式不正确")self.password_hash=bcrypt.hashpw(password.encode('utf-8'),bcrypt.gensalt()).decode('utf-8')defcheck_password(self,password:str)->bool:"""验证密码"""returnbcrypt.checkpw(password.encode('utf-8'),self.password_hash.encode('utf-8'))def__repr__(self):returnf"<User{self.username}>"

Step 3:创建JWT工具

打开 src/utils/jwt_utils.py,输入:

帮我创建JWT工具类,包含:1.生成token方法2.验证token方法3.提取用户ID方法

Cursor生成:

importjwtfromdatetimeimportdatetime,timedeltafromtypingimportOptionalclassJWTUtils:SECRET_KEY="your-secret-key-change-in-production"ALGORITHM="HS256"EXPIRE_HOURS=24@classmethoddefgenerate_token(cls,user_id:int)->str:"""生成JWT token"""expire=datetime.utcnow()+timedelta(hours=cls.EXPIRE_HOURS)payload={"user_id":user_id,"exp":expire,"iat":datetime.utcnow()}returnjwt.encode(payload,cls.SECRET_KEY,algorithm=cls.ALGORITHM)@classmethoddefverify_token(cls,token:str)->Optional[dict]:"""验证token,返回payload或None"""try:payload=jwt.decode(token,cls.SECRET_KEY,algorithms=[cls.ALGORITHM])returnpayloadexceptjwt.ExpiredSignatureError:returnNoneexceptjwt.InvalidTokenError:returnNone@classmethoddefget_user_id(cls,token:str)->Optional[int]:"""从token中提取用户ID"""payload=cls.verify_token(token)ifpayload:returnpayload.get("user_id")returnNone

Step 4:创建认证路由

打开 src/routes/auth.py,输入:

帮我创建用户认证路由,包含:1. 用户注册接口 POST /register2. 用户登录接口 POST /login 要求:参数校验、错误处理、返回格式统一

Cursor生成:

fromflaskimportBlueprint,request,jsonifyfromsrc.models.userimportUser,Base,enginefromsrc.utils.jwt_utilsimportJWTUtilsfromsqlalchemy.ormimportsessionmakerfromsqlalchemy.excimportIntegrityError auth_bp=Blueprint('auth',__name__,url_prefix='/api/auth')Session=sessionmaker(bind=engine)classAPIError(Exception):"""自定义API异常"""def__init__(self,message:str,code:int=400):self.message=message self.code=codesuper().__init__(message)@auth_bp.errorhandler(APIError)defhandle_api_error(error):"""统一错误处理"""returnjsonify({"code":error.code,"message":error.message}),error.code@auth_bp.route('/register',methods=['POST'])defregister():"""用户注册"""data=request.get_json()ifnotdata:raiseAPIError("请求体不能为空",400)username=data.get('username','').strip()email=data.get('email','').strip()password=data.get('password','')ifnotusername:raiseAPIError("用户名不能为空",400)ifnotemail:raiseAPIError("邮箱不能为空",400)ifnotpassword:raiseAPIError("密码不能为空",400)user=User(username=username,email=email)try:user.set_password(password)exceptValueErrorase:raiseAPIError(str(e),400)session=Session()try:session.add(user)session.commit()returnjsonify({"code":200,"message":"注册成功","data":{"user_id":user.id,"username":user.username,"email":user.email}}),201exceptIntegrityError:session.rollback()raiseAPIError("用户名或邮箱已存在",409)finally:session.close()@auth_bp.route('/login',methods=['POST'])deflogin():"""用户登录"""data=request.get_json()ifnotdata:raiseAPIError("请求体不能为空",400)username=data.get('username','').strip()password=data.get('password','')ifnotusernameornotpassword:raiseAPIError("用户名和密码不能为空",400)session=Session()try:user=session.query(User).filter_by(username=username).first()ifnotuserornotuser.check_password(password):raiseAPIError("用户名或密码错误",401)token=JWTUtils.generate_token(user.id)returnjsonify({"code":200,"message":"登录成功","data":{"token":token,"user_id":user.id,"username":user.username}})finally:session.close()

四、什么人该交给AI,什么不该

AI擅长的

场景

效果

示例

CRUD代码

⭐⭐⭐⭐⭐

用户管理、列表查询

重复性代码

⭐⭐⭐⭐⭐

增删改查、参数校验

代码翻译

⭐⭐⭐⭐⭐

Java转Python

代码优化

⭐⭐⭐⭐

重构、添加注释

测试生成

⭐⭐⭐⭐

单元测试、集成测试

AI不擅长的

场景

原因

建议

核心业务逻辑

AI不懂你们公司的业务

自己做设计

复杂Bug定位

需要深入上下文

人工排查

架构决策

需要综合考量

团队讨论

安全敏感代码

AI可能忽略安全细节

自己做审查

经验总结

AI写代码的标准流程:

1.我设计功能怎么做

2.AI写具体代码

3.我审查每一行

4.有问题让AI改

绝对不让AI做的:数据库schema设计、安全相关代码、核心算法

五、常见问题

Q1:Cursor免费版够用吗?

够用。免费版每月2000次Tab补全、50次慢速Premium请求。

Q2:AI生成的代码有bug怎么办?

正常。AI生成的代码一定要review。先让AI写100行以内的代码,写完立即测试。

Q3:Context窗口不够用怎么办?

每个功能开新对话,用.cursorrules配置项目规范。

六、总结

  • ✅ 安装配置好了Cursor

  • ✅ 配置好了AI模型

  • ✅ 用Cursor写了完整的用户注册登录模块

  • ✅ 知道什么该交给AI,什么不该

AI编程不是让你"躺平",而是让你把时间花在更有价值的地方。


关于作者

作者:近 20 年技术生涯,待过大厂也创过业。 懂大厂的规范与困境,也懂创业公司的敏捷与无奈。 懂技术也懂商业,实践用技术重构传统业务。

欢迎转发,转载请注明出处。


📌 觉得有用?欢迎:

点赞 - 让更多人看到

转发 - 分享给需要的同事/朋友

关注 - 不错过后续更多精彩内容分享

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 22:35:29

Boss-Key终极指南:Windows窗口一键隐藏与隐私保护完全手册

Boss-Key终极指南&#xff1a;Windows窗口一键隐藏与隐私保护完全手册 【免费下载链接】Boss-Key 老板来了&#xff1f;快用Boss-Key老板键一键隐藏静音当前窗口&#xff01;上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 在数字化办公时代&a…

作者头像 李华
网站建设 2026/5/7 22:31:42

ChanlunX:通达信自动化缠论分析插件终极指南

ChanlunX&#xff1a;通达信自动化缠论分析插件终极指南 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 在股票投资领域&#xff0c;技术分析是众多投资者获取市场信号的重要工具。然而&#xff0c;传统的…

作者头像 李华
网站建设 2026/5/7 22:26:35

如何快速掌握缠论分析:通达信用户的终极自动化指南

如何快速掌握缠论分析&#xff1a;通达信用户的终极自动化指南 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 你是否还在为复杂的缠论技术分析而烦恼&#xff1f;每天花费大量时间手动绘制笔、线段和中枢…

作者头像 李华
网站建设 2026/5/7 22:12:36

0203国产光刻机突围全景:产业链协同与验证生态(B级 短期优先突破)第三章 晶圆厂验证壁垒破解思路(全量化落地参数·工程实操版)

华夏之光永存&#xff1a;国产光刻机突围全景&#xff1a;产业链协同与验证生态&#xff08;B级 短期优先突破&#xff09; 第三章 晶圆厂验证壁垒破解思路&#xff08;全量化落地参数工程实操版&#xff09; 摘要 直击国产光刻设备、光刻胶、配套耗材无法进入头部晶圆量产线核…

作者头像 李华