最近看到鱼皮的Cursor提示词分享(微信公众平台),刚好之前也在做Agent开发,跟提示词打交道的多,也经常发现 ai 蠢蠢的,一点不会根据提示词设计的来,按鱼皮的分享研究了一下,写了这篇博客。
Cursor 的提示词不仅逻辑严谨、场景覆盖全面,更把「如何让 AI 精准理解编程需求」这件事做到了极致。今天就带大家拆解 Cursor 提示词的精髓,这些技巧对我们自己开发 AI 应用也会有巨大帮助。
一、Cursor 提示词:场景化设计是核心
Cursor 并非只有一套提示词,而是针对不同使用场景设计了多套方案,每一套都对应特定的功能目标。比如:
- Agent 模式提示词:让 AI 具备「自主分析-规划-执行」的能力,能从头到尾解决复杂编码任务,直到问题彻底解决;
- CLI 命令行提示词:适配命令行交互场景,支持通过指令快速调用工具;
- Chat 对话提示词:聚焦问答场景,能快速响应用户的代码咨询、语法解释等简单需求;
- Memory 对话记忆提示词:负责管理 AI 的长期记忆,评估哪些信息值得沉淀(比如用户的编码偏好),哪些需要舍弃,避免无效信息干扰。
从开源仓库的文件列表中,我们能清晰看到这些提示词的迭代痕迹:
提示词文件 | 说明 |
Agent CLI Prompt 2025-08-07.txt | 2025年8月更新的 Agent 命令行场景提示词 |
Agent Prompt v1.0.txt | Cursor 1.0 版本的基础 Agent 提示词 |
Agent Prompt v1.2.txt | 迭代更新的 Agent 提示词(优化逻辑) |
Chat Prompt.txt | 对话场景核心提示词(已重命名优化) |
Memory Prompt.txt | 对话记忆管理基础提示词 |
Memory Rating Prompt.txt | 记忆质量评估提示词(筛选有效记忆) |
在这些提示词中,Agent 模式提示词最值得深入学习——足足 500 多行的内容。
二、Agent :三大模块构建 AI 编程能力
Cursor 的 Agent 提示词本质分为三大模块:角色定义(让 AI 知道“我是谁、要做什么”)、操作约束(教 AI“该怎么做、不能怎么做”)、支持的工具(给 AI“装备”,让它有能力执行任务)。
1. 角色定义:给 AI 清晰的“身份认知”
提示词的开篇就直接明确了 AI 的定位,没有任何模糊空间,原文(中英文对照)核心内容如下:
你是一个由 GPT-4.1 驱动的 AI 编程助手,在 Cursor 中运行。(You are an AI coding assistant, powered by GPT-4.1. You operate in Cursor.)
你正在与用户进行结对编程,以解决他们的编码任务。每当用户发送消息时,系统会自动附上用户的当前状态(比如打开的文件、光标位置、最近查看的文件、Linter 错误等),这些信息是否相关由你判断。(You are pair programming with a USER to solve their coding task. Each time the USER sends a message, we may automatically attach some information about their current state...)
在用户的查询完全解决之前,请继续工作;只有确定问题已解决,才结束你的回合。返回用户之前,需自主尽最大能力解决问题。(You are an agent-please keep going until the user's query is completely resolved... Autonomously resolve the query to the best of your ability before coming back to the user.)
这段提示词看似简单,却暗藏三个关键技巧:
- 明确三要素:直接告诉 AI“身份(编程助手)、场景(结对编程)、目标(解决编码任务)”,避免 AI 输出偏离场景(比如不会突然讲编程理论,而是聚焦解决当前问题);
- 强化 Agent 属性:强调“持续工作到问题解决”,赋予 AI 处理多步骤任务的能力(比如用户让“开发一个登录页面”,AI 会自动拆解“写 HTML 结构→加 CSS 样式→写 JS 交互→处理接口请求”,而不是只做一步就停);
- 重复强调核心目标:多次提到“解决问题”“完成查询”,这是因为 AI 可能会忽略零散指令,通过多角度重复,能强化 AI 对核心目标的记忆(就像我们提醒别人“记得点赞三连”,会换几种说法反复提,避免对方忘记)。
还有一个隐藏技巧叫「Re-Reading(重读)」,本质是让 AI 反复确认需求——有文献证明,让模型“再读一遍问题”能提升推理准确性,这一点在 Cursor 的提示词中也有体现。
2. 操作约束:教 AI“规范做事”,避免犯错
如果说“角色定义”是给 AI 定方向,那“操作约束”就是给 AI 定规则——告诉它“该怎么说话、怎么用工具、怎么改代码”,甚至“不能做什么”。这部分用对称的 HTML 标签(比如 <communication>
<tool_calling>
)划分模块,结构非常清晰,我们逐个拆解:
(1)规范 AI 的“表达方式”
核心作用是统一 AI 的输出格式,告诉 AI 怎么说话,方便用户阅读和后续程序处理:
在助手消息中使用 Markdown 时,用反引号格式化文件、目录、函数和类名(比如 src/utils.js
);用 ( 和 ) 表示行内数学公式(比如 (a2 + b2 = c^2)),用 [ 和 ] 表示块级数学公式。
(2)AI 使用工具的“红线规则”
这是整个提示词中最关键的部分,直接决定 AI 能否正确调用工具解决问题,核心规则有 9 条,其中 5 条必须重点关注:
- 严格遵循工具格式:必须按指定 schema 调用工具,不能漏填参数;
- 禁止调用未授权工具:即使对话中提到其他工具,只要没明确提供,就不能用;
- 不向用户提“工具名”:比如调用“读取文件工具”时,不能说“我要用 read_file 工具”,而是说“我会帮你读取这个文件的内容”;
- 优先工具获取信息:如果能通过工具查到答案(比如读文件看代码结构),就不要问用户(避免“你这个文件路径是什么?”这种无意义提问);
- 制定计划后立即执行:不用等用户确认(比如 AI 计划“先读登录接口代码,再写前端调用逻辑”,直接做就行,不用问“我可以先读接口代码吗?”)。
💡 这一段提示词中,我们能学到几个技巧:
- 通过设定负面指令(大写的 NEVER)和正面指令(大写的 ALWAYS),强化了对 AI 的行为约束。
- 通过 “切勿调用未明确提供的工具”、“仅使用标准的工具调用格式和可用的工具”、“读取文件而不是猜测或编造答案” 尽可能地消除 AI 的幻觉。
- 在合适的场景给 AI 放权,不用让它频繁找用户确认。
(3)让 AI“想透彻”再动手
核心原则是“全面、深入”,确保 AI 理解所有上下文后再输出,避免“想当然”:
收集信息时要彻底,回复前必须掌握完整场景;追溯每个符号的定义和用法(比如某个函数的参数含义),不要只看第一个相关结果;用“语义搜索”作为主要工具,先从宽泛的高层查询(比如“用户认证流程”)入手,再拆成子问题(比如“登录态怎么存储?”);必须用不同措辞多搜几次,第一遍结果往往漏关键信息。
这其实是「思维链(CoT)」和「推理执行(ReAct)」的结合——先让 AI 想清楚“要查什么、怎么查”,再动手执行,而不是上来就写代码。比如用户问“为什么登录接口报 500 错”,AI 会先搜“登录接口的代码位置”→“看报错日志”→“查数据库连接是否正常”,而不是直接猜测“可能是参数错了”。
(4)规范 AI 的“改代码行为”
针对“代码修改”的专属约束,重点解决“输出冗余”和“代码不可运行”的问题:
除非用户要求,否则不要直接输出代码,必须用代码编辑工具修改(比如只替换某几行代码,而不是重新输出整个文件);生成的代码必须能立即运行,要自动加全导入语句、依赖配置(比如创建 requirements.txt);如果引入 Linter 错误,最多尝试修复 3 次,第 3 次没解决就问用户;构建 Web 应用时,要保证 UI 美观且符合 UX 最佳实践。
这个约束非常实用:比如用户要修改一个 5000 行的配置文件,AI 不用输出完整文件,只需用“字符串替换工具”改关键行——既高效,又方便用户对比修改前后的差异。
(5) 处理“优先级”和“记忆”
<summarization>
:如果有<most_important_user_query>
标签,就优先处理这个核心查询,忽略之前的需求(比如用户先问“改按钮样式”,后说“先解决登录报错”,AI 就聚焦登录问题);<memories>
:管理对话记忆,比如用户纠正过的错误记忆(比如“之前说的接口地址错了,应该是 xxx”),必须立即用update_memory
工具删除或更新;用记忆时必须标注来源(比如“我会用 -la 命令查看文件 [[memory:123]]”),如果因记忆拒绝用户请求,要告诉用户“可以纠正记忆”。
3. 支持的工具:给 AI 趁手的“装备”
工具模块占了整个提示词的 80%,核心是“给 AI 清晰的工具使用指南”——通过「命名空间(namespace)」分类,让 AI 快速找到对应工具,主要分为两类:
- functions:基础工具集合,比如
codebase_search
(语义搜索代码)、read_file
(读取文件)、grep_search
(精确文本搜索)、file_search
(按名称找文件); - multi_tool_use:多工具组合包装,支持同时调用多个
functions
下的工具,比如“先搜代码位置,再读文件内容”。
每个工具的定义都有严格的结构,以 codebase_search
(语义搜索)为例:
// ### 何时使用:探索不熟悉的代码库、问“如何/在哪里/什么”类问题(比如“前端登录组件在哪里”)、按含义找代码;
// ### 何时不使用:精确文本匹配(用 grep_search)、读已知文件(用 read_file)、简单符号查找(用 grep_search)、按名称找文件(用 file_search);
// ### 示例:
// // 查询:“前端中在哪里实现了接口 MyInterface?” // 好:问题完整,带“前端”上下文,明确要找“实现位置”; // //
// // 查询:“MyInterface frontend” // 不好:太模糊,应改成“ MyInterface 在前端中在哪里使用?”; // //
这里用到了提示词的经典技巧「Few-shot(少样本示例)」——通过“好例子+坏例子+推理”,让 AI 快速理解工具的正确用法,比单纯说“要明确查询”效果好得多。
三、提示词编写原则:从 Cursor 中提炼的实战经验
拆解完 Cursor 的 Agent 提示词,我们可以总结出 5 条通用的提示词编写原则,无论是开发 AI 编程工具,还是做其他 AI 应用,都能用到:
- 明确场景、角色和目标:不要只说“你是一个助手”,要具体到“你是 XXX 场景下的 XXX 助手,目标是解决 XXX 问题”(比如 Cursor 中“GPT-4.1 驱动的编程助手,目标是结对解决编码任务”);
- 提供详细的执行流程:不仅要告诉 AI“做什么”,还要说“怎么做”——比如“用语义搜索时,先高层查询再拆子问题,多换措辞搜几次”;
- 模块化+格式化+强强调:用标签(如
<tool_calling>
)划分模块,用大写关键词(NEVER/ALWAYS)强调重点,避免零散指令被忽略; - 工具说明要“手把手”:如果 AI 需要用工具,必须讲清“适用场景、不适用场景、示例”,最好加“好/坏例子对比”;
- 严格定义输出格式:如果 AI 输出需要被程序处理(比如工具调用参数、代码片段),一定要约定格式(如反引号包裹、JSON 结构),避免解析错误。
最后
Cursor 的提示词之所以“惊艳”,不在于复杂的语法,而在于“以用户需求为核心”的设计思路——每一条约束、每一个工具定义,都是为了让 AI 更精准、更高效地解决编程问题。
参考
扒了下 Cursor 的提示词,被狠狠惊艳到了!