Claude Code 指南:终端 AI 编程助手的正确打开方式

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 的基本架构有四个核心组件:

  1. LLM
  2. 工具
  3. 记忆
  4. 规划模块

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 简介

项目地址:

github.com/musistudio/...

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 filecurl ...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:负责复杂任务、重构、自动化工作流

这样分工最合理。

相关推荐
阿里云大数据AI技术4 小时前
基于PAI的Agent数据构造与模型蒸馏解决方案
人工智能
新缸中之脑4 小时前
我的Stitch -> Claude Code 工作流
人工智能
kyle-fang4 小时前
大模型微调
人工智能·深度学习·机器学习
Zzj_tju4 小时前
大语言模型和视觉语言模型技术指南:从 Transformer 到多模态系统,全景看懂主流路线
人工智能·语言模型·transformer
阿部多瑞 ABU4 小时前
#联动悖论
人工智能·ai写作
EmmaXLZHONG4 小时前
Deep Learning With Pytorch Notes
人工智能·pytorch·深度学习
格鸰爱童话4 小时前
向AI学习项目技能(六)
java·人工智能·spring boot·python·学习
V搜xhliang02464 小时前
影像医学与人工智能融合的教学体系构建及平台应用研究
人工智能
Master_oid4 小时前
机器学习38:距离度量与特征处理
人工智能·机器学习