Claude Code 用户在使用过程中频繁遭遇 “PreToolUse: Read hook error Failed with non-blocking status code: No stderr output” 等报错,涉及 PreToolUse、PostToolUse、UserPromptSubmit 等多个 hook 环节。一位 Linux.do 论坛用户排查后定位到问题根源:这类报错与插件 hook 的运行方式有关,本质是系统中缺少可正常调用的 python3 或 python3.exe。文章首先梳理了 Python 的常见安装方式,包括官网源码编译安装、Anaconda/Miniconda/Pixi 等专用组件打包安装,以及随 PyCharm(venv)、uv、Node.js 附带安装等情形。作者的 Python 环境正是通过 Node.js 安装时经由 Chocolatey 附带装上的,py.exe 映射到 C:/Python314/python.exe,但系统中的 python3 实际指向 WindowsApps 占位符,该占位符在非交互子进程(TTY)环境下会以状态码 49 静默退出且零输出,导致 hook 报错信息为空,极难排查。修复方法是将 C:/Windows/py.exe 复制一份并命名为 C:/Python314/python3.exe。作者进一步指出,所有依赖 PATH 查找 python3 的场景都会踩中这一坑,security-guidance 插件的 sg-python.sh 脚本注释中甚至直接写明了该问题。文章最后提到,AI Coding 工具所需的底层环境较以往软件更加复杂,类似的运行时耦合问题可能会越来越多。
事件分析
核心观点:AI 编程工具的体验上限往往不取决于模型能力,而取决于 python3 映射这类底层环境细节是否通畅。
原文链接:Linux.do