編輯|澤南、楊文
「我們刪除了 80% 的 Claude Code 系統(tǒng)提示,這是我們從編寫系統(tǒng)提示詞、Skill 和 Claude.MD 中學(xué)到的。」
本周五,Claude Opus 5 正式上線,Anthropic 技術(shù)團(tuán)隊成員 Thariq Shihipar 立即發(fā)帖,向我們介紹了新一代大語言模型之上,工程方面的趨勢變化。
![]()
Anthropic 自己發(fā)現(xiàn),在 Claude Opus 5 這種新一代強(qiáng)推理模型發(fā)布后,舊的提示詞工程范式可能已經(jīng)過時,甚至在起反作用。
簡單來說,就是模型越強(qiáng),就越不需要「保姆式」指導(dǎo),冗長的手寫規(guī)則除了浪費 token,還有可能會讓效果變差;新的 Claude.md 應(yīng)該保持絕對的精簡,高績效團(tuán)隊控制在 60 行以內(nèi),通常絕不要超過 300 行;大砍系統(tǒng)提示詞之后,可以把那些特定任務(wù)的上下文交給 Skill。
可見,隨著大模型的參數(shù)化知識和推理能力越來越強(qiáng),提示詞工程也要向整體架構(gòu)的高度轉(zhuǎn)變。
這讓我們不由得感嘆,時代變了。
讓我們看看 Anthropic 自己是如何解釋的
Anthropic 此前介紹過如何為新一代 Claude 5 模型編寫提示詞,以及如何與模型迭代協(xié)作、在過程中逐步明確真正想構(gòu)建的東西。
但當(dāng)用戶向 Claude 發(fā)送一條消息時,提示詞只是模型所獲上下文中的一小部分。上下文中的絕大部分內(nèi)容,來自系統(tǒng)提示詞、Skills、CLAUDE.md 文件、記憶以及其他來源,這稱為上下文工程(context engineering)。無論你是在使用 Claude Code,還是在構(gòu)建自己的 Agent,它都會顯著影響最終產(chǎn)出的質(zhì)量。
與提示詞不同,上下文通常用于多個請求,因此不可能寫得那么具體。
那么,在根本不知道用戶會輸入什么提示詞的情況下,該如何為 Claude 編寫這類通用的提示和指導(dǎo)?
隨著 Claude 自身能力的演進(jìn),這件事的難度可能超出預(yù)期。
最近,Anthropic 就發(fā)現(xiàn)面向新一代 Claude 模型的提示方式出現(xiàn)了一次很大的躍遷:對于 Claude Opus 5、Claude Fable 5 這類模型,團(tuán)隊刪掉了 Claude Code 系統(tǒng)提示詞中 80% 以上的內(nèi)容,而在編碼評估上沒有觀察到任何可測量的性能損失
以下是 Anthropic 在為這一新世代模型編寫提示時總結(jié)出的經(jīng)驗,以及開發(fā)者可以如何用它來更新自己的上下文工程實踐。這些最佳實踐已被沉淀進(jìn) claude doctor—— 在 Claude Code 中使用 /doctor 命令,就能自動把 Skills 和 CLAUDE.md 文件調(diào)整到合適的規(guī)模。
給 Claude 松綁
總體來看,Anthropic 發(fā)現(xiàn)自己對 Claude Code 施加了過多約束,系統(tǒng)提示詞如此,CLAUDE.md 文件和 Skills 同樣如此。
舉個例子,團(tuán)隊翻閱內(nèi)部使用 Claude Code 的對話記錄時,常常在同一次請求中看到互相矛盾的指令。系統(tǒng)提示詞、Skills 和用戶請求彼此打架,一邊說「酌情保留文檔」,另一邊卻寫著「禁止添加注釋」。
![]()
一般來說,Claude 能夠讀懂用戶的真實意圖并給出正確答案,但它必須先在這些重疊、沖突的指令之間反復(fù)權(quán)衡,才能決定該怎么做。
這些約束在過去確實是必要的,它們用來規(guī)避最壞情況。但團(tuán)隊后來發(fā)現(xiàn),其中很多都可以刪除,轉(zhuǎn)而讓模型依據(jù)周邊上下文和自身判斷力行事。
此外,Claude Code 如今擁有的工具也多得多。過去 Claude 主要依賴 CLAUDE.md 作為記憶、信息和指引的來源。而現(xiàn)在有了記憶、artifacts 和 Skills,Claude 可以借助它們創(chuàng)造出跨會話加載與共享上下文的新方式。
昔與今
過去的一些上下文工程「最佳實踐」,如今已經(jīng)淪為誤區(qū)。
![]()
昔:給 Claude 定規(guī)則 → 今:讓 Claude 自行判斷
Claude Code 剛推出時,Anthropic 團(tuán)隊必須確保它不會踩到最壞情況的雷區(qū),比如刪除文件。這意味著要給出一些語氣很強(qiáng)、但并不總是成立的指令。
例如,系統(tǒng)提示詞里曾經(jīng)寫著:
寫代碼時默認(rèn)不寫注釋。絕不要寫多段式 docstring 或多行注釋塊 —— 最多一行短注釋。除非用戶明確要求,否則不要創(chuàng)建規(guī)劃、決策或分析類文檔 —— 依據(jù)對話上下文工作,而不是根據(jù)中間文件。
但對某一類提示詞而言,這條指令是錯的。就文檔而言,用戶可能有自己的偏好,某些特別復(fù)雜的代碼,也確實需要多行注釋塊來說明。
話雖如此,在沒有這些護(hù)欄的情況下,舊模型寫出的注釋在很多場景下都是錯的,團(tuán)隊只能接受這種取舍。而新模型判斷力更好,無需顯式規(guī)則也能把這類決策處理得很妥當(dāng)。
在新的系統(tǒng)提示詞中,寫法變成了:
寫出的代碼要讀起來像它周圍的代碼:匹配其注釋密度、命名方式和慣用寫法。
昔:給 Claude 舉例子 → 今:設(shè)計好接口
關(guān)于工具使用,過去的第一準(zhǔn)則是:給 Claude 提供使用示例。但在最新的模型上,Anthropic 團(tuán)隊發(fā)現(xiàn)示例反而會把模型約束在某個特定的探索空間里。
![]()
與其堆砌示例,不如多花心思在工具、腳本和文件的設(shè)計上,即 Claude 能拿到哪些參數(shù)?這些參數(shù)如何才能更具表達(dá)力?
以 Todo 工具為例,僅將狀態(tài)列為待處理、進(jìn)行中和已完成三個枚舉值,就能提示 Claude 如何使用該工具。而「始終只保留一項處于進(jìn)行中狀態(tài)」這條說明,則清晰界定了所期望的行為。
昔:一股腦全寫在前面 → 今:漸進(jìn)式披露
由于 Claude Code 聚焦于編碼,其系統(tǒng)提示詞里塞進(jìn)了關(guān)于代碼評審和驗證的詳盡說明。這些內(nèi)容并非總能用上,但一旦用上就至關(guān)重要。
如今,Claude Code 已經(jīng)非常擅長漸進(jìn)式披露 —— 在恰當(dāng)?shù)臅r機(jī)加載恰當(dāng)?shù)纳舷挛摹1热纾瑘F(tuán)隊把驗證和代碼評審拆成了獨立的 Skills,供 Claude Code 按需調(diào)用。
漸進(jìn)式披露不只適用于 Skills,也適用于工具。部分工具采用「延遲加載」:Agent 必須先通過 ToolSearch 檢索出完整定義,才能調(diào)用。這樣就能提供更多工具(比如 Task 類工具),而它們在被真正需要之前不占用任何上下文。
同樣的思路也適用于開發(fā)者自己的 CLAUDE.md 和 SKILL.md。一個常見的誤解是,必須把所有可能用到的實踐一股腦塞進(jìn)這些文件,否則 Claude 就找不到。實際上,請考慮構(gòu)建一棵文件樹,讓它們在合適的時機(jī)被加載。
昔:反復(fù)強(qiáng)調(diào) → 今:簡潔的工具描述
早期的 Claude 模型有時需要重復(fù)指令,也更傾向于聽從上下文窗口末尾而非開頭的內(nèi)容。于是系統(tǒng)提示詞里既有對工具的引用,工具描述中又有一套說明。
Anthropic 發(fā)現(xiàn)這些重復(fù)內(nèi)容完全可以刪掉:把工具的使用說明放進(jìn)工具描述里,而不是系統(tǒng)提示詞中。
昔:把記憶寫進(jìn) CLAUDE.md → 今:自動記憶
過去,用戶被鼓勵用 # 快捷鍵把內(nèi)容自動寫入 CLAUDE.md,以此保存到 Claude 的記憶中。
而現(xiàn)在,Claude 會自動保存與當(dāng)前工作以及與用戶相關(guān)的記憶。
昔:簡單的規(guī)格文檔 → 今:豐富的參考材料
在 plan 模式下,Claude Code 一直高度依賴 markdown 格式的計劃文件。把計劃存成文件,便于 Claude 在需要時回查。另一條類似的最佳實踐,是把規(guī)格文檔存放在代碼庫中,供 Claude 在長周期項目中隨時參考。
但 Anthropic 發(fā)現(xiàn),Claude 已經(jīng)能夠駕馭復(fù)雜得多的參考材料。除了簡單的 markdown 文件,Claude 還可以引用由我們新的 artifacts 功能生成的 HTML artifact。
開發(fā)者也可以用代碼本身作為參考材料。一份規(guī)格說明可以是一套詳盡的測試用例,也可以是另一個代碼庫中某個待移植的函數(shù)。
評分標(biāo)準(zhǔn)(rubric)是另一種形式的參考材料。借助評分標(biāo)準(zhǔn),Claude 可以通過動態(tài)工作流、并派生出驗證者智能體(verifier agents),來嘗試還原并校驗開發(fā)者在某個領(lǐng)域中的品味(比如,什么樣的 API 設(shè)計才算好設(shè)計)。
落到你自己的上下文里
把上面這些串起來,在實際組裝上下文時應(yīng)該是什么樣子?
![]()
系統(tǒng)提示詞
系統(tǒng)提示詞與產(chǎn)品語境高度綁定。它告訴 Claude 自己身處什么產(chǎn)品、在做什么事。對 Claude Code 而言,你基本不會去改動它;但如果你在構(gòu)建自己的智能體框架(agent harness),這里值得你投入大量精力。
CLAUDE.md
保持 CLAUDE.md 輕量:簡要說明這個倉庫是做什么的,然后把大部分 token 花在代碼庫中的「坑」上。比如,團(tuán)隊可能把所有類型定義集中放在一個大文件里,別處一概沒有 —— 這類信息才值得寫。避免陳述那些 Claude 只要看一眼文件結(jié)構(gòu)或倉庫就能知道的「顯而易見」的事。
更細(xì)的內(nèi)容用漸進(jìn)式披露來處理。比如,如果有若干套獨特的工作驗證流程,就做成一個驗證 Skill,然后在 CLAUDE.md 中引用它。
Skills
把 Skills 看作輕量級指南,讓 Claude 在需要時能找到信息。除非是極其關(guān)鍵的領(lǐng)域,否則不要把它們寫得過度約束。
對于篇幅較長的 Skill,盡可能采用漸進(jìn)式披露,即拆成多個文件,分而治之。
Skills 最能發(fā)揮價值的地方,是承載那些屬于開發(fā)者本人、其團(tuán)隊或其產(chǎn)品所特有的觀點、知識和最佳實踐。
參考材料
可以用 @ 提及文件,把它們作為參考材料引入。參考材料讓 Claude 能夠查閱當(dāng)前計劃的深層細(xì)節(jié)。
這些材料可以是規(guī)格文件、設(shè)計稿,甚至是整個代碼庫。總體而言,優(yōu)先選擇以代碼形式存在的文件,它們能給 Claude 提供清晰、高保真的指令,而且用的是它非常熟悉的語言。舉例來說,一份 HTML 設(shè)計稿的效果,通常會好過對設(shè)計的文字描述或一張截圖。
試著做減法
在系統(tǒng)提示詞、Skills 和 CLAUDE.md 之間,開發(fā)者或許也需要像 Anthropic 一樣做一輪簡化。新推出的 claude doctor 命令可以自動幫助完成這件事。
https://x.com/trq212/status/2080710971228918066
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.