你写了一个完美的钩子脚本,测试通过,日志显示正常执行,但AI就是不听你的。这不是bug,是设计。

Claude Code的UserPromptSubmit钩子允许在每次用户提交消息时注入额外上下文。开发者按文档返回JSON格式的additionalContext,理论上这些内容会进入模型视野。但现实是:钩子输出了,模型忽略了。

打开网易新闻 查看精彩图片

问题出在一个硬编码的包装层。钩子返回的内容被包裹在特定格式中,模型将其识别为低权威性的元数据而非用户指令。这个包装层没有开关,钩子作者无法选择退出。

打开网易新闻 查看精彩图片

技术社区已经定位到具体问题。Anthropic的issue #27365记录了这一缺陷,提出了干净的修复方案,但数月未获回应。任何试图通过钩子向Claude Code注入知识的工具都会撞墙——PreBrief只是恰好暴露了这个问题的用例之一。

两个针对当前版本Claude Code的实证测试确认了"包装层-权威性"机制。钩子确实在执行,输出确实在传输,但在模型注意力分配中处于劣势地位。

打开网易新闻 查看精彩图片

这指向一个更深的结构性教训:代理设计中的扩展点如果缺乏对信息层级的控制,会把工具开发者逼进猜谜游戏。钩子的价值不在于能否触发,而在于触发后能否被认真对待。