Anthropic開源Agentic Coding最佳實(shí)踐!
周末的時(shí)候,Anthropic發(fā)布了Agentic Coding的最佳實(shí)踐博客。今天給家人們分享一下具體的內(nèi)容,先揭秘一個(gè)它背后有點(diǎn)“反直覺”的小把戲,看看“高端的AI”是如何用上“樸素的if/else”的,最后再帶給大家一波官方總結(jié)的實(shí)戰(zhàn)干貨!
“ultrathink”的魔法與樸素的 if/else**
在博客中提到,如果你想讓 Claude 在處理復(fù)雜問題時(shí)“多想想”,可以在指令里加上 "think" 這個(gè)詞。想讓它想得更深?那就用 "think hard" 或者 "think harder"。甚至還有一個(gè)終極指令——"ultrathink",據(jù)說能給 Claude 分配更多的“思考預(yù)算”(token thinking budget),讓它更徹底地評(píng)估各種方案。
X上的老哥忍不住去扒了扒 ??Claude Code?
? 的代碼(雖然是混淆過的)。
結(jié)果在處理這些“思考指令”的地方,發(fā)現(xiàn)了類似下面這樣的邏輯:
let B = W.message.content.toLowerCase();
if (
B.includes("think harder") ||
B.includes("think intensely") ||
B.includes("think longer") ||
B.includes("think really hard") ||
B.includes("think super hard") ||
B.includes("think very hard") ||
B.includes("ultrathink")
)
return (
l1("tengu_thinking", { tokenCount: 31999, messageId: Z, provider: G }),
31999
);
if (
B.includes("think about it") ||
B.includes("think a lot") ||
B.includes("think deeply") ||
B.includes("think hard") ||
B.includes("think more") ||
B.includes("megathink")
)
return (
l1("tengu_thinking", { tokenCount: 1e4, messageId: Z, provider: G }), 1e4
);
if (B.includes("think"))
return (
l1("tengu_thinking", { tokenCount: 4000, messageId: Z, provider: G }),
4000
);
??toLowerCase().includes()?
??,然后就是一連串的 ??if/else if?
?!就是所謂的“ultrathink”魔法,在代碼層面就是通過判斷你的輸入里是否包含這些特定的關(guān)鍵詞,然后返回一個(gè)預(yù)設(shè)的數(shù)字(31999、10000、4000),然后這些數(shù)字應(yīng)該就直接影響了分配給模型思考的 token 預(yù)算。這里可能跟gemini 2.5 flash設(shè)置thinking budget一個(gè)道理。
為了實(shí)現(xiàn)分級(jí)資源調(diào)用這個(gè)功能 claude 工程師們選擇了這種清晰、可控且高效的 ??if/else?
? 方式。用最簡(jiǎn)單直接的方法解決特定的問題,這種操作方式也是值得的借鑒的。
官方實(shí)戰(zhàn)技巧放送
前面知識(shí)開胃菜,光知道 "ultrathink" 還不夠,要想真正把它用好,還得掌握官方總結(jié)的最佳實(shí)踐。下面就給大家精選幾個(gè)特別實(shí)用的:
多用記事本!
??Claude Code?
?? 會(huì)自動(dòng)讀取你項(xiàng)目根目錄下的 ??CLAUDE.md?
? 文件。
現(xiàn)在的vibe coding都有類似的文件,可以在里邊記錄上需要的讓模型遵循的指令,注意事項(xiàng),甚至是項(xiàng)目特有的“坑”或警告,任何想讓 Claude 記住的上下文信息。
同時(shí)保持這個(gè)文件簡(jiǎn)潔明了,Claude 就能更好地理解你的項(xiàng)目,干活也更靠譜。你甚至可以用 ??#?
?? 快捷鍵,讓 Claude 自動(dòng)幫你把指令或信息添加到 ??CLAUDE.md?
? 里。
cursor beta版本,現(xiàn)在支持了 ??/Generate Cursor Rules?
?,可以自動(dòng)生成一些Rules文件,作為全局約束。
先“想”后“做”:探索-計(jì)劃-編碼
就像我們自己寫代碼一樣,直接上手莽,不如先規(guī)劃好。對(duì) ??Claude Code?
? 也是如此。官方推薦一個(gè)經(jīng)典流程:
- 探索 (Explore):先讓 Claude 閱讀相關(guān)的代碼文件、文檔,甚至圖片或 URL,但明確告訴它“先別寫代碼”。
- 計(jì)劃 (Plan):讓 Claude 針對(duì)你要解決的問題,制定一個(gè)詳細(xì)的計(jì)劃。這時(shí)候就可以用上咱們前面說的 "think"、"think hard" 了,給它時(shí)間思考清楚。
- 編碼 (Code):等你確認(rèn)計(jì)劃沒問題了,再讓 Claude 開始動(dòng)手實(shí)現(xiàn)。
- 提交 (Commit):完成后,讓 Claude 幫你寫好 commit message,甚至創(chuàng)建 PR。
這個(gè)流程能顯著提高復(fù)雜任務(wù)的成功率,避免 Claude 一上來就跑偏。尤其是前2個(gè)步驟,Claude經(jīng)常會(huì)跳過直接開始寫代碼了,但是前期深入的思考,可以大幅提高性能。
更清晰的指令,更豐富的上下文
AI 不會(huì)讀心術(shù),咱們得把話說清楚。模糊的指令,比如“給 ??foo.py?
?? 加測(cè)試”,遠(yuǎn)不如“為 ??foo.py?
? 寫個(gè)新測(cè)試用例”來得有效。官方給出的好壞指令對(duì)比,差異非常明顯。
除了說清楚,還要充分給足上下文。現(xiàn)在很多的Agentic Coding軟件,在對(duì)話框里:
- 用?
?@?
? 符號(hào)提及文件或目錄名(支持 tab 補(bǔ)全),它就能快速定位。 - 直接粘貼 URL,它會(huì)去讀取網(wǎng)頁內(nèi)容。
- 粘貼或拖拽圖片(比如 UI 設(shè)計(jì)稿或錯(cuò)誤截圖),它也能理解。
信息給得越足,Claude 的表現(xiàn)就越好。
及時(shí)糾偏
AI 干活不可能一步到位,發(fā)現(xiàn)它理解錯(cuò)了或者跑偏了,千萬別干等著。你需要主動(dòng)引導(dǎo)和糾正:
- 隨時(shí)打斷:不滿意,請(qǐng)隨時(shí)點(diǎn)擊?
?stop generation?
?之類的按鈕,隨時(shí)中斷 Claude 當(dāng)前的任何操作(思考、調(diào)用工具、編輯文件等)。 - 修改歷史:可以隨時(shí)回到之前的某條指令,修改后再讓它重新執(zhí)行,探索不同方向。
- 請(qǐng)求撤銷:如果 Claude 修改了文件但你不滿意,可以直接讓它?
?undo?
? 撤銷更改。 - 保持清爽:感覺聊了太久,上下文有點(diǎn)亂了?開一個(gè)新窗口,重新聚焦當(dāng)前任務(wù)。
- 自我糾錯(cuò):嘗試讓一個(gè) Claude 編寫代碼;使用另一個(gè) Claude 進(jìn)行驗(yàn)證。
目前的vibe coding軟件用起來,就像在和一個(gè)(雖然很強(qiáng)但有時(shí)也需要引導(dǎo)的)助手協(xié)作,所以不要想著給他當(dāng)成一個(gè)機(jī)器一樣不管它。
相對(duì)通用的技巧就上面這些內(nèi)容,除此之外,還有一些claude code獨(dú)有的特性,感興趣的可以自行查詢官方文檔。https://www.anthropic.com/engineering/claude-code-best-practices
本文轉(zhuǎn)載自???探索AGI???,作者:獼猴桃
