CLAUDE.md 寫錯(cuò)一行,為什么 Agent 會(huì)全程跑偏?
我之前一直以為 Agent 在項(xiàng)目里頻繁改錯(cuò)文件、無限循環(huán)跑單測(cè)是模型不夠聰明。后來排查了三天,我才發(fā)現(xiàn),真正的問題居然是因?yàn)槲以?CLAUDE.md 里寫錯(cuò)了一行模糊的規(guī)則。
當(dāng)時(shí)我重構(gòu)一個(gè)視頻項(xiàng)目的布局,為了省事,在項(xiàng)目主規(guī)則里寫了句:“優(yōu)化整體界面排版,確保移動(dòng)端顯示正常”。
結(jié)果,我喝杯茶的功夫,AI 終端 Agent(Claude Code)不僅改了移動(dòng)端布局,還自作主張幫我重構(gòu)了桌面端邏輯、改寫了 package.json 引入了新的排版依賴,并把半個(gè)倉庫的 CSS 全修改成了 diff。一跑構(gòu)建,滿屏報(bào)錯(cuò)。AI 還在終端里發(fā)了瘋似的一邊道歉一邊繼續(xù)盲目亂改,直到把我的 Token 額度徹底燒光。
【此處配圖:一行紅色的配置代碼在 IDE 中高亮,下方指示箭頭指向一個(gè)由齒輪和代碼崩塌組成的廢墟,代表一行配置錯(cuò)誤導(dǎo)致的連鎖跑偏】
作為一個(gè)每天全靠 AI 敲代碼的獨(dú)立開發(fā)者(一人 AI 公司),我踩過了無數(shù)次 Agent“鬼打墻”的坑。今天咱們不講概念,只聊實(shí)操:為什么你寫的規(guī)則文件總是起反作用?如何通過項(xiàng)目規(guī)則、任務(wù)單和驗(yàn)收清單,馴服你的 AI Agent?
一、 為什么你的 Agent 總是越改越亂?
大模型在做 Agent 執(zhí)行任務(wù)時(shí),有幾個(gè)天然的心智弱點(diǎn)。如果你的項(xiàng)目配置規(guī)則(.cursorrules / CLAUDE.md / AGENTS.md)寫得不夠嚴(yán)密,它一定會(huì)踩進(jìn)這三個(gè)泥潭:
1. 臨時(shí)指令與長期規(guī)則混淆
很多程序員習(xí)慣在項(xiàng)目規(guī)則里寫:“修復(fù)本模塊的 Timeout Bug,不要使用外部依賴。” 這是一個(gè)典型的“臨時(shí)指令”。一旦你把它固化進(jìn)項(xiàng)目規(guī)則,在接下來的所有對(duì)話和開發(fā)任務(wù)里,Agent 每次啟動(dòng)都會(huì)被強(qiáng)行喂入這個(gè)舊指令。這不僅嚴(yán)重污染了 Context(上下文),還會(huì)導(dǎo)致 AI 產(chǎn)生邏輯錯(cuò)亂,在做別的事情時(shí)依然在死磕舊模塊。
2. 缺乏“物理邊界”的約束
你對(duì) AI 說:“幫我優(yōu)化一下這個(gè)支付接口。” 在 AI 的認(rèn)知里,“優(yōu)化”是一個(gè)沒有物理邊界的詞。大模型會(huì)為了“讓代碼看起來更好”,去修改底層的通用工具類、改動(dòng)外部的路由配置。因?yàn)槟銢]有告訴它“只許修改 target_file 里的內(nèi)容”,它就會(huì)默認(rèn)自己擁有全倉庫的所有權(quán),最終越界修改,把無辜的代碼改崩。
3. 沒有“物理熔斷”的驗(yàn)收標(biāo)準(zhǔn)
當(dāng) AI 修改完代碼,發(fā)現(xiàn)編譯報(bào)錯(cuò)時(shí),它的本能是自我糾錯(cuò)。它會(huì)在終端里自動(dòng)執(zhí)行 npm test,根據(jù)報(bào)錯(cuò)繼續(xù)改。但如果此時(shí)測(cè)試代碼寫得有歧義,AI 就會(huì)在沒有人類干預(yù)的情況下,陷入“修改-測(cè)試-報(bào)錯(cuò)-再修改”的無限死循環(huán)。直到把你的 Token 燒到熔斷,它才會(huì)停下來。
二、 避坑指南:三種寫法的常見結(jié)果對(duì)比
在軟件工程中,曖昧的表達(dá)是 Bug 的溫床。以下是我們?cè)趯?shí)戰(zhàn)中整理出來的規(guī)則寫法對(duì)比:
| 錯(cuò)誤寫法 | 常見跑偏結(jié)果 | 正確工程做法 |
|---|---|---|
| “幫我優(yōu)化一下這個(gè)類” | Agent 自由發(fā)揮,越界重構(gòu)半個(gè)項(xiàng)目 | 給定具體的執(zhí)行任務(wù)單和物理邊界 |
| “直接讀取全倉庫找出 Bug” | Token 快速燒光,AI 注意力渙散并開始瞎猜 | 先通過全局符號(hào)(LSP)搜索,精簡上下文 |
| “做完在終端里告訴我一聲” | 聊天框內(nèi)虛報(bào)完成,本地?zé)o記錄且無法追蹤 | 強(qiáng)制要求將任務(wù)結(jié)果以 當(dāng)前任務(wù)結(jié)果.md 格式寫入文件 |
三、 解決方案:一套可復(fù)制的防跑偏套件
要想讓 Agent 規(guī)規(guī)矩矩干活,你必須在項(xiàng)目根目錄下,補(bǔ)齊這三件套:
1. 項(xiàng)目主規(guī)則(以AGENTS.md為例)
主規(guī)則用于規(guī)定 Agent 的“人設(shè)”與“禁忌物理邊界”。不要往里寫具體的業(yè)務(wù)邏輯,只寫硬性準(zhǔn)則:
# 核心執(zhí)行準(zhǔn)則 - 物理邊界:除任務(wù)單指定的 TargetFile 外,禁止修改任何其他文件。 - 行為守則:禁止進(jìn)行任何范圍外的重構(gòu)。發(fā)現(xiàn)無關(guān) Bug 僅記錄,嚴(yán)禁順手修改。 - 終端限制:若連續(xù) 3 次跑測(cè)試報(bào)錯(cuò)且無法定位,必須立即停止執(zhí)行并向用戶報(bào)告,禁止空轉(zhuǎn)。
2. 執(zhí)行任務(wù)單(Task Sheet)
每次安排 Agent 干活,必須給它下發(fā)一份格式化、邊界清晰的任務(wù)單。你可以把它保存在本地,讓 AI 優(yōu)先讀?。?/p>
# 執(zhí)行任務(wù)單 - 日期:2026-06-16 - 目標(biāo):修復(fù)登錄超時(shí)無重試的 Bug - 指定對(duì)象(物理邊界):`/src/auth/login.ts` - 必須完成:在 `login` 函數(shù)內(nèi)實(shí)現(xiàn)最多 3 次重試,每次間隔 1000ms - 禁止事項(xiàng):嚴(yán)禁修改 `/src/utils/http.ts` 下的通用攔截器邏輯
3. 明確的驗(yàn)收清單(Checklist)
告訴 Agent,只有滿足哪些物理?xiàng)l件,任務(wù)才算真正結(jié)束:
## 驗(yàn)收清單 - [ ] `/src/auth/login.ts` 代碼無編譯報(bào)錯(cuò) - [ ] 本地運(yùn)行 `npm run test:auth` 單測(cè)且 100% 通過 - [ ] 將改動(dòng)點(diǎn)與測(cè)試輸出記錄至項(xiàng)目目錄下的 `當(dāng)前任務(wù)結(jié)果.md`
四、 實(shí)戰(zhàn)改造案例:從“越改越亂”到“一步到位”
改造前(聊天式無邊界)
- 人類指令:“幫我優(yōu)化下支付超時(shí)重試。”
- Agent 動(dòng)作:全倉庫掃描 -> 發(fā)現(xiàn)
http.ts命名不順眼 -> 順手重構(gòu)了通用 HTTP 類 -> 修改了支付邏輯 -> 通用類重構(gòu)導(dǎo)致全局路由崩塌 -> Agent 陷入 12 輪循環(huán)調(diào)試 -> 燒掉 25 刀 Token 后宣告失敗。
改造后(約束式任務(wù)單)
- 人類指令:“先確認(rèn)項(xiàng)目根目錄下的
AGENTS.md。然后讀取任務(wù)單.md,開始執(zhí)行。” - Agent 動(dòng)作:讀取主規(guī)則(確立物理邊界)-> 讀取任務(wù)單(鎖定只能修改
login.ts)-> 精準(zhǔn)修改 3 行重試邏輯 -> 跑特定單測(cè) -> 通過驗(yàn)收 -> 自動(dòng)寫入當(dāng)前任務(wù)結(jié)果.md-> 提示用戶檢查,停止運(yùn)行。全程耗時(shí) 40 秒,Token 賬單 0.15 刀。
五、 馬上抄去用的 5 條落地動(dòng)作
- 物理隔離規(guī)則:立刻把你的
.cursorrules或CLAUDE.md瘦身,把具體的“臨時(shí)開發(fā)指令”刪干凈,只保留全局的編碼規(guī)范和物理隔離禁令。 - 鎖死修改權(quán)限:給 Agent 的第一條指令永遠(yuǎn)是:“除了指定的修改文件,禁止碰其他任何文件。”
- 設(shè)置單次步驟上限:在調(diào)用 Agent(如 Claude Code)時(shí),設(shè)定最大運(yùn)行步數(shù)限制,防止死循環(huán)跑單測(cè)燒錢。
- 測(cè)試閉環(huán):在讓 AI 修改代碼前,先讓它寫出對(duì)應(yīng)的單元測(cè)試。通過測(cè)試來約束它的輸出,而不是用大白話跟它辯論。
- 結(jié)果落到文件:不要讓 Agent 在聊天框里給你發(fā)周報(bào)。強(qiáng)制要求它將修改結(jié)果寫成項(xiàng)目內(nèi)可見的 Markdown 文件(如
當(dāng)前任務(wù)結(jié)果.md),確保你可以隨時(shí) Diff 驗(yàn)收。
到此這篇關(guān)于CLAUDE.md 寫錯(cuò)一行,為什么 Agent 會(huì)全程跑偏?的文章就介紹到這了,更多相關(guān)CLAUDE.md 寫錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章

Claude Code的CLAUDE.md加載時(shí)機(jī)與配置規(guī)范
最新版 Claude Code Desktop(桌面版)已經(jīng)支持通過圖形化界面配置第三方大模型,對(duì)于不想反復(fù)折騰 CLI、環(huán)境變量和本地配置文件的用戶來說,這個(gè)更新非常實(shí)用,本文就給大家2026-06-09
Claude Code之CLAUDE.md與項(xiàng)目配置最佳實(shí)踐
CLAUDE.md配置哲學(xué)精準(zhǔn)優(yōu)于全面,避免冗余,提升效果,本文詳解LitmusTest、條件加載、@claude/rules/目錄按需加載、@imports引用機(jī)制及Monorepo多層級(jí)配置,助你高效規(guī)范項(xiàng)目2026-06-09



