前情提要
- Agent = 模型 + Harness。模型负责决策,Harness 负责模型外面的一切:给它准备什么上下文、给它什么工具、怎么检查它的输出、出了状况怎么兜底
- 第2节到第13节,读了 Claude Code 的循环、工具、权限、缓存、CLAUDE.md、Skill、MCP、Hook、插件、上下文工程、子代理、提示词
这一节不读新的源码,也不加新的代码。退后一步,把整本书看到的东西压一压:有哪些思路是反复出现的?
一、软约束 + 硬约束

回顾全书,几乎每一个功能都是两层:
| 场景 | 软约束:提示词,管「想不想」 | 硬约束:代码,管「能不能」 | 在哪节 |
|---|---|---|---|
| 项目规范 | CLAUDE.md | deny 规则、Hook | 第6、4、9节 |
| 不要自动提交 | Bash 工具说明里的 Git Safety Protocol | Bash(git commit *) 写进 ask 或 deny |
第3、4节 |
| 高危路径 | 系统提示词里「谨慎操作」一整节 | 改 .git/、.claude/、shell 配置,全自主模式也要问 |
第13、4节 |
| 计划模式 | 提醒:Plan mode is active... | 权限拦下所有改动 | 第12节 |
| 只读的 Explore 子代理 | 提示词:READ-ONLY MODE | 工具列表里只给只读工具 | 第12节 |
| 不让模型自己调用某个 Skill | (不需要) | 不进目录,Skill 工具也拒绝 | 第7节 |
| 插件 | (不需要) | 插件不能给自己加权限,插件子代理不能声明权限模式 | 第10节 |
两层各有分工:
- 软约束让模型理解意图,在规则没写到的地方也能做对的事。但它是概率性的:大概率遵守,不是一定遵守
- 硬约束保证底线,模型怎么想都绕不过去。但它只能管写死的情况,管不了「意图」
Claude Code 的做法是:能用提示词讲清楚的,先用提示词讲;绝对不能发生的,再用代码锁死。 两层都有,而且很多时候是同一件事写两遍。
你配置自己的 Claude Code 时也一样:CLAUDE.md 和 Skill 负责「讲道理」,权限规则和 Hook 负责「立规矩」。「CLAUDE.md 是建议,Hook 是规定」这句话,到这里有了完整的解释。
二、七条设计原则
