Superpowers多语言钩子跨平台指南 📅 发布时间:2026/8/29 14:21:22 👁 浏览次数: Superpowers多语言钩子跨平台指南【免费下载链接】superpowersAn agentic skills framework software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers在 Windows 上双击钩子的.sh文件CMD 不执行、只弹了个记事本钩子当场失效。Superpowers 用多语言钩子polyglot hook同一文件被两种解释器各读一半的脚本解决这个问题同一份脚本在 macOS/Linux 由 bash 直接执行在 Windows 上自动找到 Git Bash 接力全程零环境配置。 多语言钩子派发机制它凭什么两头都能跑先看外部可观察的行为不管在哪个系统上运行派发器最后执行的都是同一段 session-start 逻辑输出的 JSON 上下文完全一致。区别只在于谁干的活——Unix 上是 bash 亲自动手Windows 上是批处理段负责找到 bash 再交接。玄机在第一行。打开派发器文件第一眼是这样的双段结构: CMDBLOCK echo off set HOOK_DIR%~dp0 REM Try Git for Windows bash in standard locations if exist C:\Program Files\Git\bin\bash.exe ( C:\Program Files\Git\bin\bash.exe %HOOK_DIR%%~1 %2 %3 %4 %5 %6 %7 %8 %9 exit /b %ERRORLEVEL% ) // ...省略...(x86 目录与 PATH 上的 bash 两处查找)... exit /b 0 CMDBLOCK # Unix: run the named script directly SCRIPT_DIR$(cd $(dirname $0) pwd) exec bash ${SCRIPT_DIR}/$1 $这个双段结构两半各看各的观众: CMDBLOCKbash 里:是空命令后接 here-document整段 Windows 代码被吞掉CMD 眼里这行只是标签批处理正常执行bash 按三个位置找找不到就静默exit /b 0exit /b保证 CMD 读不到下方的 Unix 代码为什么一个文件要说两种方言因为钩子配置只给了一条命令的位置派发器必须把 Windows 和 Unix 两拨客人装进同一扇门。目录分工很干净hooks/ ├── hooks.json # 入口配置指向派发器 ├── run-hook.cmd # 多语言派发器 └── session-start # 无扩展名钩子逻辑bash那客户端什么时候来敲这扇门入口配置很短{ hooks: { SessionStart: [ { matcher: startup|clear|compact, hooks: [{ type: command, command: \${CLAUDE_PLUGIN_ROOT}/hooks/run-hook.cmd\ session-start, shell: bash }] } ] } }shell: bash强制走 Git Bash 通道避开 PowerShell 误解析引号、CMD 吞引号两个坑session-start刻意不带扩展名叫.sh会触发客户端自动补bash前缀路径加引号因为变量可能含空格还有个隐藏细节这套实现不再用 cygpathWindows 路径格式转换器转路径。bash 直接吃 Windows 风格路径、自己消化顺带甩掉了bash -l对登录 shell 的依赖——少一个外部依赖就少一个翻车点。️ 三步验证多语言钩子跑通照下面走一遍5 分钟内出结果。1. 克隆仓库git clone https://gitcode.com/GitHub_Trending/su/superpowershooks/hooks.json已指向派发器 无扩展名脚本自加钩子时沿用同款命名。2. Windows 先确认 bash 可达Test-Path C:\Program Files\Git\bin\bash.exeFalse就装 Git for Windows 到默认目录或把 bash 放进 PATH。3. Windows 模拟钩子调用cmd /c hooks\run-hook.cmd session-start打印出带hookSpecificOutput的 JSON说明派发器通了。4. macOS/Linux 跑同一份文件bash hooks/run-hook.cmd session-start输出与 Windows 侧一致多语言包装器才算没有偏科。⚠️ 四个高频翻车点症状 → 根因 → 一行修复社区反馈里反复出现的四个问题都是一行能修好的那种。bash is not recognized 怎么破症状Windows 上钩子不报错、就是不触发根因派发器找的三处 bash 路径都不存在修复装 Git for Windows 到默认目录或把 bash 加入 PATHUnix 好使、Windows 不触发 怎么排查症状Mac 上正常Windows 上脚本被劫持根因session-start.sh带.sh触发了自动补前缀修复改无扩展名session-start同步更新 hooks.json钩子完全没触发 matcher 核对症状配置看着都对事件就是不响根因matcher 和客户端事件对不上Claude Code 用startup|clear|compact修复核对hooks/hooks.json的 matcherCursor 用户看hooks-cursor.json路径里出现奇怪的 /症状日志路径形如C:\...\hooks\/session-start根因${CLAUDE_PLUGIN_ROOT}展开成反斜杠路径后又拼了斜杠修复整段路径加引号交给 bash 自己消化别手动拼延伸阅读派发器源码与设计文档多语言钩子落地之后Windows、macOS、Linux 只是同一个 bash 的三种外壳。实现看 hooks/run-hook.cmd设计取舍看 docs/windows/polyglot-hooks.md。下次再见到 Windows 上的 .sh别弹记事本了——弹一条 bash 调用吧。【免费下载链接】superpowersAn agentic skills framework software development methodology that works.项目地址: https://gitcode.com/GitHub_Trending/su/superpowers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考