Agent Instruction:怎麼寫 AI Agent 的「憲法」 — 自架 AI Agent 實戰(二)
我那隻盯台股的 agent,剛開始有一陣子很「白目」。
它會在我開會開到一半的時候,傳一堆「某某股票漲了 0.3%」這種根本不重要的雜訊轟炸我;該提醒的訊號反而沒講清楚;算出來的數字一下中文一下英文,格式每次都不一樣,我得自己重讀一遍才知道它想說什麼。
我一度以為是模型不夠聰明。後來才發現——問題不在它的腦袋,在我給它的那份「指令」。 我把指令重寫了一遍:講清楚什麼訊號才值得吵我、什麼情況閉嘴、回報要長什麼樣子。同一個模型、同一隻 agent,馬上就從一個白目實習生,變成一個我信得過的同事。
這份指令,就是今天要聊的主角——Agent Instruction,一隻 agent 的「憲法」。
在 自架 AI Agent 實戰系列 裡,我把一隻自主 agent 拆成四層:Context(它知道什麼)→ 能力(它能做什麼)→ 溝通(它怎麼跟你來往)→ 自動化(它什麼時候自己動)。前面幾篇我們已經把後面兩層(溝通、自動化)講完了,這篇開始回頭啃最根本的第一層——Context,而 Context 的第一塊、也是整隻 agent 的地基,就是 instruction。
這篇會聊這些:
- 為什麼 instruction 是你給 agent 最重要的一份檔案
- 好的 instruction vs 壞的 instruction,差在哪(直接對比給你看)
- 一份好指令該有的五塊:角色、能力、邊界、輸出、範例
CLAUDE.md與AGENTS.md:實務上指令到底放在哪- 我那隻股票 agent 的指令長怎樣(真的貼給你看)
- 最常見的三個寫壞陷阱,幫你先踩過
關於作者:我是工程師阿穆,寫程式十多年,這幾年在做 AI Agent 與電商系統開發。文中的 instruction 都是我自己電腦上 agent 真的在用的,本文是第一手實作紀錄。 利益揭露:本文沒有業配、沒有聯盟連結。提到的工具(Claude Code、Codex、AGENTS.md 標準)都是我自己用過或研究過的。
instruction 是什麼:agent 的憲法,不是 README
先把名詞講清楚。Instruction 就是你寫給 agent 的一份指令文件,告訴它:你是誰、你能做什麼、你不能做什麼、做完要長什麼樣子。
很多人第一次接觸會以為它只是個「設定檔」或「README」——隨手寫幾句「你是一個股票助理,幫我分析股票」就交差。但這樣想就小看它了。
我更喜歡把它叫做 agent 的憲法:
同一個模型,餵不同的 instruction,會變成完全不同的兩隻 agent。一隻可能謹慎、會主動回報、講話有條理;另一隻可能暴衝、亂吵你、答非所問。差別不在模型多強,在那份憲法寫得好不好。
這也是為什麼我會說它是 Context 這一層的地基。在 系列總論 裡我提過,Context 分成兩塊:instruction(規則) 和 memory(記憶)。記憶是它「累積了什麼」,而 instruction 是它「打從一開始就該遵守的什麼」。記憶會變,憲法不太動——這就是兩者的分工。(memory 那塊我們留到下一篇細講。)
好的 instruction vs 壞的 instruction
空講很抽象,直接對比給你看。假設我要做一隻盯台股的 agent,同樣的需求,兩種寫法。
壞的版本(很多人第一次都這樣寫):
你是一個專業的股票分析助理,請幫我分析台股,
看到重要的訊號就通知我,講得專業一點。
看起來好像有講,但每一句都是空的。「重要的訊號」是多重要?「通知我」用什麼方式、什麼格式?「專業一點」到底是要它幹嘛?agent 只能靠猜,而它猜的標準跟你心裡的標準八成對不上——這就是我一開始被雜訊轟炸的原因。
好的版本(把每件事都講具體):
# 角色
你是我的台股盯盤助理。個性謹慎、不誇大、寧可漏報也不要亂報。
# 你要關心的訊號(只有這些才值得通知我)
- 持股清單裡的股票,單日漲跌幅超過 5%
- 成交量突然放大到 20 日均量的 2 倍以上
- 觸及我預設的停利/停損價
# 邊界(這些事絕對不要做)
- 不要給「買進/賣出」的具體建議,你只負責偵測與回報,決定我自己來
- 漲跌幅在 5% 以內的,一律不要通知,不要洗版
- 不確定的時候,明講「資料不足」,不要硬掰一個數字
# 回報格式(每則通知都長這樣)
【訊號類型】股票名稱(代號)
現價:xxx(漲跌幅 +x.x%)
觸發原因:一句話講清楚為什麼吵你
資料時間:HH:MM
# 範例
【爆量】台積電(2330)
現價:1085(漲跌幅 +6.2%)
觸發原因:成交量達 20 日均量 2.3 倍,且漲幅破 5%
資料時間:10:32
感受到差別了嗎?第二份指令,agent 完全不用猜。它知道該關心什麼(具體的訊號條件)、不該做什麼(不洗版、不亂給建議)、做完長什麼樣(固定格式 + 一個範例)。
寫 instruction 的黃金法則只有一句:把你心裡那套「你希望它怎麼做」的隱性標準,全部攤開寫成白紙黑字。 你覺得「這還用講嗎」的地方,正是 agent 最會猜錯的地方。
一份好 instruction 的五塊骨架
從上面那個例子,其實可以抽出一個通用結構。我自己寫每一隻 agent 的指令,都會繞著這五塊跑:
1. 角色(你是誰、你的個性) 一句話定位它是什麼、做事的調性。是謹慎還是大膽?寧可漏報還是寧可多報?這會影響它所有的判斷傾向。
2. 能力(你負責做什麼) 它的工作範圍。盯盤?整理收件匣?爬資料寫摘要?講清楚邊界內的事,它才不會東摸西摸做一堆你沒要的。
3. 邊界(你絕對不要做什麼) 這塊最常被漏掉,但超級重要。「不要做什麼」往往比「要做什麼」更能定義一隻 agent 靠不靠譜。 不要給投資建議、不要洗版、不要刪檔案、不確定就說不確定——把紅線畫清楚。
4. 輸出格式(做完要長什麼樣) 你希望結果是條列、表格、還是一段話?固定欄位有哪些?這決定了你每次收到結果要不要再花力氣重讀整理。
5. 範例(給它一個照抄的樣本) 這是 CP 值最高的一塊。講十句「要簡潔」,不如直接給它一個你心目中完美的輸出長怎樣。 模型超會模仿範例,一個好範例頂得上一大段抽象描述。
你不一定五塊都要寫滿,但每次寫 instruction 前在心裡過一遍這五塊,你會發現自己漏掉的通常就是邊界跟範例——而那兩塊正是 agent 最容易出包的地方。
CLAUDE.md 與 AGENTS.md:指令實務上放哪
講完「怎麼寫」,來講「寫在哪」。
如果你用的是 Claude Code,它有個約定:在專案資料夾放一個叫 CLAUDE.md 的檔案,每次啟動 agent 它都會自動讀進去當成最高指導原則。你不用每次對話都重貼一遍指令,寫一次、放著,它就記得。
而 2026 年逐漸成形的一個跨工具標準叫 AGENTS.md——它是個開放規格,目標是讓同一份指令檔,Codex、Cursor、Copilot 等不同 agent 工具都能讀,不用每換一個工具就重寫。依官方說明目前已有六萬多個專案採用。你可以把它想成「agent 界的共通 README」,差別是它是寫給 agent 看的操作守則,不是寫給人看的說明。
兩者擺一起比:
| 維度 | CLAUDE.md |
AGENTS.md |
|---|---|---|
| 誰會讀 | Claude Code | 跨工具(Codex / Cursor / Copilot…) |
| 本質 | Claude Code 的約定 | 開放標準 |
| 格式 | 純 Markdown | 純 Markdown |
| 適合誰 | 只用 Claude Code | 會在多個 agent 工具間切換 |
簡單記:CLAUDE.md是 Claude Code 的指令檔,AGENTS.md是跨工具的通用指令檔。 很多人的做法是主力寫AGENTS.md,再讓CLAUDE.md一行 import 過去,一份指令兩邊共用。
實務上還有兩個層級要分清楚:
- 專案級指令:放在某個專案資料夾裡,只在這個專案生效。例如股票 agent 的盯盤規則,就放在它自己的資料夾。
- 全域級指令:放在你家目錄(像
~/.claude/CLAUDE.md),所有專案通吃。適合放「不管做什麼都該遵守」的個人偏好,例如「回我中文」「程式碼寫註解」。
這個分層很關鍵:通用的習慣放全域,專屬的守則放專案。 別把所有東西塞進同一個檔,否則股票 agent 會被你寫給電商 agent 的規則干擾。
我那隻股票 agent 的指令長怎樣
講了一堆原則,直接把我自己的東西攤開來看最有感。我那隻 台股 AI Agent 的 CLAUDE.md,骨架大概長這樣(敏感的數字我改過,但結構是真的):
# 角色
你是台股盯盤助理,謹慎、精確、寧可漏報不要亂報。
# 工作範圍
- 用 scan.py 盤前選股,產出今日觀察清單
- 用 monitor.py 盤中盯盤,偵測訊號
- 偵測到訊號透過 notify.py 傳 Telegram 給我
# 資料來源與規則
- 行情資料一律走 FinMind,不要自己編數字
- 算完的指標、判斷理由,寫進 data/ 底下對應的檔案
- 每次只讀當天需要的檔案,不要把整個 data/ 都載進來
# 邊界
- 你只偵測與回報,不下「買賣建議」
- 漲跌幅 5% 以內、量沒爆的,不要通知我
- 抓不到資料就明講「FinMind 無資料」,不要用舊資料硬湊
# 回報格式
(固定欄位 + 一個範例,跟前面那段一樣)
你會發現它幾乎就是前面那五塊骨架的實體化。而且有意思的是:這份指令裡藏著後面幾層的線索——「寫進 data/ 底下對應的檔案」「每次只讀需要的」其實在講記憶(memory)的設計,「走 FinMind」在講能力(MCP/工具),「傳 Telegram」在講溝通(channel)。
instruction 是那份把四層綁在一起的總綱。它不只說「你是誰」,還告訴 agent「你的記憶放哪、你能用什麼工具、做完要回報到哪」。難怪我說它是地基。
三個最常見的寫壞陷阱
我自己踩過、也最常看到別人踩的,就這三個:
陷阱一:太模糊。 「幫我好好分析」「重要的再說」——這種話對人類同事都嫌空了,何況 agent。凡是出現「好好」「適當」「重要的」這種形容詞,都要停下來問自己:具體是什麼? 把它換成可以判斷的條件(漲跌幅 5%、20 日均量 2 倍)。
陷阱二:塞太多。 跟太模糊相反,有些人把 instruction 寫成幾千字的長篇大論,什麼都想交代。問題是 agent 每次讀 instruction 都要花 token,指令越肥,留給它真正幹活的空間越少,而且重點會被淹沒。原則是:只寫「它猜不到、或會猜錯」的東西,顯而易見的就別囉嗦。這跟我們下一篇要講的漸進式揭露是同一個精神——核心守則放主檔,細節另外開檔讓它需要時再讀。
陷阱三:沒有範例、沒有邊界。 前面講過了,但值得再強調一次,因為這是最多人漏的兩塊。沒範例,它的輸出格式天天在飄;沒邊界,它遲早做出你嚇一跳的事。 寫完 instruction 後回頭檢查:我有給它一個照抄的樣本嗎?我有畫出紅線嗎?
你可以怎麼開始
不用一次寫到完美,instruction 本來就是「活的文件」,邊用邊改。我的建議是:
- 先寫最陽春的版本就開跑——角色 + 一件它要做的事,先讓它動起來。
- 看它出包——它一定會出包。亂吵你、格式跑掉、做了你沒要的事,這些「出包」其實是在告訴你「指令哪裡沒講清楚」。
- 把每次出包補成一條規則——它洗版?加一條「漲跌幅 5% 內不通知」。格式亂?補一個範例。你的 instruction 就是這樣一條一條長出來的,每條規則背後都是一次真實的踩坑。
還有一個我自己很愛用的偷吃步:連寫 instruction 這件事,都可以直接丟給 AI 幫你寫。 你不用對著空白檔案硬擠,打開 Claude(或你手邊任何一隻 AI)直接跟它聊:「我想做一隻盯台股的 agent,幫我擬一份 instruction,要有角色、能力、邊界、輸出格式、範例這五塊。」它就會吐一份草稿給你。你再用人話跟它對話微調——「邊界再嚴一點」「範例改成這種格式」「漲跌幅門檻拉到 5%」——一來一回幾輪,一份結構完整的指令就出來了。
這招的精神很「自架 agent」:你連寫它的憲法都不用自己從零硬寫,而是跟 AI 一起討論著生出來。 你負責出判斷(我要什麼、紅線在哪),AI 負責出草稿與結構,分工剛剛好。
關鍵心法:別想在腦中把規則想齊,讓 agent 實際跑、用它的出包來反推你漏寫的規則,這比你閉門空想快十倍。
常見問題
instruction 跟提示詞(prompt)有什麼不一樣?
可以這樣理解:prompt 是你「這一次」叫它做的事,instruction 是它「每一次」都要遵守的守則。 你每天對股票 agent 下的「幫我看一下今天台積電」是 prompt;而那份「謹慎、只報 5% 以上、不給買賣建議」的 CLAUDE.md 是 instruction,每次對話都生效。instruction 是背景常數,prompt 是當下變數。
CLAUDE.md 和 AGENTS.md 我該用哪個?
看你用什麼工具。只用 Claude Code → 寫 CLAUDE.md 就好;會在多個工具間切換(Claude Code、Codex、Cursor)→ 主力寫 AGENTS.md(跨工具通用),再讓 CLAUDE.md import 過去。 兩者格式都是純 Markdown,沒有魔法,重點永遠是裡面的內容寫得夠不夠具體。
instruction 要寫多長才夠?
沒有標準字數,原則是「只寫它猜不到的」。顯而易見的事(像「請用繁體中文」如果你已設全域)不用重複;會猜錯、有風險、有特定格式要求的,一定要寫。寧可短而精準,也不要長而模糊——肥大的指令反而會稀釋重點、吃掉 token。
一定要會寫程式才能寫 instruction 嗎?
完全不用。instruction 就是一份用人話寫的守則,你會用文字把「我希望它怎麼做」講清楚就夠了。它本質上比較像在帶一個新人、寫一份工作交接,跟寫程式是兩回事。真要說技巧,就是「講具體、給範例、畫紅線」這三件事而已。
我的 agent 老是不聽指令,怎麼辦?
九成是指令不夠具體,不是它不聽。先檢查三件事:(1) 是不是用了「好好」「適當」這種模糊詞?(2) 有沒有給範例?(3) 有沒有把紅線寫清楚? 把模糊的換成可判斷的條件、補一個範例、畫出邊界,通常就好了。如果都做了還是飄,可能是指令塞太多、重點被淹沒,這時要做的是減法。
結語
繞了一圈,其實 instruction 的核心就一句話:把你心裡那套對 agent 的期待,老老實實寫成白紙黑字。
我那隻股票 agent 從白目實習生變成靠譜同事,中間沒有換更強的模型、沒有寫更複雜的程式,就只是把那份「憲法」寫清楚了而已。 角色、能力、邊界、輸出、範例——這五塊顧好,你的 agent 就有了一個穩固的地基。而這也是 自架 AI Agent 實戰系列 四層裡,最根本、最該先花心思的一層。
如果你也想養一隻 agent,但卡在「指令到底該怎麼寫才不會踩雷」,或是想做的東西有點複雜、自己兜不太起來——這正是我在做的事。我有提供 AI Agent 的諮詢顧問與代建服務,幫你看你的需求適合怎麼設計指令與架構,或是直接幫你做出來。
這是 自架 AI Agent 實戰系列 的第二篇,想看完整的四層觀念與其他篇,可以從總論進去。
延伸閱讀:
- 自架 AI Agent 實戰(一):在自己電腦養一隻會自己開工的 AI 員工 — 系列總論,四層觀念地圖
- 用 Crontab 讓 AI Agent 自己定時開工 — 系列 #6,instruction 寫好後,讓它照表自己上工
- 用 Telegram / LINE 遙控你的 AI Agent、收任務通知 — 系列 #5,instruction 裡的「回報格式」最後就送到這裡
- 用 Claude Code 打造台股 AI Agent:盤中盯盤、訊號到就發 Telegram — 本篇 instruction 範例的完整案例
喜歡這篇文章嗎?
📧 訂閱 Newsletter — 新文章直接寄到你信箱 🎬 追蹤我的 YouTube — 看 AI / 工具實作影片 💬 加我的 LINE — 聊聊你想做的 agent,或有問題隨時問我 🧵 追蹤 Threads — 平常的工程隨筆
掰掰~👋