← 全部貼文

Day 105Claude Code 有個 InstructionsLoaded hook

叫 Claude 把每次讀進來的 CLAUDE.md 和規則檔記下來 交給你的是 哪個檔 還有 5 種讀進來的原因是哪一種
Day 105 第 1 張Day 105 第 2 張Day 105 第 3 張Day 105 第 4 張Day 105 第 5 張
1 / 5
在專案的 .claude/settings.json 加上(指令是 bash 的 grep):
{
  "hooks": {
    "InstructionsLoaded": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "grep -oE '\"(file_path|load_reason)\":\"[^\"]*\"' >> .claude/loaded.log"
          }
        ]
      }
    ]
  }
}

加好之後 跟 Claude 說:
在 src/api/users.py 新增 get_user(user_id) 函式,用 user_id 找出對應的人

在 Threads 看原文

這是什麼

InstructionsLoaded 是 Claude Code 的 hook 事件。
Claude 每讀進一個 CLAUDE.md 或規則檔,就記一筆。
紀錄寫哪個檔,和 5 種讀進來的原因是哪一種。
這個 hook 只記錄,不能擋也不能改載入。

怎麼設

  1. 打開專案裡的 .claude/settings.json。
  2. 在 hooks 底下寫 InstructionsLoaded。
  3. 在 command 放一行指令,讀進一個檔就跑一次。
  4. 作者的指令是 bash 的 grep,把紀錄寫進 .claude/loaded.log。
  5. 看 file_path:哪個檔。
  6. 看 load_reason:為什麼讀進來。

5 種原因

load_reason 欄位有 5 個值:

  • 開工:session_start
  • 碰到規則範圍:path_glob_match
  • 進子資料夾:nested_traversal
  • 被匯入:include
  • 壓縮之後:compact

怎麼測

  1. 加好 hook。
  2. 對 Claude 說 在 src/api/users.py 新增 get_user(user_id) 函式,用 user_id 找出對應的人。

作者的結果:

  • 改 src/api:紀錄裡有 CLAUDE.md(session_start)和 style.md(include)。
  • 另外多一筆 api.md,原因是 path_glob_match。規則檔碰到才載入。
  • 改 src/ui:多的是 src/ui 裡的 CLAUDE.md,原因是 nested_traversal。
  • 這次 api.md 沒被載入。