很多工程师把 System Prompt 当成"所有配置的垃圾桶"——结果越来越长,效果越来越差。
三层架构:
第一层:身份和全局约束(永远不变)
第二层:专业能力和领域知识(按场景切换)
第三层:当前任务上下文(每次更新)
第一层 — 身份层
你是一个 TypeScript 工程师助手。
你的首要原则:
1. 不修改测试文件,除非明确要求
2. 代码变更必须可以独立编译
3. 不引入没有讨论过的新依赖
这层内容最少,最稳定。这些规则在任何任务中都成立。
第二层 — 能力层
当前项目:一个 SaaS 后端服务
技术栈:Go 1.21, PostgreSQL 15, Redis 7
架构模式:Clean Architecture(handler → service → repository)
命名约定:[...]
这层描述"这个项目是什么"。随项目变化而变化,但在同一个项目的整个生命周期内相对稳定。
第三层 — 任务层
当前任务:重构 payment service 的退款逻辑
相关文件:src/services/payment.go, src/models/refund.go
背景:用户反馈退款状态经常不一致,怀疑是并发问题
完成后通知我,不要自动提交
这层内容最详细,每次 session 更新。它告诉 Claude 现在聚焦在哪里。
为什么三层比一层好:
- 第一层越短越有效:全局规则少而精,不会被任务细节淹没
- 第二层是知识库:Claude 不用每次都"重新学习"你的项目
- 第三层控制焦点:避免 Claude 在不相关的地方做"改善"
把 CLAUDE.md 想象成一本操作手册:第一章是"公司规定",第二章是"产品说明",第三章是"今天的任务单"。层次清晰,查阅高效。