Skip to content
FunCoding

Search

Search docs, Skills and MCP

Hooks 配置、开关与环境

设置事件组与匹配器,通过面板管理,并使用当前 hooksConfig 键。

This page has not been translated into English yet. The original Chinese version is shown below.

配置分两层:事件中的分组定义 matcher 和 sequential,组内 hooks 数组定义每个命令。当前执行引擎只支持 command。

{
  "hooks": {
    "BeforeTool": [
      {
        "matcher": "write_file|replace",
        "sequential": true,
        "hooks": [
          {
            "name": "security-check",
            "type": "command",
            "command": "$GEMINI_PROJECT_DIR/.gemini/hooks/security.sh",
            "timeout": 5000,
            "description": "Check proposed file changes"
          }
        ]
      }
    ]
  }
}

示例脚本需要自行创建。组内 sequential 为 true 时依次运行,false 时并行;本页显式配置,不从省略值推断执行顺序。timeout 单位毫秒,单个 Hook 默认 60000。

匹配规则

BeforeTool/AfterTool 的 matcher 是工具名称正则;生命周期事件使用精确触发字符串,例如 startup。* 或空字符串匹配全部,不能把生命周期 matcher 当成通用正则。

配置可能来自项目、用户、系统和扩展。Hooks 概览的层级列表与通用 settings 合并说明方向不同;多来源同事件时应在面板核对真实加载结果,不用这一列表推导企业设置可被项目绕过。

开关

当前配置参考的 hooksConfig.enabled 默认 true,改变后需重启;hooksConfig.disabled 默认空数组,用于禁用指定 Hook;hooksConfig.notifications 默认 true。

最佳实践页仍有旧 hooks.disabled 示例,与当前生成配置不一致。新设置采用 hooksConfig.disabled,并通过面板检查。

交互管理

命令用途
/hooks panel查看 Hook、执行状态与最近输出
/hooks enable-all启用全部
/hooks disable-all禁用全部
/hooks enable <name>启用指定名称
/hooks disable <name>禁用指定名称

脚本环境

GEMINI_PROJECT_DIR 为项目根绝对路径,GEMINI_PLANS_DIR 为计划目录,GEMINI_SESSION_ID 为会话 ID,GEMINI_CWD 为当前目录;CLAUDE_PROJECT_DIR 作为兼容别名提供。不要在普通终端检查不到这些变量时就认定 Hook 环境也没有,它们由 CLI 调用时提供。