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(默认 WSL 2)
-
安装默认 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
-
添加 Node.js 官方源并安装
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt install -y nodejs
-
验证安装
node -v # 应该输出 v18+ 或 v20+ npm -v # 输出 npm 的版本
5. 禁止 WSL 继承 Windows 的 PATH(关键步骤)
为避免 Claude Code 错误调用到 Windows 版 node/npm,必须执行以下设置。
-
编辑 wsl.conf 配置文件
sudo nano /etc/wsl.conf
-
写入以下内容:
[interop] appendWindowsPath = false
-
保存并退出(Ctrl+O 回车,Ctrl+X)
-
回到 Windows,关闭 WSL
wsl --shutdown
-
重新打开 WSL,再验证环境
which node which npm
✅ 输出路径应该是:
/usr/bin/node /usr/bin/npm
❌ 不能是:
/mnt/c/...(Windows 路径)
6. 安装 Claude Code(Linux 专属,不能在 Windows 上执行)
🚨 重要提醒:
Claude Code 不支持在 Windows 上直接运行,必须在 Linux 或 macOS 上安装。
所以我们使用 WSL 提供的 Linux 环境来安装它。
安装命令(加 sudo 以获取权限):
sudo npm install -g @anthropic-ai/claude-code
-
输入你之前设置的 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
所以得通过更改电脑中的设置来处理,要开启使用代理服务器
同时还要在加速器中使用TUN模式才能使得WSL的网络被成功代理。
8. Claude Code 初始化
(1)你要对你的项目使用Claude Code,所以需要先在WSL中进入你的项目目录,再启动Claude Code。
# 切换到你的 Spring Boot 项目目录
cd /mnt/d/your-project-folder
# 然后在项目目录中启动 Claude Code
claude
(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]**: [债务描述] - 计划解决时间: [时间]
### 性能指标目标
- **响应时间**: [目标值]
- **并发用户数**: [目标值]
- **数据库连接数**: [目标值]
- **内存使用**: [目标值]
---
**文档维护**: 本文档应该随着项目发展定期更新,建议每周或每个迭代结束后进行更新。
这是一个完整的架构模板,包含了:
- 📋 项目基本信息配置
- 🏗️ 完整的技术栈选项
- 📁 标准的代码结构
- 🔄 各种架构模式说明
- 📝 开发规范和约定
- 🧪 测试和部署策略
- 🤖 Claude Code 使用偏好
可以根据自己的项目需求,只需要修改对应的板块内容即可。
(3)先在IDEA中下载 Claude Code 的插件,然后再在 Claude Code 中使用 /ide 命令去将IDEA和你的Claude Code进行连接。
Claude Code + IntelliJ IDEA 集成使用
- 代码分析和建议
# 在 Claude Code 中
"分析这个 Controller 类的设计问题"
"这个 Service 方法的性能可以怎么优化?"
"帮我重构这个 Repository 层的代码"
- 直接编辑文件
# Claude 可以直接修改你的 Java 文件
"帮我在 UserController.java 中添加一个分页查询接口"
"修改 SecurityConfig.java 添加 JWT 认证配置"
- 生成代码模板
# 生成完整的类文件
"根据数据库表结构生成 User 实体类"
"创建一个标准的 Spring Boot 异常处理器"
实际工作流程
-
IDEA 中编写代码 → 遇到问题
-
切换到 Claude Code → 描述问题或需求
-
Claude 提供解决方案 → 可能直接修改文件
-
回到 IDEA → 查看修改结果,继续开发
上面的初始化部分,对于一个项目目录文件夹,进行一次即可。
9. 具体使用细节
(1)使用 /compact 指令清理上下文但保留关键内容
每次使用claude命令进入 Claude Code 的界面,都是一次对话的开启,如果一整天都使用一个上下文,上下文就会臃肿,导致 Claude Code 的处理能力变弱,所以在对话过长之后,要么重新开启一个对话,要么就用/compact 指令清理上下文。
/compact
# 或者带自定义指令
/compact "请保留关于数据库设计的讨论,其他可以简化"
(2)使用/clear指令完全清除对话历史
/clear
- 彻底清空所有对话记录
- 释放内存和上下文空间
- 重新开始一个"干净"的对话