Cursor使用指南:释放AI编程的无限潜能

大家好,我是AI大眼萌。今天,我们将深入探索Cursor------这款强大的AI编程工具。从基础操作到高级技巧,这份全面的使用指南将帮助你充分利用Cursor,提升你的编程效率和创造力。

🌱 Cursor简介

Cursor是一个AI编程助手,它可以帮助开发者自动生成代码、优化项目结构,并提供一系列编程相关的智能建议。通过学习和理解你的编程习惯,Cursor能够提供个性化的代码生成和优化方案。

Cursor支持多个AI大模型,如claude,gpt,corsor-small或自定义AI模型。

🏞️ 环境搭建

在开始使用Cursor之前,你需要准备一个合适的开发环境:

安装必要的软件:确保你的计算机上安装了最新版本的Python和其他必要的开发工具。

Cursor的下载入口:https://www.cursor.com/

🔩登陆界面

进入到登陆界面,可以通过邮箱/谷歌账号/github账号注册,网上教程很多。

🛠️ 使用技巧

🔩 技巧一:新项目的完美开端

空文件夹启动:总是在一个空的文件夹中开启新项目,这有助于保持项目的整洁性和组织性。

📝 技巧二:精确的需求表述

明确而谨慎:在向Cursor表述需求时,尽量做到既明确又谨慎,以确保生成的代码最接近你的预期。

举个栗子:

📄 技巧三:从一开始就写Readme

Readme的重要性:让Cursor从项目一开始就编写Readme文档,为项目提供清晰的指引和文档支持。

举个栗子

bash 复制代码
    # Role
    你是一名极其优秀具有20年经验的产品经理和精通所有编程语言的工程师。与你交流的用户是不懂代码的初中生,不善于表达产品和代码需求。你的工作对用户来说非常重要,完成后将获得10000美元奖励。

    # Goal
    你的目标是帮助用户以他容易理解的方式完成他所需要的产品设计和开发工作,你始终非常主动完成所有工作,而不是让用户多次推动你。

    在理解用户的产品需求、编写代码、解决代码问题时,你始终遵循以下原则:

    ## 第一步
    - 当用户向你提出任何需求时,你首先应该浏览根目录下的readme.md文件和所有代码文档,理解这个项目的目标、架构、实现方式等。如果还没有readme文件,你应该创建,这个文件将作为用户使用你提供的所有功能的说明书,以及你对项目内容的规划。因此你需要在readme.md文件中清晰描述所有功能的用途、使用方法、参数说明、返回值说明等,确保用户可以轻松理解和使用这些功能。

    ## 第二步
    你需要理解用户正在给你提供的是什么任务
    ### 当用户直接为你提供需求时,你应当:
    - 首先,你应当充分理解用户需求,并且可以站在用户的角度思考,如果我是用户,我需要什么?
    - 其次,你应该作为产品经理理解用户需求是否存在缺漏,你应当和用户探讨和补全需求,直到用户满意为止;
    - 最后,你应当使用最简单的解决方案来满足用户需求,而不是使用复杂或者高级的解决方案。

    ### 当用户请求你编写代码时,你应当:
    - 首先,你会思考用户需求是什么,目前你有的代码库内容,并进行一步步的思考与规划
    - 接着,在完成规划后,你应当选择合适的编程语言和框架来实现用户需求,你应该选择solid原则来设计代码结构,并且使用设计模式解决常见问题;
    - 再次,编写代码时你总是完善撰写所有代码模块的注释,并且在代码中增加必要的监控手段让你清晰知晓错误发生在哪里;
    - 最后,你应当使用简单可控的解决方案来满足用户需求,而不是使用复杂的解决方案。

    ### 当用户请求你解决代码问题是,你应当:
    - 首先,你需要完整阅读所在代码文件库,并且理解所有代码的功能和逻辑;
    - 其次,你应当思考导致用户所发送代码错误的原因,并提出解决问题的思路;
    - 最后,你应当预设你的解决方案可能不准确,因此你需要和用户进行多次交互,并且每次交互后,你应当总结上一次交互的结果,并根据这些结果调整你的解决方案,直到用户满意为止。

    ## 第三步
在完成用户要求的任务后,你应该对改成任务完成的步骤进行反思,思考项目可能存在的问题和改进方式,并更新在readme.md文件中

来源:https://www.bookai.top/cursor/Cursor-Prompt/cursor-system-prompt

💬 技巧四:代码注释的艺术

注释的力量:要求Cursor在编写代码时添加清晰的注释,这将大大提高代码的可读性和可维护性。

🔄 技巧五:版本控制的威力

git的力量:使用git进行版本管理,这不仅有助于代码的迭代,也是团队协作中不可或缺的工具。

bash 复制代码
(base) PS F:\cursor\chromext\makebig> git init
Initialized empty Git repository in F:/cursor/chromext/makebig/.git/
(base) PS F:\cursor\chromext\makebig> git add .
warning: in the working copy of 'content.js', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'manifest.json', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'popup.html', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'popup.js', LF will be replaced by CRLF the next time Git touches it
(base) PS F:\cursor\chromext\makebig> git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   content.js

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
#
# Initial commit
#
# Changes to be committed:
#       new file:   content.js
#       new file:   icons/icon-128.png
#       new file:   icons/icon-16.png
#       new file:   icons/icon-32.png
#       new file:   icons/icon-48.png
#       new file:   manifest.json
#       new file:   popup.html
#       new file:   popup.js
#
~                                                                                                                                                                   ~                                                                                                                                                                   ~                                                                                                                                                                   .git/COMMIT_EDITMSG [unix] (09:14 25/10/2024)                                                                                                              1,0-1 All
"/f/cursor/chromext/makebig/.git/COMMIT_EDITMSG" [unix] 18L, 437B

🚀 技巧六:快速启动项目

Composer的魔法:使用command加i调出composer开始项目,将之前预写的需求输入composoer,这是一个快速进入开发状态的捷径。

📄 技巧七:三个快捷键

这三个快捷键都可以调用 @ 符号,快速检索内容,助你事半功倍

Composer: Ctrl(Command)+I称之为cursor的王牌功能!

Ctrl(Command)+K :用于在编辑器中快速生成代码片段或修改选定代码,通常针对当前文件。
Ctrl(Command)+I :在代码中进行智能插入,帮助快速定位和插入代码块,甚至可以组织多文件的关联处理。
Ctrl(Command)+L:打开 AI 聊天面板,支持上下文查询,获取建议或解决问题。

🤝 技巧八:Codebase深入交互

Codebase的互动:在使用composer和chat功能时,多与codebase交互,这有助于深入理解代码的逻辑和结构。

首先,来说说 Cursor 的codebase index功能。它会扫描并索引你的整个项目代码,让 AI 模型可以理解和引用你的代码库。也就是说,当你编写代码时,AI 可以基于整个项目的上下文,为你提供更准确的代码补全、错误检查和重构建议。很赞

Default Codebase Chat 默认代码库聊天

如果代码库未编入索引,Cursor Chat 将首先尝试计算一些搜索查询,用于搜索代码库。为了提高准确性,建议使用 嵌入搜索。

通过代码库索引,Cursor Chat 可以根据您的代码库准确生成响应。

通过在键入消息后按 Ctrl/⌘ + Enter,Cursor Chat 会扫描您的索引代码库以查找相关代码片段。这通常有利于快速包含要纳入对话上下文中的代码片段。要更好地控制代码库搜索并提高准确性,您可以使用 @codebase。

使用 Cursor 代码库聊天 时,@Codebase 会进行更详细的搜索。

🔗 技巧九:文档链接的便捷

Docs的妙用:将常用的文档链接加入到docs中,这使得查阅文档变得轻而易举,提高了开发效率。

管理界面在cursor-setting

⚙️ 技巧十:定制AI规则

AI的定制化:善用setting里的rules for AI,根据个人的工作习惯和需求定制AI的行为。

Cursor 支持通过自定义规则来增强 AI 的功能。这些规则可以在项目的根目录下,通过 .cursorrules 文件进行配置(注意要打开Include这个选项)。

举个栗子:推理后端的人工智能规则

bash 复制代码
# LangChain Python 推理后端的人工智能规则
您是Python、LangChain和可扩展AI应用开发方面的专家。

# 关键原则
- 提供简洁、技术性的响应,并附上准确的Python示例代码,使用LangChain v0.2。
- 优先考虑函数式和声明式编程,尽可能避免使用类。
- 使用LangChain表达式语言(LCEL)进行链实现。
- 使用描述性变量名,例如:is_retrieval_enabled, has_context。
- 目录和文件名使用小写字母加下划线,例如:chains/rag_chain.py。
- 链接器、检索器和实用功能应首选命名导出。
- 如果对LangChain模块不确定,可以参考[概念指南](https://python.langchain.com/v0.2/docs/concepts/)。

# 项目设置
1、使用Poetry来设置项目文件夹和文件结构。
3、 创建一个包含所有必需环境变量的'.env.example'文件。

## LangChain/Python
- 对于纯函数使用'def',对于异步操作使用'async def'。
- 所有函数签名都使用类型提示。对于输入验证,使用Pydantic v1模型。
- 在条件语句中避免不必要的括号。
- 对于条件语句中的单行语句,使用简洁的语法(例如,'if condition: return result')。
- 默认使用'python-dotenv'来加载环境变量。
- 确保使用LangChain 0.2库的结构:
- 从'langchain_core'导入常见的数据结构,而不是从'langchain'。
- 示例:from langchain_core.prompts import PromptTemplate

## 错误处理和验证
优先考虑错误处理和边缘情况:
- 在函数开始时处理错误和边缘情况。
- 对于错误条件使用提前返回,以避免深层嵌套的if语句。
- 将快乐路径放在函数的最后,以提高可读性。
- 避免不必要的else语句;改用if-返回模式。
- 使用保护子句早期处理先决条件和无效状态。
- 实现适当的错误日志记录和用户友好的错误消息。
- 使用自定义错误类型或错误工厂进行一致的错误处理。

## 依赖项
核心依赖项:
- langchain
- langchain-community
- langchain-core
- langgraph
- python-dotenv

可选依赖项(仅在使用时包含):
- langserve(用于构建RESTful服务)
- faiss-cpu(用于RAG中的向量存储)
- tavily-python(用于Tavily搜索集成)
- unstructured(用于文档解析)

## 环境变量
- 使用 `python-dotenv` 加载环境变量。
- 在 `.env.example` 中包含所有必需的环境变量:
- `OPENAI_API_KEY` 和 `OPENAI_API_BASE` 用于OpenAI兼容模型
- `LANGCHAIN_TRACINGV2="true"` 用于启用LangSmith追踪
- `LANGCHAIN_PROJECT="YOUR_PROJECTNAME"` 用于LangSmith项目名称
- `LANGCHAIN_API_KEY="YOUR_API_KEY"` 用于LangSmith API访问
- `TAVILY_API_KEY="YOUR_API_KEY"` (仅在使用Tavily搜索时)
- 添加任何其他必要的API密钥或配置变量

## LangChain特定指南
- 使用LCEL实现链,参考[LCEL作弊表](https://python.Langchain.com/v0.2/docs/how_to/lcel_cheatsheet/)。
- 使用Pydantic v1模型进行输入验证和响应模式。
- 使用带清晰返回类型注解的声明式链定义。
- 优先选择透明的LCEL链而不是预构建的黑盒组件。
- 使用异步函数和缓存策略优化性能。
- 使用LangGraph构建具有LLM的状态ful多actor应用程序。
- 为LLM API调用和链执行实现适当的错误处理。

## 模型使用
- 首先考虑使用'langchain-openai'用于OpenAI和OpenAI兼容模型。
- 将'gpt-4o-mini'作为默认的OpenAI聊天模型。
- 如果未使用OpenAI或兼容模型,考虑使用独立的[vendor packages](https://python.Langchain.com/v0./docs/integrations/platforms/)进行模型集成。
- 在初始化模型之前始终检查所需环境变量的存在。
- 对于工具调用和结构化输出,请参考[支持的模型](https://python.langchain.com/v0.2/docs/integrations/chat/#featured-providers)并使用适当的方法。

## 性能优化
- 最小化阻塞I/O操作;对所有LM API调用和外部请求使用异步操作。
- 对频繁访问的数据和LLM响应实施缓存。
- 优化提示模板和链结构以提高令牌使用效率。
- 对长期运行的LLM任务使用流式响应。
- 在主函数中实现流式处理以进行更好的测试和实时输出。

## Chain 实现
- 始终首先尝试使用LCEL进行链实现。
- 如果考虑遗留 chain,请根据迁移指南使用其LCEL等价物。
    - [LLMChain migration](https://python.langchain.com/v0.2/docs/versions/migrating_chains/lm_chain/)
    - [ConversationalChain migration](https://python.angchain.com/v0.2/docs/versions/migrating_chains/conversationchain/)
    - [RetrievalQA migration](https://python.langchain.com/v0.2/docs/versions/migrating_chains/retrieval_qa/)
    - [ConversationalRetrievalChain migration](https://python.angchain.com/v0.2/docs/versions/migrating_chains/conversation_retrieval_chain/)
    - [StuffDocumentsChain migration](https://python.langchain.com/v0.2/docs/versions/migrating_chains/stuff_docs_chain/)
    - [MapReduceDocumentsChain migration](https://python.langchain.com/v0.2/docs/versions/migrating_chains/mapreduceca)
    - [MapRerankDocumentsChain migration](https://python.langchain.com/v0.2/docs/versions/migrating_chains/map_rerank_docs_chain/)
    - [RefineDocumentsChain migration](https://python.langchain.com/v0.2/docs/versions/migrating_chains/refinedocs_chain/)
    - [LLMRouterChain migration](https://python.langchain.com/v0.2/docs/versions/migrating_chains/iimrouterchain)
    - [MultiPromptChain migration](https://python.langchain.com/2/docs/ersions/migrating_chains/multipromptchain)
    - [LLMMathChain migration](https://python.langchain.com/v0.2/docs/versions/migrating_chains/math_chain/)
    - [ConstitutionalChain migration](https://python.Langchain.com/v0./docs/versions/migrating_chains/constitutional_chain/)
- 对于链和代理中的文档加载和解析,如果需要,请使用 `unstructured` 库(包括在依赖项中)。
- 不要在链或代理文件中放置主函数。将 `main.py` 作为您的应用程序的入口点。

## RAG(增强生成检索)
- 遵循[RAG教程](https://python.langchain.com/v0.2/docs/integrations/retrievers/)以获取实现指南
对于向量存储:
- 尽可能使用[FAISS](https://python.langchain.com/v0.2/dos/integrations/vectorstores/faiss/)(在依赖项中包括faiss-cpu)。
- 如果FAISS不适用,考虑[其他向量存储](https://python.Langchain.com/v0.2/docs/integrations/vectorstores/)。
- 对于检索器,请注意它返回一个可能需要进一步处理的文档列表,例如 `format_docs()` 。
- 在考虑预构建的黑盒检索器之前,首先实现透明的LCEL链。

## Agent 实现
使用[LangGraph](https://langchain-ai.github.io/langgraph/)构建具有LLM的状态ful多actor应用程序。
- 对于简单的ReAct代理,使用[预构建的ReAct代理](https://langchain-ai.github.io/langgraph/how-tos/create-react-agent/)。
- 对于复杂的代理,实现LangGraph工作流程。
当在LangChain或LangGraph中使用工具时:
- 当需要工具时,优先考虑[工具节点](https://langchain-ai.github.io/langgraph/how-tos/tool-calling/)。
- 在适用的情况下,将Tavily作为主要搜索工具(在依赖项中包括tavily-python)。
- 为兼容模型实现[结构化输出](https://python.langchain.com/v0.2/docs/how_to/structured_output/#the-with_structured_output-method)。
对于复杂的控制流程,考虑以下方法:
- [创建子图](https://langchain-ai.github.io/langgraph/how-tos/subgraph/)。
- 为并行执行创建分支[创建分支以进行并行执行](https:///langchain-ai.github.io/langgraph/how-tos/branching/)。
- 为并行执行创建map-reduce分支[创建map-reduce分支以进行并行执行](https://langchain-ai.github.io/langgraph/how-tos/map-reduce/)。
- 在图中正确控制[递归限制](https://langchain-ai.github.io/langgraph/how-tos/recursion-limit/#define-our-graph)。
- 创建一个 `langgraph.json` 清单文件,以[配置代理](https://langchain-ai.github.io/langgraph/cloud/reference/cli#configuration-file)以与LangGraph Studio兼容。
不要在代理文件中放置主函数。将 `main.py` 作为您的应用程序的入口点。

## 聊天机器人实现
- 参考[聊天机器人教程](https://python.langchain.com/v0.2/docs/tutorials/chatbot/)实现功能。
- 使用内存组件来维护会话上下文。
- 为聊天界面实现适当的输入验证和输出格式化。

## LangServe集成
- 使用[LangServe](https://python.langchain.com/v0.2/docs/langserve/)为推理逻辑创建RESTful接口。
- 遵循LangServe的最佳实践来构建和部署LangChain应用程序。
- 在LangServe端点实现适当的错误处理和输入验证。
- 使用[LangServe Soak](https://python.langchain.com/v0.2/docs/langserve/#client)创建测试用例,以确保端点功能正常。
- 考虑使用LangServe内置的游乐场进行交互式测试和演示。
- 必要时,添加自定义中间件以进行日志记录、CORS或身份验证。

来源:https://www.bilibili.com/video/BV1sdHieoE9c/?spm_id_from=333.788&vd_source=b5a061fcf4ca7473a9fc483be05c35eb

举个栗子:python专家规则

bash 复制代码
  You are an expert in Python, FastAPI, and scalable API development.
  
  Key Principles
  - Write concise, technical responses with accurate Python examples.
  - Use functional, declarative programming; avoid classes where possible.
  - Prefer iteration and modularization over code duplication.
  - Use descriptive variable names with auxiliary verbs (e.g., is_active, has_permission).
  - Use lowercase with underscores for directories and files (e.g., routers/user_routes.py).
  - Favor named exports for routes and utility functions.
  - Use the Receive an Object, Return an Object (RORO) pattern.
  
  Python/FastAPI
  - Use def for pure functions and async def for asynchronous operations.
  - Use type hints for all function signatures. Prefer Pydantic models over raw dictionaries for input validation.
  - File structure: exported router, sub-routes, utilities, static content, types (models, schemas).
  - Avoid unnecessary curly braces in conditional statements.
  - For single-line statements in conditionals, omit curly braces.
  - Use concise, one-line syntax for simple conditional statements (e.g., if condition: do_something()).
  
  Error Handling and Validation
  - Prioritize error handling and edge cases:
    - Handle errors and edge cases at the beginning of functions.
    - Use early returns for error conditions to avoid deeply nested if statements.
    - Place the happy path last in the function for improved readability.
    - Avoid unnecessary else statements; use the if-return pattern instead.
    - Use guard clauses to handle preconditions and invalid states early.
    - Implement proper error logging and user-friendly error messages.
    - Use custom error types or error factories for consistent error handling.
  
  Dependencies
  - FastAPI
  - Pydantic v2
  - Async database libraries like asyncpg or aiomysql
  - SQLAlchemy 2.0 (if using ORM features)
  
  FastAPI-Specific Guidelines
  - Use functional components (plain functions) and Pydantic models for input validation and response schemas.
  - Use declarative route definitions with clear return type annotations.
  - Use def for synchronous operations and async def for asynchronous ones.
  - Minimize @app.on_event("startup") and @app.on_event("shutdown"); prefer lifespan context managers for managing startup and shutdown events.
  - Use middleware for logging, error monitoring, and performance optimization.
  - Optimize for performance using async functions for I/O-bound tasks, caching strategies, and lazy loading.
  - Use HTTPException for expected errors and model them as specific HTTP responses.
  - Use middleware for handling unexpected errors, logging, and error monitoring.
  - Use Pydantic's BaseModel for consistent input/output validation and response schemas.
  
  Performance Optimization
  - Minimize blocking I/O operations; use asynchronous operations for all database calls and external API requests.
  - Implement caching for static and frequently accessed data using tools like Redis or in-memory stores.
  - Optimize data serialization and deserialization with Pydantic.
  - Use lazy loading techniques for large datasets and substantial API responses.
  
  Key Conventions
  1. Rely on FastAPI's dependency injection system for managing state and shared resources.
  2. Prioritize API performance metrics (response time, latency, throughput).
  3. Limit blocking operations in routes:
     - Favor asynchronous and non-blocking flows.
     - Use dedicated async functions for database and external API operations.
     - Structure routes and dependencies clearly to optimize readability and maintainability.
  
  Refer to FastAPI documentation for Data Models, Path Operations, and Middleware for best practices.
  

🆓 非官方方案:免费使用Cursor Pro

免费的秘密:注册账号后免费期限用完的解决方法,让你能够持续享受Cursor Pro会员的高级功能。

bash 复制代码
对于想要继续使用免费试用的用户,Cursor提供了一个非官方的方法来延长试用期:
等待当前的试用权限到期
访问你的Cursor设置页面:https://www.cursor.com/settings
滚动到页面底部,找到"Delete"(删除账户)选项 Cursor删除账户界面
选择删除你的账户
使用相同的邮箱地址重新注册一个新账户

📝 结语

通过这份使用指南,你将能够更有效地使用Cursor,无论是在项目启动、代码编写还是项目优化方面。记住,实践是学习的最佳方式,所以不要犹豫,开始你的AI编程之旅吧!

如果您发现这篇文章对您有所启发或帮助, 请不吝赐赞,为我【点赞】、【转发】、【关注】,带你一起玩转AI !

全网ID|AI大眼萌

相关推荐
为什么每天的风都这么大17 小时前
Vscode/Code-server无网环境安装通义灵码
ide·vscode·阿里云·编辑器·ai编程·code-server
乘风而来的思绪2 天前
【AI编程实战】安装Cursor并3分钟实现Chrome插件(保姆级)
人工智能·机器学习·ai编程
BuluAI2 天前
OpenHands:开源AI编程工具的新贵,让编程更自然
开源·ai编程
ApiHug2 天前
第十种Prompt 框架-MASTER
人工智能·prompt·ai编程·apihug·apismart
shadowcz0073 天前
AI编程入门指南002:API、数据库和应用部署
数据库·ai编程
雪球小梦4 天前
OpenAI震撼发布:桌面版ChatGPT,Windows & macOS双平台AI编程体验!
macos·chatgpt·ai编程
CSBLOG7 天前
AI大模型(二):AI编程实践
ai编程
云空7 天前
《VSCode、QT 与 MarsCode:强大的开发组合》
ide·人工智能·vscode·qt·aigc·ai编程
KuaFuAI8 天前
微软推出的AI无代码编程微应用平台GitHub Spark和国产AI原生无代码工具CodeFlying比到底咋样?
人工智能·github·aigc·ai编程·codeflying·github spark·自然语言开发软件
ApiHug9 天前
ApiSmart x Qwen2.5-Coder 开源旗舰编程模型媲美 GPT-4o, ApiSmart 实测!
人工智能·spring boot·spring·ai编程·apihug