3.5 有用的Hooks
Claude Code 的 hooks 能帮助解决 AI 辅助开发中的常见薄弱环节,尤其在大型项目中更显成效。它们会在 Claude 修改代码时自动运行,提供即时反馈并避免常见问题。
一、TypeScript 类型检查 Hook
一个非常有用的 hook 旨在解决基础性问题:当 Claude 修改函数签名时,往往不会同步更新项目中所有调用该函数的地方。
例如,你让 Claude 在 schema.ts 的某函数中添加 verbose 参数,它可能成功更新了函数定义,但遗漏了 main.ts 中的调用点,从而产生类型错误,而 Claude 未能立即捕获。
解决方案是在每次文件编辑后运行 TypeScript 编译器的“工具后(post-tool-use)”hook:
1.运行 tsc –noEmit检查类型错误。
2.捕获发现的错误。
3.立即将错误反馈给 Claude。
4.提示 Claude 修复其他文件中的问题。
该 hook 适用于任意可运行类型检查器的强类型语言;对无类型语言,你可以用自动化测试实现类似效果。
二、查询重复防止 Hook
在拥有大量数据库查询的大型项目中,Claude 有时会重复实现现有功能,而非复用现有代码。尤其当你给 Claude 下达复杂的多步骤任务、其中数据库操作只是一个组成部分时,这种问题更常见。
设想项目结构中有多个查询文件,每个都包含许多 SQL 函数。当你请求“创建一个 Slack 集成,用于提醒超过 3 天未处理的订单”时,Claude 可能会写一个新的查询,而不是复用现有的 getPendingOrders()。

查询重复 hook 通过实施一个审查流程来解决:

1.当 Claude 修改 ./queries 目录中的文件时触发。
2.以编程方式启动一个独立的 Claude Code 实例。
3.让第二实例审查改动并检查是否存在相似的既有查询。
4.若发现重复,将反馈提供给原始 Claude 实例。
5.提示 Claude 删除重复项并复用现有功能。
三、实施考量
两种 hook 都使用“工具前/工具后”机制。TypeScript 类型检查 hook 较轻量且运行迅速;查询重复 hook 资源开销更大,因为每次审查都会启动一个额外的 Claude 实例。
针对查询 hook 的权衡:
1.优点:代码库更整洁,减少重复。
2.成本:每次编辑查询目录都会增加时间与 API 使用。
3.建议:仅监控关键目录以降低开销。
这些 hooks 使用 Claude 的 TypeScript SDK 以编程方式与 AI 交互,使你能够构建复杂工作流,让一个 Claude 实例审查并反馈另一个实例的工作。
四、扩展思路
这些 hooks 展示了可应用到你项目的更广泛原则:
1.利用编译器/linters 输出提供即时反馈。
2.通过独立的 AI 实例实施代码审查流程。
3.将监控聚焦在一致性最重要的高价值目录。
4.在自动化收益与性能成本之间取得平衡。
关键在于识别你开发流程中的具体痛点,并创建针对性的 hooks 来自动解决这些问题。