Claude Code集成DeepSeek-V4-pro全栈开发 - hooks 安全扫描

hooks 是什么

当 Claude Code 编辑文件、完成任务或需要输入时自动运行 shell 命令。格式化代码、发送通知、验证命令并强制执行项目规则。

你可以把 hook 理解成一条规则:

  1. 某个事件发生
  2. 匹配某个工具或场景
  3. 自动执行一个动作

这些动作可以是:

  • shell command
  • HTTP webhook
  • prompt 型判断
  • agent 型评估

hooks 最大的价值,是把"你本来每次都要手动做的检查"变成自动流程。

常见配置位置

  • ~/.claude/settings.json:用户级,对所有项目生效
  • .claude/settings.json:项目级,适合团队共享
  • .claude/settings.local.json:本地项目配置,不建议提交
  • plugin 内的 hooks/hooks.json
  • 某些 skill / subagent frontmatter 内的 component-scoped hooks

基本结构

json 复制代码
{
  "hooks": {
    "EventName": [
      {
        "matcher": "ToolPattern",
        "hooks": [
          {
            "type": "command",
            "command": "your-command-here",
            "timeout": 60
          }
        ]
      }
    ]
  }
}

关键字段说明

字段 作用 示例
hooks hook 顶层配置入口 { "PreToolUse": [...] }
matcher 匹配工具名或模式 "Write"、`"Edit
type hook 类型 "command""http""mcp_tool""prompt""agent"
command 执行的 shell 命令 "$CLAUDE_PROJECT_DIR/.claude/hooks/format.sh"
timeout 超时秒数 30
once 每会话只跑一次 true

注意:这些字段属于配置协议的一部分,不要为了中文化把它们翻掉。


matcher 怎么用

形式 含义 例子
精确匹配 只匹配某个工具 "Write"
正则匹配 匹配多个工具 `"Edit
全匹配 匹配全部工具 "*"""
MCP 工具模式 匹配 MCP 工具 "mcp__memory__.*"

如果你配的是 InstructionsLoaded,它还有几种常见 matcher 值:

matcher 值 含义
session_start 会话刚启动时加载的 instructions
nested_traversal 向下遍历目录时加载的 instructions
path_glob_match 通过 path glob 匹配加载的 instructions

如果你不确定先配什么,最常见的起点是:

  • Bash
  • Write
  • Edit|Write

五种 hook 类型

1. command(本地命令)

最常见的类型。适合:

  • shell 校验
  • 安全扫描
  • 自动格式化
  • 日志记录
json 复制代码
{
  "type": "command",
  "command": "python3 \"$CLAUDE_PROJECT_DIR/.claude/hooks/validate.py\"",
  "timeout": 60
}

2. http(HTTP 调用)

适合把事件发给 webhook 或外部系统。

json 复制代码
{
  "type": "http",
  "url": "https://example.com/hook"
}

常见用途:

  • 通知系统
  • 团队消息流
  • 外部审计系统

3. mcp_tool(MCP 工具调用)

这是上游在 v2.1.118 明确补进来的 hook 类型,适合:

  • 你已经把验证逻辑做成 MCP server
  • 不想每次再绕一层 shell
  • 希望 hook 直接调用 MCP tool

典型配置会直接指定:

  • server
  • tool

而不是本地 command 或远程 url

4. prompt(提示词)

让模型根据 prompt 判断是否该继续,常见于:

  • 任务完成检查
  • 结束前质量判断
  • prompt 合规性判断

5. agent(代理)

让 Claude 用独立 agent 做更复杂的评估,适合:

  • 架构规则检查
  • 多步验证
  • 比较复杂的质量门禁

常见事件

当前最值得先掌握的事件:

事件 什么时候触发 最常见用途
PreToolUse 工具执行前 校验、阻止、改输入
PostToolUse 工具执行后 验证、补上下文、记录
Setup 每个 session 的一次性初始化阶段 安装依赖、准备工具、生成临时环境
UserPromptSubmit 用户提交 prompt 时 prompt 校验
Stop / SubagentStop Claude / subagent 结束时 完成度判断
SessionStart / SessionEnd 会话开始 / 结束 初始化、清理、日志

更完整的生态还包括:

  • PermissionRequest
  • PermissionDenied
  • PostToolUseFailure
  • UserPromptExpansion
  • PostToolBatch
  • Notification
  • TaskCreated
  • TaskCompleted
  • CwdChanged
  • WorktreeCreate
  • WorktreeRemove

在 .claude/settings.json 里加入:

bash 复制代码
{
  "hooks": {
    "SessionEnd": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "\"$CLAUDE_PROJECT_DIR/.claude/hooks/security-scan.sh\""
          }
        ]
      }
    ]
  }
}

在 hooks中添加脚本:

bash 复制代码
mkdir -p ~/.claude/hooks
cp security-scan.sh ~/.claude/hooks/
chmod +x ~/.claude/hooks/security-scan.sh
相关推荐
Sven在流浪3 分钟前
LLamafactory Qlora微调 实战
ai·模型微调
带娃的IT创业者5 分钟前
单比特奇迹:如何在本地设备运行 4B 图像生成模型?
ai·图像生成·模型量化·本地部署·低资源推理
玩c#的小杜同学25 分钟前
一周 AI 新鲜事|2026.05.25—2026.05.31
人工智能·程序人生·ai·c#·程序员创富
海兰31 分钟前
【文字三国志:第九篇】天命重构,游戏本地部署
游戏·ai
YueJoy.AI1 小时前
B端技术产品的核心指标体系搭建实战
人工智能·ai·语言模型
YueJoy.AI1 小时前
数据埋点驱动的高并发产品转化率分析实战
人工智能·ai·语言模型
星辰AI1 小时前
拒绝带病上线:在 GitHub Actions 中自动探测并阻断依赖库逻辑漏洞
人工智能·ai·语言模型
YueJoy.AI2 小时前
敏捷需求优先级矩阵驱动迭代规划
人工智能·ai·语言模型
YueJoy.AI2 小时前
非结构化业务中AI创业原型系统的极速交付
人工智能·ai·语言模型
俊哥V2 小时前
每日 AI 研究简报 · 2026-06-01
人工智能·ai