全景导览:Claude Code 引擎盖下的世界
你大概已经听说过 Claude Code——一个在命令行里跑的 AI 编程工具。 但如果你只是想"先装上试试",网上随便搜一篇教程就够了。这篇文章要做的事稍微不一样:在你装好、跑起来之后,帮你看清楚这台机器的整体构造。 知道整体构造有什么用?很简单:当你遇到问题,你知道从哪里找原因;当你想扩展功能,你知道往哪个方向想;当你读后面每篇文章,你知道那个功能"长"在系统的哪个位置。 我们先装好,再看全景。 Claude Code 是原生应用,不需要预装 Node.js 或其他运行时,直接一行命令搞定。 macOS / Linux / WSL: Windows PowerShell: Windows 用户需要先装好 Git for Windows,安装脚本依赖它。 macOS 也可以用 Homebrew 安装,但不会自动更新,需要手动执行 安装完成后验证: 看到版本号就好了。原生安装方式会在后台自动更新,保持在最新版本。 Claude Code 本身只是一个"壳",负责读文件、执行命令、管理对话。真正"思考"的部分是背后接入的大语言模型。 你有两条路: 去 console.anthropic.com 注册、充值、拿到 API Key。效果最好,费用也最高。 很多国产模型(智谱 AI、DeepSeek、通义千问等)提供兼容接口,可以直接接入 Claude Code。效果略差,但够用,费用低,网络也稳定。 如果你喜欢命令行,手动配置环境变量: 建议把这两行加到 如果你不想手动编辑配置文件,可以用 CC Switch ——一个专门管理 Claude Code 等 AI CLI 工具的桌面应用,支持 50+ 模型提供商预设,点几下就能切换,不需要记环境变量的写法。 macOS 安装: Windows 和 Linux 用户去它的 Releases 页面 下载安装包。 两种方式都能达到同样效果,选你顺手的就好。 进入任意一个项目目录,输入 第一次运行会提示登录或确认 API 配置,跟着提示走完就好。进入对话后,你可以试试: 能收到回答,就说明整条链路通了。 装好之后,大多数人就停在这里——问它问题,它给答案。这是 Claude Code 最基本的用法,但只用到了它能力的一小部分。 Claude Code 的完整技术栈可以分成四层: 你现在接触到的对话交互,其实只是最上层和最下层的结合——Memory 给它背景,你问它答。中间两层,才是 Claude Code 真正强大的地方。 每次开新会话,模型本身什么都不记得。Memory 层解决的就是这个问题。 核心文件是 三个层级,从广到窄: Memory 是整个系统的地基——后面所有组件的行为,都建立在这个稳定的项目认知上。 这一层是 Claude Code 能力的真正来源,包含四个组件。 你输入 斜杠命令本质是你写的 Markdown 文件,放在 斜杠命令需要你主动输入 你说"帮我看看这段代码有没有安全问题",Claude 识别到安全审查任务,自动激活 适合需要专业判断的场景:安全分析、性能评审、架构设计。 当任务太重,或者会产生大量噪音,Claude 可以分身出去: 子代理有独立的上下文,执行完销毁。主流程保持清晰,不被大量日志淹没。适合隔离执行:批量文件处理、密集测试、日志分析。 前三个组件是"Claude 做什么",Hooks 是"特定时机自动发生什么"。 Hooks 绑定在操作生命周期上—— 去掉对话界面,让 Claude 完全自动运行。这是把 Claude Code 接进 CI/CD 流水线的方式——代码提交时自动审查、合并前自动检查,不需要人盯着。 比如在 GitLab CI 里,每次有人提 Merge Request,自动让 Claude 做代码审查: 每次有人发起 MR,这个 job 就自动跑,Claude 看完代码把意见输出到流水线日志里。你不需要做任何手动操作。 Claude 自己会读文件、写代码,但没办法直接查你的数据库、打开浏览器。MCP 是给它接上这些外设的协议: 装对应的 MCP 服务器,Claude 就能操作这些外部系统,就像操作本地文件一样自然。 当配置的方式不够灵活,可以用代码直接控制 Claude: 这一层适合把 Claude 能力嵌入自己程序的场景。大多数读这个系列的人暂时不需要,但知道它的存在——当你需要的时候,这就是入口。 面对一个具体需求,选哪个组件? 这四层不是孤立的。来看一个贴近日常的场景:你在做一个个人项目,每周想生成一份"本周做了什么"的开发日志,发到自己的 Notion 里存档。 你只需要输入 你坐在那里,喝完一杯茶,日志已经在 Notion 里了。 这个例子没有安全漏洞、没有复杂的工程流程——就是一件普通的重复性事务。但它同样可以用这套组合拳解决,这才是 Claude Code 可组合设计的真正价值:不只是给工程师用的,也是给任何有重复工作要处理的人用的。 这篇文章做了三件事: 装好工具:Claude Code 是原生应用,一行 curl 命令安装,不依赖 Node.js。接入方案有两条路,官方 API 效果最好,国产模型够用且便宜;不想手动配环境变量的,用 CC Switch 可视化搞定。 看清全貌:Claude Code 的底层是四层结构——Memory(持久记忆)、扩展层(Commands / Skills / SubAgents / Hooks)、集成层(Headless + MCP)、Agent SDK。你现在对话用到的只是最表层,中间两层才是真正让它变得可编程的地方。 建立直觉:每个组件有自己的定位——固定流程用 Commands,专业判断用 Skills,隔离执行用 SubAgents,自动守卫用 Hooks,接外部系统用 MCP,无人值守用 Headless。组合起来,才是它真正的威力所在。 后面的文章会逐个把这些组件跑通。有了这张全景图打底,你读每篇文章都知道自己在拼哪一块。 按照文章开头的步骤装好、配好,进入你的项目目录,输入 问它"这个项目是做什么的"——它会读你的代码,给出一个真实的回答。这一刻的感受,和用网页版 ChatGPT 聊代码,是完全不同的体验。
第一步:装好 Claude Code
curl -fsSL https://claude.ai/install.sh | bashirm https://claude.ai/install.ps1 | iexbrew upgrade claude-code:brew install --cask claude-codeclaude --version第二步:选择接入方案
路线 A:Anthropic 官方 Claude API
路线 B:国产大模型(推荐学习阶段使用)
# 路线 A
export ANTHROPIC_API_KEY=你的key
# 路线 B(以智谱 AI 为例)
export ANTHROPIC_BASE_URL=https://open.bigmodel.cn/api/paas/v4
export ANTHROPIC_API_KEY=你的key~/.zshrc 或 ~/.bashrc 里,下次打开终端自动生效。brew tap farion1231/ccswitch && brew install --cask cc-switch第三步:跑起来
claude:cd 你的项目目录
claude> 这个项目是做什么的?
> 帮我列出所有 Python 文件
> 帮我写一个 hello world 函数现在,我们来看引擎盖下面
┌──────────────────────────────────┐
│ Agent SDK(用代码直接驱动) │
├──────────────────────────────────┤
│ 集成层:Headless 模式 + MCP │
├──────────────────────────────────┤
│ 扩展层:Commands / Skills / │
│ SubAgents / Hooks │
├──────────────────────────────────┤
│ Memory(记忆系统) │
└──────────────────────────────────┘第一层:Memory,持久记忆
CLAUDE.md,放在项目根目录。Claude Code 启动时自动读取,就像新员工入职前看手册。你写进去的技术栈、代码规范、禁止事项,它都会"记住"。~/.claude/CLAUDE.md ← 全局(所有项目共用)
项目根目录/CLAUDE.md ← 项目级(当前项目)
子目录/.claude/rules/ ← 模块级(特定目录)第二层:扩展层,四个核心组件
Commands(斜杠命令)
/commit,Claude 就按你定义好的方式生成提交信息。.claude/commands/ 里。Claude 读文件,照着执行。适合固定流程——那些每次都要重复描述的操作,变成一个命令,一键触发。Skills(技能)
/xxx。Skills 不一样——Claude 自己判断是否激活。security-review Skill,用安全专家的方式来分析——不需要你输入任何命令。SubAgents(子代理)
主 Claude:这个任务要跑大量测试,我创建一个子代理来处理。
子代理:独立执行,只把结果汇报给主 Claude。Hooks(钩子)
事件:Claude 即将修改某个文件
Hook:自动运行检查脚本
结果:有问题就阻止,没问题就放行PreToolUse(工具调用前)、PostToolUse(调用后)——只要事件发生就自动触发。适合自动化守卫:格式化、安全检查、日志记录。第三层:集成层,连接外部世界
Headless(无头模式)
code-review:
stage: review
image: node:22
script:
- npm install -g @anthropic-ai/claude-code
- claude --headless "审查本次 MR 改动的代码,重点检查安全问题和潜在 bug,用中文输出审查意见"
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
variables:
ANTHROPIC_API_KEY: $ANTHROPIC_API_KEY # 在 GitLab 项目设置里配好MCP(Model Context Protocol)
Claude → MCP → 你的数据库
Claude → MCP → Jira / Slack / Notion
Claude → MCP → 任何你想接入的系统第四层:Agent SDK
from claude_agent_sdk import ClaudeSDKClient
client = ClaudeSDKClient()
result = client.query(
prompt="分析这段代码的安全问题",
tools=["Read", "Grep"],
max_turns=10
)技术选型速查
需求特征 选什么 固定流程,手动触发 Commands 需要 Claude 智能判断是否介入 Skills 任务量大、会产生大量噪音 SubAgents 某个时机必须自动发生 Hooks 需要连接外部系统 MCP 需要在 CI/CD 中无人运行 Headless 组件怎么配合
/weekly-log,剩下的全自动:/weekly-log 触发,按照你写好的指令模板启动流程。CLAUDE.md 里写着"日志用中文,格式是:本周完成、遇到的问题、下周计划"。logs/ 目录。本文总结
好了,现在轮到你了
claude。