Claude Code in Practice: The Right Way to Use AI Coding Assistants
Claude Code 是 Anthropic 推出的命令行 AI 编程助手,它不仅仅是一个代码补全工具,而是一个能够理解整个代码库、执行复杂任务的智能代理。本文将从安装配置到高级用法,全面介绍 Claude Code 的最佳实践。
安装与配置
安装
全局安装
npm install -g @anthropic-ai/claude-code
验证安装
claude --version
API Key 配置
方式一:环境变量(推荐)
export ANTHROPIC_API_KEY="sk-ant-xxx..."
方式二:首次运行时交互式配置
claude
首次启动会提示输入 API Key
基本配置
Claude Code 会自动读取当前目录的代码库,但你可以通过配置文件优化行为:
// .claude/config.json
{
"model": "claude-sonnet-4-20250514",
"permissions": {
"bash": true,
"write": true,
"read": true
},
"ignore": [
"node_modules/**",
".git/**",
"dist/**",
"*.log"
]
}
.claudeignore 文件用于排除不需要索引的文件:
.claudeignore
node_modules/
.git/
dist/
build/
*.pyc
__pycache__/
.env
.env.local
核心工作流
1. 代码生成
Claude Code 可以根据自然语言描述生成代码,它会自动理解项目上下文:
在终端中
claude
然后输入自然语言指令
> 创建一个 Express.js 的用户认证中间件,使用 JWT 验证
Claude Code 会:
2. 代码调试
这是 Claude Code 最强大的功能之一:
直接粘贴错误信息
claude
> TypeError: Cannot read properties of undefined (reading 'userId')
at UserController.getProfile (src/controllers/user.ts:45:23)
Claude Code 会:
user.ts 第 45 行的上下文3. 代码重构
claude
> 把 src/services/ 下所有的回调式 API 调用重构为 async/await
Claude Code 会:
4. 代码审查
审查最近的更改
claude
> Review the changes I made in the last commit
Claude Code 会读取 git diff,分析代码变更,指出:
高级用法
自定义指令(Custom Instructions)
通过 .claude/instructions.md 文件定义项目的全局指令:
项目开发规范
代码风格
使用 TypeScript 严格模式
函数使用 camelCase,类使用 PascalCase
所有公开函数必须有 JSDoc 注释
测试要求
新功能必须有对应的单元测试
测试覆盖率不低于 80%
使用 Jest 作为测试框架
数据库规范
所有查询使用参数化查询,禁止字符串拼接
使用 Prisma 作为 ORM
变更需要编写迁移脚本
Git 规范
提交信息遵循 Conventional Commits
PR 需要至少一个 reviewer 批准
Claude Code 每次执行任务时都会参考这些指令,确保输出符合项目规范。
MCP 集成
Claude Code 原生支持 MCP 协议,可以连接外部工具:
// ~/.claude/mcp.json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "${DATABASE_URL}"
}
},
"playwright": {
"command": "npx",
"args": ["-y", "@anthropic/mcp-server-playwright"]
}
}
}
集成 MCP 后,Claude Code 的能力大幅扩展:
claude
> 查询数据库的 users 表结构,然后创建一个对应的 TypeScript 类型定义
> 帮我创建一个 PR,修复 issue #123 中描述的登录 bug
> 打开 localhost:3000,检查首页的加载性能
项目级工具调用
Claude Code 可以直接执行 shell 命令:
claude
> 运行测试,修复所有失败的用例
Claude Code 会:
npm test 或项目配置的测试命令claude
> 分析 package.json 中的依赖,找出有安全漏洞的包并更新
多文件编辑
Claude Code 擅长处理跨文件的复杂修改:
claude
> 把用户认证逻辑从 controllers/auth.ts 抽取到 middleware/auth.ts,
> 并更新所有引用的地方
这涉及:
实战项目示例
示例 1:从零搭建 REST API
mkdir my-api && cd my-api
claude
> 创建一个完整的 Express.js REST API 项目,包括:
> - 用户注册和登录(JWT)
> - CRUD 操作的博客文章
> - PostgreSQL 数据库,使用 Prisma
> - 输入验证使用 Zod
> - 完整的错误处理中间件
> - Docker 配置文件
Claude Code 会生成完整的项目结构:
my-api/
├── src/
│ ├── controllers/
│ │ ├── auth.controller.ts
│ │ └── post.controller.ts
│ ├── middleware/
│ │ ├── auth.middleware.ts
│ │ └── validation.middleware.ts
│ ├── routes/
│ │ ├── auth.routes.ts
│ │ └── post.routes.ts
│ ├── services/
│ │ ├── auth.service.ts
│ │ └── post.service.ts
│ ├── utils/
│ │ └── errors.ts
│ └── app.ts
├── prisma/
│ └── schema.prisma
├── tests/
├── docker-compose.yml
├── Dockerfile
└── package.json
示例 2:Bug 修复工作流
claude
> 用户报告了一个 bug:在创建文章时,如果标题包含特殊字符(如 emoji),
> 数据库会报错。请定位并修复这个问题。
Claude Code 的修复流程:
搜索文章创建相关的代码
→ 找到 src/controllers/post.controller.ts
检查数据库 schema
→ 读取 prisma/schema.prisma
→ 发现 title 字段使用了 varchar(255)
检查编码设置
→ 发现数据库使用了 utf8,但 emoji 需要 utf8mb4
生成修复方案
→ 更新 Prisma schema
→ 生成数据库迁移脚本
→ 添加输入验证
示例 3:性能优化
claude
> 应用的 /api/posts 接口响应很慢,需要优化性能
Claude Code 会:
分析路由代码,找出数据库查询
→ 发现 N+1 查询问题(先查文章,再逐个查作者)
检查数据库索引
→ 发现缺少 author_id 的索引
提供优化方案
→ 改为 join 查询
→ 添加数据库索引
→ 实现查询结果缓存
提示技巧
精确描述上下文
不好的提示
> fix this bug
好的提示
> 在 src/api/orders.ts 的第 156 行,当 order.total 为 null 时,
> calculateTax 函数会抛出 TypeError。需要添加 null 检查,
> 并在 total 为 null 时返回 0。
指定约束条件
> 重构这个函数以提升性能,但不能改变函数签名,
> 因为有其他模块依赖这个接口
逐步复杂化
第一步:建立基础
> 创建一个基本的 Express 服务器
第二步:添加功能
> 给服务器添加用户认证
第三步:完善细节
> 给认证添加 rate limiting 和 refresh token
使用文件引用
> 参考 src/utils/helpers.ts 中的错误处理模式,
> 给 src/services/payment.ts 添加相同的处理
常见问题
Claude Code 无法索引大型项目
// .claude/config.json
{
"indexing": {
"maxFiles": 5000,
"excludePatterns": ["vendor/", "third-party/"]
}
}
权限问题
如果 Claude Code 尝试执行危险操作:
查看待执行的命令,确认后批准
claude
> 删除所有 .bak 文件
[待批准] find . -name "*.bak" -delete
是否执行?(y/n): y
上下文窗口限制
对于超大型文件,Claude Code 会自动分块处理。你也可以手动指定关注的文件范围:
> 只关注 src/core/ 目录下的文件,分析依赖关系
与其他工具的对比
总结
Claude Code 代表了 AI 辅助编程的新范式——不是简单的代码补全,而是理解整个项目上下文的智能编程伙伴。
核心价值:
最佳实践是将 Claude Code 视为团队中的高级工程师——给予清晰的需求描述,让它在你的约束范围内自由工作。