Claude Code 的 Hooks 功能,可以拿來自動記錄每次執行過的指令。官方文件在這裡:
Claude Code Hooks 是什麼?
Hooks 是在 Claude Code 不同階段可以自訂執行的 shell 命令或腳本,會在特定事件觸發時自動執行。它可以讓你建立穩定而非隨機的行為,不必透過提示讓 Claude 記得執行特定動作,適合作業自動化、格式化、權限控管等用途。
Claude Code 提供以下幾種 hook 事件:
- PreToolUse:在 Claude 使用工具前觸發,可控制是否要阻擋或允許
- PostToolUse:工具使用後觸發,適合執行後續處理
- Notification:Claude 發出通知(如等待回應)時觸發
- UserPromptSubmit:使用者送出 prompt 時觸發
- Stop:主要互動結束時觸發(非中斷行為)
- SubagentStop:子任務完成後觸發
怎麼設定 Hook 來記錄指令?
在專案資料夾底下的 `.claude/settings.toml` 或 `.claude/settings.json` 加上 hook 配置。例如要記錄每次 Bash 指令:
```json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "jq -r '\"\\(.tool_input.command) - \\(.tool_input.description // \"No description\")\"' >> ./.claude/bash-command-log.txt"
}
]
}
]
}
}
```
這段設定的邏輯是:每次 `PostToolUse` 觸發、且工具是 `Bash` 時,就用 `jq` 從事件資料裡取出實際執行的指令與說明,附加寫進 `.claude/bash-command-log.txt`。
怎麼安裝 jq?
上面的 hook 指令依賴 `jq` 這個 JSON 處理工具,也可以直接請 Claude Code 幫忙安裝:
Windows:
```bash
scoop install jq
choco install jq
winget install jqlang.jq
```
macOS:
```bash
brew install jq
sudo port install jq
```
Linux (Ubuntu/Debian):
```bash
sudo apt update
sudo apt install jq
```
Linux (CentOS/RHEL):
```bash
sudo yum install jq
sudo dnf install jq
```
Linux (Arch):
```bash
sudo pacman -S jq
```
設定完成後會看到什麼結果?
設定好之後,`.claude/bash-command-log.txt` 就會累積一份文字檔,紀錄過去 Claude Code 曾經執行過的每一條 Bash 指令與說明,方便事後回顧或除錯。
常見問題
這個記錄方式會影響 Claude Code 的執行速度嗎?
影響很小。`PostToolUse` hook 是在工具執行完成後才觸發的追加寫入動作,不會擋住 Claude 的下一步操作,頂多多一次 `jq` 處理與檔案寫入的時間。
只能記錄 Bash 指令嗎?
不是。範例裡的 `"matcher": "Bash"` 是把 hook 限定在 Bash 工具上,若把 matcher 換成其他工具名稱,或乾脆拿掉 matcher,就能記錄其他類型的工具呼叫。
記錄檔案要放哪裡比較好?
範例是寫進 `.claude/bash-command-log.txt`,建議連同 `.claude/` 目錄一起排除在版本控制之外(或個別把這個 log 檔加進 `.gitignore`),避免把本機操作紀錄誤 commit 上去。
參考資料
最後更新
2026-08-27
延伸閱讀
關於作者 {#author}
Claire Chang | 企業 AI 導入與流程轉型顧問。專注於 AI Agent 架構設計、ERP 系統整合與企業 AI 治理。
首次發布:2025-07-23
