ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

oh-my-claudecode 怎么选择性禁用 hooks?DISABLE_OMC 与 OMC_SKIP_HOOKS 的用法

2026/9/10 21:53:32 拓冰建站 浏览量
oh-my-claudecode 怎么选择性禁用 hooks?DISABLE_OMC 与 OMC_SKIP_HOOKS 的用法 oh-my-claudecode 怎么选择性禁用 hooksDISABLE_OMC 与 OMC_SKIP_HOOKS 的用法【免费下载链接】oh-my-claudecodeTeams-first Multi-agent orchestration for Claude Code项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-claudecodeoh-my-claudecode下文简称 OMC会为 Claude Code 注册 21 个 hooks拦截 UserPromptSubmit、SessionStart、PreToolUse、Stop 等生命周期事件负责魔法关键词检测、记忆管理、持续执行模式等能力见 docs/HOOKS.md。当你只想关掉其中某几个 hook——比如不想让魔法关键词自动激活 skill但不希望影响其他 OMC 功能——就需要用到两个环境变量OMC_SKIP_HOOKS按逗号分隔的 hook 名列表只跳过列出的 hookDISABLE_OMC总开关设为1或true时禁用全部 OMC hooks。这两个变量在 docs/HOOKS.md、docs/ARCHITECTURE.md 的 “Disabling Hooks” 小节和 docs/REFERENCE.md 的环境变量表中都有说明。它们是进程级环境变量在启动 Claude Code 会话的 shell 中export后即可被各 hook 脚本读到。机制hook 脚本如何读取这两个变量以 scripts/keyword-detector.mjs 的入口逻辑为例每个 OMC hook 脚本在main()开头都有一个 skip guard// Skip guard: check OMC_SKIP_HOOKS env var (see issue #838) const _skipHooks (process.env.OMC_SKIP_HOOKS || ).split(,).map(s s.trim()); if ( process.env.DISABLE_OMC 1 || process.env.DISABLE_OMC true || _skipHooks.includes(keyword-detector) ) { console.log(JSON.stringify({ continue: true })); return; }也就是说DISABLE_OMC的值只识别字符串1和trueOMC_SKIP_HOOKS按逗号拆分、去除首尾空格后逐项匹配。被跳过的 hook 直接输出{continue: true}并退出不再向 Claude 注入任何additionalContext。选择性禁用OMC_SKIP_HOOKS 的写法OMC_SKIP_HOOKS取值为逗号分隔的 hook 名列表默认未设置见 docs/REFERENCE.md 环境变量表。文档给出的示例# docs/HOOKS.md「Disable Specific Hooks」 export OMC_SKIP_HOOKSkeyword-detector,notepad# docs/ARCHITECTURE.md「Disabling Hooks」 export OMC_SKIP_HOOKSkeyword-detector,persistent-mode填什么名字hook 名就是 docs/HOOKS.md 各分类表中列出的名称例如keyword-detector、persistent-mode、notepad、project-memory、pre-compact、permission-handler、subagent-tracker、code-simplifier、workflow-drift-guard、post-tool-use-failure等。文档还明确了一处 token 别名post-tool-use-failurehook 除了可用全名跳过也可以用post-tool-use这个 token 命中——该 token 会连同post-tool-verifier.mjs一起被跳过见 docs/HOOKS.md PostToolUseFailure 一节。写值时留意这一点避免误伤post-tool-verifier。几个文档中直接给出的单 hook 示例# 一次性禁用全部魔法关键词路由docs/settings-schema.md export OMC_SKIP_HOOKSkeyword-detector# 跳过工具失败恢复指导 hookdocs/HOOKS.md export OMC_SKIP_HOOKSpost-tool-use-failure如需让配置在后续会话中持续生效可把export写入 shell profile~/.bashrc、~/.zshrc等——这是 docs/REFERENCE.md 为 OMC 环境变量给出的标准做法。全量禁用DISABLE_OMC 的写法# docs/HOOKS.md「Disable All Hooks」 export DISABLE_OMC1docs/REFERENCE.md 的环境变量表说明DISABLE_OMC默认为未设置设为1或true即可禁用所有 OMC hooksdocs/HOOKS.md 的 PostToolUseFailure 一节也单独确认了DISABLE_OMCtrue这一取值。与OMC_SKIP_HOOKS不同DISABLE_OMC是 kill switch见 docs/CLAUDE.md “Kill switches” 说明没有部分生效的状态——要么全开要么全关。只关个别 hook 时请优先用OMC_SKIP_HOOKS不要把DISABLE_OMC当“少开一点”的旋钮。如何确认 hook 已被跳过文档没有提供专门的检查命令验证方式来自各 hook 的既定行为被跳过的 hook 不产生任何注入。可以按被禁 hook 的文档行为做行为验证跳过keyword-detector后在 prompt 中输入魔法关键词如ralph refactor this module不再触发对应 skill 的调用注入——该 hook 的文档职责正是“检测关键词并经additionalContext注入 skill 调用指令”。跳过persistent-mode后处于 ralph / ultrawork 等执行模式时Stop 事件不再注入 “The boulder never stops” 这类继续工作提醒。跳过notepad后压缩抗记忆相关行为按 docs/HOOKS.md Context Management Hooks 一节所述不再介入。反过来若你设置变量后观察到上述行为仍在发生说明变量没有进入 Claude Code 会话进程例如export在别的 shell 中执行或变量拼写、逗号分隔格式有误。限制与边界两个变量都是环境变量作用范围是启动 Claude Code 的那个 shell 环境对已经运行中的会话不生效需在开启会话前设置。DISABLE_OMC只识别1和true两种取值写成yes、0等其他值不会触发禁用逻辑依据 scripts/keyword-detector.mjs 的 guard 代码与 docs/REFERENCE.md 的取值说明。OMC_SKIP_HOOKS按 token 精确匹配存在post-tool-use→ 同时跳过post-tool-use-failure与post-tool-verifier.mjs这类已记录的连带命中填值前先对照 docs/HOOKS.md 的 hook 列表确认名字与连带关系。禁用 hook 只是跳过注入与拦截不影响 Claude Code 本身的生命周期事件也不影响 MCP 工具等其他 OMC 能力面文档未给出其他副作用说明。【免费下载链接】oh-my-claudecodeTeams-first Multi-agent orchestration for Claude Code项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-claudecode创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考