前言

VibeCoding痛点

  • 上下文窗口限制

  • 调试、可维护性难度太大

  • 团队协作问题

  • 从原型到生产的鸿沟

全景架构图

Claude Code 从7个设计维度,构建「可编程 AI 工作流」

七层架构全景图

L1:对话写代码 - 自然语言交互入口

不同于 IDE 补全,Claude Code 可以读取整个项目、跨文件重构、执行命令并观察输出。

这已经比大多数 Copilot 插件强大得多——但单靠对话是有上限的。

  • 读写文件系统:可以跨目录读取、创建、修改文件,理解整体项目结构

  • 执行Bash命令:运行测试、查看日志、调用 git,观察实际执行结果

  • @引入文件/目录:精准注入上下文,@src/auth.ts 直接读入对话

  • 模式切换:Shift+Tab 在「计划」「执行」「自动接受」三种模式间切换

💡第一层的核心瓶颈:无持久记忆。

每次重新打开 Claude Code,它对你的项目一无所知。重复解释架构、规范、禁忌事项;

这就是 CLAUDE.md(第 2 层)要解决的问题。

L2:CLAUDE.md / Rules - 自动注入记忆

CLAUDE.md

CLAUDE.md 是一个 Markdown 文件,在每次会话开始时自动注入上下文窗口

编写 CLAUDE.md 规范

  • 控制在200行以下,较长的文件消耗更多上下文并降低遵守度;

  • 内容太多,可以使用 @ 语法引用其他文件,或使用 .claude/rules/ 文件进行拆分;

  • 擅用 markdown 标题和项目符号,增加可读性、有段落感;

  • 指令要具体,例如:

    • “使用 2 空格缩进”而不是”正确格式化代码”

    • “在提交前运行 npm test”而不是”测试您的更改”

  • 检查各层级 CLAUDE.md ,避免表述规则不一致或相互矛盾

CLAUDE.md 加载规则

  • Claude Code会从当前工作目录,向上遍历目录树,来依次读取 CLAUDE.md

  • Claude Code还会在读取当前工作目录下的子目录中的文件时,读取子目录下的 CLAUDE.md

  • 还可以使用 /add-dir--add-dir 命令访问主工作目录外的其他目录(多用于monorepo管理模式

Rules

  • .claude/rules/ 可以配置上下文加载规则,取决于是否配置了 glob 规则。

  • 用户级规则加载 优先于 项目规则加载

自动加载

.claude/rules/ 目录下的所有 Markdown 文件,在 Claude Code 启动时会自动加载到上下文中。

# .claude/rules/code-style.md
(没有 frontmatter)

- 使用 2 空格缩进
- 变量名用 camelCase

💡每次会话启动都会读入。


按需懒加载

.claude/rules/ 中的文件支持通过 glob 模式按条件激活,

例如 api.md 配置 api/**/*.tsfrontend.md 配置 src/**/*.tsx,只有操作匹配文件时才加载对应规则。

---
globs: ["src/api/**/*.ts", "src/routes/**/*.ts"]
---

# API Security Rules
- Always validate JWT tokens
- Rate limiting on all endpoints

💡只有当 Claude 操作 src/api/ 下的 .ts 文件时,才会加载这条规则。


L3:Tools/MCP - 赋予调用外部服务的能力

MCP(Model Context Protocol)是一种标准协议,让Claude 像使用 USB一样接入外部服务。

# 添加 GitHub MCP(查 PR、创建 Issue、代码审查)
claude mcp add --transport http github https://mcp.github.com

# 添加 Playwright(自动化浏览器测试)
claude mcp add playwright npx @playwright/mcp@latest

# 查看已安装的 MCP 服务
/mcp

L4:Skills - 可复用的工作流

  • Skills 是封装了「做某件事的最佳方法」的 Markdown 文件。

  • 和 CLAUDE.md 不同,Skills 不是全局常驻的,而是在 Claude 判断当前任务与 Skill 描述匹配时自动加载——按需注入,避免上下文浪费。

---
name: code-review
description: Review code changes for quality, bugs, and style issues
allowed-tools: Read, Grep, Glob   # 限制只能用只读工具
hooks:
  Stop:
    - hooks:
        - type: command
          command: "./scripts/format-review.sh"
---

你是一位资深代码审查专家。请按以下维度审查代码:
1. 逻辑错误和潜在 bug
2. 性能问题(不必要的循环、N+1 查询等)
3. 安全漏洞(SQL 注入、XSS、未校验输入等)
4. 代码风格和可读性

L5:Hooks - 确定性的「硬编码」规则

对比CLAUDE.md,最大的区别是:Hooks 在工具调用的生命周期中插入脚本,无论 Claude 怎么想,代码就是会被执行。

// .claude/settings.json
{
  "hooks": {
    // 1. 自动格式化(PostToolUse + command)
    "PostToolUse": [{
      "matcher": "Write|Edit",
      "hooks": [{ "type": "command", "command": "npx prettier --write \"$CLAUDE_FILE_PATHS\"" }]
    }],

    // 2. 拦截危险命令(PreToolUse + command,exit 2 = 阻止)
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{ "type": "command", "command": "./scripts/check-dangerous.sh" }]
    }],

    // 3. 任务完成桌面通知(Stop + command)
    "Stop": [{
      "hooks": [{ "type": "command", "command": "notify-send 'Claude Code' '任务完成'" }]
    }]
  }
}

参考文档:https://code.claude.com/docs/zh-CN/hooks

L6:Subagents / Agent Teams

Subagents

Workers 之间不能直接通信,只向主会话汇报。适合「分发 → 收集」场景。

Agent Teams

多个 Agent 互相通信、共享任务列表、挑战彼此输出。适合复杂研究和开发任务。

.claude/
├── agents
│   ├── backend-developer.md
│   ├── frontend-developer.md
│   └── qa-engineer.md
├── plans
│   └── functionality-review.md
├── rules
│   ├── backend
│   │   ├── code-review.md
│   │   ├── code-style.md
│   │   └── testing.md
│   └── frontend
│       ├── code-review.md
│       ├── code-style.md
│       └── testing.md
├── settings.json
├── settings.local.json
└── skills
    └── frontend-design
        └── SKILL.md

L7:Verifiers - 让Claude自我校验

Verifiers机制可以让Claude Code在完成任务之前,先通过自动化验证。

实现方式:

  • 通过 Stop Hook + agent 类型处理器

  • 在 Claude 准备停止时,触发一个有工具权限的 Subagent 去实际运行测试,若测试失败,则强制 Claude 继续修复。

防止无限循环:

  • Stop Hook 可能导致循环(修复 → 触发验证 → 验证失败 → 继续修复 → 再次触发)

  • 一定要在 Hook 脚本里检查 stop_hook_active 字段,当已经在 Hook 中时直接返回 exit 0,避免死循环。

// .claude/settings.json
{
  "hooks": {
    "Stop": [{
      "hooks": [{
        "type": "agent",    // 用 agent 类型,拥有工具访问权
        "prompt": "运行 npm test,如果所有测试通过返回 {\"ok\": true},否则返回 {\"ok\": false, \"reason\": \"失败原因\"}"
      }]
    }]
  }
}

# 这样 Claude 在完成修改后:
# 1. 准备停止 → 触发 Stop Hook
# 2. Subagent 实际运行 npm test
# 3. 测试失败 → {ok: false} → Claude 继续修复
# 4. 测试通过 → {ok: true}  → 任务真正完成

总结

痛点

层级

预期收益

每次都要重新解释项目背景

L2 · CLAUDE.md

一次配置,终身受益;团队共享规范

想接入 GitHub / 数据库等外部服务

L3 · MCP

一行命令接入任意外部服务

相同任务反复写大段 prompt

L4 · Skills

封装复用,降低日常上下文消耗

担心 Claude 写出危险代码 / 格式乱

L5 · Hooks

100% 确定性执行,不依赖 Claude「记住」

复杂任务上下文不够用 / 想并行提速

L6 · Subagents

独立上下文隔离,多任务并行

不信任 Claude 的输出,每次手动验证

L7 · Verifiers

自动化验证闭环,真正解放双手

Claude Code把"写代码"这件事做得很好,但生产环境需要的不只是"写代码"——还需要对结果负责的能力

而负责,需要持续观测、历史上下文、领域知识、和可追溯的决策链,这些目前都不在AI手里。

当前最合理的定位:让一个中级工程师的产出达到高级工程师的速度,但仍然需要高级工程师在场做判断。