扒了下 Cursor 的提示詞,被狠狠驚艷到了!
如果讓你開發一個 AI 編程工具(比如 Cursor),你覺得最大的難點是什么?
是前端技術、后端技術、UI 設計、還是別的?
我覺得是提示詞。
我之前手把手帶大家做過一個

要想讓 AI 生成的效果好,不僅需要能力強的大模型,還需要精心編寫的提示詞。
Cursor 在提示詞和工程化這點做的就很好,于是我從
?? 推薦觀看視頻版:https://bilibili.com/video/BV1bBaBzXEae/
Cursor 提示詞總覽
Cursor 有很多套提示詞,每套提示詞適用于不同的場景。比如:
-
Agent 模式提示詞:讓 AI 能夠自主地分析、規劃并執行編碼任務,直到問題被徹底解決。
-
CLI 命令行提示詞:適用于可交互命令行環境
-
Chat 對話提示詞:適用于以對話問答為主的場景,能快速響應用戶的問題。
-
Memory 對話記憶提示詞:評估 AI 的長期記憶,保證 AI 能夠從歷史交互中學習并沉淀高質量的通用偏好記憶。

其中,最值得學習的是 Agent 模式提示詞,足足有 500 多行。建議大家用 Markdown 閱讀器或代碼編輯器打開,比如我用 VSCode,可以一邊閱讀一邊讓 AI 給我解釋。

不得不吐槽一句,這么長的提示詞,token 消耗快不是沒有原因的!有時我隨便說一句話 AI 都得給我搞個長篇大論。
英文原版和中文版提示詞我都發在
Agent 提示詞拆解
接下來我們以 Agent 提示詞為例,拆解一下 Cursor 提示詞的寫法。
跟閱讀開源項目一樣,先整體再局部分析。
整體結構分析
整體來看,這個提示詞分為三大模塊:角色定義、操作約束、和支持的工具。
就跟我們塑造一個游戲角色一樣,先知道你是誰、你能做什么、你要做什么;再開始給角色點技能、教他怎么做;最后給角色持續買裝備、教他怎么用,越來越強。
?? 我們寫提示詞也可以按照這個思路,讓 AI 先從宏觀上理解它的身份和目標,再到微觀上遵循每一步的行動規范。
下面我們依次分析每個模塊。
1、角色定義
提示詞:

這段提示詞上來就定義了:
-
你是誰?編程助手
-
你在做什么?和用戶結對編程
-
你的任務是什么?解決編程問題
?? 這也是典型的提示詞編寫技巧,通過明確角色、背景和目的,確保 AI 生成的內容聚焦于某個具體的領域和場景,提升輸出的有效性。
接著往下看:

“你必須一直運行到完全解決用戶的問題” 這里進一步明確了 AI 的角色,并且賦予 AI Agent 的持續運行模式,讓 AI 有能力處理復雜、多步驟的任務。
?? 不知道大家有沒有注意到,這段內容的表達有點冗余,多次重復了 “繼續工作”、“解決查詢”。這也是寫 Prompt 常用的一種手段,我們知道,AI 跟人一樣,在接受信息比較多的情況下,很可能會忘記一部分內容、或者忽略掉一些重點。通過從不同的角度 反復強調 同一個事情,能夠強化 AI 的理解、保證這段內容的權重,也能在一定程度上消除 AI 理解 Prompt 時的歧義。
比如魚皮說一遍 “記得點贊三連”,你可能不以為然,所以這里我要說第二遍 “求你點贊三連”,但你可能還是沒有被打動,所以我要說第三遍 “在你沒有點贊三連之前,請你先點贊三連”。

?? 還有個類似的技巧叫 Re-Reading 重讀,又稱 Re2。其實就是復讀機,通過讓模型重新閱讀一遍問題來提高推理能力,有
2、操作約束
接下來的提示詞就是在教 AI 做事。
分為 6 個部分,每個部分都是用一組對稱的 HTML 標簽括了起來,結構非常清晰。

communication

見名知意,這里就是在告訴 AI “怎么說話”,便于用戶理解。
規定了 AI 的響應要使用 Markdown 格式,以及如何格式化文件名、函數名,如何使用定界符來展示數學公式。
?? 統一輸出格式不僅能幫助用戶閱讀,而且也有利于后續對輸出文本的處理。
魚皮之前帶大家做的

tool_calling


這是整個提示詞中非常關鍵的約束部分,是 AI 使用工具時必須要遵守的原則。
比如:
-
禁止 AI 在和用戶交流時直接提及工具名稱。
-
鼓勵 AI 優先通過調用工具獲取信息,而不是直接向用戶提問,避免一些無意義的交互影響用戶的體驗。
-
一旦制定計劃,應立即執行,無需等待用戶確認。這也是 AI 經常出現的情況,制定計劃之后總是會結束會話并詢問用戶是否執行。
-
在不確定代碼庫結構或文件內容時,必須使用工具讀取信息,禁止猜測。
?? 這一段提示詞中,我們能學到幾個技巧:
-
通過設定負面指令(大寫的 NEVER)和正面指令(大寫的 ALWAYS),強化了對 AI 的行為約束。
-
通過 “切勿調用未明確提供的工具”、“僅使用標準的工具調用格式和可用的工具”、“讀取文件而不是猜測或編造答案” 盡可能地消除 AI 的幻覺。
-
在合適的場景給 AI 放權,不用讓它頻繁找用戶確認。
我印象很深刻,剛開始用 AI Agent 的時候,有一次我睡覺前讓 AI 跑個大任務,結果第二天發現 AI 在等我確認需不需要安裝依賴。。。合著卡了一晚上啥都沒干!

maximize_context_understanding

這部分的作用是告訴 AI 如何進行思考和信息收集、最大限度地理解上下文,核心原則是 全面 和 深入:
-
在回答前,必須通過工具或提問確保掌握了完整的上下文。
-
要追溯每個符號的定義和用法,確保完全理解。
-
強制 AI 使用多種不同措辭進行多次搜索,確保信息的完備性。
?? 其中,最后一點是我認為非常值得學習的,就跟我們程序員遇到 Bug 時一樣,一個關鍵詞可能無法搜索到我們想要的答案,就要多嘗試幾組關鍵詞,得到足夠多的信息后問題才更容易解決。

?? 這部分內容也是 思維鏈 CoT(Chain-of-Thought)和 ReAct(推理執行)的體現,給 AI 規劃了一套具體、可執行的信息收集分析流程,讓 AI 先盡可能思考、獲取到足夠的信息之后,再具體執行。
making_code_changes

這個模塊的作用是 規范 AI 修改代碼的行為:
-
禁止直接在聊天中輸出代碼,必須通過代碼編輯工具來實現更改。這樣做就避免了對話框的空間被大量的代碼塊占據。
-
強調生成的代碼必須是 可立即運行的,要求 AI 自動處理好依賴、導入等所有前置條件。否則生成一堆沒法用的代碼的話,體驗就很差了。不過這里也只是一個約束罷了,畢竟誰能保證一次性寫出的代碼 100% 能運行呢?
-
為 AI 設定了處理錯誤的循環機制,嘗試修復最多3次,如果失敗就向用戶求助。
?? 對于 AI 編程工具來說,這段提示詞非常重要。想象一下,如果已經生成了一個 5000 行代碼的文件,結果用戶只需要修改文件中的某一行代碼,難道要重新把這 5000 行代碼輸出一遍么?更高效的方式肯定是提供給 AI 一個支持 “字符串替換” 的代碼編輯工具,可以讓 AI 只修改部分代碼,不僅輸出效率更高、修改更精準可控,還有利于對比修改前后的代碼。

summarization

這部分比較簡短,只添加了一個約束 —— AI 應該處理最重要的查詢。
這其實是強行調整 AI 的注意力焦點。隨著對話進行,用戶可能會提出新的、更優先的需求,有了這段提示詞,AI 可以轉移任務重心,優先處理用戶的核心訴求。
就好比我正在處理一個工作,老板突然說:“別干了,出去團建去!”,那我不可能還繼續干之前的工作對吧。
memories

這段提示詞雖然很長,但核心的功能是為了讓 AI 正確使用 Cursor 的對話記憶功能,了解一下就好。
3、支持的工具
Tools 模塊的內容非常長,占了整個提示詞的 80%,但其實很好理解,就是給 AI 提供各種各樣的工具,并且將每個工具的作用、用法、注意事項給 AI 描述清楚。
由于工具較多,在最外層將工具通過 namespace 命名空間進行分類,包括 functions 和 multi_tool_use,為 AI 提供了一個清晰的工具層級。

命名空間下有很多工具,比如代碼庫搜索工具:

?? 從這個模塊中,我們能學到一些小技巧。
1)工具的定義內部通過 ### 標題語法來創建邏輯分段,讓文檔內容層次分明,便于解析和理解。
2)工具提供了使用示例,并用一段簡短的推理來評估使用方式是否正確。這其實是寫提示詞的經典技巧 Few-shot,通過手把手舉例教學的方式,幫助 AI 理解工具的正確使用方法,能很大程度提高 AI 輸出的準確度。

至此,我們就把 Cursor 的 Agent Prompt 拆解完了。大家感興趣的話可以看看其他 Prompt,比如記憶模塊的 Prompt 定義了一套過濾評估機制,指導 AI 判斷哪些信息值得長期記憶,哪些應當舍棄,避免無用、錯誤內容干擾記憶質量。文本評估也是 AI 典型的應用場景之一了。
總結
最后,通過本期對 Cursor 提示詞的拆解,我們可以提煉出一些提示詞編寫原則:
-
明確角色和目標
-
不要只告訴 AI 做什么,還要指導它怎么做,最好給出詳細的流程
-
零散的指令很容易被忽略,所以 Prompt 需要模塊化、格式化,還可以通過重復、強調等方法強化
-
如果 AI 需要使用工具,為每個工具提供詳盡的說明、場景和范例
-
如果 AI 的輸出需要被其他程序消費,那么一定要在提示詞中嚴格定義輸出格式,保證輸出內容的結構化
還有更多提示詞編寫技巧、AI 知識、AI 工具等等,大家可以在我

如果本期內容讓你有所收獲,記得點贊三連,這個操作其實挺簡單的,把手按在手機上,或者敲兩下就可以了,你學會了么?

如果讓你開發一個 AI 編程工具(比如 Cursor),你覺得最大的難點是什么?
浙公網安備 33010602011771號