發布於 · AGENOTE 歷程系列
十七個小時裡,文件先被拆開,又被合回去
PCM 3.0 已經把流程分成前、中、後,Route A/B 判斷是否進入實作,frontmatter 再篩選階段內的 skill。可是,Claude Code 每次走進實際專案,仍要先讀專案入口。
2026 年 5 月 20 日晚間,一個長期開發的 CRM 專案,其 CLAUDE.md 已有 460 行。
這 460 行同時保存 session 啟動順序、版本狀態、工作禁令、部署程序、系統架構、欄位、API 路由,以及二十多個程式模組的位置。這些內容都可能有用,使用頻率卻完全不同。版本狀態與禁令每次開工都要知道;部署陷阱、欄位關係或某個函式位置,只在特定工作才需要。
把高頻與低頻知識放進同一個入口,會增加任務狀態被其他內容埋沒的風險。當時最直覺的處理方式,是依內容名稱把低頻資料拆出去。
20:52~20:55:三分鐘內,460 行縮成 54 行
晚上 8 點 52 分,專案先建立 88 行的 _docs/CODEMAP.md,整理 27 個程式模組與關鍵函式的位置。
接下來一分鐘,部署程序移到 48 行的 deployment rule;系統架構、欄位與 API 知識移到 61 行的 architecture rule。
8 點 55 分,CLAUDE.md 由 460 行縮成 54 行,只留下 session 啟動順序、目前版本、核心禁令,以及指向其他文件和 skill 的索引。
從檔案結構看,第一次改造已經完成:入口變短,每類知識都有獨立位置。問題是,Claude Code 取得這些內容的時間真的改變了嗎?
21:58:rules 雖然分檔,仍在 session 開始時載入
檢查當時的配置後,答案是否定的。
deployment rule 與 architecture rule 雖然離開 CLAUDE.md,卻進入 .claude/rules/。在當時沒有設定 file scope 的情況下,兩份 rules 仍會隨 session 啟動載入。
這次拆分讓單一文件的責任更清楚,卻沒有降低固定載入集合。Claude Code 仍在開工時取得部署與架構內容,系統還多了兩個檔案名稱、引用位置與同步責任。
晚上 9 點 58 分,成立約一小時的 deployment rule 與 architecture rule 被刪除。三分鐘後,CLAUDE.md 也移除兩份引用。
內容沒有全部塞回 460 行入口。通用部署程序已由跨專案的 line-crm-deploy skill 承接;專案架構、欄位與 API 知識則移入 repo-local line-crm-architecture skill。前者由共用技能庫維護,後者留在專案內;兩者都在相關工作發生時才讀取。
第一個方案的問題因此很具體:它改變了檔案邊界,沒有改變載入時機。若目標是分類,它有效;若目標是減少每輪固定內容,它沒有處理原問題。
第一次修正完成後,CODEMAP 成為下一個同步點
rules 撤回後,專案形成一個中間狀態:部署有共用 skill,架構有專案 skill,程式位置仍由獨立 CODEMAP 保存。
CODEMAP 與架構 skill 的內容不相同。前者回答「程式在哪裡」,後者解釋「模組如何組成、欄位如何流動、哪些 API 互相連接」。若依知識類型分類,兩份文件各自合理。
Claude Code 實際定位程式時,卻很難只用其中一份。找到函式位置後,還要理解欄位和 API 關係;讀懂模組關係後,也要找到實際檔案才能修改。一次工作往往同時查閱兩份文件,模組或路徑改變時也要同步更新兩處。
第一次修正解決了固定載入,卻把「位置」與「關係」留下為兩個總是一起使用的按需入口。這個中間結果,才推動隔天下午的反向合併。
5 月 21 日 13:42:兩份按需文件合成一份 skill
5 月 21 日下午 1 點 42 分,CODEMAP 的模組、函式與位置索引被併入 line-crm-architecture skill。原本 102 行的架構文件增至 151 行,同一個入口開始同時回答「在哪裡」與「如何組成」。
三分鐘後,獨立 _docs/CODEMAP.md 被刪除,CLAUDE.md 也移除它的索引。專案入口此時剩下 51 行。
前一天為了解決大文件而拆分,隔天又把文件合併,兩個動作看似相反,實際處理的是不同問題。
rules 必須拆出去,因為它們不該每輪載入;CODEMAP 必須合回架構 skill,因為定位工作總是同時需要位置與關係。第一個判斷看觸發時機,第二個判斷看共同使用。
下午 1 點 58 分,PAPER2 被建立。它把剛發生的一拆一合、失敗理由與放置決策樹保存下來。若只看最終檔案,後來的人只會看到 51 行入口和一份 151 行架構 skill,不會知道兩份 rules 曾在一小時內被撤回,也不會知道 CODEMAP 為什麼只存在不到一天。
這次實驗留下三個文件邊界判準
第一,看觸發時機。每次 session 啟動與接手都需要的內容留在 CLAUDE.md;只在特定工作需要的內容,放入按需 skill。
第二,看共同使用。兩份知識若出現在不同工作,可以分開;若總在同一個動作裡查閱與修改,分檔會增加往返與同步點。
第三,看維護責任。跨專案可重用的部署程序交給共用 skill repo,單一專案的架構與程式位置留在 repo-local skill。文件放在哪裡,也決定誰要持續更新它。
Git 能確認直接結果:CLAUDE.md 由 460 行降至 51 行;兩份固定載入的 rules 被移除;88 行 CODEMAP 併入架構 skill;位置與關係由同一個按需入口承接。
當時沒有保存 token、任務時間、錯誤率或維護工時的前後數據。因此,這些結果只能證明固定入口、載入點與同步點在結構上減少,不能換算成已證實的效率提升。
文件已經分流,代理的注意力仍只有一份
這十七小時先處理了「Claude Code 何時讀什麼」。它沒有處理另一個工作現場:同一個 Claude Code 仍要在一段上下文裡討論需求、整理長期規劃、修改程式、操作工具,再回頭維護文件。
到了七月,入口治理會進一步發展成 Base Context、定義權與行數預算。那是 HIST-13 的遠期支線,不是這裡的下一步。
5 月 24 日最先發生的,是另一個更直接的實驗:既然規劃與執行需要不同注意力,能不能把規劃交給 Claude Chat,把實作交給 Claude Code,再用 Google Drive 和 Google Drive MCP 在兩者之間交棒?下一篇將追蹤這套雙代理流程如何建立,又為什麼在八天內撤回。