Cursor教程:用AI从零构建Python学生管理系统全过程

什么是Cursor AI代码编辑器
Cursor 是一款在开发者社区快速走红的 AI 代码编辑器。它的核心价值在于把大语言模型深度集成到编码工作流中,让开发者能够通过自然语言对话来完成文件生成、代码编写、错误修复乃至项目运行的全流程操作。
这里所说的大语言模型(LLM),是基于Transformer架构、通过海量文本数据训练而成的人工智能模型,具备理解和生成自然语言及代码的能力。Transformer是2017年由Google团队在论文《Attention Is All You Need》中提出的深度学习架构,其核心创新——自注意力机制(Self-Attention)——使模型能够同时关注输入序列中任意位置的信息,从而捕捉长距离依赖关系。这一特性对代码理解尤为关键,因为代码中函数定义与调用、变量声明与使用往往相隔数百行甚至跨越多个文件。传统代码编辑器的智能辅助通常局限于语法高亮、自动补全和静态分析,而将LLM集成到编辑器中意味着AI能够理解开发者的自然语言意图,进行跨文件的语义推理,并生成完整的功能模块。这种集成方式与GitHub Copilot的行内补全不同,Cursor采用的是对话式交互范式,更接近于将一个具备编程能力的AI助手直接嵌入开发环境。GitHub Copilot主要在开发者输入代码时提供逐行或逐块的补全建议,交互模式是「开发者主导、AI跟随」;而Cursor的对话模式允许开发者用一段自然语言描述完整需求,AI则自主规划并执行多步操作,交互模式更接近「开发者描述、AI执行」。这意味着Cursor对用户的编程能力要求更低——你不需要知道代码该怎么写,只需要清楚地描述你想要什么。
从产品形态上看,Cursor 与开发者熟悉的 VS Code 高度相似——左侧是项目目录,中间是代码展示区。这种相似性并非巧合:Cursor实际上是基于VS Code的开源代码(即Code - OSS)进行二次开发的产物,而非简单的插件扩展。VS Code由微软开发,采用Electron框架构建,本身就具备高度的可扩展性。Electron是一个使用Web技术(HTML、CSS、JavaScript)构建跨平台桌面应用的框架,它将Chromium浏览器引擎和Node.js运行时打包在一起,使得Web开发者能够用熟悉的技术栈开发桌面软件。VS Code正是Electron最成功的应用案例之一,它的架构设计允许通过Extension API进行功能扩展。然而,Cursor团队选择fork VS Code的代码库而非开发插件,是因为插件API的权限限制无法满足深度AI集成的需求——例如直接操控文件系统、拦截终端输出用于错误分析、以及在编辑器层面实现多文件联动修改等功能,都需要对编辑器核心进行改造。所谓fork,是指从开源项目的代码库中创建一个独立的副本进行自主开发,这意味着Cursor可以修改编辑器的任何底层逻辑,而不受插件API的沙箱限制。这也是为什么Cursor用户可以无缝迁移VS Code的主题、快捷键和大部分插件——它们共享同一套扩展生态系统。对于已经习惯VS Code工作流的开发者来说,迁移成本几乎为零,学习曲线仅在于掌握AI对话面板的使用方法。
真正的差异化在于右侧的 AI 对话面板。可以说,掌握了这块面板,就掌握了 Cursor 的精髓,因为左侧目录里的绝大部分内容都是通过 AI 对话自动生成的。
需要提醒的是,Cursor 需要注册账号后才能使用。这是使用前的第一道门槛,但注册流程本身并不复杂。注册后Cursor提供免费额度供体验,包括一定次数的高级模型调用和无限次的基础模型调用,超出免费额度后需要订阅付费计划。
Cursor三种对话模式详解:Agent、Ask与Manual
在正式动手之前,理解 Cursor 的三种对话模式至关重要,它决定了 AI 在你的编码过程中扮演什么角色。
Agent模式:让AI主动接管编码
Agent 模式是最激进也最强大的模式。在这个模式下,AI 会主动帮你完成文件生成和代码编写。你只需要描述需求,剩下的创建目录、写代码、装依赖、跑服务,AI 都会一手包办。如果你的目标是让 AI 直接产出可运行的项目,就选 Agent 模式。
Agent模式背后采用的是AI Agent(智能代理)架构,这是当前AI应用领域的前沿范式。与传统的单轮问答不同,Agent具备规划(Planning)、工具调用(Tool Use)和记忆(Memory)三大核心能力。规划能力是指AI能够将一个复杂目标分解为有序的子任务序列——比如将「构建学生管理系统」拆解为「创建项目结构→编写数据模型→实现路由逻辑→配置数据库→编写前端模板→安装依赖→启动测试」等步骤。工具调用能力使AI不再局限于生成文本,而是能够执行实际操作,在Cursor中这些工具包括文件创建与编辑、终端命令执行、目录浏览、代码搜索等。记忆能力则确保AI在多轮交互中保持上下文连贯性,记住之前的代码结构和修改历史。在Cursor的Agent模式中,AI首先将用户需求分解为多个子任务,然后依次调用文件创建、代码编写、终端命令执行等工具来完成任务,并在执行过程中根据反馈(如报错信息)动态调整策略。这种「思考-行动-观察」(Thought-Action-Observation)的循环机制源自ReAct框架,是当前主流Agent系统的核心设计模式,它使得AI能够像一个初级开发者一样自主完成端到端的项目构建。值得注意的是,Agent的每一步操作都会消耗模型的token配额,因此复杂项目的构建可能需要较多的API调用次数。
Ask模式:针对性技术问答
Ask 模式则更加克制。它只针对你提出的特定问题进行回答,不会主动去创建大量文件或接管你的编码流程。当你只想咨询技术方案、了解某个概念,而不希望 AI 擅自改动项目时,Ask 是更合适的选择。Ask模式本质上是一个增强版的技术问答系统——与直接使用ChatGPT或Claude网页版不同的是,Ask模式能够感知你当前打开的文件、项目结构和代码上下文,因此它的回答会更加贴合你的具体场景,而非泛泛的通用建议。

Manual模式:开发者完全主导
Manual 模式把编码的控制权完全交还给开发者,AI 只提供参考性的提示建议。这适合那些希望自己掌控每一行代码、仅把 AI 当作辅助参谋的资深开发者。对于正在学习编程的开发者来说,Manual模式也有独特价值:它迫使你亲自思考和编写代码逻辑,AI的建议作为学习参考而非直接替代,有助于真正理解代码背后的原理,而不是养成对AI生成结果的盲目依赖。从认知科学的角度看,主动编写代码涉及「生成效应」(Generation Effect)——自己生成的信息比被动接收的信息记忆更牢固、理解更深入。因此,Manual模式对于希望系统性学习编程的用户来说,反而可能是长期收益最高的选择。
简单总结:想让 AI 直接写代码用 Agent,想提问用 Ask,想自己主导用 Manual。
模型选择:为什么代码生成推荐Claude
在对话面板的模型选择区,Cursor 提供了多种大模型,既有免费模型,也有付费的高级模型。
对于真正要用于生产的项目,建议非常明确:优先选择 Claude 模型。Claude是由Anthropic公司开发的大语言模型系列。Anthropic由前OpenAI研究副总裁Dario Amodei和Daniela Amodei兄妹于2021年创立,公司以AI安全研究为核心理念,其开发的Constitutional AI(宪法AI)训练方法在提升模型安全性的同时保持了强大的任务执行能力。Claude在代码生成领域的领先地位已在多个权威基准测试中得到验证。在SWE-bench(Software Engineering Benchmark,一个评估AI自主修复真实GitHub Issue能力的基准测试,包含来自Django、scikit-learn等知名开源项目的2294个真实bug修复任务)和HumanEval(由OpenAI发布的代码生成正确性测试集,包含164个手写编程问题)等评测中,Claude 3.5 Sonnet和Claude 4系列模型持续位居前列。Claude的优势体现在几个方面:更长的上下文窗口(最高支持200K tokens,约相当于15万字的文本或数千行代码)使其能够理解大型项目的完整代码库;出色的指令遵循能力确保生成的代码符合特定框架和规范要求;而Anthropic在训练过程中对代码数据的精细处理,使模型在理解复杂依赖关系和API用法方面表现突出。相比之下,GPT-4o等模型在通用对话方面表现优异,但在代码生成的准确性和一致性上略逊一筹。需要说明的是,AI模型的能力排名并非一成不变——各大厂商持续迭代更新,竞争格局可能随新版本发布而改变,建议关注最新的基准测试结果来指导选择。
理由是 Claude 目前在代码生成能力上表现最为出色,而相较于一个要投入实际生产的项目而言,它产生的调用成本几乎可以忽略不计。
这里有个实用的区分逻辑:如果只是用 Ask 模式做问答,可以随意切换到各种模型;但只要涉及实际的代码生成,就应该优先选用 Claude 系列模型以保证输出质量。
实战演示:用Cursor从零构建Python学生管理系统
接下来是最能体现 Cursor 价值的部分——以一个纯小白的视角,从零构建一个学生管理系统。
第一步:用Ask模式让AI推荐技术栈
首先用 Ask 模式提问:"我想用 Python 开发一个学生管理系统,帮我推荐技术栈。"Claude 立刻给出了框架建议。当明确这是一个小型项目后,AI 迅速生成了一套适配的技术方案。

这里有必要解释一下「技术栈」这个概念。技术栈(Tech Stack)是指构建一个软件项目所需的全部技术组件的集合,通常包括编程语言、Web框架、数据库、前端技术和部署工具等层面。对于小型Python Web项目,AI通常会推荐Flask或FastAPI作为后端框架、SQLite作为数据库、Jinja2作为模板引擎的组合方案。这套选择的合理性在于:Flask是Python生态中最轻量的Web框架,由Armin Ronacher于2010年创建,其核心设计哲学是「微框架」——只提供路由、请求处理和模板渲染等核心功能,其余功能通过扩展按需添加,学习曲线平缓且适合小型应用;SQLite是嵌入式数据库,无需额外安装服务进程,数据以单文件形式存储,极大简化了开发和部署流程;而Jinja2是Flask内置的模板引擎,使用类似Python的语法在HTML中嵌入动态内容,可以方便地渲染HTML页面。如果项目规模扩大到中大型应用,AI则可能推荐Django(由Django Software Foundation维护的功能全面的框架,内置ORM、认证系统、管理后台等组件)、PostgreSQL(支持高并发和复杂查询的企业级关系型数据库)以及前后端分离的架构方案(前端使用React或Vue.js,后端提供RESTful API或GraphQL接口)。另一个值得关注的选择是FastAPI——由Sebastián Ramírez开发的现代Python Web框架,基于Python类型提示自动生成API文档,性能接近Node.js和Go,近年来在API开发领域增长迅速,但对于需要渲染HTML页面的传统Web应用,Flask仍然是更直观的选择。
这一步的意义在于,即便你完全不了解该用什么框架、什么数据库,AI 也能根据项目规模给出合理的架构建议。
第二步:切换Agent模式自动生成代码
确定技术栈后,切换到 Agent 模式,让 AI 开始写代码。Cursor 会先规划项目结构,然后通过一系列命令逐步构建。整个过程中有几个值得关注的机制:
- 自动运行:Cursor 提供了命令是否自动执行的选项。如果开启自动运行,AI 在报错后会自动重试命令,无需每次询问你,真正做到全托管。这背后的机制是Agent在每次执行终端命令后,会读取标准输出(stdout)和标准错误(stderr)的内容,判断命令是否成功执行。标准输出是程序正常运行时的信息输出通道,标准错误则专门用于输出错误和警告信息——Agent通过解析stderr中的错误堆栈(Stack Trace,即错误发生时的函数调用链)来定位问题根因。如果检测到错误信息,Agent会分析错误原因并自动生成修复方案,然后重新执行——这个过程可能迭代多次直到成功。
- 变更确认:新生成的文件会以黄色/红色高亮标记,询问你是否保存。你可以逐个同意,也可以等全部生成完毕后统一保存。这种设计遵循了「人在回路」(Human-in-the-Loop)的AI安全原则,确保开发者对代码变更始终拥有最终审核权。在实际使用中,建议养成审查每次变更的习惯——即使AI生成的代码大多数时候是正确的,但偶尔可能出现逻辑错误、安全漏洞或不符合项目规范的写法,及时发现这些问题远比事后调试成本更低。
第三步:AI自动修复依赖和兼容性问题
代码生成过程中最令人印象深刻的是 AI 的自动排错能力。在安装依赖包时出现了版本兼容性问题,Cursor 直接识别并重新安装了兼容版本。
依赖管理是软件开发中最常见也最令人头疼的问题之一,在Python生态中尤为突出。Python包通过pip工具从PyPI(Python Package Index,全球最大的Python软件仓库,截至2024年已托管超过50万个项目)安装,每个包可能依赖其他包的特定版本范围。当多个包对同一依赖的版本要求产生冲突时,就会出现所谓的「依赖地狱」(Dependency Hell)。例如,包A要求numpy>=1.20但<2.0,而包B要求numpy>=2.0,此时两者无法共存。传统解决方式需要开发者手动查阅兼容性矩阵、逐一调整版本号,或使用虚拟环境(如venv、conda)来隔离不同项目的依赖,这是一个耗时且需要经验的过程。近年来,Poetry和uv等现代依赖管理工具通过自动解析依赖图和锁定版本来缓解这一问题,但仍无法完全消除冲突。其中uv是由Astral公司(也是代码格式化工具Ruff的开发者)用Rust语言编写的超高速Python包管理工具,安装速度比pip快10-100倍,正在迅速成为Python生态的新标准。Cursor的Agent模式能够解析终端输出的错误信息,识别版本冲突的根因,并自动尝试安装兼容版本,将原本可能耗费数小时的排错过程压缩到几秒钟内完成。
这类兼容性问题,一个熟练的开发者可能要找半个小时,不熟练的甚至两个小时都找不到,而 AI 一下就定位并解决了。这正是 AI 编程工具对生产效率的实质性提升。

第四步:启动运行与功能验证
项目完成后,AI 生成了启动脚本、说明书,并初始化了数据库。服务最终启动在 127.0.0.1:5000。这个地址中的127.0.0.1是回环地址(loopback address),指向本机,:5000表示Flask默认监听的端口号。端口号是操作系统用来区分同一台机器上不同网络服务的数字标识,范围从0到65535——例如80端口通常用于HTTP服务,443端口用于HTTPS服务,而Flask默认使用5000端口。当Flask应用启动后,它会在本机的5000端口开启一个HTTP服务,你的浏览器通过这个地址与本地服务器通信来加载网页。需要注意的是,Flask内置的开发服务器仅适用于开发和测试环境,如果要部署到生产环境,需要使用Gunicorn或uWSGI等专业的WSGI服务器来处理并发请求。将地址复制到浏览器后,一个带登录功能的学生管理系统就呈现在眼前。
登录进入系统后,添加学生、修改信息、删除记录等基础功能均正常运作。这些操作对应了数据库的四种基本操作,即CRUD——创建(Create)、读取(Read)、更新(Update)和删除(Delete),它们是几乎所有管理系统的核心功能模式。CRUD是Web开发中最基础也最重要的概念之一,几乎所有的业务系统——从电商平台的商品管理到社交网络的用户管理——底层都是围绕数据的增删改查来构建的。在Flask中,这四种操作通常映射到HTTP请求方法:POST对应创建、GET对应读取、PUT/PATCH对应更新、DELETE对应删除,并通过ORM(对象关系映射,如SQLAlchemy)将Python对象与数据库表进行映射,开发者无需编写原始SQL语句即可操作数据库。演示中还暴露了一个真实场景:添加成绩时报出 NotFound 错误。

AI编程工具的能力边界
上面的报错并非 bug,而是因为该功能尚未实现。AI 在最初就明确说明了哪些是已实现功能、哪些是待完善功能。演示中只实现了学生管理这一核心模块,其余功能出于时间考虑暂未展开。
这揭示了 AI 编程工具的一个重要边界:它只完成你明确要求的部分。这种行为特征与LLM的本质特性密切相关——大语言模型是指令驱动的,它根据prompt(提示词)中的具体描述来确定任务范围。如果你的prompt只提到「实现学生管理模块」,AI就不会主动去实现成绩管理或课程管理。这既是局限也是优势:它确保AI不会在未经授权的情况下做出超出预期的改动,但也要求使用者具备足够的需求描述能力。优秀的prompt应当包含功能范围、技术约束、交互细节和边界情况等要素。这也催生了「Prompt Engineering」(提示词工程)这一新兴技能——通过精心设计提示词来引导AI产出高质量结果。在代码生成场景中,一个好的prompt不仅描述「做什么」,还应说明「用什么技术做」「不做什么」「异常情况如何处理」以及「代码风格和命名规范」。例如,「用Flask构建学生管理系统,包含学生CRUD、成绩录入和统计功能,使用SQLAlchemy ORM,所有API需要登录验证,异常返回JSON格式错误信息」远优于「做一个学生管理系统」。若想补全所有功能,只需把完整需求描述给 AI,等待其逐一实现即可——但这可能需要半小时到一小时的生成时间。
此外还有一个容易被忽视的前提:整个演示是在配置好的 Python 环境下进行的。如果你想复现,必须先安装对应的运行环境和数据库。所谓Python环境,不仅指Python解释器本身,还包括pip包管理工具和虚拟环境。虚拟环境(Virtual Environment)是Python中隔离项目依赖的标准做法——每个项目拥有独立的包安装目录,避免不同项目间的依赖冲突。Python内置的venv模块或第三方工具如conda都可以创建虚拟环境。具体来说,当你运行python -m venv myenv时,系统会在当前目录创建一个名为myenv的文件夹,其中包含独立的Python解释器副本和pip工具;激活虚拟环境后(Windows下运行myenv\\Scripts\\activate,macOS/Linux下运行source myenv/bin/activate),所有通过pip安装的包都会被放入这个隔离目录中,不会影响系统级的Python环境或其他项目。特别需要注意的是,如果不用 SQLite 而用 MySQL,就需要自行安装 MySQL 环境。
SQLite和MySQL虽然都是关系型数据库(基于SQL语言进行数据操作,数据以表格形式存储,表之间通过外键建立关联),但架构理念截然不同。SQLite是嵌入式数据库,由D. Richard Hipp于2000年开发,它以C语言库的形式链接到应用程序中,数据存储在本地的单个.db文件中,无需独立的数据库服务进程,整个数据库引擎大小不到1MB,非常适合开发测试、移动应用(Android和iOS都将SQLite作为内置数据库)和小型Web项目。据统计,SQLite可能是世界上部署量最大的数据库引擎——它不仅存在于每一部智能手机中,还被嵌入到浏览器(Chrome、Firefox)、操作系统和无数物联网设备里。MySQL则是客户端-服务器架构的数据库管理系统,由MySQL AB公司开发(现归Oracle所有),需要独立安装和运行数据库服务(mysqld守护进程),支持多用户并发访问、ACID事务处理、主从复制和集群部署等企业级功能,适合中大型生产环境。ACID是数据库事务的四大特性——原子性(Atomicity,事务要么全部成功要么全部回滚)、一致性(Consistency,事务前后数据保持合法状态)、隔离性(Isolation,并发事务互不干扰)和持久性(Durability,提交后数据永久保存),这些特性对金融交易等要求数据绝对可靠的场景至关重要。在Cursor生成的项目中,选择SQLite意味着零配置即可运行——Python标准库已内置sqlite3模块,而切换到MySQL则需要安装MySQL Server、创建数据库和用户、配置连接参数(主机地址、端口、用户名、密码)、并安装Python的MySQL驱动(如mysqlclient或PyMySQL)等额外步骤——这些环境准备工作超出了AI代码生成的能力范畴。
AI 能写代码,但底层运行环境仍需你自己准备好。
总结:如何正确使用Cursor提升开发效率
Cursor 结合 Claude 模型,确实能让编程门槛大幅降低。从推荐技术栈、生成完整项目、自动修复错误到启动运行,AI 覆盖了开发流程的绝大部分环节。对于编程小白而言,它是快速把想法变成可运行产品的利器;对于资深开发者,它则是显著提升效率的助手。
但需要清醒认识到:AI 只做你明确要求的事,运行环境仍需自行配置,复杂功能也需要分步引导。此外,AI生成的代码并非总是最优解——它可能存在安全隐患(如SQL注入防护不够严密、用户输入未经充分验证)、性能瓶颈(如缺乏数据库索引优化、N+1查询问题)或可维护性问题(如代码组织不够模块化、缺少单元测试)。SQL注入是最常见的Web安全漏洞之一,攻击者通过在输入框中注入恶意SQL语句来窃取或篡改数据库数据;N+1查询是指查询列表时先执行1次查询获取N条记录,然后对每条记录再执行1次关联查询,导致总共执行N+1次数据库查询,严重影响性能。因此,即使使用AI生成代码,代码审查(Code Review)仍然是不可或缺的环节。建议建立一个基本的审查清单:安全性(输入验证、权限控制、敏感信息处理)、性能(数据库查询优化、缓存策略)、可维护性(代码结构、命名规范、注释完整度)和测试覆盖度。把 Cursor 当作一个强大的协作伙伴而非全自动黑盒,保持对生成代码的审慎态度,才能真正发挥它的价值。
核心要点
核心要点
核心要点
相关推荐

Harness Engineering入门到实战:多Agent项目开发全解析
本文解析B站Harness Engineering系列教程,涵盖AI工程范式三阶段演进、Agent失败模式、信息层/约束层/自动化三层架构,以及基于Java的多Agent项目实战与落地清单。

SDD多花3倍Token值不值?OpenSpec实战取舍指南
SDD规范驱动开发多花几倍Token到底值不值?本文结合OpenSpec实战,讲清Spec编写、任务拆解与AI执行对齐的取舍尺度,帮你在复杂项目中减少返工、降低跑偏成本。

Python从零到实战:三阶段学习路径拆解
从零基础到实战,Python学习该如何规划?本文拆解基础篇、进阶篇、技能训练篇三阶段学习框架,涵盖变量、函数、爬虫、数据分析、机器学习等核心内容,并理性分析「一周成大神」的可行性。