Maker-Checker 实战落地

本条目是「Prompt 2.0 方法论」的第 10 部分,对应学习清单条目 2.4.2。

前置依赖:Maker-Checker概念

为以下铺垫:成本考量、Skill Engineering


一、核心观点

实战落地:用 Claude Code 的 post-edit hook 自动跑 lint + typecheck,把「Checker」变成确定性的、每次都执行的护栏。

需要「每次都做对」的事,别靠 Prompt 提醒——靠 Hook。Hook 像收银台的扫码枪:不管店员记不记得,钱都得扫。


二、定义与原理(类比先行)

2.1 类比:收银台的扫码枪

你当然可以贴张「请记得扫码」的纸条(Prompt 提醒),但店员忙起来就会忘。真正的办法是把扫码做成流程里绕不开的一步(Hook)——不扫就过不了账。Checker 落地也一样:把验证嵌进工具链,而非指望模型自觉。

2.2 Hook 是什么

Hook 是在特定事件点自动执行的脚本:

  • PreToolUse:工具调用前(如拦一道防火墙)

  • PostToolUse:工具调用后(如编辑后自动检查)

  • Notification:通知事件


三、实战示例

3.1 配置 post-edit hook

 
// .claude/settings.json
 
{
 
  "hooks": {
 
    "PostToolUse": [
 
      { "matcher": "Edit|Write",
 
        "hooks": [{ "type": "command", "command": "ruff check $FILE && mypy $FILE" }] }
 
    ]
 
  }
 
}
 

3.2 工作流程


flowchart LR

    M[Maker 编辑代码] --> H[post-edit hook 自动运行]

    H -- 通过 --> C[继续]

    H -- 不通过 --> F[Maker 修复]

    F --> M

注:matcherEdit|Write 而非精确文件名;退出码 0=放行,2=阻断(详见 Anthropic hook 文档)。


四、其他落地方式

  • Git Pre-commit Hookruff check . && mypy . && pytest

  • CI/CD Pipeline:GitHub Actions 里跑 lint/typecheck/test

  • IDE 插件:VS Code 的 Ruff / Mypy / Pylance


五、优劣势

  • ✅ 自动化、即时反馈、不通过就卡住——比「靠模型自觉」稳

  • ✅ Checker 变确定性,不消耗额外 LLM 调用

  • ❌ 初始有一次配置成本;规则多了要维护


六、最新研究与企业数据(2024–2026)

  • Anthropic《Harness design for long-running application development》(2025):明确把 hooks(生命周期事件点的确定性自动化) 列为 harness 的核心组件;并强调「需要每次都执行的事用 Hook,不要用 Prompt 提醒」。该文还用 context reset(上下文重置)配合 hook,解决长任务中上下文焦虑与失焦。

  • 同一文指出:Hook 是确定性的,Skills 是概率性的——凡能确定化的验证,优先 Hook。


七、学习资源

  • 权威指南:Anthropic《Harness design for long-running application development》

  • 工具文档:Anthropic Claude Code Hooks(PreToolUse / PostToolUse 配置)

  • 进阶Checker 成本考量 · 四层嵌套关系


核心要点

要点速记
核心用 hook 把 Checker 变确定性护栏
类比收银台扫码枪:不扫过不了账
口诀每次都要做对的事→Hook,别靠 Prompt
退出码0=放行,2=阻断
一手依据Anthropic:Hook 确定性,Skills 概率性

下一篇Checker 成本考量——Checker 一定要用贵模型吗?不。


参考来源(一手链接 · 可溯源深挖)

  • Anthropic (2025)《Harness design for long-running application development》:anthropic.com/engineering/harness-design-long-running-apps

  • Anthropic Claude Code Hooks 配置文档(PreToolUse / PostToolUse)——原始链接待核实:docs.anthropic.com 下 Claude Code / hooks 章节

速记卡(面试闪卡)

Q1:一句话讲清「Maker-Checker 实战落地」到底是什么?

A:把「Checker」从 Prompt 提醒升级成确定性护栏——用 post-edit hook 自动跑 lint+typecheck,不通过就卡住。

Q2:一、核心观点:靠 Hook 不靠提醒 —— 怎么理解?

A:Hook 像收银台扫码枪:不管店员记不记得,钱都得过这关。Checker 落地也一样——把验证嵌进工具链,而非指望模型自觉。

Q3:二、定义:Hook 是什么 —— 怎么理解?

A:Hook 是特定事件点自动执行的脚本:PreToolUse 像防火墙拦一道,PostToolUse 在编辑后自动检查,Notification 发通知——三个点把验证焊进流程。

Q4:三、实战:post-edit hook 配置 —— 怎么理解?

A:在 settings.json 给 PostToolUse 配 matcher=Edit|Write,命令 ruff+mypy。像给每篇作文自动过两道校对,退出码 0 放行、2 阻断,漏网难。

Q5:四、其他落地:pre-commit/CI/IDE —— 怎么理解?

A:不止 hook 一种:Git pre-commit 跑全套检查,CI 流水线统一把关,IDE 插件实时标红。本质都是「把 Checker 确定化」,别赌模型自觉。

Q6:核心速记主线有哪些?

  • 核心:Checker 变确定性护栏

  • 类比:收银台扫码枪,不扫过不了账

  • 退出码:0 放行 / 2 阻断

  • 依据:Hook 确定性,Skills 概率性

口诀

A:每次做对靠 Hook,

别靠 Prompt 提醒;

0 放行 2 阻断,

确定性护栏稳。

相关链接