Claude Code 指南:终端 AI 编程助手的正确打开方式
如果你已经用过 Cursor 或 GitHub Copilot,你可能会好奇:Claude Code 是什么?它和我已经在用的工具有什么本质区别,值不值得花时间切换?
作为一个用 Cursor 写了相当长时间代码的开发者,第一次打开 Claude Code(以下简称 CC)时,很容易感到困惑------它只是一个终端,没有代码高亮,没有 diff 视图,没有实时补全。
但当你第一次说出:
帮我把这个 REST API 重构成 gRPC,同时更新所有调用方
然后看着它一个文件一个文件地自主完成,你才会意识到:这不是 IDE 里的"AI 功能",而是一个代码库级别的 Agent。
本文涵盖:
- 安装与配置
- 交互模式
- 工程化最佳实践
- 工具生态(MCP / Skills / Hooks)
- Multi-Agent 实战
- 实用技巧汇总
零、它和 Cursor 有什么本质区别?
Cursor:IDE 的 AI 增强
Cursor 的核心价值在于:
- 实时补全(Tab 补全、内联建议)
- 对话式编辑(Cmd+K、Chat 面板)
在 Cursor 里,你始终是主驾驶 ,AI 是副驾驶:
- 你写代码
- 它提建议
- 它帮你改局部片段
Claude Code:代码库级别的 AI Agent
Claude Code 没有实时补全。
你给它的是任务,不是光标位置。
它会:
- 读取项目文件
- 分析依赖关系
- 执行 shell 命令
- 运行测试
- 提交 git
- 最后把结果告诉你
在这个模式下:
- 你是产品经理
- 它是执行工程师
一句话总结
- 日常快速写代码:用 Cursor
- 多文件协调、复杂重构、自动化工作流:用 Claude Code
一、使用
1. 账号
常见方式:
- Claude 官方账号购买
- 功能最全
- 但有用户反馈存在封号风险,需自行评估
- 国产模型支持
- 如 Kimi、GLM 等
有账号后,将 API / KEY 配置到环境变量即可。各平台通常都有对应的配置指引。
2. 交互式使用
2.1 终端软件使用
常见输入方式:
text
1. 常规文字输入(普通模式)
2. /vim
对话窗输入切换为 vim 模式,再输入一次 /vim 可切回普通模式
3. Ctrl + G
打开独立窗口写入,适合长段内容
4. @file
指定文件
2.2 IDE 模式
在扩展市场中搜索:
text
Claude Code
常见能力:
- 指定代码行数
- 查看扩展快捷键
- 方便引用多个文件、多个位置


VS Code
- 可以直接把文件拖进对话窗口
- 同时按住
Shift - 或者复制粘贴
JetBrains / 终端
- 通过复制 + 粘贴使用
- mac 下粘贴可使用
Ctrl + V
上传图片 / 文件

3. 非交互式使用
基础命令
bash
claude -p "问题" --system-prompt "提示词"

JSON 结构输出(附带元数据)
bash
claude -p "which model use" --output-format json
适合:
- 脚本调用
- CI/CD 集成
- 自动化工作流
- 批处理任务
4. 工作区
4.1 运行目录
Claude Code 默认会基于当前运行目录工作。
4.2 添加项目
启动时指定额外目录:
bash
claude --add-dir ../project-1
也可以在运行过程中动态加载项目。
适合:
- 多仓库联动
- 主仓库 + SDK 仓库
- 服务端 + 前端协作项目
5. 编程范式
Claude Code 常见有两种工作方式:
5.1 ReAct
特点:
- 摸石头过河
- 边看边做
- 迭代快
适用于:
- 默认对话
- 探索性任务
- 问题排查
5.2 Plan-and-Execute
特点:
- 先想清楚再干
- 适合复杂任务
- 更可控
适用于:
- 大型重构
- 多阶段工作流
- 复杂工程任务
切换方式
方式 1:快捷键切换
text
Shift + Tab
方式 2:启动参数
bash
claude --permission-mode plan
方式 3:使用 skill
可以配合 superpowers-marketplace 插件:
6. 会话管理
6.1 中断
text
ESC
6.2 撤销
将修改和上下文重置到某个对话点。
两种方式:
text
1. /rewind
2. 连续按两次 ESC


6.3 恢复会话
恢复当前项目下最近一次对话
bash
claude -c
恢复指定对话
bash
claude -r xxx-xxx-xx
退出时通常会显示会话 ID。
你也可以在对话过程中重命名会话:
text
/rename
按名称恢复:
bash
claude --resume "xxx(Branch)"
6.4 压缩上下文
当上下文过多时,AI 可能会逐渐偏离目标、变得混乱,因此需要进行压缩,总结关键上下文。
相关命令:
- Claude Code 会自动压缩
/compact:现在一般不太需要手动用/clear:清除上下文
6.5 临时问题
对于不想进入主流程上下文的问题,可以用临时提问方式,避免污染主任务上下文。
二、运行原理:Agent
Agent 的基本架构有四个核心组件:
- LLM
- 工具
- 记忆
- 规划模块
1. LLM
LLM 是整个系统的大脑,负责:
- 理解任务
- 做决策
- 生成行动方案
切换模型
text
/model
2. 记忆
2.1 短期记忆:对话上下文
即当前会话中的上下文内容。
2.2 长期记忆:规范文件
最核心的是:
text
CLAUDE.md
建议:
- 放在项目目录
- 推荐控制在 500 行以内
- 过长可以拆分,并通过
@file引入
/init 初始化
可自动分析项目的:
- 组织结构
- 开发规范
- 构建方式
适合放入的内容:
- 脚手架开发规范
- 项目业务功能说明
- 业务开发手册
对于标准化业务,还可以定义:
- 固定开发工作流
- 专用开发助手
- 例如渠道对接类流程
2.3 Memory(开发偏好)
Claude Code 也会记录你的开发偏好。
路径示例:
text
~/.claude/projects/-xxx-{运行目录}/memory
可用于沉淀:
- 代码风格偏好
- 常用命令
- 协作习惯
- 常见约束条件
3. 工具
3.1 常规工具
Claude Code 原生可使用的能力包括:
- 查找文件
- 读取文件
- 修改文件
- 执行 bash 命令
- 调用 git / go / npm 等命令行工具
3.2 MCP
什么是 MCP?
MCP(Model Context Protocol) 是一个开源标准,用于把 AI 应用连接到外部系统。
通过 MCP,Claude / ChatGPT 这类 AI 应用可以连接:
- 数据源(本地文件、数据库)
- 工具(搜索引擎、计算器)
- 工作流(特殊 prompt、自动化能力)
从而获得:
- 访问关键数据的能力
- 执行任务的能力
MCP 可以理解成什么?
模型通过 MCP Server 获取:
- tools:工具能力
- resources:文件 / 数据资源
- prompts:提示模板
结构示意:
text
Model
↕
MCP Server
├── tools
├── resources
└── prompts
也可以概括为:
能力 + 数据 + 规则
示例:使用 MCP 操作浏览器获取网页内容
安装:
bash
claude mcp add chrome-devtools --scope user -- npx chrome-devtools-mcp@latest
检查安装状态:
bash
claude mcp list
示例输出:
text
Checking MCP server health...
chrome-devtools: npx chrome-devtools-mcp@latest - ✓ Connected
3.3 Skill
Skill 可以理解为:
单点能力,可直接执行预封装好的命令,输出更确定
安装方式
- 开源下载:skills.sh/
- 优先使用 Anthropic 官方提供的
- 直接复制到:
text
.claude/skills/
自定义 Skill
例如:
把文档里的几个 git 命令封装成 skill,方便反复调用。
优点:
- 标准化
- 可复用
- 输出稳定
- 降低提示词重复书写成本
安全提示
⚠️ 避免"中毒":
可以使用 skill-vetter 对 skill 做检查。
3.4 Plugin
市场安装
可直接从插件市场安装现成插件。
自定义插件
也支持自定义开发,适合:
- 内部工作流封装
- 企业能力接入
- 标准命令组合
3.5 其它:CLI
相比 UI 操作,AI 通常更擅长命令行操作,效果往往更好。
一个很重要的思路是:
任意软件 → 自动生成 CLI → Agent 直接调用
这会极大提升 Agent 的可执行性。
示例:使用终端命令获取网页内容
安装 Playwright:
bash
npm install -g playwright
playwright install chromium
之后即可通过 CLI 方式抓取网页内容。
三、Multi-Agent
1. Sub Agent



什么是 Sub Agent?
Subagents 是处理特定类型任务的专门 AI 助手。
每个 subagent 都有:
- 自己独立的 context window
- 自定义系统提示词
- 特定工具访问权限
- 独立权限边界
当 Claude 遇到匹配 subagent 描述的任务时,会把任务委托给它。
subagent 独立完成后,再把结果返回给主代理。
适用场景
- 工作流拆分
- 特定领域专家 Agent
- 独立职责模块
例如:
- 代码审查 agent
- 测试生成 agent
- 文档整理 agent
- 数据查询 agent
2. Agent Team
什么是 Agent Team?
Agent teams 允许你协调多个 Claude Code 实例一起工作。
其中:
- 一个会话作为团队负责人
- 负责协调工作、分配任务、汇总结果
- 其它队友独立工作
- 每个都有自己的 context window
- 队友之间还能直接通信
和 Sub Agent 的区别
- Sub Agent
- 在单个会话中运行
- 只能向主代理汇报
- Agent Team
- 是多个 Claude Code 实例组成的团队
- 成员可以彼此协作
启用方式
Agent teams 默认禁用。
可通过环境变量启用:
json
{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
}
}
也可通过 settings.json 配置。
常见操作
关闭某个 teammate
text
Ask the researcher teammate to shut down
回收整个团队
text
Clean up the team
四、Web Hook / Hooks
Hooks 的作用是:
当 Claude Code 编辑文件、完成任务或需要输入时,自动运行 shell 命令
适合做的事:
- 格式化代码
- 发送通知
- 校验命令
- 强制执行项目规则
Hooks 是用户定义的 shell 命令,在 Claude Code 生命周期的特定节点触发。
特点:
- 确定性触发
- 不依赖 LLM 判断
- 工程化价值很高
示例:Mac 系统通知
场景:
- 当需要授权时,发送系统提醒
- 当任务完成时,发送系统提醒
这样你就不用一直盯着 Claude Code 窗口。
配置示例:
json
{
"hooks": {
"PermissionRequest": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"check\" with title \"Permission Request.\" subtitle \"claude code\"'"
}
]
}
],
"Stop": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"check\" with title \"code gen complete.\" subtitle \"claude code\"'"
}
]
}
]
}
}
五、使用技巧
1. 永远使用简体中文
Claude 原生有时会偏向英文输出,甚至偶尔会混入其他语言。
可以通过 --append-system-prompt 强制要求使用简体中文:
bash
--append-system-prompt "【无论如何,请用简体中文回答,不要使用其他语言如英文】"
但每次手输这个参数显然不现实,因此可以借助 Claude Code Router。
2. Claude Code Router(CCR)
2.1 简介
项目地址:
Claude Code Router(CCR)是一个强大的模型路由工具,可以让你在 Claude Code 中切换不同 AI 模型,无需手动配置环境变量。
同时还支持:
- 启动 Claude 时追加参数
- 多模型切换
- 状态栏显示
常见路由策略
- 简单任务 :国产模型(如 Coding Plan)
- 智谱 GLM
- MiniMax
- Kimi
- 阿里
- 火山等
- 复杂任务 :
- Claude
- GPT-5.x 等
补充
也可以使用 cc-switch:
- 功能更全面
- UI 更友好
- 但不确定是否支持追加启动参数

2.2 安装配置(启动参数 + 多模型 + 状态栏)
安装:
bash
npm install -g @musistudio/claude-code-router
常用命令:
bash
ccr ui # 启动 UI 配置界面
ccr code # 启动 Claude Code
ccr restart # 重启模型网关(手动改配置后需要)
配置示例
仅需一个 JSON 配置文件:
json
{
"LOG": true,
"LOG_LEVEL": "warn",
"CLAUDE_PATH": "D:/node/claude --dangerously-skip-permissions --append-system-prompt '【无论如何,请用简体中文回答,不要使用其他语言如英文】'",
"HOST": "127.0.0.1",
"PORT": 6543,
"APIKEY": "",
"API_TIMEOUT_MS": "600000",
"PROXY_URL": "",
"transformers": [],
"Providers": [
{
"name": "glm",
"api_base_url": "https://open.bigmodel.cn/api/anthropic/v1/messages",
"api_key": "(自行替换)",
"models": [
"glm-4.6",
"glm-4.5-air"
],
"transformer": {
"use": ["Anthropic"]
}
},
{
"name": "minimaxi",
"api_base_url": "https://api.minimaxi.com/anthropic/v1/messages",
"api_key": "(自行替换)",
"models": [
"MiniMax-M2.7"
],
"transformer": {
"use": ["Anthropic"]
}
}
],
"StatusLine": {
"enabled": true,
"currentStyle": "default",
"default": {
"modules": [
{
"type": "gitBranch",
"icon": "🌿",
"text": "{{gitBranch}}",
"color": "bright_green"
},
{
"type": "model",
"icon": "🤖",
"text": "{{model}}",
"color": "bright_yellow"
},
{
"type": "context",
"icon": "🧠",
"text": "{{contextPercent}}% / {{contextWindowSize}}",
"color": "bright_green"
},
{
"type": "speed",
"icon": "⚡",
"text": "{{tokenSpeed}} t/s {{isStreaming}}",
"color": "bright_yellow"
},
{
"type": "lines",
"icon": "📝",
"text": "+{{linesAdded}}/-{{linesRemoved}}",
"color": "bright_cyan"
},
{
"type": "usage",
"icon": "📊",
"text": "{{inputTokens}} → {{outputTokens}}",
"color": "bright_magenta"
}
]
},
"powerline": {
"modules": []
}
},
"Router": {
"default": "glm,glm-4.6",
"background": "glm,glm-4.6",
"think": "deepseek,deepseek-reasoner",
"longContext": "glm,glm-4.6",
"longContextThreshold": 200000,
"webSearch": "",
"image": ""
}
}

Windows 用户常见坑
建议:
- Node.js 不要安装到
Program Files - 因为路径中有空格时容易出问题
如果已经安装在带空格目录,也可以尝试加双引号(Windows 11 可用):
json
{
"CLAUDE_PATH": "D:/\"Program Files\"/node/claude --dangerously-skip-permissions --append-system-prompt '【无论如何,请用简体中文回答,不要使用其他语言如英文】'"
}
3. 权限与安全
上面的配置里使用了:
bash
--dangerously-skip-permissions
意思是:
跳过权限检查,直接执行任务
首先必须明确:
这个选项是危险的。
因为一旦跳过权限检查,Claude 就可能获得宿主环境的全部权限,例如:
- 读取 / 删除你电脑上的任意文件
- 通过网络发送敏感数据
- 执行任意命令
实际使用体验
很多人实际使用中觉得问题不大,和 Cursor 类似,没有遇到明显误删。
但这不代表风险不存在。
Claude 官方更建议在以下环境中使用:
- 沙箱环境
- 无网络环境
启用沙箱
仅支持:
- macOS
- Linux
- WSL2
命令:
text
/sandbox
沙箱的意义不是让你逐条批准命令,而是:
预先定义一个安全边界,让 Claude Code 能更自由地工作,同时降低风险
参考文档:
code.claude.com/docs/zh-CN/...
Auto mode(需官方账号)
Auto mode 依赖模型分类器对命令进行风险评估。
例如,当 Claude 准备执行 shell 命令(如 rm file、curl ...、git push)时,会先进行快速判断:
- 如果属于常规安全操作
- 如修改项目内代码文件
- 运行测试
- 提交 git
- 则自动放行
- 如果存在潜在高风险
- 如修改系统配置
- 访问未知外部域名
- 删除项目外文件
- 则会要求确认,或者直接阻止
4. 查看数据
查看消耗
集团账号每月 $500,达到 $200 会通知。
可用命令查看消耗:
text
/cost
查看上下文使用情况
text
/context
查看当前状态
包括当前模型等:
text
/status
导出对话
text
/export
用途:
- 复制到剪贴板
- 保存到文件
- 导入到 Cursor 等其它工具继续处理
六、JetBrains 全家桶集成

1. macOS
macOS 下比较简单:
- 安装插件
- 即可使用
优点:
- 无需手动
@文件路径 - 体验比较顺滑
2. Windows
已安装 WSL2
体验基本与 macOS 类似。
未安装 WSL2
插件安装后通常无法正常使用。
原因是:
- IDE 会做路径映射(可配置开启/关闭)
- 但终端联动似乎存在问题
3. 解决思路:写一个 Go 程序自动修复路径
如果你不想安装 WSL2,可以写一个 Go 程序常驻后台,自动修复路径映射。
这样 IDE 和终端就能丝滑联动。
好处
- 本地不用跑 WSL2 虚拟机
- 节省内存
- 对 JetBrains 这种本身较吃内存的 IDE 更友好
4. Go 示例代码
依赖安装:
bash
go get github.com/fsnotify/fsnotify
go get github.com/tidwall/gjson
go get github.com/tidwall/sjson
示例代码:
go
package main
import (
"log"
"os"
"path/filepath"
"strings"
"github.com/fsnotify/fsnotify"
"github.com/tidwall/gjson"
"github.com/tidwall/sjson"
)
var (
// 替换规则:
// - /mnt => (空)
// - /d => D:
// - / => \
sr = strings.NewReplacer("/mnt", "", "/d", "D:", "/", "\\")
)
func processFile(path string) {
// 检查文件是否存在
if _, err := os.Stat(path); os.IsNotExist(err) {
log.Printf("文件不存在,跳过处理: %s", path)
return
}
data, err := os.ReadFile(path)
if err != nil {
log.Printf("读取文件失败: %s, 错误: %v", path, err)
return
}
// 检查是否包含 /mnt 路径
containsMnt := false
gjson.GetBytes(data, "workspaceFolders").ForEach(func(key, value gjson.Result) bool {
if strings.Contains(value.String(), "/mnt") {
containsMnt = true
return false // 找到后停止遍历
}
return true
})
if !containsMnt {
return // 没有 /mnt 路径则不处理
}
var workspaceFolders []string
gjson.GetBytes(data, "workspaceFolders").ForEach(func(key, value gjson.Result) bool {
workspaceFolders = append(workspaceFolders, sr.Replace(value.String()))
return true
})
data, err = sjson.SetBytes(data, "workspaceFolders", workspaceFolders)
if err != nil {
log.Printf("修改 JSON 失败: %s, 错误: %v", path, err)
return
}
err = os.WriteFile(path, data, 0755)
if err != nil {
log.Printf("写入文件失败: %s, 错误: %v", path, err)
return
}
log.Printf("成功处理文件: %s", path)
}
func main() {
dir, err := os.UserHomeDir()
if err != nil {
log.Fatalf("获取用户目录失败: %v", err)
}
dir = filepath.Join(dir, ".claude", "ide")
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.Fatalf("创建监听器失败: %v", err)
}
defer watcher.Close()
err = watcher.Add(dir)
if err != nil {
log.Fatalf("添加监听目录失败: %v", err)
}
log.Printf("开始监听目录: %s", dir)
// 先处理已有文件
err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if !info.IsDir() && strings.HasSuffix(info.Name(), ".lock") {
processFile(path)
}
return nil
})
if err != nil {
log.Printf("遍历现有文件失败: %v", err)
}
// 监听文件系统事件
for {
select {
case event, ok := <-watcher.Events:
if !ok {
return
}
// 只处理 .lock 文件的创建和写入事件
if strings.HasSuffix(event.Name, ".lock") &&
(event.Op&fsnotify.Create == fsnotify.Create ||
event.Op&fsnotify.Write == fsnotify.Write) {
processFile(event.Name)
}
case err, ok := <-watcher.Errors:
if !ok {
return
}
log.Printf("监听错误: %v", err)
}
}
}
七、总结
如果用一句话概括 Claude Code:
它不是"会补全代码的编辑器",而是"能直接接手工程任务的终端 Agent"。
它最适合的场景不是:
- 写一两行函数
- 补一个 if
- 改一处变量名
而是:
- 跨文件重构
- 大规模迁移
- 自动化执行工作流
- 多项目协同修改
- 复杂任务拆解与执行
适合谁?
Claude Code 特别适合:
- 有中大型代码库的开发者
- 经常做多文件改动的人
- 喜欢终端工作流的人
- 希望把重复工程操作自动化的人
最佳搭配建议
实际工作中,不一定非要"二选一"。
比较推荐的组合是:
- Cursor:负责日常编码、补全、局部编辑
- Claude Code:负责复杂任务、重构、自动化工作流
这样分工最合理。



