一.安装Claude Code
官方推荐用命令行一键安装:
- mac/linux用户使用curl安装
plain
curl -fsSL https://claude.ai/install.sh | bash
- windows上使用PowerShell安装
plain
irm https://claude.ai/install.ps1 | iex
- windows上使用CMD安装
plain
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd
由于访问claude.ai需要代理,请保证安装前开启了代理。
**提示:**官方已经不在推荐npm安装了,该方法已经过时。
通过PowerShell安装
- 这里是使用的PowerShell安装,安装前通过命令设置代理,7897为我本地代理的端口。当然可以先试试能不能直接安装,不行再进行设置代理
java
$env:HTTP_PROXY="http://127.0.0.1:7897"
$env:HTTPS_PROXY="http://127.0.0.1:7897"
- 执行命令安装
java
irm https://claude.ai/install.ps1 | iex

- 配置环境变量
安装完成后提示安装到了C:\Users<用户名>.local\bin。这里需要我们手动将C:\Users<用户名>.local\bin配置到PATH环境变量中。配置完成后测试一下:

二.斜杆命令
在终端输入claude命令来启动Claude,输入** / **之后会提示所有可用的命令。按 **↑ ↓ **键选择,enter键选中。

这里只显示出了几个,按 ↓ 键 可以往下选择更多。每一个命令后面都有对应的解释。
登录或配置
如果已经有 Anthropic 账号可以输入 /login进行登录。当然Claude作为一个通用的API编程工具。不仅仅只限于Anthropic的模型。对于其它的大模型厂商,我们只需要将ApiKey和BaseUrl配置到环境变量中,具体可查看对应模型厂商的接入文档。
第一次使用
如果是第一次使用Claude。我们可以使用/powerup命令。它会再 CLI 里面运行互动课程,并带动画演示,带你了解关键功能。 
是否携带参数
常用带参数命令
这些命令通常用于配置、执行具体任务或管理内容,参数决定了它们的具体行为。
| 命令 | 参数说明 | 示例 |
|---|---|---|
/compact |
可选。指定压缩上下文时的聚焦点。 | /compact 保留登录相关的,其它都不用了 |
/model |
必选。指定要切换的模型名称。 | /model opus |
/effort |
必选。设置推理强度。 | /effort high |
/rename |
必选。设置新的会话名称。 | /rename payment-refactor |
/debug |
可选。添加问题描述以聚焦调试。 | /debug session timeout |
/export |
可选。指定导出文件名。 | /export notes.md |
/plan |
可选。直接输入初始任务描述。 | /plan migrate API to v3 |
/simplify |
可选。指定重构的侧重点。 | /simplify memory usage |
/batch |
可选。输入批量处理的任务目标。 | /batch update dependencies |
常用不带参数命令
这些命令通常是只读查询或瞬时动作,输入后直接显示结果,无需额外信息。
| 命令 | 功能 | 说明 |
|---|---|---|
/context |
查看上下文使用网格 | 显示 Token 分布,无参数 |
/cost |
显示成本统计 | 立即输出用量,无参数 |
/status |
查看系统状态 | 显示版本/模型/连接,无参数 |
/clear |
清空会话历史 | 直接重置,无参数 |
/help |
查看帮助 | 列出所有命令,无参数 |
/doctor |
运行环境诊断 | 立即检查安装健康度 |
命令分类
1. Context Management(上下文管理命令)
控制 Claude 能看到多少历史对话,优化 Token 使用。
/context: 可视化查看上下文占用网格,无需参数/compact [instructions]:带参数压缩历史对话以节省token,例如:/compact 重点保留关于用户登录失败的调试日志,丢弃之前的代码草稿/clear:彻底清空上下文对话历史,重新开始,无需参数,清空后便不会再记得之前问过什么
2. Session Tools(会话工具命令)
这类命令主要用来管理对话分支、回溯历史、导出存档。
/rename <name>: 带参数为会话设置名称/resume: 恢复之前的会话,无需参数,比如关闭了窗口重新打开可以使用/resume选择要恢复的历史对话/branch: 把对话"复制一份",然后走不同路线继续聊 ,如果当前会话历史很长(几百轮),分叉时会复制全部上下文,初始 Token 消耗较高,建议在关键决策点再分叉/rewind: 后悔药,刚才改错了,想撤销重来/export: 将会话导出到文件或剪贴板
3. Configuration(配置命令)
这类命令适用于实时调整模型、推理深度、权限和主题设置。
/model <name>--- 带参数切换模型,如:/model opus、/model best/effort <level>--- 带参数设置推理深度,如:/effort high、/effort max/permissions--- 管理 Claude 的工具执行权限/config--- 打开设置菜单/theme--- 创建和切换自定义主题
4. Diagnostics(诊断工具命令)
查看成本、检查系统状态、分析代码变更。
/cost--- 立即显示会话成本、时长、代码变更和 Token 用量/status--- 显示版本、模型和账户信息/doctor--- 检查安装健康度/diff--- 交互式查看未提交的代码变更,便于审核
三.记忆&上下文持久化
Claude 的上下文在每次会话结束后会重置,但项目级记忆可以通过文件持久化机制保存。主要包括 CLAUDE.md 和 Auto Memory 等内容。启动时 Claude 会加载CLAUDE.md,并结合自动生成的记忆文件一起初始化上下文。
记忆的三层结构
Claude 的 memory 实际是三层结构:
- CLAUDE.md(显式项目记忆)
主要存放项目规范、约定、规则 ,我们可以更改,因此 CLAUDE.md 是其核心显式记忆来源。
- Auto Memory(隐式记忆)
Claude基于项目自动生成的
- 当前会话上下文(短期记忆)
临时的记忆,窗口和会话关闭就没了
CLAUDE.md 的层级
Claude Code 的记忆系统遵循**"就近覆盖"**原则。当指令冲突时,离当前目录越近的文件优先级越高。
从低到高分别是:
- 组织级:由组织统一规范
- 用户级 :
~/.claude/CLAUDE.md(你的个人习惯) - 项目级 :
./CLAUDE.md或 .claude/CLAUDE.md(提交到 Git,与团队共享) - 本地级 :
./CLAUDE.local.md(不提交到Git,用于纯个人或本地临时调试)
拆分管理
对于大型项目,可以将指令拆分到 .claude/rules/*.md多个文件中。
同时还支持作用域控制:
markdown
---
paths:
- src/main/java/**/*Controller.java
- src/main/java/**/*Api.java
- src/main/java/**/api/**/*.java
---
# Spring Boot API 参数验证与异常处理规范
## 1. 验证注解要求
**必须使用** Jakarta Bean Validation 注解(JSR-380):
- `@NotNull`、`@NotEmpty`、`@NotBlank`
- `@Size`、`@Min`、`@Max`、`@Digits`
- `@Email`、`@Pattern`、`@Future`、`@Past`
- `@Valid` 级联验证
**必须使用** `@Valid` 或 `@Validated` 触发验证
## 2. 验证失败响应格式
当验证失败时,**必须返回**:
- **HTTP 状态码**: 400 Bad Request
- **响应体统一格式**:
创建或更新CLAUDE.md
- 初始化记忆
- 直接运行运行
/init。Claude 会自动分析项目代码,生成一个基础的 CLAUDE.md
- 手动编辑记忆
- 使用
/memory命令会打开memory文件,打开后可以直接修改,保存后 Claude 自动重新加载
- 引用已有文档(避免重复写)
- 用
@路径引用文件,好处就是不用复制内容,保持单一信息源
plain
@README.md
@docs/architecture.md
@package.json
自动生成的记忆
- Auto Memory 是什么
Claude 会在使用过程中自动提取项目中的稳定规律和重要经验,并以结构化方式写入 ~/.claude/projects/<project>/memory/ 目录下的记忆文件(如 MEMORY.md)。这是 AI 总结出的长期有用的项目知识,相当于一个自动维护的"项目经验库"。 随着使用频率增加,Claude 会不断积累项目记忆和行为模式,整体协作体验会越来越顺畅。
- 加载机制
- 启动时自动加载:
MEMORY.md前 200 行 或 25KB(取较小)
- 其他文件(按需加载):
debugging.mdapi-conventions.md
- 开关控制
- 使用
/memory命令 → 打开设置,可以进行关闭
- 在 .claude/settings.json中关闭
- 使用
json
{
"autoMemoryEnabled": false
}
- Monorepo 优化
大项目里有很多 CLAUDE.md,容易污染上下文。可以在项目 .claude/settings.json 的配置文件中进行排除
json
{
"claudeMdExcludes": [
"**/node_modules/**",
"**/vendors/**",
"**/dist/**",
"**/.next/**",
"**/coverage/**",
"**/legacy/**",
"**/deprecated/**",
"**/generated/**"
]
}
四.初始化项目
- 先让AI帮我创建一个项目

经过一番折腾之后,AI成功把项目运行起来了


- 使用 /init 命令创建项目级别的CLAUDE.md
Claude会扫描项目文件并生成一份CLAUDE.md文件。
markdown
# CLAUDE.md
本文件为 Claude Code(claude.ai/code)提供该仓库的持久化指引。
## 构建与开发
- `npm run dev` --- 启动 Vite 开发服务器
- `npm run build` --- 先用 `vue-tsc -b` 进行类型检查,再用 Vite 构建
- `npm run preview` --- 本地预览生产构建
目前未配置 `npm test`、`lint` 或 `format` 脚本。
## TypeScript 严格模式
项目启用了 `tsconfig.app.json` 中的严格 TS 标志:
- `noUnusedLocals: true` --- 未使用的变量会导致构建失败
- `noUnusedParameters: true` --- 未使用的函数参数会导致构建失败
- `erasableSyntaxOnly: true` --- 避免使用旧版 TS 语法(如 `enum`、参数属性、namespace/module);在 `type` 和 `interface` 都可用时优先使用 `type`,因为 `interface` 并非在所有场景下都可擦除
- `noFallthroughCasesInSwitch: true`
生产构建会在 Vite 之前运行 `vue-tsc -b`,因此任何 TS 错误都会阻塞构建。
## 项目结构
- Vue 3 单文件组件,使用 `<script setup lang="ts">`
- ESM(package.json 中 `"type": "module"`)
- 状态为组件本地管理;未使用路由或状态管理库
- Todo 数据通过 `localStorage` 持久化,存储键名为 `todo-app-items`
## 包管理器
本项目使用 `npm`,并配置了腾讯镜像源(`mirrors.cloud.tencent.com/npm`)。如果在境外环境执行 `npm install` 失败,可能需要切换 registry。
一份合格的CLAUDE.md
1.简洁与聚焦
目标:让文件短小精悍,确保 AI 在几乎每次会话中都能用到其中的信息。
- 长度控制 :严格控制在 200 行以内(理想状态)。
- 普适性测试 :问自己------"这条规则是否适用于 90% 以上的开发场景?"
- 如果答案是否定的,它就不该出现在这里。
2.内容取舍策略
应该放入 CLAUDE.md的内容(项目全局通用)
这些内容构成了项目的"地基",AI 随时可能用到:
| 类别 | 具体内容示例 |
|---|---|
| 技术栈与版本 | Node.js 20, Python 3.11, React 18, PostgreSQL 15 |
| 核心开发命令 | npm install, npm run dev, pytest, make build |
| 代码规范 | 非显而易见的命名约定(如:useSnakeCasevs camelCase) |
| 已知陷阱 | "切勿直接修改 dist/目录"、"Windows 路径需用双反斜杠" |
应该剥离出去的内容(特定场景)
如果某条规则仅针对单一功能或模块 ,请将其移至路径作用域规则文件中:
- 错误示例 :在根目录
CLAUDE.md中详细描述 - 正确做法 :在
src/payments/目录下创建CLAUDE.md,专门存放支付相关的规则。
三、四大板块
为了让 CLAUDE.md发挥最大效用,建议优先包含以下四个部分,这里我们将AI生成的改造一下。
1. Tech Stack & Versions(技术栈与版本)
明确环境依赖,防止 AI 使用过时的 API 或语法。
plain
## 技术栈
- **框架**: Vue 3(单文件组件 SFC)
- **构建工具**: Vite
- **语言**: TypeScript(严格模式)
- **包管理器**: npm(ESM 模块,`"type": "module"`)
- **状态管理**: 组件内部状态 + localStorage(存储键名:`todo-app-items`)
2. Development Commands(开发命令)
这是 AI 最常调用的操作,必须准确无误。
plain
## 开发与构建命令
- `npm run dev` --- 启动 Vite 开发服务器
- `npm run build` --- 先用 `vue-tsc -b` 进行类型检查,再用 Vite 构建
- `npm run preview` --- 本地预览生产构建
3. Naming Conventions(命名约定)
只记录那些不遵循主流惯例的规则。
plain
## 编码规范
- **组件写法**:统一使用 `<script setup lang="ts">`。
- **命名规则**:
- 组件文件:`PascalCase.vue`(例如:`TodoItem.vue`)。
- 组合式函数(Composables):`camelCase`,并以 `use` 开头(例如:`useLocalStorage.ts`)。
- **类型定义**:受 `erasableSyntaxOnly` 限制,优先使用 `type` 而非 `interface`。
4. Known Gotchas(常见陷阱)
这是最能体现我们经验的地方,帮助 AI 避开坑。
plain
## TypeScript 严格模式与注意事项
项目启用了严格的 TS 校验,构建前会运行 `vue-tsc -b`,任何 TS 错误都会阻塞构建。
- **禁止未使用代码**:开启了 `noUnusedLocals` 和 `noUnusedParameters`,未使用的变量或参数会导致报错。
- **仅限可擦除语法**:禁止使用不可擦除的旧语法(如 `enum`、参数属性、`namespace`)。
- **Switch 穿透限制**:开启 `noFallthroughCasesInSwitch`,禁止 switch case 穿透。
- **NPM 镜像问题**:配置了腾讯云 npm 镜像(`mirrors.cloud.tencent.com/npm`)。若在境外环境执行 `npm install` 失败,请切换回官方 registry
五.Claude Code 权限机制
基本行为
Claude Code 运行在一个权限系统中, Claude Code 默认是"谨慎模式":
- 大多数文件写入(write)需要我们手动确定
- 所有 bash 命令也需要手动确定
这样做是为了防止 AI 自动执行危险操作。但在真实开发里,如果每次都确认会比较麻烦。所以需要配置"预授权(pre-approve)"。
/permissions 命令
我们添加一条读取权限,允许读取整个项目所有文件。否则 Claude 看代码都要确认。
- 选择 add a new rule

- 输出我们的规则,并保存到./claude/settings.json下面
- Read(**/*) 允许读取整个项目所有文件。

- 查看settings.json
plain
{
"permissions": {
"allow": [
"Read(**/*)"
]
},
"autoMemoryEnabled": false
}
- 如果修改配置文件,也会同步生效
plain
{
"permissions": {
"allow": [
"Read(**/*)",
"Write(src/**/*)", 允许写入
"Edit(src/**/*)" 允许修改
]
},
"autoMemoryEnabled": false
}

- 对于需要询问或者拒绝的命令,配置也是同理。
- 推荐的基本权限配置
前端项目:
plain
{
"permissions": {
"allow": [
"Bash(git *)",
"Bash(node *)",
"Bash(npm *)",
"Bash(npx *)",
"Read(**/*)",
"Write(src/**/*)",
"Edit(src/**/*)"
]
}
}
Java SpringBoot:
plain
{
"permissions": {
"allow": [
"Bash(git *)",
"Bash(mvn *)",
"Bash(java *)",
"Read(**/*)",
"Write(src/**/*)",
"Write(pom.xml)",
"Edit(src/**/*)"
]
}
}