上下文工程 × Spec 驱动开发 —— 设计 AI 的工作环境,而非写更长的 Prompt
模型能力你控制不了。
但 上下文质量 和 任务清晰度 完全由你控制。
"帮我写一个排序函数"
→ AI 生成,粘贴到项目
→ 风格不一致,需要大量修改
有 CLAUDE.md + 打开相关文件
→ AI 了解项目规范
→ 生成符合风格的代码
PRD → Arch → Tasks
→ AI 在清晰规约下工作
→ 方向正确、质量可控、可追溯
Claude Code 每次会话自动加载。它定义了 AI 在这个项目中的"行为准则"。
## 规则
- 所有函数必须有类型提示
- API 端点必须做输入校验
- 不引入超过 3 个新依赖
## 禁忌
- 不要在 API 层直接操作数据库
- 不要硬编码敏感信息
- 不要跳过测试直接提交
每条都可执行、可验证
## 规则
- 代码要写好
- 注意安全
- 使用合适的设计模式
全是空话,AI 没有可执行的约束
| 原则 | 说明 | 例子 |
|---|---|---|
| 具体而非抽象 | 可验证的规则,而非模糊描述 | "函数不超过 20 行" 而非 "代码要干净" |
| 约束而非建议 | "必须" 而非 "建议" | "所有函数必须有类型提示" |
| 说做什么也说不做什么 | 禁忌往往比规则更重要 | "不要在 API 层操作数据库" |
| 保持更新 | 发现新规则立即更新 | 踩坑后用 CLAUDE.md 防止再犯 |
| 短小精悍 | 每行一条规则,控制在 100 行内 | 别写散文 |
如果同时使用多个 AI 编程工具(Claude Code、Codex、Copilot、Cursor),AGENTS.md 是它们共同的"通用规范"。CLAUDE.md 则是 Claude Code 的专属补充配置。
# AGENTS.md — 跨平台 AI Agent 指令
## 项目背景
AI 学习工作坊,11 个渐进式模块
## 通用编码规范
- 语言: Python 3.10+
- 每个模块必须配 README + Demo + 教学指南
- 代码注释用中文,标识符用英文
## 架构约定
- 模块命名: 0XX-topic-learning/
- 不跨模块引用代码
## 工作约定
- Commit: type: 中文描述
- 新建模块后更新 docs/learning-log.md
AGENTS.md → 跨平台通用规则(Claude Code、Codex、Cursor 等)CLAUDE.md → Claude Code 专属配置(Skills、Hooks、Memory 路径)| 类型 | 文件 | 记录什么 |
|---|---|---|
| user | user_role.md | 用户角色、目标、技术背景、偏好 |
| project | project_context.md | 为什么做这个项目、核心约束、干系人 |
| project | decisions.md | 技术选型及理由(为什么选 Redis 不选 Memcached) |
| project | architecture_decisions.md | 架构层面的关键决策(分层策略、API 设计风格) |
| feedback | feedback.md | 用户对 AI 协作方式的偏好和反馈 |
Skill 是预定义的 Checklist,告诉 AI "当遇到这类任务时,按这个步骤做"。
用户: "review 我的代码"
AI: "看起来不错"(泛泛而谈)
用户: "review 我的代码"
AI: 加载 code-review Skill
→ 1. 安全审查
→ 2. 逻辑审查
→ 3. 性能审查
→ 4. 风格审查
→ 5. 结构化报告
| 事件 | 触发时机 | 典型用途 |
|---|---|---|
PostToolUse | Write/Edit 文件后 | 自动 ruff/black 格式化 |
PreToolUse | Bash 命令执行前 | 检测危险命令(rm -rf, push --force) |
SessionStart | 会话开始时 | 加载 Memory、记录日志 |
PreCompaction | 上下文压缩前 | 自动将关键信息写入 Memory |
你放进来的东西决定了 AI 的输出质量。Context Engineering = 主动设计 AI 看到什么。
每个阶段评审通过后才进入下一阶段。在写代码之前,把方向想清楚。
需求 → AI 写代码 → 审查
→ 方向偏了 → 重写
→ 又偏了 → 再重写
→ 质量不可追溯
需求 → PRD(确认)
→ Arch(确认)
→ Tasks(确认)
→ 逐 Task 实现
→ 对照验收标准验证
→ 方向正确、可追溯
| 文档 | 回答的问题 | 产出 |
|---|---|---|
| 01-prd.md | 用户要什么?验收标准是什么? | 用户故事、功能列表(P0/P1/P2)、验收条件 |
| 02-architecture.md | 用什么技术?模块怎么划分? | 技术选型、数据模型、API 契约、代码结构 |
| 03-tasks.md | 分几步?依赖关系? | Task 列表(30min-2h/个)、依赖关系图、AI Prompt |
| # | 反模式 | 后果 | 正确做法 |
|---|---|---|---|
| 1 | 没写 CLAUDE.md 就开始 | AI 不了解规范 | 先写好 CLAUDE.md |
| 2 | 跳过 PRD 直接写代码 | 方向容易偏 | PRD → Arch → Tasks |
| 3 | 一次给太多任务 | 输出质量断崖下降 | 一次一个 Task |
| 4 | 打开不相关的文件 | 上下文污染 | 只开当前任务需要的 |
| 5 | 不用 Memory | 下次会话重复讨论 | 决策后立即写入 |
| 6 | Review 只看代码不看逻辑 | 漏掉设计问题 | 对照 PRD/Arch 审查 |
| 7 | 不写验收标准 | 不知道何时完成 | PRD 就写好 |
| 8 | 忽视测试 | 回归 Bug 频发 | 实现后立即生成测试 |
| 9 | 过度依赖 AI | 不理解的代码也合入 | 每行代码都要理解 |
| 10 | CLAUDE.md 从不更新 | 规则过时,AI 退化 | 每次踩坑后更新 |