第 6 节 · 本站原创中文课程 · 建议 45 分钟
第六节:用 Hook 做确定性校验
学完能做:理解事件、脚本和返回状态,先验证校验器再接入自动触发。
把必须遵守的规则落到程序检查
提示词可以提醒,Hook 可以在明确事件到来时触发脚本。先选择一个可确定判断的小规则,例如练习 JSON 是否有效。不要一开始就自动提交、发布或修改大量文件。
参考原文:06-hooks/README.md ↗先单独运行,再接入事件
先写一个最小校验器,确认有效 JSON、无效 JSON 和文件缺失分别返回什么。下面代码只读取你明确指定的练习文件,不读取 Hook 输入,也不是可直接复制的完整 Hook 配置。
import json
import sys
from pathlib import Path
try:
json.loads(Path(sys.argv[1]).read_text(encoding="utf-8"))
except (OSError, ValueError, IndexError) as error:
print(f"校验失败:{error}", file=sys.stderr)
raise SystemExit(1)
print("JSON 校验通过") 事件语义决定失败后会怎样
PreToolUse 与 PostToolUse 的时间点不同,普通退出码也不自动等同于所有事件的阻断协议。按当前文档确认输入 JSON、匹配器和阻断返回格式,再接入练习配置。工具写入后的事件不能撤销已经发生的外部动作。
测试失败和超时
为脚本设定合理超时、明确工作目录,保证日志不泄露文件内容。测试事件未匹配、正常通过、检查失败和脚本超时四条路径。保留移除配置的恢复步骤,避免学习过程影响其他项目。
这是本站独立编写的讲解与示例,并非官方课程逐字翻译。理解之后,请完成下面的练习、自测和笔记。