<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>AGENTS.md on KbWen Blog</title>
    <link>https://www.kbwen.com/tags/agents.md/</link>
    <description>KbWen 的個人技術部落格，分享 Python、機器學習、深度學習、資料工程與 AI 開發的學習筆記與實作心得。</description>
    <generator>Hugo</generator>
    <language>zh-tw</language>
    <image>
      <url>https://www.kbwen.com/images/og-default.png</url>
      <title>KbWen Blog</title>
      <link>https://www.kbwen.com/</link>
    </image>
    
    <lastBuildDate>Fri, 22 May 2026 14:00:00 +0800</lastBuildDate><atom:link href="https://www.kbwen.com/tags/agents.md/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>只用 Prompt 和技能，也能做到基本治理</title>
      <link>https://www.kbwen.com/ai-governance-with-prompts-and-skills/</link>
      <pubDate>Fri, 22 May 2026 14:00:00 +0800</pubDate><dc:creator>KbWen</dc:creator>
      <guid>https://www.kbwen.com/ai-governance-with-prompts-and-skills/</guid>
      <description>不用框架也能治理 AI 代理：靠 AGENTS.md / CLAUDE.md 記憶檔、evidence 習慣和範圍宣告，就能擋掉大部分 Claude Code、Cursor 的常見問題。</description>
      <content:encoded><![CDATA[<blockquote>
<p><strong>TL;DR：</strong> 在裝任何框架之前，有一層治理是免費的：在專案根目錄放一個 <code>AGENTS.md</code> 或 <code>CLAUDE.md</code>，養成開口要求 evidence 的習慣，開始任務前先說清楚什麼不能動。這三件事不能替代跨 session 的狀態管理，但能擋掉大部分常見問題。這篇說的就是怎麼做、做到什麼程度、在哪裡會失效。</p>
</blockquote>
<p>有一段時間我的 Claude Code 工作流裡沒有任何框架，只有對話和一堆臨時 prompt。某天我做了兩個改變：把專案的架構決策寫進一個 <code>CLAUDE.md</code>，還有在每次 AI 說「好了」的時候問一句「commit SHA 是什麼？」</p>
<p>一類問題幾乎消失了：AI 在新 session 裡對著不存在的設計模式寫程式碼的情況，以及我接受了「完成」卻發現什麼都沒變的情況。不是所有問題都解決了。但那兩件事的性價比，讓我後來開始認真想「在裝框架之前，這個層面的治理到底能做多少」。</p>
<p>這篇是<a href="/ai-agent-common-pitfalls-and-fixes/">AI 代理常見痛點與我們的嘗試</a>的延伸。那篇列了五個反覆出現的問題，這篇專門回答：只靠 prompt 習慣和 skill 選擇，能解決多少？</p>
<h2 id="記憶檔案解決跨-session-失憶的最低成本方案">記憶檔案：解決跨 session 失憶的最低成本方案</h2>
<p>AI 代理在每一個新對話都是空白狀態。它不記得上次的架構決策，不記得你說過不要用哪個 pattern，也不記得你已經有一個 <code>utils/auth.ts</code>，所以它再寫一個新的。這個問題在 <a href="https://spectrum.ieee.org/ai-coding-degrades">IEEE Spectrum 的報導</a>裡有量測數據：長 session 後期，AI 重複生成已存在函式、忽視早期建立的 coding convention 的頻率明顯上升。</p>
<p>三個工具在試圖解決同一個問題：</p>
<p><strong><code>AGENTS.md</code></strong> 是 OpenAI Codex 最初設計的慣例，後來被 Cursor、GitHub Copilot 和 Google Antigravity 等主流工具廣泛採納。它的設計邏輯是：在任何工具讀取它之前，先告訴工具「這個專案是怎麼運作的、你可以做什麼、不可以做什麼」。</p>
<p><strong><code>CLAUDE.md</code></strong> 是 Anthropic 針對 Claude Code 的版本。Claude Code 在每個新 session 開始時自動注入這個檔案的內容，所以你放在這裡的東西就等於是每次都在對話開頭重新說一遍。</p>
<p><strong><code>.cursor/rules</code></strong> 是 Cursor 的對應物。原理相同。</p>
<p>這三個慣例同時存在，說明「怎麼讓 AI 記住專案規則」這個問題是通用的，不是某個工具特有的。選哪個取決於你主要用什麼工具，你不需要三個都放，放一個就有效果。</p>
<p>這類記憶檔案最有用的內容通常是三類：架構限制（「這個 repo 用 Repository pattern，不要把業務邏輯寫進 controller」）、命名規範（「service 命名用 <code>XxxService</code>，不要用 <code>XxxManager</code>」）、以及「不要碰」清單（「<code>/database/migrations</code> 只有在明確被要求的時候才能動」）。</p>
<p>一個重要的注意：這類檔案要短。研究觀察和實踐都指向同一個上限：<strong>200 行、2000 token 以內</strong>。超過這個長度，重要的規則會被稀釋。AI 技術上還是讀了整個檔案，但前面讀到的東西到後面已經注意力不足。寫 <code>CLAUDE.md</code> 的時候，如果你覺得需要加第六條規則，先問自己第一條能不能刪掉。</p>
<h2 id="skill-選擇要求愈具體干擾愈少">Skill 選擇：要求愈具體，干擾愈少</h2>
<p>在 Claude Code 或 Cursor 的一次工作 session 裡，你可以載入很多 context：整個 codebase 的 README、過去的對話歷史、多個技能文件。但「載入愈多愈好」是個陷阱。</p>
<p>一個改一行 typo 的任務，不需要知道整套測試策略、部署規範和 API 設計原則。把這些全部塞進 context，不會讓 AI 更謹慎，只會讓它在「哪些規則現在適用」這件事上分配更少的注意力給真正重要的那個。</p>
<p>這不是 Agentic OS 特有的問題，是任何 Claude Code 或 Cursor session 都存在的情況。具體做法是：開始一個任務之前，先想清楚這個任務需要知道什麼，然後只提供那些。一個 tiny-fix 說「這是那行 code，幫我修」就夠了；一個涉及多個模組的功能開發才需要交代設計模式、測試策略和資料庫規範。</p>
<p>結果是給了 AI 密度更高的相關資訊，不是更少的資訊。</p>
<h2 id="evidence-習慣不問則不說">Evidence 習慣：不問則不說</h2>
<p>這是成本最低的一個改變，也是讓我最驚訝的一個。</p>
<p>AI 說「完成了」的時候，它有可能真的完成了，也有可能完成了 90% 然後遇到小問題就繞過去了，也有可能整個理解方向就錯了。這三種情況在它的輸出裡，有時候看起來幾乎一樣。</p>
<p>養成一個習慣：在接受任何「完成」之前，要求一個具體的 artifact。</p>
<p>不是一個表單，也不是一套流程，就一句話：「commit SHA 是什麼？」「把 test 跑一遍，貼輸出給我」「你改了哪個檔案，第幾行？」</p>
<p>這個習慣有效的原因不只是讓你可以查。<strong>問這個問題本身會讓 AI 把它沒說清楚的地方說出來。</strong> 很多時候，我問「測試有過嗎」，它才會說「啊，那個測試我還沒跑，因為 X 的 setup 有問題」，而這個資訊如果我沒問，它可能就默默略過了。</p>
<p>誠實地說：這個習慣很累。問了十幾次之後你開始理解為什麼人們想要自動化這件事，框架裡的 evidence gate 就是把這個問答自動執行。但作為一個習慣，它能擋掉大概六七成的「接受了看起來完成的東西、後來發現沒有」的情況。</p>
<h2 id="範圍宣告先說不要碰什麼">範圍宣告：先說不要碰什麼</h2>
<p>開始一個複雜任務之前，明確告訴 AI 它應該不要碰什麼。</p>
<p>具體的說法比模糊的說法有效：「你在做 authentication module。除非我明確說，不要碰 <code>/api/payments</code> 和 <code>/database/migrations</code> 底下的任何東西」比「專注在 auth 就好」有用得多。</p>
<p>原因不完全是「AI 會遵守」，它不是每次都遵守。而是宣告了邊界之後，<strong>AI 在不確定的時候開始問問題而不是自己決定</strong>。我給了這樣的指令之後，在它原本會直接去改 payments module 的地方，它變成問我「這邊需要我更新 payment 的驗證邏輯嗎？」——這個轉變很有價值。</p>
<p>這個觀察跟 Pete Hodgson <a href="https://blog.thepete.net/blog/2025/05/22/why-your-ai-coding-assistant-keeps-doing-it-wrong-and-how-to-fix-it/">對 AI coding assistant 失效模式的分析</a>有直接的關係：當一個問題存在很多可能的解法，AI 選中你心目中那個的機率趨近於零。把解法空間縮小（也包括把「不能碰的部分」明確劃出來），大幅提高了它走向你要的方向的機率。這是流程問題，跟模型能力無關。</p>
<p>在<a href="/beyond-prompt-from-instructions-to-building-systems/">從「下指令」到「蓋系統」</a>裡，我說過「AI 只活在那一次的對話框裡」。宣告範圍是在這個限制之內，盡量讓它知道那個對話框的邊界在哪裡。</p>
<h2 id="這個層面的治理做到什麼做不到什麼">這個層面的治理做到什麼、做不到什麼</h2>
<p>做得到的：讓 AI 在新 session 裡記得你的架構決策（記憶檔案）。讓它在不確定的時候問你而不是自己做決定（範圍宣告）。讓你在接受輸出之前有一個具體的查核點（evidence 習慣）。把技能文件控制在合理長度，避免注意力被稀釋（skill 選擇）。</p>
<p>做不到的是跨 session 的連貫狀態。記憶檔案解決的是「規則記得住」的問題，不是「上次做到哪裡」的問題。如果你的任務橫跨多個 session，每次開始你還是要手動交代背景——或者接受 AI 從頭重推一遍。Evidence 習慣的疲勞感也是真實的：問個五十次之後，你會想要自動化。這不是壞事——這是你已經知道在哪裡需要更正式的結構的訊號。範圍宣告在複雜任務下同樣會降解，涉及的模組愈多，「先說不要碰什麼」就愈難窮舉。</p>
<p>這個層面的治理是真實的，不是「沒有框架的窮人版」。但它有天花板。當你開始覺得每次的 context 交接很重複、evidence 問答讓你厭倦、範圍宣告的清單比任務本身還長——那就是你已經碰到這個層面的邊界了。</p>
<p>下一篇：<a href="/work-log-cross-session-continuity/">Work Log：跨 session 的記憶機制</a></p>
<p><em>Agentic OS 是開源專案，記憶檔案的範本和設計說明都在這裡：<a href="https://github.com/KbWen/agentic-os">github.com/KbWen/agentic-os</a></em></p>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
