Skip to content

SessionStart Hook 报错:Windows 用户名包含空格

问题

在 Windows 上,当用户的主目录路径包含空格(例如 C:\Users\Artur Paprocki\)时,Superpowers 的 SessionStart Hook(run-hook.cmd)会失败,报错:

SessionStart:clear hook error
Failed with non-blocking status code: bash: /c/Users/Artur: No such file or directory

原因:路径中的空格导致 shell 解析时把路径切断,/c/Users/Artur 被当成了路径,后面的 Paprocki 部分被丢弃。

解决方案

方法 1:给路径加引号(等待官方修复)

Superpowers 官方需要在 run-hook.cmd 中对路径变量加引号。如果你有能力修改本地安装的 Hook 文件,找到 hooks/run-hook.cmd,将路径相关命令中的变量用双引号包裹:

bash
# 改前
bash $CLAUDE_PLUGIN_ROOT/hooks/...

# 改后
bash "$CLAUDE_PLUGIN_ROOT/hooks/..."

方法 2:创建无空格的用户账号

在 Windows 上新建一个用户名不含空格的账号(如 dev),将开发工作在该账号下进行。这是最彻底的解决方案,但需要迁移工作环境。

方法 3:使用符号链接

在无空格路径下创建指向用户目录的符号链接(需要管理员权限):

cmd
mklink /D "C:\dev\home" "C:\Users\Artur Paprocki"

然后设置环境变量 USERPROFILE=C:\dev\home,但这种方法可能影响其他应用。

注意:这是一个长期存在的已知问题,GitHub 上相同报告出现了 29 次以上,预计 Superpowers 未来版本会修复。

Issue#1142