🔗 GitHub仓库:https://github.com/KimYx0207/HookPrompt
老金的开源知识库,实时更新群二维码:https://my.feishu.cn/wiki/OhQ8wqntFihcI1kWVDlcNdpznFf
把谷歌68页圣经+5任务元提示词变成自动执行的Hook 你随便说两句大白话,AI自动翻译成专业提示词
- ✅ 新增强制格式指令:添加
<MANDATORY_FORMAT_INSTRUCTION>确保回复始终以固定格式开头 - ✅ 优化优先级:格式指令放在 additionalContext 最前面,优先级最高
- ✅ 明确格式铁律:回复必须以
📝 **原始输入**:开头,否则视为Hook失效 - ✅ 用户体验提升:用户可通过固定格式确认Hook正在工作
- ✅ 全量测试通过:
test-hook.js4/4 测试用例全部通过,验证了过滤逻辑和优化触发机制 - ✅ 稳定性验证:确认 Hook 在 Windows 环境下运行稳定,JSON 解析逻辑健壮
- ✅ 环境就绪:项目结构清理完成,移除无关残留文件
- ✅ 修复核心问题:添加完整的 JSON 输入解析逻辑,正确提取
messages数组中的用户消息 - ✅ 修复 Hook 错误:解决 UserPromptSubmit hook 无法正确处理 Claude Code API 输入的问题
- ✅ 增强兼容性:同时支持 JSON 格式(
messages数组、prompt字段)和纯文本格式 - ✅ 改进日志:添加详细的解析日志,包括原始输入和提取后的用户消息
- ✅ 修复关键问题:正确解析 Claude Code Hook API 的 JSON 输入格式
- ✅ 修复命令识别:现在能正确识别并跳过内置命令(如
/clear、/help等) - ✅ 改进兼容性:支持
messages数组格式和纯文本格式的输入 - ✅ 增强日志:添加 JSON 解析日志,便于调试
- ✅ 新增内置命令过滤:自动识别并跳过 Claude Code 内置命令(如
/clear、/help、/commit等) - ✅ 修复命令冲突:解决
/clear被误解为项目清理操作的问题 - ✅ 改进用户体验:确保所有斜杠命令能够正确触发,不被 Hook 拦截优化
- ✅ 修复settings.json配置格式:使用正确的
UserPromptSubmit键名(PascalCase)和数组结构 - ✅ 修复Hook输出格式:符合Claude Code官方Hook API,使用JSON格式输出
- ✅ 添加跨平台配置示例:提供Windows和Unix的配置模板
- ✅ 添加测试工具:
test-hook.js用于本地测试hook功能 - ✅ 完善文档:更新安装和故障排查指南
- ✅ 新增跨平台支持:添加Node.js版本,Windows/Mac/Linux全平台支持
- ✅ 修复输出格式:去掉干扰Claude理解的分隔符
- ✅ 修复日志路径:使用跨平台临时目录
- ✅ 修复路径问题:支持
$HOME和项目目录双重查找 - ✅ 增强错误处理:模板文件缺失时有日志提示
- ✅ 优化模板:去掉硬编码技术栈,改为智能推断
- ✅ 统一文档:代码和文档阈值说明一致(10字符)
用户发消息:"做个登录"
↓
Hook拦截
↓
调用优化逻辑
↓
输出优化后的专业提示词:
📝 原始输入:做个登录
🔄 优化后的理解:
- Context: Web应用,生产级安全
- Task: 实现JWT认证+bcrypt加密
- Format: 完整代码+测试
✅ 优化后的完整提示词:[详细的专业提示词]
↓
Claude收到优化后的版本
↓
Claude自动执行任务
提示词Hook/
├── .claude/
│ ├── hooks/
│ │ ├── user-prompt-submit.js ← Node.js版(推荐,跨平台)
│ │ └── user-prompt-submit.sh ← Bash版(Mac/Linux)
│ ├── prompt-optimizer-meta.md ← 优化提示词模板
│ ├── settings.json ← Hook配置(当前项目)
│ ├── settings.json.example-windows ← Windows配置示例
│ └── settings.json.example-unix ← Mac/Linux配置示例
└── test-hook.js ← 测试工具(验证hook功能)
- 用Claude Code打开这个项目目录
- 首次使用前运行测试:
node test-hook.js(可选,验证功能) - 随便说点什么测试(超过10个字符)
- 看Hook是否显示优化过程
# 复制整个.claude目录到你的项目
cp -r .claude /你的项目根目录/重要:确保settings.json使用正确的格式(见下方)
Windows:
# 复制到全局配置目录
Copy-Item -Recurse .claude\hooks $HOME\.claude\hooks
Copy-Item .claude\prompt-optimizer-meta.md $HOME\.claude\Mac/Linux:
# 复制到全局配置目录
mkdir -p ~/.claude/hooks
cp .claude/hooks/* ~/.claude/hooks/
cp .claude/prompt-optimizer-meta.md ~/.claude/
chmod +x ~/.claude/hooks/*.sh然后编辑 ~/.claude/settings.json(如果不存在就创建):
Windows用户:
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "node",
"args": ["C:/Users/你的用户名/.claude/hooks/user-prompt-submit.js"]
}
]
}
]
}
}Mac/Linux用户(Node.js版):
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "node",
"args": ["~/.claude/hooks/user-prompt-submit.js"]
}
]
}
]
}
}Mac/Linux用户(Bash版):
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "bash",
"args": ["~/.claude/hooks/user-prompt-submit.sh"]
}
]
}
]
}
}
⚠️ 重要:
- 键名必须是
UserPromptSubmit(PascalCase),不是user-prompt-submit- 值必须是数组,包含hooks对象
- 必须包含
type: "command"字段
- Node.js版(推荐):Windows/Mac/Linux全平台支持
- Bash版:Mac/Linux原生支持
| 输入类型 | 是否优化 |
|---|---|
Claude Code内置命令(/clear、/help等) |
❌ 不优化 |
| 简短问题(<10字符) | ❌ 不优化 |
| 简单回复("好的"、"继续") | ❌ 不优化 |
| 正常需求描述 | ✅ 优化 |
优化完成后,Claude会自动执行任务,不需要二次确认。
你说:
做个登录功能
Hook优化后:
📝 **原始输入**:做个登录功能
🔄 **优化后的理解**:
- **Context(上下文)**:Web应用,资深全栈工程师,生产级安全要求
- **Task(任务)**:实现完整的用户登录功能
- **Format(格式)**:完整代码文件 + 测试用例
✅ **优化后的完整提示词**:
[详细的专业提示词...]你说:
这是什么?
输出:原样输出,不浪费时间优化。
项目中提供了两个配置示例文件:
.claude/settings.json.example-windows- Windows平台配置.claude/settings.json.example-unix- Mac/Linux平台配置
临时禁用:重命名settings.json为settings.json.bak
切换Bash版本(Mac/Linux):
修改.claude/settings.json中的command和args:
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "bash",
"args": [".claude/hooks/user-prompt-submit.sh"]
}
]
}
]
}
}编辑 .claude/prompt-optimizer-meta.md:
- 修改CTF公式应用方式
- 调整输出格式
- 添加自定义检查项
使用提供的测试脚本验证hook功能:
node test-hook.js测试脚本会:
- ✅ 测试简短回复(应跳过优化)
- ✅ 测试太短输入(应跳过优化)
- ✅ 测试正常长文本(应触发优化)
- ✅ 测试复杂需求(应触发优化)
- ✅ 显示详细的测试结果和日志
⚠️ 重要提示:本次更新是为了适配 Claude Code v2.1.23 引入的 Hook 协议变更。旧版 Hook 脚本在新版 CLI 中会失效,表现为无响应或报错。
如果您遇到 Hook 无法工作的问题,可能是由于 Claude Code 版本更新导致的协议不兼容。以下是关键的修复总结:
旧版本协议将事件名暴露在外层,Claude Code 2.1.23+ 强制要求所有上下文相关字段必须包裹在 hookSpecificOutput 中。
❌ 错误结构(旧版):
return {
hookEventName: "UserPromptSubmit", // ❌ Claude Code 2.1.23+ 会忽略此字段
hookSpecificOutput: { ... }
};✅ 正确结构(新版):
return {
hookSpecificOutput: {
hookEventName: "UserPromptSubmit", // ✅ 必须包裹在内部
additionalContext: "..."
}
};在 Windows 环境下,使用相对路径可能导致 Hook 脚本无法被找到。
❌ 风险配置(相对路径):
"args": [".claude/hooks/user-prompt-submit.js"]✅ 推荐配置(绝对路径):
建议使用绝对路径,或确保 cwd 上下文正确。
"command": "node",
"args": ["C:/Absolute/Path/To/.claude/hooks/user-prompt-submit.js"]症状:输入提示词后没有看到任何优化输出
检查步骤:
-
验证配置格式:
- 确认
.claude/settings.json中键名是UserPromptSubmit(不是user-prompt-submit) - 确认值是数组结构,包含
hooks对象 - 确认包含
type: "command"字段
- 确认
-
运行测试脚本:
node test-hook.js
如果测试失败,说明hook脚本本身有问题
-
检查Node.js:
node -v
确保已安装Node.js
-
重启Claude Code:配置更改后需要重启
-
查看错误日志:
- Windows:
%TEMP%\hook-prompt-optimizer.log - Mac/Linux:
/tmp/hook-prompt-optimizer.log
- Windows:
原因:settings.json配置格式错误
解决方法:
- 检查键名是否为
UserPromptSubmit(PascalCase) - 检查是否使用了数组结构
- 参考项目中的示例文件:
.claude/settings.json.example-windows.claude/settings.json.example-unix
可能原因:
- 你的输入太短(<10字符)
- 输入是简单回复("好的"、"继续"等)
- Hook工作正常,但返回了空响应
检查方法:
- 运行测试脚本:
node test-hook.js - 查看日志文件,确认hook是否被触发
- 尝试输入较长的需求描述
解决方法:使用Node.js版本(推荐)
- 确保settings.json中配置的是
node命令 - 参考
.claude/settings.json.example-windows
解决方法:
chmod +x .claude/hooks/*.sh-
最小化测试:
# 直接运行hook脚本测试 echo "帮我写一个登录功能" | node .claude/hooks/user-prompt-submit.js
应该输出JSON格式的响应
-
查看日志:
# Windows type %TEMP%\hook-prompt-optimizer.log # Mac/Linux cat /tmp/hook-prompt-optimizer.log
-
验证JSON格式: hook输出必须是有效的JSON,格式如下:
{ "hookSpecificOutput": { "additionalContext": "..." } }或空对象
{}
Hook的核心脚本(Node.js版):
- 跨平台支持
- 拦截用户输入
- 智能过滤简单问题
- 调用优化逻辑
- 返回优化后的提示词
Hook的Bash版本(Mac/Linux):
- 功能同上
- 需要Bash环境
优化提示词模板:
- 5任务元提示词完整版
- CTF公式应用规则
- 输出格式规范
- 示例参考
Hook配置文件:
- 启用/禁用Hook
- 指定Hook脚本路径
把谷歌68页圣经+5任务元提示词的规则,变成自动执行的流程。
你不用记住所有规则。
你不用每次都检查CTF公式。
你不用纠结该用Zero-Shot还是CoT。
Hook帮你全干了。
现在你可以:
- 随便说话,Hook自动优化
- 看到完整的优化过程
- 享受高质量的AI对话
Have fun! 🚀
