feat: 支持 PreToolUse 事件,AskUserQuestion 触发通知

- handler.go 添加 PreToolUse 事件处理,提取 AskUserQuestion 的 question 字段作为通知内容
- README.md 更新 hooks 配置示例、支持事件文档和测试命令
This commit is contained in:
2026-06-21 22:46:20 +08:00
parent ad585bf101
commit 2ac582ecfd
2 changed files with 45 additions and 2 deletions
+25 -2
View File
@@ -5,7 +5,7 @@
## 功能特性
- **实时通知**:当 Claude Code 需要关注时,立即收到手机推送
- **多事件支持**:Notification(权限请求、等待输入等)和 Stop(任务完成)
- **多事件支持**:Notification(权限请求、等待输入等)、Stop(任务完成)、PreToolUse(提问通知)
- **轻量部署**:单个 Docker 容器,资源占用极低
- **灵活配置**:通过环境变量自定义 Gotify 服务器和 Token
@@ -73,6 +73,17 @@ docker-compose up -d
"type": "command",
"command": "curl -s -X POST http://47.121.181.112:8082/hooks -H 'Content-Type: application/json' -d @-"
}
],
"PreToolUse": [
{
"matcher": "AskUserQuestion",
"hooks": [
{
"type": "command",
"command": "curl -s -X POST http://47.121.181.112:8082/hooks -H 'Content-Type: application/json' -d @-"
}
]
}
]
}
}
@@ -96,6 +107,13 @@ docker-compose up -d
| 正常完成 | 任务完成 | 5 | Claude 完成了本轮回复 |
| 循环检测 | 循环停止 | 8 | Stop hook 连续触发多次,已自动停止 |
### PreToolUse 事件
| 工具名称 | 标题 | 优先级 | 说明 |
|----------|------|--------|------|
| `AskUserQuestion` | 等待回答 | 6 | Claude 向你提问,等待回答 |
| 其他工具 | 工具调用 | 4 | Claude 正在使用工具 |
## 配置说明
| 环境变量 | 必填 | 说明 |
@@ -164,6 +182,11 @@ curl -X POST http://47.121.181.112:8082/hooks \
curl -X POST http://47.121.181.112:8082/hooks \
-H 'Content-Type: application/json' \
-d '{"session_id":"test","cwd":"/tmp","hook_event_name":"Stop"}'
# 模拟 AskUserQuestion 事件
curl -X POST http://47.121.181.112:8082/hooks \
-H 'Content-Type: application/json' \
-d '{"session_id":"test","cwd":"/tmp","hook_event_name":"PreToolUse","tool_name":"AskUserQuestion","tool_input":{"question":"你想使用哪种数据库?"}}'
```
## 项目结构
@@ -184,7 +207,7 @@ cc-hook/
## 扩展计划
- [ ] 数据库记录:将 Hook 事件写入数据库,便于复盘和分析
- [ ] 更多事件支持:Tool Use、Error 等事件类型
- [x] 更多事件支持:PreToolUse(AskUserQuestion 提问通知)
- [ ] 消息模板:自定义通知消息格式
- [ ] 多 Gotify 支持:同时推送到多个 Gotify 服务器