Skip to content

🔩 Hooks 与自定义配置

Hooks 让你在 Claude Code 执行的特定节点插入自定义行为。比如:提交前自动格式化、输出时自动翻译等。


📌 什么是 Hooks?

Hooks 是 Claude Code 的事件回调机制。当特定事件发生时(如开始生成、结束响应、创建文件等),自动执行你预设的命令。


⚙️ Hooks 配置位置

Hooks 配置在 .claude/settings.json 中:

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "echo '文件已修改:$CLAUDE_PROJECT_DIR'"
          }
        ]
      }
    ]
  }
}

🪝 可用的事件

事件触发时机常见用途
PreToolUse工具执行前拦截危险操作、添加确认
PostToolUse工具执行后自动格式化、日志记录
Notification特定通知时桌面提醒、声音提示
StopClaude Code 停止时清理临时文件、提交 git
PreCompact上下文压缩前保存关键信息
SessionStart会话开始时加载自定义环境

🎯 实用 Hooks 示例

示例 1:文件修改后自动格式化

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write ${CLAUDE_PROJECT_DIR}/$CLAUDE_FILE_PATH 2>/dev/null || true"
          }
        ]
      }
    ]
  }
}

示例 2:阻止删除重要文件

json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "python3 ~/.claude/check-dangerous-command.py \"$CLAUDE_TOOL_INPUT\""
          }
        ]
      }
    ]
  }
}

示例 3:Claude 停止时自动提交 Git

json
{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "cd ${CLAUDE_PROJECT_DIR} && git add -A && git commit -m 'auto: Claude Code session snapshot'"
          }
        ]
      }
    ]
  }
}

示例 4:会话开始时自动设置网络

json
{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "export HTTP_PROXY=http://127.0.0.1:7890 && export HTTPS_PROXY=http://127.0.0.1:7890"
          }
        ]
      }
    ]
  }
}

🔧 Claude Code 常用自定义配置

settings.json 完整示例

json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.anthropic.com",
    "ANTHROPIC_AUTH_TOKEN": "your-api-key",
    "ANTHROPIC_MODEL": "claude-sonnet-4-6"
  },
  "theme": "dark",
  "includeCoAuthoredBy": true,
  "autoCompact": true,
  "autoCompactTokenThreshold": 80000,
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [{
          "type": "command",
          "command": "echo '✅ 文件已更新'"
        }]
      }
    ]
  }
}

配置项说明

配置项说明推荐值
theme主题:darklightdark
includeCoAuthoredBy提交时是否包含 AI 署名true
autoCompact是否自动压缩上下文true
autoCompactTokenThreshold触发自动压缩的 token 阈值80000

🔑 环境变量参考

Claude Code 提供以下环境变量可用在 Hooks 命令中:

变量说明
$CLAUDE_PROJECT_DIR当前项目根目录
$CLAUDE_FILE_PATH当前操作的文件路径
$CLAUDE_TOOL_INPUT当前工具调用的输入

⚠️ 注意事项

  1. Hooks 命令执行有超时限制(通常 10s),复杂操作考虑异步执行
  2. 路径包含空格时需要用引号包裹
  3. Windows 用户注意路径分隔符用 \\ 而非 /
  4. 测试 Hooks 时建议先在无害场景验证,避免误操作

❓ 需要更复杂的配置?

Hooks 的灵活性很高,可以做到:

  • 和 GitHub Actions 一样的 CI 流程
  • 自动生成 CHANGELOG
  • 与飞书/钉钉等工具集成

👉 加微信沟通定制需求。

让每一个开发者都能用上 Claude Code