安装配置与 CLI 核心工作流
Claude Code 不是另一个 Copilot——它是能理解整个代码库、执行多步骤任务、调用外部工具的终端原生 AI 工程师。
Claude Code 工作流架构
graph TD
TERMINAL[终端入口] --> CLAUDE_CODE[Claude Code CLI]
CLAUDE_CODE --> CONTEXT[代码库上下文感知]
CLAUDE_CODE --> TOOLS[工具调用]
CLAUDE_CODE --> SKILLS[自定义 Skills]
CONTEXT --> C1[读取项目文件]
CONTEXT --> C2[理解 Git 历史]
CONTEXT --> C3[感知依赖关系]
TOOLS --> T1[文件读写]
TOOLS --> T2[命令执行]
TOOLS --> T3[MCP 服务器]
SKILLS --> S1[/review-pr]
SKILLS --> S2[/deploy]
SKILLS --> S3[自定义命令]
style CLAUDE_CODE fill:#c8e6c9,stroke:#388e3c,stroke-width:2px
style TOOLS fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
安装与配置脚本
"""
Claude Code 安装配置向导与工作流验证
"""
import subprocess
import os
import json
from dataclasses import dataclass
from pathlib import Path
@dataclass
class CLIConfig:
"""Claude Code 配置项"""
api_key: str
default_model: str = "claude-sonnet-4-5-20251001"
max_tokens: int = 8192
permission_mode: str = "default" # default / acceptEdits / bypassPermissions
mcp_servers: dict = None
def __post_init__(self):
if self.mcp_servers is None:
self.mcp_servers = {}
class ClaudeCodeSetup:
"""Claude Code 安装与配置管理"""
CONFIG_DIR = Path.home() / ".claude"
CONFIG_FILE = Path.home() / ".claude" / "settings.json"
@staticmethod
def install():
"""安装 Claude Code"""
print("📦 安装 Claude Code...")
cmds = [
"npm install -g @anthropic-ai/claude-code",
]
for cmd in cmds:
result = subprocess.run(cmd.split(), capture_output=True, text=True)
if result.returncode == 0:
print(f" ✅ {cmd}")
else:
print(f" ❌ {cmd}\n 错误: {result.stderr[:200]}")
@classmethod
def configure(cls, config: CLIConfig):
"""写入配置文件"""
cls.CONFIG_DIR.mkdir(parents=True, exist_ok=True)
settings = {
"apiKey": config.api_key,
"model": config.default_model,
"maxTokens": config.max_tokens,
"permissions": {
"mode": config.permission_mode,
},
}
if config.mcp_servers:
settings["mcpServers"] = config.mcp_servers
cls.CONFIG_FILE.write_text(json.dumps(settings, indent=2))
print(f"✅ 配置已写入 {cls.CONFIG_FILE}")
@staticmethod
def verify():
"""验证安装"""
checks = {
"claude CLI 可执行": ["claude", "--version"],
"Node.js 版本": ["node", "--version"],
"npm 版本": ["npm", "--version"],
}
print("\n=== Claude Code 安装验证 ===")
all_ok = True
for name, cmd in checks.items():
try:
result = subprocess.run(cmd, capture_output=True, text=True, timeout=5)
if result.returncode == 0:
ver = result.stdout.strip().split("\n")[0]
print(f" ✅ {name}: {ver}")
else:
print(f" ❌ {name}: 执行失败")
all_ok = False
except FileNotFoundError:
print(f" ❌ {name}: 未找到命令")
all_ok = False
api_key = os.environ.get("ANTHROPIC_API_KEY", "")
if api_key.startswith("sk-ant-"):
print(f" ✅ ANTHROPIC_API_KEY: 已配置 ({api_key[:12]}...)")
else:
print(f" ❌ ANTHROPIC_API_KEY: 未设置或格式错误")
all_ok = False
if all_ok:
print("\n🎉 Claude Code 配置完整,可以开始使用!")
return all_ok
class WorkflowExamples:
"""Claude Code 核心工作流示例"""
WORKFLOWS = {
"代码理解": {
"命令": "claude '解释这个项目的整体架构,重点说明数据流向'",
"说明": "在项目根目录运行,Claude 自动读取所有文件",
"技巧": "加上 --files src/ 限制只读取源码目录",
},
"功能实现": {
"命令": "claude '在 user.py 中添加密码重置功能,遵循现有代码风格'",
"说明": "Claude 读取现有代码,保持一致的风格和模式",
"技巧": "告诉 Claude 具体文件名,减少无关上下文",
},
"Bug 修复": {
"命令": "claude '运行测试,找到失败的测试用例并修复'",
"说明": "Claude 自动执行 pytest,读取错误,定位并修复 bug",
"技巧": "加上 'don't modify test files' 防止 Claude 改测试",
},
"代码审查": {
"命令": "git diff HEAD~1 | claude '审查这些变更,找出潜在问题'",
"说明": "把 Git diff 通过管道传给 Claude",
"技巧": "结合 /review-pr Skill 实现标准化审查流程",
},
"文档生成": {
"命令": "claude '为所有公开函数生成 docstring,使用 Google 风格'",
"说明": "Claude 批量扫描并添加文档注释",
"技巧": "先在单个文件试验,确认风格符合要求再批量执行",
},
"重构": {
"命令": "claude '将 utils.py 中重复的数据库查询逻辑提取为独立函数'",
"说明": "Claude 识别重复代码,提取并更新所有调用点",
"技巧": "重构前先运行测试,重构后再运行测试对比",
},
}
@classmethod
def print_guide(cls):
print("=== Claude Code 核心工作流指南 ===\n")
for name, info in cls.WORKFLOWS.items():
print(f"【{name}】")
print(f" 命令: {info['命令']}")
print(f" 说明: {info['说明']}")
print(f" 技巧: {info['技巧']}\n")
# 配置示例(使用占位 key)
config = CLIConfig(
api_key="sk-ant-YOUR_KEY_HERE",
default_model="claude-sonnet-4-5-20251001",
permission_mode="default",
mcp_servers={
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"],
}
},
)
print("=== 配置示例 ===")
print(json.dumps({
"model": config.default_model,
"permissions": {"mode": config.permission_mode},
"mcpServers": config.mcp_servers,
}, indent=2))
WorkflowExamples.print_guide()
常用 CLI 参数速查
| 参数 | 作用 | 示例 |
|---|---|---|
--continue / -c | 继续上次对话 | claude -c '继续修复那个 bug' |
--resume | 从历史会话选择恢复 | claude --resume |
--print / -p | 非交互模式输出 | echo "code" \| claude -p '解释这段代码' |
--model | 指定模型 | claude --model claude-opus-4-6 |
--add-dir | 添加额外目录到上下文 | claude --add-dir ../shared-lib |
--allowedTools | 限制可用工具 | claude --allowedTools 'Read,Write' |
行动清单
- [ ] 在一个真实项目目录运行
claude,输入"解释这个项目的结构"——感受代码库感知能力 - [ ] 尝试用 Claude Code 修复一个真实 bug:描述问题现象,让它自己找到并修复
- [ ] 配置
~/.claude/settings.json,设置permission_mode: "acceptEdits"减少确认弹窗 - [ ] 用管道把
git diff传给 Claude 做代码审查:git diff HEAD~1 | claude -p '找出潜在问题' - [ ] 在团队中演示 Claude Code:让同事看到它自动运行测试 + 修复失败用例的完整过程
- [ ] 确认 API 计费:Claude Code 按实际 token 消耗付费,复杂任务单次 1–5 万 tokens 是正常范围
下一节:02-代码生成、调试与重构实战 — 超越补全——让 Claude Code 成为真正的结对编程伙伴。