Claude Code In Action
← 所有课程
课程 18Claude Code In Action

Another useful hook

摘要音频

本节课没有语音摘要。

学习笔记

钩子 (Hooks) 关键概念学习笔记

  • 钩子类型 (Hook Types): 除了预工具使用 (PreToolUse) 和后工具使用 (PostToolUse),还存在多种钩子:
  • Notification (通知):当 Claude Code 需要权限或空闲 60 秒后触发。
  • Stop (停止):当 Claude Code 完成响应时触发。
  • SubagentStop (子代理停止):当子代理 (Subagent) 完成任务时触发。
  • PreCompact (压缩前):在手动或自动压缩操作前运行。
  • UserPromptSubmit (用户提示提交):用户提交提示前运行。
  • SessionStart / SessionEnd (会话开始/结束):会话开始或结束时运行。
  • 输入数据变化 (Input Variability):
  • 发送给钩子命令的 stdin 输入会根据执行的钩子类型(如 PreToolUse, Stop, Notification 等)而显著变化。
  • 在 PreToolUse 和 PostToolUse 钩子中,tool_input 的内容取决于被调用的具体工具(例如 TodoWrite)。
  • 挑战 (The Challenge):
  • 由于输入结构的不确定性,编写钩子时很难准确预知命令接收到的数据格式。
  • 解决方案 (Best Practice):
  • 使用辅助钩子 (Helper Hook): 建议创建一个辅助钩子(例如 PostToolUse),其命令可以将接收到的原始输入数据记录到日志文件(如 jq . > post-log. json)。
  • 目的: 通过日志检查,可以准确了解命令需要检查的数据结构。

Takeaways

  • 钩子类型多样,包括通知、停止、子代理停止、压缩前等多种触发场景。
  • 钩子接收的输入数据(stdin)会根据执行的钩子类型发生显著变化。
  • 由于输入结构的不确定性,编写钩子时很难准确预知命令接收到的数据格式。
  • 最佳实践是使用辅助钩子(如 PostToolUse)将原始输入数据记录到日志文件。
  • 通过日志检查,可以准确了解命令需要处理的数据结构。
抽认卡 10 张卡片
问题
点击显示 · ←/→
答案
点击翻回
导出到 Anki (.tsv) ↓
知识检测 6 题