Claude Code 最佳实践(个人版)
Claude Code 是 Anthropic 的官方命令行工具,基本上改变了我写代码的方式。
用了一段时间后,踩了不少坑,也摸索出一些实用技巧,整理一下分享给大家。
# 1、📚 先看看官方文档
如果你刚接触 Claude Code,官方文档还是要看一下的:
- 官方文档:https://docs.anthropic.com/zh-CN/docs/claude-code/overview (opens new window)
- 最佳实践:https://www.anthropic.com/engineering/claude-code-best-practices (opens new window)
- GitHub 仓库:https://github.com/anthropics/claude-code (opens new window)
文档里面安装配置这些基础内容都有,虽然有点长,但建议还是过一遍。
# 2、🚀 几个很实用的功能
# 2.1、CLAUDE.md 文件
CLAUDE.md 用于向 Claude 介绍你的项目,相当于“项目说明书”:
## 项目说明
这是个 React 项目,用了...
## 代码规范
- TypeScript 必须用
- ESLint 规则要遵守
- 组件写函数式的
## 注意事项
- API 调用记得加 try-catch
- 提交前跑一下测试
我的经验:
- 清楚写明项目架构与技术栈
- 补充代码规范、测试与提交要求
- 标注常见坑与限制条件
不想手写时,可用 /init
命令生成基础模板。
# a、全局偏好(/memory)
/memory
管理的是“用户记忆”(跨会话的长期偏好),并非“全局 CLAUDE.md”。建议在此存放通用偏好,例如语言、输出风格与协作习惯:
* 默认使用中文回答。
* 没有特别说明时,默认需要完整可执行的方案与必要的依据说明。
* 遇到复杂问题,先给出分析框架(假设、可选方案、权衡、推荐理由),再开始实施,不要直接执行。
* 遇到模糊问题,先反问用户。
* 当用户指示执行明显不合理的或违背最佳实践的操作时,给出警告,待用户二次确认后执行。
* properties 文件编码是ISO-8859-1,写入中文需要注意编码问题。
* 对于Java项目,总是使用最新的API(先查询当前java版本),比如HttpClient而非URLConnection。
说明:.properties
的编码与读取方式有关。使用 Properties.load(InputStream)
传统上按 ISO-8859-1 处理;但在 JDK 9+ 的 PropertyResourceBundle
/ResourceBundle 场景下可按 UTF-8 读取。需按你的读取方式与 JDK 版本确认。
# 2.2、Agent 子代理
子代理相当于给 Claude 配备的“领域专家”,每个助手都有自己擅长的领域。可定义为项目级或用户级:
- 项目级:
.claude/agents/*.md
(仅当前项目可用,优先级更高) - 用户级:
~/.claude/agents/*.md
(所有项目可用,优先级较低)
怎么用:
# 它自己选 - Claude 会根据任务自动找合适的助手
claude> 修复这些失败的测试
# 指定用谁 - 直接说用哪个助手
claude> 用代码审查助手检查一下安全性
创建自定义子代理: 在相应目录下放置 Markdown 文件(文件名即子代理名称),内容为该子代理的角色设定与工作方式。
# 2.3、钩子(Hooks)
钩子是 Claude Code 提供的强大功能,可以在特定时机自动执行 shell 命令,让你更好地控制开发流程。
配置方法:
# 使用斜杠命令快速配置
/hooks
钩子类型详解:
钩子类型 | 触发时机 | 典型用途 |
---|---|---|
PreToolUse | 工具调用前 | 代码格式化、权限检查(可阻止执行) |
PostToolUse | 工具调用后 | 日志记录、文件备份 |
UserPromptSubmit | 处理用户输入前 | 输入验证、预处理 |
Notification | Claude 发送通知时 | 自定义通知方式 |
Stop | Claude 完成响应后 | 自动测试、代码检查 |
SubagentStop | 子代理任务完成后 | 任务跟踪、清理工作 |
PreCompact | 压缩操作前 | 数据备份 |
SessionStart | 会话开始时 | 环境初始化 |
SessionEnd | 会话结束时 | 清理资源、收尾操作 |
实用配置示例(语法以你当前版本文档为准):
# 代码提交前自动格式化
PreToolUse:Edit -> "prettier --write {filepath}"
# 工具调用后记录日志
PostToolUse:* -> "echo '$(date): 执行了工具 {tool}' >> .claude/logs/tool.log"
# 用户输入时检查代码规范
UserPromptSubmit -> "npm run lint"
# 完成任务后运行测试
Stop -> "npm test"
# 2.4、自定义斜杠命令
这个功能我经常用,把一些常用操作包装成命令,用起来很方便。
怎么创建命令:
项目根目录建个 .claude/commands/
文件夹,丢几个 Markdown 文件进去:
.claude/commands/optimize.md
:
# 性能优化
你是性能优化专家,分析代码后给出建议:
- 找出性能瓶颈
- 看看时间复杂度
- 内存使用怎么优化
- 给出具体改进方案
命令名即文件名(不含扩展名)。
用法:
/optimize src/utils/calculator.js # 优化这个文件
/doc utils/helper.js # 给这个文件写文档
/arch src/services/ # 分析这个目录的架构
我常用的几个命令:
doc.md
: 快速生成文档,API 说明啥的arch.md
: 分析代码架构,看看有哪些地方能改进security.md
: 安全检查,找找有没有漏洞
# 2.5、MCP (Model Context Protocol)
MCP 让 Claude 连接外部数据源/工具,比如:
- 文件系统访问: 读取本地文件
- 数据库连接: 查询数据库信息
- API 集成: 调用外部服务
推荐用法(CLI):
# 添加 MCP 服务器
claude mcp add --transport sse <name> <url>
# 列出 / 移除 / 测试
claude mcp list
claude mcp remove <name>
claude mcp test <name>
也可使用项目或用户级配置(通常位于 .claude/
或 ~/.claude/
),字段与结构以当前文档为准;若用 JSON,请确保无注释与有效键名。
# 3、💡 一些实用小技巧
# 3.1、快捷键
不同版本与终端的快捷键可能略有差异,请以 claude --help
与官方“Interactive mode”文档为准。常见操作包括:
- ESC: 打断当前任务
- ESC + ESC: 连按两下,出现本Session的历史对话。可上下选择对话,重新编辑并执行
- Ctrl + L: 清除当前输入框的内容
- Ctrl + J: 在输入框中换行
# 3.2、命令行选项
# a、继续上次对话
继续上次内容可使用“继续/恢复”相关选项(随版本可能为 --continue
或其缩写-c
),以 claude --help
为准。
# b、查看历史对话
查看历史Session通常可用 --resume
或其缩写-r
打开历史Session视图,具体以当前版本为准。
# c、随时插话
Claude 执行过程中可随时插话,无需等待其完成输出。
# 3.3、进阶用法
# a、同时处理多个任务
开几个终端窗口,可以让 Claude 同时干好几件事:
# 开几个终端,让 Claude 同时干活
claude "找找性能瓶颈"
claude "检查安全问题"
claude "写 API 文档"
# b、计划模式
在交互模式中可开启“先规划后执行”的流程(计划列表→逐步执行)。具体快捷键(alt + m)或开关以当前版本文档为准。
# c、系统性思考
没有固定“思考模式”开关,但可以通过提示语引导更系统的分析:
方法一:明确要求思考过程
请先分析这个问题,思考一下:
1. 问题的本质是什么
2. 有哪些可能的解决方案
3. 每种方案的优缺点
4. 推荐哪种方案,为什么
然后再开始实现。
方法二:分步骤引导
我遇到个复杂问题,你先别急着写代码,帮我:
- 理解一下需求的核心
- 分析可能的技术难点
- 设计大致的实现思路
- 确认没问题后再动手
方法三:角色扮演
你现在是个资深架构师,遇到这个问题你会怎么思考?
先告诉我你的分析过程,再给出解决方案。
提示语的目标是让 Claude 先进行系统性分析,再进入实现阶段。
# d、发送图片
在终端中,请提供图片文件路径(例如 ./shots/bug.png
)。Claude Code 会读取并理解图片内容并回答你的问题。
Windows下使用Alt + V 粘贴截图。
# e、关于“思考等级”关键词
官网提供了“think/think hard/ultrathink”等词开启不同思考能力。
当然,更可靠的做法是明确提出分析框架与期望产出(如方案权衡、决策依据、分步计划)。
# 4、🛠️ 遇到问题怎么办
# 4.1、网络连不上
问题: 国内或公司网络下可能无法直连。
解决: 优先使用环境变量或企业代理指引:
# 临时设置(当前 shell 会话)
export HTTP_PROXY=http://127.0.0.1:10808
export HTTPS_PROXY=http://127.0.0.1:10808
export NO_PROXY=localhost,127.0.0.1
# Windows PowerShell 示例
$env:HTTP_PROXY = "http://127.0.0.1:10808"
$env:HTTPS_PROXY = "http://127.0.0.1:10808"
$env:NO_PROXY = "localhost,127.0.0.1"
企业环境请参考官方“Corporate proxy configuration”文档,按需配置认证与证书。
# 4.2、MCP 不生效
问题: 项目里配置的 MCP 未生效。
排查与解决:
- 使用
claude mcp list
确认服务是否已添加;claude mcp test <name>
检查连通性。 - 确认 MCP 服务器可访问(网络/端口/认证配置)。
- 若使用配置文件,检查路径、JSON 有效性与字段名是否符合当前版本文档。
- 查看
.claudeignore
是否误排除了 MCP 相关脚本或目录。
如果还是不行,全局配置里加一行:
{
"enableAllProjectMcpServers": true
}
# 4.3、权限不够
问题: Claude Code 读不了文件或执行不了命令。
解决:
- 检查文件权限
- Mac 上去“安全性与隐私”里授权
- 公司电脑可能有安全策略,要找 IT 部门
# 4.4、速度太慢
问题: 项目大了 Claude Code 反应很慢。
解决:
用 .claudeignore
排除不需要的文件:
node_modules/ # 依赖包不用看
dist/ # 打包文件也不用
build/ # 构建文件同样
*.log # 日志文件没必要
.git/ # git 目录忽略
# 4.5、账号购买与合规
建议从官方渠道(官网或企业采购)获取,遵守服务条款与合规要求,不建议使用共享或第三方代购账号。
# 5、🚀 总结
Claude Code 确实改变了我写代码的方式,节省了很多时间。这些经验对我很有用,希望对你也有帮助。
AI 编程还在发展,未来肯定会更强大。现在学会和 AI 协作,就是在为未来做准备。一起努力吧!
祝你变得更强!