写在前面 这是一篇学习笔记
用了Claude Code快3个月,其实从来没系统读过官方说明文档,都是打开了直接用,最近在上的vibe coding课本周进行到了学习claude code部分,课件里提到了github上Claude How To这个项目,一个让claude code指导你学习如何claude code到项目,也跟着它认真的从头到尾学习了claude code。所以这是一篇纯学习笔记。
01 |Claude Code 的原理
以下是官方对Claude Code 的解释(大意):
Claude Code 是一个运行在终端中的代理助手(Agentic tool)。它在编码方面表现出色,但也能帮你完成命令行里能做的各种事情:编写文档、运行构建、搜索文件、研究主题等。
这里的关键词是“终端”、“命令行”和“代理助手”。区别于传统的我们常用的带有图形化界面的工具,在使用Claude Code 之前首先得知道,它是运行在终端里的。当安装好 Claude Code 之后,在命令行里输入“Claude”,就会出现下面这个提示
选择yes,就会启动Claude(第一次启动的时候还会有登录等等别的流程),但总的来说,这就是Claude Code了
后续和Claude Code 的所有对话和操作都在终端里进行。另一个概念是“代理助手”,官方中文写的是“代理助手”,对应的英文是“Agent”。下面是我和CC(后文都将Claude Code 简写为CC)的对话,让它解释什么是Agent

用简单一点的话来说,Agent就是能让LLM(大语言模型)完成指定任务的代理工具。LLM本身只能处理和生成文字,它没有手脚,不能直接操作文件、运行程序或访问网络。而Agent就是给它接上工具(文件操作、终端命令、网络请求等),它就能接收任务→拆解→执行→反馈结果。市面上现在有不少Agent产品:Claude Code、Codex、OpenCode等是原生以Agent形态存在的;而Cursor、Trae等IDE也内置了Agent模式,在Agent模式下也能自主完成任务,只是它们本身首先是编辑器。CC是目前最成熟的Agent之一,当然不同的Agent的能力取向不同,有些更擅长写代码,有些更擅长做研究等等,这取决于Agent的设计和它被注入的提示词。
CC在每段对话开始前,都会注入一段系统提示词(System Prompt)来告诉LLM它的身份和行为规范。这段提示词大致包含以下几个模块(以下是我让CC自己总结的要点,不是原文字面内容):
- 核心身份:你是Claude Code,Anthropic的官方CLI工具,定位是交互式agent,帮用户完成软件工程任务
- 行为规范:怎么使用工具、什么时候该问用户什么时候自主行动、对破坏性操作要谨慎确认、安全要求等
- 风格要求:简洁直接、不加emoji(除非用户要求)、更新时只说一句话不全程旁白
- 工具使用规则:独立的操作并行调用、有依赖关系的操作串行执行、优先用专用工具而非Bash
- 个人配置:CLAUDE.md的内容也会被注入进来(包含用户背景、偏好、项目信息等)
- Skills/插件:注册的各种skill也会在开始时加载到可用列表
这段系统提示词的作用就是告诉LLM:你是谁、你能做什么、你不能做什么、要基于哪些背景信息来进行操作。之后在每一段对话里,CC都会进行如下图的循环操作:收集上下文、采取行动和验证结果。

用户在这个循环里也至关重要,ta的prompt决定了CC的思考方向,这就是为什么prompt至关重要,会和LLM正确的沟通,决定了是否能快速的拿到自己想要的结果。
02|Claude.md 文件
CLAUDE.md 这个文件会在每次对话前,在系统提示词(System Prompt)之后注入。你可以在里面放项目描述、目录索引、行为规则(比如敏感文件不提交到 GitHub、不能删除某些文件等)。~/.claude/CLAUDE.md 是全局配置,所有项目都会加载。这部分我在 02-让 AI 记住你 里也写过。
以下是我的根目录下的 CLAUDE.md(全局配置,所有项目都会加载):
# Susu's CLAUDE.md
> 全局配置,让 Claude 更好地理解我和我的状态
## 我是谁
- 名字:菜菜 / Susu
- 状态:自由职业第4个月
- 背景:游戏设计出身,转型做内容创作和AI工具应用
- 工作风格:实用主义、快速迭代、强系统搭建能力
## 三条主线
| 优先级 | 方向 | 目标 |
|--------|------|------|
| 主线(4月) | 小红书开店 / 虚拟商品为主 | 4个SKU跑通闭环 |
| 支撑线 | AI工作流 / 编程能力 | 服务虚拟产品生产线和自动化工具 |
| 暂停线 | 知识库产品、小程序开发 | 保留资产,4月不主推 |
## 沟通偏好
- 简洁直接,不要过度解释
- 给 2-3 个选项和 trade-off,不要直接给答案
- 不确定的先问清楚再做
上面这个文件放在 ~/.claude/CLAUDE.md,也就是用户主目录下的 .claude 文件夹里。它的作用是告诉 Claude “我是谁、我在做什么、我希望怎么沟通”。因为它是全局配置,所以不管我在哪个项目目录下启动 CC,这段信息都会被加载。
然后每个项目目录下也可以有自己的 CLAUDE.md。比如我的 Obsidian 仓库目录下就有这样的配置:
# suu's Knowledge Wiki
## 你的角色
你负责帮我把散落在各处的原始素材,逐步整合进
suu/core_knowledge/ 这个知识核心。
## 目录结构与权限
### 只读(Raw Sources)
- Clippings/ — Web Clipper 抓取的文章
- suu/knowledge/ — 知识类素材
- suu/podcast/ — 播客笔记
### 可读写(Wiki Layer)
- suu/core_knowledge/ — 你维护的知识核心
### 不要动
- suu/daily/ — 日记
- images/ — 图片目录
这个文件告诉 Claude 在这个项目里该做什么、不该做什么。比如"日记和图片目录不要碰"。
你还可以在 CLAUDE.md 文件里给 CC 设定角色、定义工作流,甚至用 @ 语法导入其他文件,比如 @README.md。
CLAUDE.md 的加载原理
理解 CLAUDE.md 的加载规则,需要先理解一个关键概念:CC 每次会话开始时,会把 CLAUDE.md 的内容拼进系统提示词(System Prompt)里。 也就是说,CLAUDE.md 不是"CC 需要的时候去读一下",而是"每次对话开始前就已经在它的脑子里了"。
拿我自己的配置来举例。上面已经展示了我的两个 CLAUDE.md 文件:全局的 ~/.claude/CLAUDE.md(告诉 CC"我是谁、怎么沟通")和项目级的 Obsidian 仓库 CLAUDE.md(告诉 CC"这个仓库里该做什么、不该做什么")。当我 Obsidian 仓库目录下启动 CC 时,这两个文件的内容会叠在一起注入系统提示词。
加载规则有三条:
规则一:从当前目录向上查找,全部叠加
当你在某个目录下启动 claude 时,CC 会从当前目录开始,一层一层往上找 CLAUDE.md 文件,找到的所有文件叠加加载,不是覆盖。
以我为例,当我在 Obsidian 仓库目录(/Users/susu/Library/Mobile Documents/iCloud~md~obsidian/Documents/)下启动 CC 时:
① ~/.claude/CLAUDE.md ← 始终加载(全局)
② /Users/susu/.../iCloud~md~obsidian/ ← 始终加载(项目根)
Documents/CLAUDE.md
CC 会把这两个文件叠在一起注入系统提示词——不是覆盖,是叠加。所以 CC 同时知道"菜菜是谁"和"这个仓库的目录权限"。
规则二:子目录按需加载
如果你的项目子目录里也有 CLAUDE.md,它不是启动时就加载的——只有当 CC 在操作那个子目录里的文件时,才会发现并加载它。这样做是为了节省 context window 的空间。
规则三:冲突时,更具体的优先
如果不同层级的 CLAUDE.md 里有矛盾的指令(比如全局说"给2-3个选项",项目里说"直接给答案"),CC 会优先遵循更具体的那条(项目级 > 全局级)。
用一张图来总结:
这就是为什么写好 CLAUDE.md 是用 CC 最重要的配置步骤——它决定了 CC 每次对话时"脑子里已经有什么"。写得好,CC 一开始就知道你是谁、项目怎么运作、该遵守什么规则;写得不好(比如太长、充满废话),反而会占满 context window,让 CC 的表现变差。
03|斜杠命令
CC 内置了一些斜杠命令(Slash Commands),在对话中输入 / 就能看到列表。这些命令能帮你快速执行一些常用操作,不用每次都手动输入完整指令。
以下是我最常用的几个:
/clear — 清空当前上下文
/compact — 压缩上下文
和 /clear 不同,/compact 不是清空,而是"压缩"——CC 会把之前的对话总结成要点,释放空间但保留关键信息。当 context 快满但你不想丢掉当前对话的进展时,用这个。还可以加参数聚焦压缩方向:/compact focus on X。
/init — 创建项目 CLAUDE.md
/context — 查看上下文占用
/model — 切换模型
/rewind — 回退到之前的存档点
CC 每次编辑文件前都会自动创建快照。如果你觉得 CC 的方向走偏了,可以用 /rewind 回退到之前的状态。按两次 Esc 也有类似效果。
/btw — 快速问答,不进对话历史
/rename — 给会话命名
/resume — 恢复历史会话
在会话内切换到之前的某个对话。也可以在启动时用 claude -c 恢复最近一次对话,或者 claude -r <ID> 恢复指定对话。
/doctor — 诊断安装问题
04|一些别的
开始用 Claude Code 之后对我日常的工作和思考产生了非常大的冲击,不仅是我开始频繁的”结构化”的记录、输出自己在思考的内容(为了让AI能听懂我说的话),还有命令行工具(CLI)对我使用电脑的习惯也开始产生了冲击。
以往我们习惯使用的所有在电脑、手机上的工具都是基于图形化界面(GUI),我们在GUI里点击、拖拽,用鼠标来进行操作,但是在命令行工具(CLI)里,需要的只有键盘,而 LLM 在替我通过后端的程序语言开始对电脑进行很多操作,以往的 CLI 工具可能是程序员专属,但是现在通过 LLM,普通人也可以通过命令行工具来和电脑、手机进行交互,并且完成非常多复杂的操作。
而随着主流 AI 厂商都给自己的产品开发了 CLI 工具,传统应用厂商也在跟进,通过 CLI 之间的连接,让用户越来越少依赖 GUI,开始习惯在命令行里下指令。
以我最近最常用的飞书 lark-cli 为例。装上之后,本地的 Agent 就能通过它直接访问飞书里的表格、文档等所有数据。
今天早上我在复盘小红书店铺的笔记数据——大约 50 篇笔记要汇总,涉及种草笔记、商品笔记,还有曝光、转化等不同维度的数据。上个月我想做同样的事,还得先在飞书开放平台创建应用、走授权流程,Agent 才能访问到我的数据。现在有了 lark-cli,直接让 CC 或 Codex 通过lark-cli访问,它就能帮我分析哪些数据值得关注。
这里出现的最大的区别是认知模式的差异:
- GUI 培养的是"操作思维"——看到什么点什么,线性、视觉驱动
- CLI 培养的是"指令思维"——先想清楚要什么,用语言精确描述
- 后者其实更接近"管理思维"——你给方向,工具去执行
说回到做游戏——现有的游戏引擎里大量操作都基于图形界面,这可能也是 AI 工具介入游戏引擎比较慢的原因之一。但未来的趋势一定是越来越多的 CLI、MCP(后面单独写)等接口出现,让引擎和 AI 工具能真正结合。
不过我还是和上一篇的观点一样:我不认为现在的 AI 会替代人类。它远远做不到自发地创造需求、满足需求——这些来自人类最根本的欲望,而 AI 没有欲望。
附录:
- Claude How To 教程 — 跟着做的教程
- Claude Code 官方文档 — 核心参考
- Karpathy LLM Wiki — 笔记整理方法论
