feat: 支持 PreToolUse 事件,AskUserQuestion 触发通知
- handler.go 添加 PreToolUse 事件处理,提取 AskUserQuestion 的 question 字段作为通知内容 - README.md 更新 hooks 配置示例、支持事件文档和测试命令
This commit is contained in:
+20
@@ -49,6 +49,8 @@ func (h *HookHandler) HandleHook(w http.ResponseWriter, r *http.Request) {
|
||||
title, message, priority = h.handleNotification(event)
|
||||
case "Stop":
|
||||
title, message, priority = h.handleStop(event)
|
||||
case "PreToolUse":
|
||||
title, message, priority = h.handlePreToolUse(event)
|
||||
default:
|
||||
log.Printf("ignored event: %s", event.HookEventName)
|
||||
w.WriteHeader(http.StatusOK)
|
||||
@@ -90,6 +92,24 @@ func (h *HookHandler) handleNotification(event ClaudeCodeHookEvent) (title, mess
|
||||
return title, message, priority
|
||||
}
|
||||
|
||||
func (h *HookHandler) handlePreToolUse(event ClaudeCodeHookEvent) (title, message string, priority int) {
|
||||
switch event.ToolName {
|
||||
case "AskUserQuestion":
|
||||
title = "Claude Code - 等待回答"
|
||||
if question, ok := event.ToolInput["question"].(string); ok && question != "" {
|
||||
message = "Claude 向你提问: " + question
|
||||
} else {
|
||||
message = "Claude 向你提出了一个问题,等待你的回答"
|
||||
}
|
||||
priority = 6
|
||||
default:
|
||||
title = "Claude Code - 工具调用"
|
||||
message = fmt.Sprintf("Claude 正在使用 %s", event.ToolName)
|
||||
priority = 4
|
||||
}
|
||||
return title, message, priority
|
||||
}
|
||||
|
||||
func (h *HookHandler) handleStop(event ClaudeCodeHookEvent) (title, message string, priority int) {
|
||||
if event.StopHookActive {
|
||||
// Avoid infinite loop: Stop hook triggered too many times
|
||||
|
||||
Reference in New Issue
Block a user