claude code简易教程
claude code简易教程
前言
本文关键词:WSL 环境、第三方 API
贴一下 Claude Code 官方文档:https://docs.claude.com/zh-CN/docs/claude-code/overview
本文主要讨论如何在 Windows 系统下,通过 WSL 安装和配置 Claude Code 工具。
WSL,全称 Windows Subsystem for Linux,可以理解成在 Windows 下安装一个 Linux。它允许开发者在 Windows 上直接运行 Linux 环境,而无需虚拟机或双启动。
而最重要的,在 WSL 下,可以直接访问 Windows 下的所有文件,它会把 Windows 下的各个盘符挂载在 /mnt 目录下,比如 C 盘 就是 /mnt/c
安装步骤
1. 进入 WSL 环境
首先,你需要确保 Windows 系统已经安装了 WSL。如果还没有,可以参考 Microsoft 官方文档进行安装。安装完成后,在 PowerShell 或 CMD 中输入 wsl 即可进入 Linux 环境。安装教程直接问 AI 就好了,就几步命令的事
2. 安装 Claude Code
bash 安装(推荐)
在 WSL 环境中,执行命令安装:
curl -fsSL https://claude.ai/install.sh | bash
注意:部分环境安装后,看安装返回的说明,如果有类似于“安装成功但没有添加进 Path,请执行 xxxxx...”的说明,那就跟着它的命令执行一下,其实就是把 claude 命令添加进 path,添加后在任意地方就可以使用 claude 命令了
通过 npm 安装
在 WSL 环境中,使用 npm 进行安装:
npm install -g @anthropic-ai/claude-code
如果在安装过程中遇到问题,不要使用 sudo(官方也不推荐,可能导致后续的权限问题),可以按照以下方法解决:
首先创建 npm 全局安装目录,并配置 npm 将全局包安装到该目录:
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
然后,将这个目录添加到系统的 PATH 环境变量中,这样系统就能找到全局安装的命令了。执行以下命令,将配置写入 .bashrc 文件并立即生效:
echo -e "\n export PATH=~/.npm-global/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
完成上述配置后,再次尝试安装 Claude Code。
最简配置
Claude Code 文档很多内容,以下是保证能用的基础配置,再后面会有进阶设置。
1. 第三方模型配置
配置第三方服务 API(比如 GLM、AnyRouter 等),就需要配置 key 和 baseUrl。这里以 AnyRouter 为例。
在 WSL 环境中,进入 ~/.claude 目录。如果该目录下没有 settings.json 文件,就新建一个,然后添加以下内容:
{
"env":{
"ANTHROPIC_AUTH_TOKEN": "sk-xxxxx",
"ANTHROPIC_BASE_URL": "https://anyrouter.top"
}
}
另外,如果用公益站的建议设置减少一些上报请求,毕竟公益站一般限制并发比较严(参数说明可见官方文档 Claude Code 设置 #环境变量):
{
"env":{
"ANTHROPIC_AUTH_TOKEN": "sk-xxxxx",
"ANTHROPIC_BASE_URL": "https://anyrouter.top",
"DISABLE_BUG_COMMAND": "1",
"DISABLE_ERROR_REPORTING": "1",
"DISABLE_TELEMETRY": "1",
}
}
2. 全局提示词
在 ~/.claude 目录下,检查是否存在 CLAUDE.md 文件。如果没有,就新建一个,并添加你希望的全局提示词,例如:
## Response Language
**除非有特殊说明,请用中文回答。**
你可以根据自己喜好随意修改这个全局提示词。
开始使用
最简配置完成后,就可以开始使用 Claude Code 了。
首先,导航到你的项目目录:
cd your-awesome-project
然后,启动 Claude Code:
claude
当然,Claude Code 还有更多的配置项,后文会列几个较为常用的进阶配置
进阶配置
1. 修改模型
如果你比较富有,或者有其他特殊需求,可以通过修改 settings.json 来使用不同的模型,比如 Opus 模型。
在 ~/.claude/settings.json 文件中,添加 model 字段:
{
"model": "opus",
"env":{
// ...省略其他配置...
}
}
这里 opus 是模型的别名,你可以填写完整的模型名称。具体可用的模型名称和配置,请参考 Claude Code 官方文档中关于模型配置的部分:https://docs.claude.com/zh-CN/docs/claude-code/model-config。
2. 提示词管理
Claude Code 的提示词分为全局提示词和项目提示词。
全局提示词:上面已经提到过,在 ~/.claude/CLAUDE.md 中配置。
项目提示词:如果你希望某个项目有专属的提示词,可以在该项目目录下新增 CLAUDE.md 文件,或者在该项目目录下创建 .claude 文件夹,并在其中新增 CLAUDE.md 文件。
关于提示词的更多详细信息和最佳实践,可以参考 Claude Code 官方文档中关于记忆(Memory)的部分:https://docs.claude.com/zh-CN/docs/claude-code/memory。
3. (重要)IDE 联动 claude code
说起来,用过 cursor 的人刚入手 Claude Code 会发现命令行版始终是不太方便,其中最核心的就是:cursor 中,当前编辑器所打开中的某个文件,会实时的在 cursor AI (暂且叫这个名)中实时关联,我可以直接对这个文件提问,同样的,如果我选中某段代码,它也能实时感知到。相比之下, cc (打 Claude Code 打累了,就叫这个吧)如果你要对某个文件提问,你就得把文件具体路径告诉它,如果你偷懒只打了文件名,那么好,它会在整个项目中调命令去找到这个文件,耗时间也耗 token,针对代码段提问你也得把具体行数告诉它。
==但其实,这个问题是可以解决的==
cc 内置功能是可以通过 /ide 命令来选择关联的 ide 的,vscode 系列包括 cursor、Jetbrain 等都可以。但是吧,如果你通过这个命令,发现检测不到 ide,那就看下面的解决方法
- 官方解决方案:https://docs.claude.com/zh-CN/docs/claude-code/troubleshooting#wsl2%E4%B8%8A%E6%9C%AA%E6%A3%80%E6%B5%8B%E5%88%B0jetbrains-ide
- WSL 环境处理
首先呢,WSL 默认是 NAT 网络,是什么不重要,重要的是,这可能会导致 WSL 环境下安装的 cc 检查不到 windows 系统下的 ide。官方说 “可能”,反正在我这里就是 100% 不得行。然后官方这里提了两种解决方案:
第一种:配置 Windows 防火墙:windows 下执行wsl hostname -I 可以看到 wsl 系统的 IP,然后以管理员身份打开 PowerShell 并创建防火墙规则:New-NetFirewallRule -DisplayName "Allow WSL2 Internal Traffic" -Direction Inbound -Protocol TCP -Action Allow -RemoteAddress 172.21.0.0/16 -LocalAddress 172.21.0.0/16 (根据步骤 1 中的 WSL2 子网调整 IP 范围)
其实第一种,我执行了并没什么用,还是不得行,你们可以试试,我是用第二种解决的,但官方推荐这种
第二种:切换到镜像网络:
在您的 Windows 用户目录中的 .wslconfig 中添加(没这个文件就自己加一个):
[wsl2]
networkingMode=mirrored
然后从 PowerShell 使用 wsl --shutdown 重启 WSL。(自测发现最好也要重启下 ide 和其他 wsl 窗口)
- 在 cc 中,通过
/ide 命令来选择关联的 ide。 - 如果有必要,你可以设置自动连接 ide:输入
/config,将Auto-connect to IDE 改成 true。完事
4. 状态栏自定义
使用 cursor 的 ai 时,输入框旁边是可以显示你当前用的什么模型,也能显示当前上下文的百分百。但你刚用 cc 会发现,这玩意啥都没有
==好了,其实也是可以有的==
cc 提供了状态栏的自定义,懒得说了,有兴趣可以直接看文档: https://docs.claude.com/zh-CN/docs/claude-code/statusline
我这里直接说一个简单版的,有两种选择吧:
第一种选择(稍微复杂一点,自定义程度高):
来自:https://github.com/sirmalloc/ccstatusline
通过bunx安装(如果没安装bunx就问AI):bunx ccstatusline@latest
然后在 `.claude\settings.json` 中配置:
{
...
"statusLine": "bunx ccstatusline@latest"
...
}
然后 wsl 中执行 bunx ccstatusline@latest,可以自定义配置你要显示的状态栏,配置完按指引保存,下次打开 cc 就能看到效果了
第二种选择(极其简单,自定义程度低,够用):
来自:https://github.com/ryoppippi/ccusage
在 `.claude\settings.json` 中配置:
{
...
"statusLine": "npx -y ccusage@latest statusline"
...
}
两种都只介绍了最简单的用法,详细可以去对应的 github 仓库看
5. MCP
看官方文档就行:
推荐的 MCP:
"mcpServers": {
"context7": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@upstash/context7-mcp"
]
},
"exa": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.exa.ai/mcp"
],
"env": {
"EXA_API_KEY": "**这里要额外注册一下apikey**"
}
},
"sequential-thinking": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sequential-thinking"
]
},
"serena": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/oraios/serena",
"serena",
"start-mcp-server",
"--context",
"ide-assistant",
"--enable-web-dashboard",
"False",
"--project",
"\"$(pwd)\""
]
},
"deepwiki": {
"type": "http",
"url": "https://mcp.deepwiki.com/mcp"
}
}
强烈推荐 Serena,github 链接:https://github.com/oraios/serena ,作用是读代码,比较省 token,在大项目中比较友好。
6. 斜杆命令
这个简单,就是有时候你经常会有重复的命令,比如你经常让 cc “git diff 并检查下修改的代码有没有问题”,你可以创建一个 /checkDiff 的斜杆命令来替代。
创建方法也简单,在 .claude/commands/ 下新增 checkDiff.md,文件里输入“git diff 并检查下修改的代码有没有问题”,完事
7. 子代理
子代理 - 前言
于我个人而已,一般小场景其实用不上子代理,子代理的优势在于 “独立的上下文” ,有点像面向对象编程中的“封装”概念了,一个对话的上下文是有限的(比如 Claude Sonnet 4.5 是 200K 上下文),但如果把某些相对独立的对话“封装”起来,那就能省不少上下文空间了,在介绍使用方法前先讲一个子代理的个人使用场景。
前阵子需要根据源码统计二十个微服务的一些信息,比如说每个微服务有哪些类,每个类使用了什么缓存、缓存 key 结构如何、有没有用锁、锁的粒度如何..等等,这很明显需要理解代码后才能得到,当我尝试直接对话让 cc 帮我时,它确实一开始是用了 serena (一款 MCP,用于阅读代码的)读代码,然后给出结果,但当他发现还有 19 个微服务等着它读时,它就告诉我微服务太多,怕耗费太多 token,所以写了个 python 脚本用正则匹配的方式来给我结果...这明显是不准确的,我阻止了它,让他老老实实读代码,别搞小聪明,它确实也老老实实读多了两个微服务,但后面又开始写脚本处理了。我推测是读代码本身会耗费挺大一部分 token,然后我对它的提示(用 serena**读代码)就渐渐埋没在众多上下文中了,不过也不只是这个原因,就算 cc 老老实实读代码,我估摸读多几个微服务代码,就算 1m 上下文也不够用了。
于是想到了**子代理 ,既然一次性读那么多微服务行不通,那搞个子代理,让他专心读某一个微服务代码去分析不就好了,然后在 cc 主流程中,给出所有微服务,让 cc 对每个微服务都调用一次子代理。于是试了一下,结果果然是可行的,甚至 cc 为了效率,还并发用 5 个微服务调用子代理来执行,效率 max。
子代理 - 使用
- 输入下面命令,在 cc 中进入子代理管理界面
/agents
- 创建子代理
- 输入你对子代理的要求
- 不重要的设置:设置子代理颜色、子代理专用模型...
- 最终 cc 会根据你的要求,生成一个子代理 md 文件,位于
.claude/agents/ 目录下 - 使用:你在对话时,cc 判断如果能用上该子代理,它会在征求你同意后自动调用;你也可以直接告诉它子代理名称让它直接调用