摘要音频
本节课没有语音摘要。
学习笔记
钩子 (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 张卡片
问题
点击显示 · ←/→
答案
点击翻回
知识检测 6 题