使用 Claude Code(又名 cc) 作为编程工具已经有一段时间了,claude code 也陆陆续续迭代了好几个版本,在编程上的体验可以说是越来越好,对我来说唯一还能吐槽的点就是由于网络的原因,速度上还是有些慢。
使用 claude code 这一段时间,其实还改变了我一个坏毛病:接到需求直接编码。其实,不管使用哪款 AI 工具,都不能上来直接编码,其实你可以把 AI 当成一个普通员工,初次见面,你头脑里的很多想法不可能一次让对方全部理解。
我总结出来的黄金工作流程是:Research → Plan →Code
不论让 Claude 开始编写一个新需求,还是修改任何代码之前,先探索你的代码库并收集上下文信息,都是最重要的事,也是整个流程的核心要义,具体来说:
无论我们用哪个工具(更准确的应该叫 AI Agent)去协助我们编程,claude code、gemini 或者 cursor,他们都需要一份"说明书"来了解这个项目的背景和规则,否则每次它都要猜你的意图。在 Claude Code 中这份初始设置文件名是 CLAUDE.md。
“注意:各家 AI Agent 的初始设置文件的名字和位置不同,创建文件的时候一定要注意。
初始设置文件的优先级顺序由高到低如下:
如果团队使用多种 AI 工具,可以试一下下面的结构:

项目结构
接下来,初始设置文件的内容该写些什么呢?
举个例子,
claude.md
项目背景(Project Context)
本项目是一个基于 Node.js / TypeScript 的 API 服务,使用 Express 作为 Web 框架,并采用 Prisma ORM 进行数据库操作。
代码风格(Code Style)
- 使用函数式组件与 hooks 风格
- 优先使用 async/await,避免直接使用 promise 链
- 单行最大长度限制为 100 字符
测试要求(Testing Requirements)
- 每个新功能都必须包含 单元测试
- API 接口需撰写 集成测试
- 使用 Jest 作为测试框架
常见问题与注意事项(Common Pitfalls)
- 始终对用户输入进行验证
- 使用参数化查询,绝不拼接字符串
- 在访问数据前必须进行身份验证
- 记录错误日志,但不要向客户端暴露堆栈信息
- 列名使用 snake_case
- 表名使用复数形式
- 每张表必须包含 created_at 与 updated_at 字段
- 使用 deleted_at 字段进行软删除
有了初始设置文件作为"规范"后,我们还需要了解和 AI 沟通协作的技巧: 1.@指定特定的文件:让 AI 聚焦于相关代码。 2.使用 plan mode 先做规划(shift+tab):强制 AI 思考(对应我们的 Plan 步骤)。 3./ 自定义命令:自动化重复性任务。
举个例子, 每次提交代码都要思考如何撰写 commit message,能否自动生成提交信息?
在项目根目录下建立文件:.claude/commands/commit.md
输入以下内容:
---
description: Generate commit message and commit
---
请执行以下步骤:
1. 执行 `git status` 和 `git diff` 查看变更
2. 分析变更内容,生成符合 Conventional Commits 规范的 commit message
3. 格式:`type(scope): description`
- type: feat/fix/refactor/docs/test
- 描述需要清楚说明「做了什么」以及「为什么」
4. 询问我是否要执行 commit
请不要直接 commit,先让我确认 message。
下次提交代码的时候在命令行中,直接输入/commit 就可以了。

使用/commit 命令后
其实 mcp 也算是一种使用技巧,和上面介绍的通用技巧比需要提前安装一些插件。Claude Code 的 mcp 默认安装路径是在全局设置中,这一点要格外注意,默认路径在/Users/xxxx/.claude.json
这里以常用的 pgsql 和 cotext7为例,介绍一下安装和使用的方法。
#安装
claude mcp add postgres npx -- -y @modelcontextprotocol/server-postgres postgresql://localhost:5432
claude mcp add --transport http context7 https://mcp.context7.com/mcp --header "CONTEXT7_API_KEY:去官网申请"
记得在 claude.md 中增加下面内容,不然以后每次输入需求后,还要在最后加一句 use context7,特别麻烦。
Always use context7 when I need code generation, setup or configuration steps, or
library/API documentation. This means you should automatically use the Context7 MCP
tools to resolve library id and get library docs without me having to explicitly ask.
# 查看 mcp,只针对本项目,不是全局的
claude mcp list
# 使用 mcp
claude "Query the users table"

pgsql mcp 的使用效果
最后我还想回归到最开始的需求,明晰清楚需求的内涵和外延是做好一个项目最终的事情,在使用 Claude Code 来构建项目之前,花 15-20 分钟进行研究:
让人工智能将这些研究综合成一个计划,内容包括:
审查该计划并留意自己的反应。你的想法和反应很重要。当你认为 "这太复杂了" 或 "我们已经有更好的方法来做这件事" 时,不要只是修改这个计划,还要记录下你为什么会这么想。把它写下来。
最后根据该计划开发这个功能。
完成整个项目后,将最终的实现与原始计划进行比较。你在哪些地方偏离了计划?为什么?怎样才能让这个计划更好?将自己的反思记录下来,用于下一个项目的开发。
在下一个项目中,把自己的反思添加到你的 CLAUDE.md 文件中。写下一条规则,比如 "在做 X 类型的工作时,记得检查 Y",或者 "我更喜欢方法 A 而不是方法 B,因为原因 C"。
另外,对于一些需求很模糊,甚至是只有一句话的需求,可以试试下面的提示词,让 AI 帮忙。
需求的确认:
你是一位资深产品顾问(C - Capacity)
背景:我在做一个电商平台,客户反应「结帐流程太慢」(I - Insight)
请用苏格拉底提问法,帮我厘清这个需求背后的真实问题(S - Statement)
请用反向提问的方式引导我思考,不要直接给答案(P - Personality)
最后提供 3 种可能的理解方向让我选择(E - Experiment)