windows使用claude code
# 1. 什么是 WSL?
WSL(Windows Subsystem for Linux)是微软提供的一种兼容层,允许在 Windows 系统中运行完整的 Linux(如 Ubuntu)环境,就像在真实的 Linux 系统上一样。
使用 WSL 后,可以在 Windows 上运行 npm、Python、Docker、Claude Code 等只支持 Linux 的工具。
# 2. 安装 WSL(适用于 Windows 10 2004+ 或 Windows 11)
使用官方推荐的一键安装命令
步骤:
- 打开 PowerShell(管理员权限)
- 在开始菜单中搜索 “PowerShell”
- 右键点击 → 选择 “以管理员身份运行”
- 执行以下命令安装 WSL:
wsl --install
系统将自动完成以下操作:
- 安装最新版 WSL
- 安装默认 Linux 发行版通常是 Ubuntu
- 自动重启或提示你手动重启
重启后首次启动 Ubuntu 子系统
- 系统会打开 Ubuntu 窗口
- 提示你设置用户名(任意英文名)和密码(Linux 登录用)
# 3. 进入 Linux(Ubuntu)子系统
打开方式:
- 开始菜单 → 搜索 “Ubuntu” → 回车,即可打开 Linux 终端。
# 4. 在 WSL 中安装 Node.js(官方推荐方式)
使用 NodeSource 提供的 LTS 安装源,兼容性好、更新及时。
更新系统仓库
sudo apt update
sudo apt install -y curl ca-certificates
2
3
4
添加 Node.js 官方源并安装
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs
2
验证安装
node -v # 应该输出 v18+ 或 v20+
npm -v # 输出 npm 的版本
2
# 5. 禁止 WSL 继承 Windows 的 PATH(关键步骤)
为避免 Claude Code 错误调用到 Windows 版 node/npm,必须执行以下设置。
编辑 wsl.conf 配置文件
sudo nano /etc/wsl.conf
2
写入以下内容:
[interop]
appendWindowsPath = false
2
保存并退出(Ctrl+O 回车,Ctrl+X)
回到 Windows,关闭 WSL
wsl --shutdown
1
重新打开 WSL,再验证环境
which node
which npm
2
✅ 输出路径应该是:
/usr/bin/node
/usr/bin/npm
2
❌ 不能是:
/mnt/c/...(Windows 路径)
2
# 6. 安装 Claude Code(Linux 专属,不能在 Windows 上执行)
Claude Code 不支持在 Windows 上直接运行,必须在 Linux 或 macOS 上安装。
所以我们使用 WSL 提供的 Linux 环境来安装它。
安装命令(加 sudo 以获取权限):
sudo npm install -g @anthropic-ai/claude-code
2
- 输入你之前设置的 Linux 密码即可安装。
- 安装完成后会提示
added X packages in Xs
# 7. 验证安装
输入以下命令:
claude
一般情况下国内都是通过代理才能访问到claude,所以需要为WSL也设置代理,不然WSL访问不了Claude就会出现下面的报错:
╭──────────────────────────╮
│ ✻ Welcome to Claude Code │
╰──────────────────────────╯
Unable to connect to Anthropic services
Failed to connect to api.anthropic.com: ERR_BAD_REQUEST
Please check your internet connection and network settings.
Note: Claude Code might not be available in your country. Check supported countries at
https://anthropic.com/supported-countries
2
3
4
5
6
7
8
9
10
11
12
所以得通过更改电脑中的设置来处理,要开启使用代理服务器
同时还要在加速器中使用TUN模式才能使得WSL的网络被成功代理。
# 8. Claude Code 初始化
(1)你要对你的项目使用Claude Code,所以需要先在WSL中进入你的项目目录,再启动Claude Code。
# 切换到你的 Spring Boot 项目目录
cd /mnt/d/your-project-folder
# 然后在项目目录中启动 Claude Code
claude
2
3
4
5
(2)然后使用 /init 命令让Claude Code扫描你的项目并生成CLAUDE.md
文件,后续Claude Code对于你项目的所有操作都会围绕这个来执行,所以很重要。
在Claude Code生成完这个文件之后,它会放在你项目的根目录下,你可以在记事本中对于这个文件按照你的意愿进行修改,你修改地越好,它能发挥地作用越大。
下面给出关于一个Java项目地一个CLAUDE.md
文件模板:
# CLAUDE.md
本文件为 Claude Code (claude.ai/code) 提供项目指导和开发规范。
## 项目概述
### 基本信息
- **项目名称**: [项目名称]
- **项目类型**: [Web应用 / API服务 / 微服务 / 桌面应用]
- **开发阶段**: [需求分析 / 开发中 / 测试 / 预发布 / 生产环境]
- **核心功能**: [核心业务功能描述]
- **目标用户**: [用户群体描述]
### 技术选型
- **后端框架**: Spring Boot [版本号] + Java [版本号]
- **数据库**: [MySQL / PostgreSQL / Oracle] [版本号]
- **ORM框架**: [MyBatis-Plus / JPA / Hibernate]
- **缓存技术**: [Redis / Caffeine / Hazelcast]
- **消息队列**: [RabbitMQ / Apache Kafka / RocketMQ]
- **安全框架**: [Spring Security / Shiro]
- **认证方式**: [JWT / Session / OAuth2]
### 外部服务集成
- **支付服务**: [微信支付 / 支付宝 / 银联]
- **文件存储**: [阿里云OSS / 腾讯云COS / MinIO]
- **短信服务**: [阿里云短信 / 腾讯云短信]
- **推送服务**: [个推 / 极光推送]
- **地图服务**: [高德地图 / 百度地图]
- **其他集成**: [具体说明]
## 开发环境配置
### 环境要求
```bash
# 开发工具版本
Java: [版本号]+
Maven: 3.6+
Node.js: [如果有前端项目]
Docker: [如果使用容器]
# 数据库和中间件
MySQL: [版本号]
Redis: [版本号]
RabbitMQ: [版本号] (如果使用)
```
### 常用开发命令
```bash
# 编译和构建
mvn clean compile # 清理并编译
mvn clean package # 打包应用
mvn clean install # 安装到本地仓库
# 运行和调试
mvn spring-boot:run # 启动开发模式
mvn spring-boot:run -Dspring-boot.run.profiles=dev # 指定配置文件启动
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005" # 调试模式
# 测试相关
mvn test # 运行所有测试
mvn test -Dtest=[TestClassName] # 运行指定测试类
mvn test -Dtest=[TestClassName]#[methodName] # 运行指定测试方法
mvn clean test jacoco:report # 生成测试覆盖率报告
# 代码检查
mvn spotbugs:check # 静态代码检查
mvn checkstyle:check # 代码规范检查
mvn dependency:analyze # 依赖分析
```
### 数据库操作
- **数据库**: [数据库类型] on [主机]:[端口]/[数据库名]
- **数据迁移**: [Flyway / Liquibase / 手动执行]
- **ORM配置**: [具体ORM框架的配置说明]
- **连接池**: [HikariCP / Druid]
## 项目架构
### 整体架构模式
**[选择适用的架构]**:
- 单体应用 (Monolithic)
- 分层架构 (Layered Architecture)
- 微服务架构 (Microservices)
- 六边形架构 (Hexagonal Architecture)
- CQRS + Event Sourcing
### 代码结构
```
com.[公司名].[项目名]/
├── config/ # 配置类
├── controller/ # 控制器层 - REST API
├── service/ # 服务层 - 业务逻辑
│ ├── impl/ # 服务实现类
│ └── dto/ # 数据传输对象
├── repository/ # 数据访问层
│ ├── mapper/ # MyBatis映射器
│ └── entity/ # 数据库实体
├── component/ # 组件类
├── util/ # 工具类
├── exception/ # 自定义异常
├── constant/ # 常量定义
├── enums/ # 枚举类
├── aspect/ # AOP切面
├── filter/ # 过滤器
├── interceptor/ # 拦截器
├── security/ # 安全相关
├── schedule/ # 定时任务
├── mq/ # 消息队列相关
│ ├── producer/ # 消息生产者
│ └── consumer/ # 消息消费者
└── vo/ # 视图对象
```
### 分层架构详解
**Controller层 → Service层 → Repository层 → Entity层**
**职责划分**:
- **Controller**: 参数校验、调用Service、返回结果
- **Service**: 业务逻辑处理、事务管理
- **Repository**: 数据访问、数据库操作
- **Entity**: 数据模型定义
### 消息队列架构 (如适用)
**使用场景**:
- [异步处理场景1]
- [异步处理场景2]
- [削峰填谷场景]
- [系统解耦场景]
**队列配置**:
- **[队列名1]**: [用途说明] - TTL: [时间], DLX: [是否配置]
- **[队列名2]**: [用途说明] - TTL: [时间], DLX: [是否配置]
**关键模式**:
- 消息确认机制: [manual / auto]
- 死信队列处理: [处理策略]
- 消息重试策略: [重试次数和间隔]
### 缓存架构 (如适用)
**缓存层级**:
- **L1缓存**: [本地缓存工具] - [容量], [TTL时间]
- **L2缓存**: [分布式缓存] - [配置说明]
- **数据库缓存**: [查询缓存配置]
**缓存策略**:
- **缓存更新**: [更新策略说明]
- **缓存穿透**: [防护措施]
- **缓存雪崩**: [防护措施]
- **缓存一致性**: [保证机制]
### 安全架构
**认证方式**: [JWT / Session / OAuth2等]
**授权机制**: [RBAC / ABAC等]
**安全过滤链**: [过滤器配置说明]
**加密算法**: [使用的加密方式]
### 数据库设计
**核心实体**: [实体1], [实体2], [实体3]...
**关键关系**:
- [实体A] 与 [实体B]: [关系类型] ([关系说明])
- [实体C] 与 [实体D]: [关系类型] ([关系说明])
**索引策略**: [重要索引说明]
**分库分表**: [如果适用,说明策略]
## 业务逻辑和流程
### 核心业务流程
**[业务流程1名称]**:
1. [步骤1]
2. [步骤2]
3. [步骤3]
**[业务流程2名称]**:
1. [步骤1]
2. [步骤2]
3. [步骤3]
### 关键业务规则
- **[规则1]**: [具体说明]
- **[规则2]**: [具体说明]
- **[规则3]**: [具体说明]
### 用户角色权限
- **[角色1]**: [权限说明]
- **[角色2]**: [权限说明]
- **[角色3]**: [权限说明]
## 开发规范和约定
### 代码规范
**命名约定**:
- 类名: PascalCase (如: UserService)
- 方法名: camelCase (如: getUserById)
- 常量: UPPER_SNAKE_CASE (如: MAX_RETRY_COUNT)
- 包名: 全小写,多个单词用点分隔
**注释规范**:
- 类和公共方法必须有JavaDoc注释
- 业务逻辑复杂的代码块要有行内注释
- 使用中文注释,便于团队理解
**异常处理**:
- 业务异常继承自 [BusinessException]
- 系统异常使用 @ControllerAdvice 统一处理
- 错误码格式: [错误码规范说明]
### 日志规范
**日志级别使用**:
- ERROR: 系统异常、业务关键错误
- WARN: 业务异常、性能警告
- INFO: 关键业务操作记录
- DEBUG: 调试信息
**日志格式**: [日志格式说明]
**敏感信息**: 必须脱敏处理
### 数据库规范
**表命名**: [命名规范]
**字段命名**: [命名规范]
**索引命名**: [命名规范]
### API设计规范
**RESTful设计**:
- GET: 查询操作
- POST: 创建操作
- PUT: 完整更新
- PATCH: 部分更新
- DELETE: 删除操作
**响应格式**:
```json
{
"code": "状态码",
"message": "描述信息",
"data": "返回数据",
"timestamp": "时间戳"
}
```
## 性能优化策略
### 数据库优化
- **索引优化**: [具体策略]
- **查询优化**: [具体策略]
- **连接池配置**: [配置说明]
### 缓存优化
- **缓存预热**: [策略说明]
- **缓存更新**: [策略说明]
- **缓存监控**: [监控指标]
### JVM优化
- **内存配置**: [配置参数]
- **GC策略**: [GC选择和参数]
- **监控工具**: [使用的工具]
## 测试策略
### 测试分层
- **单元测试**: Service层业务逻辑测试
- **集成测试**: 数据库操作、外部服务集成测试
- **端到端测试**: 完整业务流程测试
### 测试工具
- **单元测试**: JUnit 5 + Mockito
- **集成测试**: SpringBootTest + TestContainers
- **性能测试**: [JMeter / Gatling]
### 测试数据
- **测试数据库**: [测试环境数据库配置]
- **Mock数据**: [Mock策略说明]
- **测试用例**: [重要测试场景]
## 部署和运维
### 环境配置
**开发环境**: [配置说明]
**测试环境**: [配置说明]
**预发布环境**: [配置说明]
**生产环境**: [配置说明]
### 部署流程
```bash
# 构建部署包
mvn clean package -P[profile]
# Docker部署 (如适用)
docker build -t [image-name] .
docker run -p [port] [image-name]
# 传统部署
java -jar -Dspring.profiles.active=[profile] target/[jar-name].jar
```
### 监控和日志
**应用监控**: [监控工具和指标]
**日志收集**: [日志收集方案]
**性能监控**: [性能监控方案]
**报警配置**: [报警策略]
## Claude Code 使用偏好
### 代码生成偏好
- 生成代码包含完整的中文注释
- 异常处理要完整,包含业务异常和系统异常
- 日志记录要详细,使用 @Slf4j
- 参数校验要严格,使用 @Valid 注解
- 返回结果统一使用项目定义的响应格式
### 代码分析偏好
- 重点关注性能优化机会
- 检查潜在的安全漏洞
- 分析代码重复性,提供重构建议
- 关注异步处理和并发安全
- 数据库查询性能分析
### 重构偏好
- 提取公共方法和工具类
- 优化复杂的条件判断逻辑
- 改进异常处理机制
- 优化数据库查询和缓存使用
- 改进代码可读性和维护性
## 项目状态和计划
### 当前开发状态
**已完成功能**:
- [功能1]
- [功能2]
- [功能3]
**开发中功能**:
- [功能4] - [预计完成时间]
- [功能5] - [预计完成时间]
**计划开发功能**:
- [功能6] - [计划开始时间]
- [功能7] - [计划开始时间]
### 已知问题和技术债务
- **[问题1]**: [问题描述] - 优先级: [高/中/低]
- **[问题2]**: [问题描述] - 优先级: [高/中/低]
- **[技术债务1]**: [债务描述] - 计划解决时间: [时间]
### 性能指标目标
- **响应时间**: [目标值]
- **并发用户数**: [目标值]
- **数据库连接数**: [目标值]
- **内存使用**: [目标值]
---
**文档维护**: 本文档应该随着项目发展定期更新,建议每周或每个迭代结束后进行更新。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
这是一个完整的架构模板,包含了:
- 📋 项目基本信息配置
- 🏗️ 完整的技术栈选项
- 📁 标准的代码结构
- 🔄 各种架构模式说明
- 📝 开发规范和约定
- 🧪 测试和部署策略
- 🤖 Claude Code 使用偏好
可以根据自己的项目需求,只需要修改对应的板块内容即可。
(3)先在IDEA中下载 Claude Code 的插件,然后再在 Claude Code 中使用 /ide 命令去将IDEA和你的Claude Code进行连接。
Claude Code + IntelliJ IDEA 集成使用
- 代码分析和建议
# 在 Claude Code 中
"分析这个 Controller 类的设计问题"
"这个 Service 方法的性能可以怎么优化?"
"帮我重构这个 Repository 层的代码"
2
3
4
- 直接编辑文件
# Claude 可以直接修改你的 Java 文件
"帮我在 UserController.java 中添加一个分页查询接口"
"修改 SecurityConfig.java 添加 JWT 认证配置"
2
3
- 生成代码模板
# 生成完整的类文件
"根据数据库表结构生成 User 实体类"
"创建一个标准的 Spring Boot 异常处理器"
2
3
实际工作流程
- IDEA 中编写代码 → 遇到问题
- 切换到 Claude Code → 描述问题或需求
- Claude 提供解决方案 → 可能直接修改文件
- 回到 IDEA → 查看修改结果,继续开发
上面的初始化部分,对于一个项目目录文件夹,进行一次即可。
# 9. 具体使用细节
(1)使用 /compact 指令清理上下文但保留关键内容
每次使用claude命令进入 Claude Code 的界面,都是一次对话的开启,如果一整天都使用一个上下文,上下文就会臃肿,导致 Claude Code 的处理能力变弱,所以在对话过长之后,要么重新开启一个对话,要么就用/compact 指令清理上下文。
/compact
# 或者带自定义指令
/compact "请保留关于数据库设计的讨论,其他可以简化"
2
3
(2)使用/clear指令完全清除对话历史
/clear
- 彻底清空所有对话记录
- 释放内存和上下文空间
- 重新开始一个"干净"的对话

