学习目标:从零开始安装Claude Code,完成身份认证,掌握核心命令,理解配置层级,最终独立交付一个可运行的待办事项应用。适合从未接触过Claude Code的开发者。
适用人群:有一门编程语言基础(Python/JavaScript均可),会使用终端,但从未用过Claude Code。
Claude Code是Anthropic推出的官方AI编程智能体(Agentic Coding Tool),它不是一个聊天机器人插件,而是一个能直接操作你本地文件系统的终端工具。它读取代码、编辑文件、运行Shell命令、管理Git仓库——这些操作全部在你的本地环境中完成,代码不会上传到云端。
┌──────────────────────────────────────────────────────────────┐
│ Claude Code 架构概览 │
├──────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────────┐ ┌───────────────────┐ │
│ │ 你的终端 │───▶│ Claude Code │───▶│ Anthropic Claude │ │
│ │ / IDE │◀───│ CLI/桌面 │◀───│ 模型API │ │
│ └─────────┘ └──────┬──────┘ └───────────────────┘ │
│ │ │
│ ┌─────────┼─────────┐ │
│ ▼ ▼ ▼ │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ 文件系统 │ │ Shell │ │ Git │ │
│ │ 读写 │ │ 命令执行 │ │ 操作 │ │
│ └────────┘ └────────┘ └────────┘ │
│ │
└──────────────────────────────────────────────────────────────┘
| 特性 | Claude Code | GitHub Copilot | ChatGPT |
|---|---|---|---|
| 运行方式 | 本地终端/IDE | IDE插件 | 网页/桌面App |
| 文件操作 | 直接读写本地文件 | 仅补全当前文件 | 无法操作文件 |
| Shell命令 | 可执行终端命令 | 不能 | 不能 |
| Git集成 | 原生支持 | 部分支持 | 不能 |
| 项目理解 | 全仓库上下文 | 当前文件为主 | 手动粘贴 |
| MCP扩展 | 支持外部工具连接 | 不支持 | 插件生态 |
Claude Code不只是一个终端工具,它有五种运行界面:
本教程以终端CLI为主线,因为它是所有界面的基础。
| 项目 | 最低要求 |
|---|---|
| 操作系统 | macOS 12+、Ubuntu 20.04+、Windows 10+(WSL2) |
| Node.js | v18或更高 |
| 内存 | 4GB以上 |
| 网络 | 需要访问 api.anthropic.com |
如果你还没装Node.js,推荐使用 nvm(Node Version Manager):
# macOS / Linux
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
source ~/.bashrc # 或 source ~/.zshrc
nvm install --lts
node --version # 确认 v18+
Windows用户在WSL2中执行相同命令,或直接从 nodejs.org 下载安装包。
node --version # 应显示 v18.x.x 或更高
npm --version # 应显示 9.x.x 或更高
git --version # Claude Code依赖Git,确保已安装
三条命令都有正常输出,就可以进入下一步。
npm install -g @anthropic-ai/claude-code
安装完成后验证:
claude --version
# 预期输出:Claude Code v2.1.x 或更高
常见问题:macOS用户如果遇到
EACCES权限错误,执行:bash sudo npm install -g @anthropic-ai/claude-code或配置npm全局目录避免使用sudo。
Claude Code支持两种认证路径:
flowchart TD
A[开始认证] --> B{你有哪种账号?}
B -->|Claude Pro/Max/Team订阅| C[OAuth登录]
B -->|Anthropic API Key| D[环境变量方式]
C --> E[终端运行 claude]
E --> F[浏览器自动打开]
F --> G[登录claude.ai授权]
G --> H[认证完成]
D --> I[export ANTHROPIC_API_KEY=sk-ant-xxx]
I --> J[认证完成]
H --> K[开始使用]
J --> K
claude
# 自动打开浏览器,跳转到 claude.ai 登录页面
# 登录后终端显示 "Authentication successful"
这是Claude Pro、Max、Team、Enterprise订阅用户的默认方式。登录一次后,后续自动续期。
# 1. 从 https://console.anthropic.com/ 获取API Key
# 2. 设置环境变量
export ANTHROPIC_API_KEY="sk-ant-api03-xxxxxxxxxxxxx"
# 3. 启动Claude Code
claude
为了持久化,把环境变量写入Shell配置文件:
# bash用户
echo 'export ANTHROPIC_API_KEY="sk-ant-api03-xxx"' >> ~/.bashrc
source ~/.bashrc
# zsh用户
echo 'export ANTHROPIC_API_KEY="sk-ant-api03-xxx"' >> ~/.zshrc
source ~/.zshrc
在Claude Code会话中输入:
/status
预期输出类似:
Account: [email protected]
Plan: Claude Max
Model: claude-sonnet-4-6
# 在项目目录启动交互式会话
cd /path/to/your/project
claude
# 一次性提问(不进入交互模式)
claude "这个项目用了什么技术栈?"
# 指定模型
claude --model claude-sonnet-4-6
# 退出会话
# 在会话中按 Ctrl+C 两次,或输入 /exit
Claude Code有五种权限模式,按 Shift+Tab 循环切换:
| 模式 | 行为 | 适用场景 |
|---|---|---|
| Default | 每次文件编辑/命令执行都询问 | 初学者、敏感项目 |
| Accept Edits | 自动接受文件编辑,命令仍询问 | 日常编码 |
| Plan | 只输出计划不执行,需确认后才动手 | 复杂重构、架构变更 |
| Bypass Permissions | 自动批准大部分操作 | 可信环境、快速迭代 |
| Auto Mode | 安全场景自动执行,危险操作仍询问 | 推荐的平衡模式 |
新手建议:前三天使用 Default 模式,理解Claude Code的行为模式后再切换。
| 命令 | 功能 | 使用频率 |
|---|---|---|
/help |
查看所有命令 | 首次使用 |
/init |
扫描项目生成CLAUDE.md | 每个新项目 |
/model |
切换模型 | 按需 |
/compact |
压缩上下文窗口 | 长会话必用 |
/cost |
查看Token消耗和费用 | 定期检查 |
/clear |
清空当前会话上下文 | 切换话题 |
/status |
查看账号和模型状态 | 排查问题 |
/plan |
进入/退出计划模式 | 复杂任务 |
/review |
代码审查 | 提交前 |
/mcp |
管理MCP服务器连接 | 扩展工具 |
/exit |
退出Claude Code | 结束会话 |
| 快捷键 | 功能 |
|---|---|
Enter |
发送消息 |
Shift+Enter |
换行(不发送) |
Shift+Tab |
切换权限模式 |
Ctrl+C |
中断当前操作 / 退出 |
Tab |
自动补全文件名/命令 |
Escape |
取消当前输入 |
Ctrl+G |
在Plan Mode中确认/取消计划 |
claude # 交互式会话
claude "你的问题" # 一次性问答
claude -p "提示词" # 非交互管道模式(适合脚本)
claude --model claude-sonnet-4-6 # 指定模型
claude --resume # 恢复上次会话
claude --continue # 继续最近一次对话
claude --verbose # 详细日志模式
claude --allowedTools "Read,Write,Bash" # 限制可用工具
Claude Code采用分层配置架构,理解这个层级是高效使用的关键。
flowchart BT
subgraph 配置层级
E["🌐 Enterprise\n企业管理策略"] --> D["🏢 Team\n团队共享配置"]
D --> C["👤 User\n用户全局配置"]
C --> B["📁 Project\n项目级配置"]
B --> A["🔒 Local\n本地个人配置"]
end
subgraph 文件位置
F1["~/.claude/settings.json"]
F2["项目根/.claude/settings.json"]
F3["项目根/CLAUDE.md"]
F4["~/.claude/CLAUDE.md"]
end
A --- F1
B --- F2
B --- F3
C --- F4
CLAUDE.md是Claude Code最重要的配置文件,相当于给AI的项目说明书。
生成方式:
# 在项目根目录执行
claude
> /init
/init 会扫描你的项目结构,检测框架和工具链,自动生成CLAUDE.md。例如一个Next.js项目的CLAUDE.md可能长这样:
# Project: my-todo-app
## Tech Stack
- Next.js 15 with App Router
- TypeScript
- Tailwind CSS
- SQLite with Drizzle ORM
## Commands
- `npm run dev` — Start development server
- `npm run build` — Production build
- `npm test` — Run tests with Vitest
- `npm run lint` — ESLint check
## Code Style
- Use TypeScript strict mode
- Prefer named exports
- Components in PascalCase, files in kebab-case
- Use `cn()` utility for conditional classes
## Architecture
- `app/` — Next.js App Router pages
- `components/` — Reusable React components
- `lib/` — Shared utilities and database
- `types/` — TypeScript type definitions
手动优化CLAUDE.md的要点:
| 要写什么 | 不要写什么 |
|---|---|
| 项目技术栈和版本号 | 通用编程知识 |
| 构建/测试/部署命令 | 过时的历史信息 |
| 代码风格和命名约定 | 与当前项目无关的内容 |
| 目录结构说明 | 超长的API文档 |
| 已知的约束和边界条件 | 模糊的"做好代码"要求 |
settings.json控制Claude Code的行为边界:
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git status)",
"Bash(git diff *)",
"Read",
"Write"
],
"deny": [
"Bash(rm -rf *)",
"Bash(git push --force)"
]
},
"model": "claude-sonnet-4-6",
"env": {
"NODE_ENV": "development"
}
}
配置文件位置:
| 范围 | 路径 | 用途 |
|---|---|---|
| 用户全局 | ~/.claude/settings.json |
所有项目共享 |
| 项目共享 | .claude/settings.json |
团队统一(提交到Git) |
| 项目本地 | .claude/settings.local.json |
个人偏好(不提交) |
类似 .gitignore,用于排除Claude Code不应该访问的文件:
# .claudeignore
.env
.env.local
**/secrets/**
**/credentials/**
node_modules/
*.pem
*.key
下面用一个完整项目串联前面所有知识点。我们将构建一个命令行待办事项应用,使用Python,无需任何Web框架。
# 1. 创建项目目录
mkdir ~/claude-todo && cd ~/claude-todo
# 2. 初始化Git仓库
git init
# 3. 启动Claude Code
claude
在Claude Code会话中:
> /init
由于是新空目录,/init会生成一个基础CLAUDE.md。我们可以直接让Claude Code帮我们完善。
输入以下提示词:
帮我用Python构建一个命令行待办事项应用,要求:
1. 数据存储在JSON文件中(todos.json)
2. 支持添加、列出、完成、删除任务
3. 使用argparse处理命令行参数
4. 代码放在todo.py中
5. 添加颜色输出,让界面更好看
Claude Code会进入计划模式,输出类似:
我来规划一下这个待办事项应用:
1. 创建 todo.py 主程序
- argparse 定义子命令: add, list, done, delete
- TodoManager 类管理数据读写
- JSON文件持久化
2. 功能实现
- add: 添加新任务
- list: 显示所有任务(带状态标记)
- done: 标记任务完成
- delete: 删除任务
3. 添加颜色输出
- 使用 colorama 库
确认这个方案,我开始编码?[Y/n]
确认后Claude Code开始编码。预期生成的 todo.py:
#!/usr/bin/env python3
"""命令行待办事项应用"""
import argparse
import json
import os
from datetime import datetime
try:
from colorama import init, Fore, Style
init(autoreset=True)
HAS_COLOR = True
except ImportError:
HAS_COLOR = False
DATA_FILE = "todos.json"
def _color(text, color):
if HAS_COLOR:
return f"{color}{text}{Style.RESET_ALL}"
return text
class TodoManager:
def __init__(self, filepath=DATA_FILE):
self.filepath = filepath
self.todos = self._load()
def _load(self):
if os.path.exists(self.filepath):
with open(self.filepath, "r") as f:
return json.load(f)
return []
def _save(self):
with open(self.filepath, "w") as f:
json.dump(self.todos, f, indent=2, ensure_ascii=False)
def add(self, title):
todo = {
"id": len(self.todos) + 1,
"title": title,
"done": False,
"created": datetime.now().isoformat()
}
self.todos.append(todo)
self._save()
print(_color(f" ✓ 已添加: {title}", Fore.GREEN))
def list_all(self):
if not self.todos:
print(_color(" 暂无任务", Fore.YELLOW))
return
for t in self.todos:
status = _color("✓", Fore.GREEN) if t["done"] else _color("○", Fore.RED)
title = _color(t["title"], Fore.WHITE) if not t["done"] else _color(t["title"], Fore.GREEN)
print(f" {status} [{t['id']}] {title}")
def done(self, todo_id):
for t in self.todos:
if t["id"] == todo_id:
t["done"] = True
self._save()
print(_color(f" ✓ 已完成: {t['title']}", Fore.GREEN))
return
print(_color(f" ✗ 未找到ID={todo_id}的任务", Fore.RED))
def delete(self, todo_id):
before = len(self.todos)
self.todos = [t for t in self.todos if t["id"] != todo_id]
if len(self.todos) < before:
self._save()
print(_color(f" ✓ 已删除ID={todo_id}", Fore.GREEN))
else:
print(_color(f" ✗ 未找到ID={todo_id}的任务", Fore.RED))
def main():
parser = argparse.ArgumentParser(description="命令行待办事项")
sub = parser.add_subparsers(dest="command")
sub.add_parser("list", help="列出所有任务")
add_p = sub.add_parser("add", help="添加任务")
add_p.add_argument("title", help="任务标题")
done_p = sub.add_parser("done", help="完成任务")
done_p.add_argument("id", type=int, help="任务ID")
del_p = sub.add_parser("delete", help="删除任务")
del_p.add_argument("id", type=int, help="任务ID")
args = parser.parse_args()
mgr = TodoManager()
if args.command == "add":
mgr.add(args.title)
elif args.command == "list":
mgr.list_all()
elif args.command == "done":
mgr.done(args.id)
elif args.command == "delete":
mgr.delete(args.id)
else:
parser.print_help()
if __name__ == "__main__":
main()
在Claude Code会话中直接让它运行测试:
运行 python todo.py add "学习Claude Code" 然后运行 python todo.py list 确认功能正常
预期终端输出:
$ python todo.py add "学习Claude Code"
✓ 已添加: 学习Claude Code
$ python todo.py add "写第一个项目"
✓ 已添加: 写第一个项目
$ python todo.py list
○ [1] 学习Claude Code
○ [2] 写第一个项目
$ python todo.py done 1
✓ 已完成: 学习Claude Code
$ python todo.py list
✓ [1] 学习Claude Code
○ [2] 写第一个项目
继续在会话中输入:
用pytest为todo.py添加单元测试,覆盖添加、完成、删除、空列表场景。
测试应使用临时文件而非真实的todos.json。
Claude Code会创建 test_todo.py,你只需确认计划并让它执行。
# 运行测试
pip install pytest
pytest test_todo.py -v
flowchart LR
A["📁 创建项目目录"] --> B["🔧 git init"]
B --> C["🤖 启动 claude"]
C --> D["📝 /init 生成配置"]
D --> E["💬 描述需求"]
E --> F["📋 确认开发计划"]
F --> G["⚡ 自动编码"]
G --> H["🧪 运行测试"]
H --> I{测试通过?}
I -->|是| J["✅ 完成"]
I -->|否| K["🐛 描述错误"]
K --> G
Claude Code每次对话都消耗Token。一个典型开发会话的Token分布:
┌────────────────────────────────────────────┐
│ Token消耗分布 │
├────────────────────────────────────────────┤
│ ████████████████░░░░ 系统提示词 ~35% │
│ ██████████░░░░░░░░░░ 你的输入 ~15% │
│ ██████████████░░░░░░ Claude回复 ~30% │
│ ████████░░░░░░░░░░░░ 工具调用结果 ~20% │
└────────────────────────────────────────────┘
| 习惯 | 节省幅度 | 方法 |
|---|---|---|
使用 /compact |
30-50% | 长会话中定期压缩上下文 |
| 精准CLAUDE.md | 20-30% | 避免冗余信息,只写项目相关 |
.claudeignore |
10-20% | 排除 node_modules 等大目录 |
| 指定文件范围 | 15-25% | "只看 src/index.ts" 而非 "看看代码" |
| 分段对话 | 20-40% | 一个会话一个任务,不要混着来 |
| 使用Sonnet模型 | 50-70% | 日常编码用Sonnet,复杂架构用Opus |
# 在会话中随时查看
/cost
# API Key用户的典型输出:
Session: 45,230 input + 12,450 output tokens
Estimated cost: $0.34
# 订阅用户看到的是用量配额:
Session: 45,230 input + 12,450 output tokens
Usage: 2.3% of daily limit
在VS Code中安装 Claude Code扩展:
Ctrl+Shift+X)安装后,侧边栏出现Claude图标,支持: - Inline Diff — 直接在编辑器中查看AI修改建议 - Side Chat — 侧边栏对话 - 文件引用 — 在聊天中引用当前打开的文件
Settings → Plugins → Marketplace支持IntelliJ IDEA、PyCharm、WebStorm、GoLand等全系JetBrains IDE。
| # | 错误 | 正确做法 |
|---|---|---|
| 1 | 一次提十个需求 | 一次一个明确任务 |
| 2 | 不读代码直接接受 | 养成审阅Diff的习惯 |
| 3 | 从不写CLAUDE.md | 每个项目都 /init |
| 4 | 会话越长越好 | 任务完成就 /clear 或重启 |
| 5 | 在Default模式下不耐烦 | 前几天保持Default学习行为模式 |
| 6 | 不提交Git就让AI改代码 | 改动前先commit,方便回滚 |
| 7 | 用模糊的提示词 | "在 src/utils/format.ts 中添加日期格式化函数" |
| 8 | 忘记加 .claudeignore |
排除 node_modules、.env、dist |
| 9 | 把API Key写在代码里 | 用环境变量或 .env 文件 |
| 10 | 不用 /plan 就动手复杂重构 |
复杂任务先进Plan模式确认方案 |
flowchart TD
A["Day 1 目标:能用会基本操作"] --> B["Hour 1: 安装与认证"]
B --> C["Hour 2: 空目录中探索命令<br/>/help, /status, /model"]
C --> D["Hour 3: 用现有项目练习<br/>cd 到已有项目 → /init → 提问"]
D --> E["Hour 4: 完成待办事项实战项目"]
E --> F["Hour 5: 理解配置层级<br/>CLAUDE.md + settings.json"]
F --> G["Hour 6: 尝试VS Code集成"]
G --> H["✅ Day 1 完成!"]
style A fill:#4A90D9,color:#fff
style H fill:#2ECC71,color:#fff
完成第一天后,确认你能做到:
/init 为项目生成CLAUDE.md/compact 管理上下文/cost 检查Token消耗Shift+Tab 切换权限模式| 维度 | 评估 |
|---|---|
| 适合训练营类型 | AI编程入门营、Claude Code快速上手营、DevOps自动化入门 |
| 教学时长 | 6小时(一天集中训练) |
| 学员前置要求 | 任一编程语言基础 + 终端使用经验 |
| 硬件要求 | 能运行Node.js的笔记本,网络连接 |
| 教学形式 | 讲授30% + Live Demo 30% + 动手实操40% |
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
