Claude Code 通识 - claude_0x01

目录概要

  1. 为什么想写这篇文章
  2. AI 编程助手的发展背景
  3. Claude Code 是什么
  4. 6 个核心概念全览
  5. .claude/ 目录结构解剖
  6. 三层编排架构
  7. 这套生态究竟解决了什么问题

1. 为什么想写这篇文章

最近开始用 Claude Code 做工程开发,从一开始的"AI 聊天工具"心态,到后来发现这玩意儿能读写文件、跑命令、管 git、调用外部 API,完全是另一个物种,遇到了一些奇奇怪怪的问题------

"为什么我写的 CLAUDE.md 它有时候听有时候不听?" "command 和 skill 看起来都是一段提示词,到底有什么区别?" "subagent 又是什么?跟 skill 又有什么不一样?" "为什么我的 hook 没生效?"

为了搞清楚这些问题的产生原因,以及这套生态各个概念背后的设计思想,把一些问题和了解之后的原理记录下来,特此总结一篇文章,尝试系统地串联起 Claude Code 的整个工作模型。

这篇文章是整个系列的第一篇,主要做整体认知的建立,不深入任何一个细节,目的是让你看完之后,脑子里有一张完整的"地图"。后续文章会逐个展开。

如果说理解技术问题要"知其然并知其所以然",那这篇就是知其然------先告诉你这个生态长什么样、有什么、放在哪。所以然要等到后续每个细节展开的时候。


2. AI 编程助手的发展背景

这段没什么干货,可以跳过。但是历史挺有意思------AI 编程助手为什么演化到今天这个形态,理解这个有助于理解为什么 Claude Code 是这样设计的。

AI 写代码这件事,最早可以追溯到 2021 年 GitHub Copilot 公测。那时候 Copilot 的形态非常简单------就是一个自动补全器,根据你正在写的代码,预测下一行该写什么。

graph LR A[你在 IDE 里打字] --> B[Copilot 看到上下文] B --> C[预测下几行代码] C --> D[Tab 接受 / Esc 拒绝]

这个模式持续了大概两年,所有的 AI 编程助手都是"自动补全 + 聊天框"的形态------Cursor、Copilot Chat、Tabnine 都是。

2.1 Chat 形态的局限

Chat 形态的问题很快暴露:

  • 没有持久化上下文:每次新对话都要重新解释项目背景
  • 不能执行:AI 给你代码,你自己复制粘贴运行
  • 不能反馈:跑出错了,你又要把错误粘回去
  • 单次交互:复杂任务被切成一次一次的对话,AI 看不到全貌

那时候大家做的就是 vibe coding------靠感觉、靠对话、靠人肉串联各个步骤。

2.2 Agentic 转向

2024 年下半年开始,所有人都意识到一件事:AI 不应该只是建议者,应该是执行者

Cursor Composer、Devin、SWE-Agent 一窝蜂地涌出来,核心思路就一个------让 AI 自己跑 agentic loop

graph TD A[用户描述任务] --> B[AI 思考] B --> C[AI 选择工具] C --> D[AI 执行工具] D --> E{结果满足?} E -->|否| B E -->|是| F[返回结果给用户]

这就是所谓的"agentic engineering"------从 vibe coding 到 agentic engineering,本质上就是从"聊天"变成"驱动一个能自己干活的 agent"。

2.3 Claude Code 的定位

Anthropic 在 2024 年底发布的 Claude Code,跟其他工具的区别是:

它不是一个 IDE 插件,是一个终端工具

这个选择很有意思。当时所有竞品都在卷 IDE 集成,Anthropic 反其道而行之------做 CLI。Boris Cherny(Claude Code 的创始人)后来在播客里说,做 CLI 是因为 CLI 是工程师真正的"主场"------gitnpmdocker 都在终端里,把 AI 放进终端意味着 AI 可以无缝接入所有现有的工作流。

脑洞大一点,可以说:如果 Anthropic 当时做的是 IDE 插件,今天的 Claude Code 生态可能完全是另一个局面------不会有 hooks、不会有 MCP、不会有 subagents 这些"工程化"的东西。


3. Claude Code 是什么

简单一句话:

Claude Code 是一个跑在终端里的 agentic 编程助手。

但这句话是废话,重点在它能做什么

能力 说明
读写文件 直接操作你的工作目录
执行 shell 命令 npm/git/docker 任意
调用外部 API 通过内置 WebFetch 工具
管理 git commit、push、PR
编排 subagent 在隔离上下文里执行子任务
通过 MCP 连接外部工具 浏览器、数据库、Slack 等
在事件点触发 hooks 工具调用前后、会话开始结束
持久化记忆 跨会话记住项目上下文

它不是普通的 chatbot,是一个有手有脚、有记忆、可编排的 AI 工作系统。

3.1 这个仓库 vs 应用代码库

这里要澄清一个容易混淆的事情:

claude-code-best-practice 这个仓库本身不是一个"应用程序" ,它是一个 Claude Code 配置模式的参考实现。它的目的是告诉你:

如何把 Claude Code 调教成一个真正高效的工程伙伴。

类比的话,它有点像 dotfiles 仓库------不是软件本身,是软件的配置最佳实践


4. 6 个核心概念全览

Claude Code 的扩展能力,归根结底是 6 个概念。下面这张表先有个印象,每个概念后续文章会详细展开。

mindmap root((Claude Code)) Commands 用户主动触发 工作流模板 .claude/commands/ Skills Claude 自动匹配 可复用知识单元 .claude/skills/ Subagents 自主 AI actor 独立上下文 .claude/agents/ Hooks 事件驱动 工具前后/会话前后 .claude/hooks/ MCP Servers 连接外部世界 浏览器/DB/API .mcp.json Memory 持久化上下文 跨会话记忆 CLAUDE.md

4.1 Commands(命令)

一句话:把你常用的工作流封装成 /slash-command

  • 位置.claude/commands/<name>.md
  • 触发 :用户主动输入 /command-name
  • 类比:像键盘宏,把多步操作压缩成一个动作
  • 典型场景/commit-push-pr 一键提交、推送、开 PR

4.2 Skills(技能)

一句话:注入到上下文的"专业技能手册",Claude 看到相关任务自动翻出来用。

  • 位置.claude/skills/<name>/SKILL.md
  • 触发 :Claude 根据 description 自动匹配,也可以手动 /skill-name
  • 类比:像专科医生的诊疗手册,遇到对症的问题就翻开
  • 典型场景weather-svg-creator skill,用户说"给我天气卡片"就自动触发

4.3 Subagents(子代理)

一句话:在独立上下文中自主运行的 AI actor,有自己的工具权限、模型、记忆。

  • 位置.claude/agents/<name>.md
  • 触发 :通过 Agent 工具调用,或 Claude 根据 description 自动派遣
  • 类比:像一个专职员工,你交给他一个任务,他自己搞定,不占用你的主上下文
  • 典型场景weather-agent 自主调用 API 获取天气数据

4.4 Hooks(钩子)

一句话:在特定事件(工具调用前/后、会话开始/结束等)触发的自定义处理器。

  • 位置.claude/hooks/ + .claude/settings.json
  • 触发:事件发生时自动触发
  • 类比:像 git hooks,但更强大------可以是 shell 脚本、HTTP 请求、AI 提示词、subagent
  • 典型场景 :每次 Write 文件后自动跑 npm run format

4.5 MCP Servers(模型上下文协议服务器)

一句话:标准化协议,让 Claude 连接外部工具、数据库、API。

  • 位置.mcp.json
  • 触发 :Claude 调用 mcp__<server>__<tool> 工具时
  • 类比:像 VSCode 的扩展市场,每个 MCP server 给 Claude 增加一类新能力
  • 典型场景:Playwright MCP 让 Claude 控制浏览器

4.6 Memory(记忆)

一句话:跨会话持久化的项目上下文,Claude 启动时自动加载。

  • 位置CLAUDE.md.claude/rules/~/.claude/CLAUDE.md
  • 触发:会话启动时自动加载
  • 类比:像新员工的入职文档,每次启动都要读一遍
  • 典型场景 :在 CLAUDE.md 里写"提交时每个文件单独 commit",Claude 永远不会忘

5. .claude/ 目录结构解剖

把上面 6 个概念落到目录上,长这样:

graph TD Root[项目根目录] --> CLAUDE_MD[CLAUDE.md
项目记忆] Root --> MCP_JSON[.mcp.json
MCP 配置] Root --> CLAUDE_DIR[.claude/] CLAUDE_DIR --> CMDS[commands/
用户触发的工作流] CLAUDE_DIR --> AGENTS[agents/
自主 AI actors] CLAUDE_DIR --> SKILLS[skills/
可复用知识单元] CLAUDE_DIR --> HOOKS[hooks/
事件处理器] CLAUDE_DIR --> RULES[rules/
拆分的规则文件] CLAUDE_DIR --> SETTINGS[settings.json
权限/hooks/MCP] CLAUDE_DIR --> SETTINGS_LOCAL[settings.local.json
个人配置 git 忽略] CMDS --> CMD1[weather-orchestrator.md] AGENTS --> AGT1[weather-agent.md] SKILLS --> SK1[weather-fetcher/SKILL.md] SKILLS --> SK2[weather-svg-creator/SKILL.md] HOOKS --> HK1[scripts/hooks.py]

5.1 几个值得注意的细节

1. CLAUDE.md 在根目录,不在 .claude/

这个设计是有意为之的------CLAUDE.md 是给所有人(人类和 AI)看的"项目说明",应该和 README.md 一样在显眼的位置。

2. .mcp.json 也在根目录

CLAUDE.md 同理------MCP 配置是项目级的"基础设施声明",应该在根目录。

3. Skills 是"文件夹",不是"文件"

注意 skills/ 下面每个 skill 是一个目录,里面有 SKILL.md 主文件,可能还有 references/scripts/examples/ 子目录------这是 skill 设计的核心思想之一,叫"渐进式揭露",后面的文章会详细讲。

4. settings.local.json 是个人配置

.local 的文件都是 git 忽略的,用来放每个开发者自己的偏好,不污染团队共享的配置。


6. 三层编排架构

把 6 个概念串起来用,最经典的模式叫 Command → Agent → Skill 三层编排。这套架构是这个仓库一直在强调的。

sequenceDiagram actor User as 用户 participant Cmd as Command
(入口层) participant Agent as Subagent
(执行层) participant Skill1 as Agent Skill
(预加载知识) participant API as 外部 API participant Skill2 as Skill
(输出层) User->>Cmd: /weather-orchestrator Cmd->>User: 摄氏 or 华氏? User->>Cmd: 摄氏 Cmd->>Agent: 用 Agent 工具调用 Note over Agent: 启动时已注入
weather-fetcher Agent->>Skill1: 读取预加载的指令 Skill1-->>Agent: API 调用方式 Agent->>API: GET temperature API-->>Agent: 26°C Agent-->>Cmd: temperature=26, unit=C Cmd->>Skill2: 用 Skill 工具调用 Skill2->>Skill2: 生成 SVG Skill2-->>User: weather.svg + output.md

6.1 三层各管什么

角色 关注点
Command(指挥层) 入口、协调 用户交互、流程编排
Subagent(执行层) 自主任务 多步骤推理、API 调用、外部交互
Skill(输出/知识层) 可复用知识 领域知识、流程封装、生成输出

这个分层的本质是关注点分离------每个组件只做一件事,高内聚低耦合。

这种三层架构有很多优点,并且在复杂工作流里几乎是必需的,但是在实际中并不是所有任务都需要这种结构。简单任务直接用 Claude Code 原生就够了------这点 Boris 本人也反复强调过。

6.2 不要过度工程化

我刚开始用的时候特别想"全部都封装成 command + agent + skill",结果发现:

  • 一次性的探索任务,封装的成本远大于收益
  • 简单的代码生成,原生 Claude 就能搞定
  • 真正值得封装的是每天重复多次的工作流

后面的实战篇会有具体的判断标准。


7. 这套生态究竟解决了什么问题

回到最开始的问题------这套生态究竟解决了什么问题?我把它整理成一张对照表:

痛点 解法 对应概念
每次都要重复输入相同的提示词 把工作流封装成 /slash-command Commands
Claude 对你的项目一无所知 持久化项目上下文 Memory(CLAUDE.md
复杂任务多步骤,Claude 容易走偏 在独立上下文中自主完成任务 Subagents
需要复用特定的领域知识 可预加载、可共享的知识单元 Skills
需要在工具调用前后插入自定义逻辑 事件驱动的自动化 Hooks
需要连接外部工具 标准化协议 MCP Servers

这 6 个概念不是孤立的,它们组合起来构成一个完整的"AI 工程化"工作系统。


summary

奇奇怪怪的无用知识又增长了呢:

  • 为什么 AI 编程助手会从 Chat 形态演化到 Agentic 形态?
  • 为什么 Anthropic 选择 CLI 而不是 IDE 插件?
  • claude-code-best-practice 仓库为什么不是"应用代码"?

研究收获:

  • 认识了 6 个核心概念:Commands、Skills、Subagents、Hooks、MCP、Memory
  • 理解了 .claude/ 目录的组织逻辑
  • 初步了解 Command → Agent → Skill 三层编排架构
  • 明白了"不要过度工程化"------简单任务用原生 Claude 就够
  • 知道这套生态各个部分对应解决什么痛点

下一篇会重点对比 Command vs Agent vs Skill 这三个最容易混淆的概念,给出一个清晰的选择决策树。


Footnotes

参考资料(原文副本见 sources/ 目录)

  • sources/CLAUDE.md:本仓库的 CLAUDE.md,是这套生态最浓缩的项目级说明

外部链接

相关推荐
Bigger2 小时前
第十章:我是如何剖析 CLI 里的终极 Agent 能力的(电脑控制与浏览器接管)
前端·claude·源码阅读
马丁路的King2 小时前
没有海外信用卡?Phone用户也能订阅 Claude Pro
claude
2501_948114242 小时前
2026 深度评测:Qwen 3.6-Plus 全模态逻辑链融合架构解析与高可用接入实践
人工智能·gpt·ai·架构·claude
阿里-于怀3 小时前
Agent 构建变轻、Agent 架构变薄,什么正在变厚?
数据库·mysql·架构·agent·claude·manus·openclaw
糖葫芦君3 小时前
【Claude code】创建自定义skill
ai编程
AGV算法笔记3 小时前
AI编程革命:告别重复造轮子
ai编程
冬奇Lab15 小时前
Claude Code 实战经验分享(下篇):记忆、规则、权限与快捷操作
人工智能·ai编程
Karl_wei19 小时前
Vide Coding 的基础:LLM 大模型
llm·ai编程·领域驱动设计
牧舟聊AI19 小时前
AI 编程时代的规范驱动开发:OpenSpec 实践指南
ai·ai编程