---
title: '03 优化工作区组织'
video_id: UPtmKh1vMN8
part: 3
---

> 章节 3 / 29 · [[00-总览|课程总览]] · 起始 [09:03](https://youtu.be/UPtmKh1vMN8?t=543)


## 章节主旨

讲 Claude Code 的 prompt 组织机制:`CLAUDE.md` 分 global(用户级)与 local(项目级)两个 scope,各自该装什么内容,以及如何用两条 workflow 分别维护它们。

## 核心论点

1. **Claude Code 启动时会加载两层 `CLAUDE.md`——global 与 local——拼成注入上下文顶部的 system prompt。**([[#1-global-与-local-两个-scope-0918|→ 详解1]])
2. **global 装高层推理与个人偏好、local 装项目低层知识,是由「global 每次都注入」这一事实推导出的分工。**([[#2-两层的内容分工-1037|→ 详解2]])
3. **local 应尽量把项目知识(甚至整份 API 文档)就地内联,以减少工具调用、省 token、更快更准。**([[#3-local-内联知识以省调用-1310|→ 详解3]])
4. **别照抄别人的 `CLAUDE.md`,理解原理后自建,并用专门的 workflow 持续更新两层文件。**([[#4-两条-workflow-与自建原则-1345|→ 详解4]])

## 知识点详解

### 1. global 与 local 两个 scope [09:18](https://youtu.be/UPtmKh1vMN8?t=558)

Claude Code 初始化时会去若干位置读取要注入 context 顶部的 prompt。对使用者关键的是两处:user(等价 global)与 project(等价 local)。

放在用户主目录 `CLAUDE.md` 里的内容,无论你在哪个 workspace 开 session 都会被加载;放在项目仓库 `.claude` 目录下的 `CLAUDE.md` 则只在该仓库内被加载。

于是形成一个「全局优先注入、局部叠加」的结构:global 每次运行都在,local 是针对当前项目的小块补充。作者强调,他之后说的 System Prompt 指的是这两者合起来,不是单指某一个。

参考本项目:`~/.claude/CLAUDE.md` 是 global,仓库根的 `CLAUDE.md` 是 local,正是这套双层结构的实例。

### 2. 两层的内容分工 [10:37](https://youtu.be/UPtmKh1vMN8?t=637)

因为 global 每次都注入,分工策略随之而定:global 放高层推理与个人信念,local 放项目的低层具体知识。(System Prompt = 二者之和,见详解1 [10:20](https://youtu.be/UPtmKh1vMN8?t=620))

global 里适合写三类:个人偏好(如「返回文件时给可点击的绝对路径」)、编程约定(如统一用 OOP 或 Rust)、以及「能力授权」——明确告诉 Claude「你其实能做 X,若你以为不能,那是你错了」。

一个具体偏好例子:遇到不熟的工具,先读官方 API 文档再动手,因为过往裸上手总是空转、浪费 token;若文档是 JS 动态加载的,就挂 Chrome DevTools MCP 去取。

local 则写项目描述、各部分位置与用途、低层偏好(如某个 API 的具体用法),让 Claude 靠读 `CLAUDE.md` 就能掌握 workspace,而不必逐个文件翻。

### 3. local 内联知识以省调用 [13:10](https://youtu.be/UPtmKh1vMN8?t=790)

`/init`(视频里写作 `\init`)会生成一份 workspace 知识的压缩版,让 Claude 日后读这份 `CLAUDE.md` 即可大致理解项目结构与目的,不用每次遍历全部文件。([12:11](https://youtu.be/UPtmKh1vMN8?t=731))

更进一步:若项目要用某个第三方 API,可以把整份 API 文档直接放进项目内联。这样 Claude 不必派 research subagent 去外部抓取,本地就能读到。

收益是三重的:减少总工具调用次数、降低 token 用量、并且更快更准。核心思路是用「就地可读的静态知识」替换「运行时的动态检索」。

### 4. 两条 workflow 与自建原则 [13:45](https://youtu.be/UPtmKh1vMN8?t=825)

作者区分两条 workflow:local workflow 负责更新项目的 local `CLAUDE.md`,global workflow 负责更新用户的 global `CLAUDE.md`。两层各有专门的维护动作,而非一次写死。

关键态度:不要指望别人把一份现成 `CLAUDE.md` 端上来照抄。理解背后原理、据此自建,才能成为更强的开发者、也更高产。

换言之,`CLAUDE.md` 的价值不在模板本身,而在你为「global 放什么、local 放什么」所做的判断——这份判断只能由你结合自己的工作方式长出来。

## 术语

- scope(作用域):此处指 prompt 的加载范围,分 global(用户级、全局)与 local(项目级、局部)。
- CLAUDE.md:被 Claude Code 注入 context 顶部的 Markdown 指令文件,分 global 与 local 两份。
- system prompt(系统提示):作者语境下指 global + local 两份 `CLAUDE.md` 合并后的注入内容。
- `/init`:生成 workspace 知识压缩版并写入 local `CLAUDE.md` 的初始化命令。

## 自检问题

1. global 与 local 的 `CLAUDE.md` 在「何时被加载」上有何本质区别?这一区别如何决定各自该装什么?
   **答案**:global(用户主目录)每次开 session 都注入,与在哪个 workspace 无关;local 只在其所属项目仓库内被加载。正因 global 恒在,才把高层推理/个人偏好/能力授权放 global,把项目专属的低层知识放 local。见详解1、2 [10:37](https://youtu.be/UPtmKh1vMN8?t=637)
2. 为什么作者建议把整份第三方 API 文档内联进 local?带来哪几项收益?
   **答案**:让 Claude 本地即可读到,不必派 research subagent 外出抓取;收益是减少工具调用、省 token、更快更准。见详解3 [13:10](https://youtu.be/UPtmKh1vMN8?t=790)
3. 作者为何不直接给一份现成 `CLAUDE.md` 让人照抄?
   **答案**:因为价值在于理解「global/local 各放什么」的原理并自建,照抄学不到判断;自建才能成为更强、更高产的开发者。见详解4 [13:45](https://youtu.be/UPtmKh1vMN8?t=825)