AI 编程工具入门:Claude Code 完全指南
完成时间:约 60 分钟。完成后你将掌握 Vibe Coding 的核心工作流、Claude Code 的所有关键机制。
这一章讲的是”怎么用 AI 工具”——不只是「问问题」,而是系统性地让 AI 成为你真正的编程搭档。
Part 1:Vibe Coding 是什么
Section titled “Part 1:Vibe Coding 是什么”Vibe Coding = 用自然语言描述你想要什么,AI 帮你写代码。你不写代码,你写需求。
和传统编程的区别
Section titled “和传统编程的区别”| 传统编程 | Vibe Coding | |
|---|---|---|
| 你做什么 | 写每一行代码 | 描述意图,验证结果 |
| 学习重点 | 语法、API、框架细节 | 想清楚系统逻辑,判断 AI 的对错 |
| 遇到问题 | 查文档、Stack Overflow | 把错误信息直接发给 AI |
| 速度 | 几小时~几天 | 几分钟~几小时 |
| 适合 | 需要极致控制的底层工作 | 绝大多数业务系统开发 |
Vibe Coding 的工作循环
Section titled “Vibe Coding 的工作循环”1. 描述 → 告诉 AI 你想要什么(越清晰越好)2. 生成 → AI 写代码3. 验证 → 跑起来,看结果对不对4. 迭代 → 不对就告诉 AI 哪里不对,继续改这个循环你会重复几十次。你的核心工作是第 1 步(描述清楚)和第 3 步(判断对错),第 2 步交给 AI。
描述得好 vs 描述得差
Section titled “描述得好 vs 描述得差”❌ 差的描述:"帮我写一个登录功能"
✅ 好的描述:"帮我在 Go + Gin 框架里实现一个登录接口:- POST /api/auth/login- 接收 email 和 password- 查询 PostgreSQL 的 users 表- 密码用 bcrypt 比对- 成功返回 JWT token,失败返回 401- 已有 User 模型在 server/models/user.go"越具体,AI 写出来的越接近你想要的,返工越少。
Part 1.5:AI 的能力边界 — 它能做什么,不能做什么
Section titled “Part 1.5:AI 的能力边界 — 它能做什么,不能做什么”AI 不是万能的
Section titled “AI 不是万能的”Vibe Coding 很强大,但 AI 有明确的能力边界。理解这些边界,才能知道什么时候该信任 AI,什么时候该自己判断。
AI 擅长什么
Section titled “AI 擅长什么”| 擅长 | 举例 |
|---|---|
| 写常见的业务代码 | CRUD 接口、表单页面、数据库查询 |
| 解释代码和错误 | ”这段代码在做什么?""这个报错是什么意思?“ |
| 代码重构和优化 | ”把这个函数拆成更小的函数” |
| 生成测试用例 | ”帮我写单元测试覆盖这个函数” |
| 查找和修复 Bug | 给它错误信息,它能定位问题 |
| 写配置文件 | Dockerfile、CI/CD、Nginx 配置 |
AI 不擅长什么
Section titled “AI 不擅长什么”| 不擅长 | 为什么 | 你该怎么办 |
|---|---|---|
| 判断业务逻辑对不对 | AI 不了解你的业务规则 | 用思考框架想清楚,再让 AI 实现 |
| 做架构决策 | 它倾向于推荐”高级”方案,不一定适合你的规模 | 明确告诉它约束条件(人数、数据量) |
| 保证安全性 | 经常忘记权限检查、输入校验 | 每次都用审查清单检查 |
| 处理复杂并发 | 容易写出在高并发下出错的代码 | 涉及”同时操作”的场景要特别验证 |
| 了解最新文档 | 训练数据有截止日期,可能过时 | 用 MCP + Context7 查最新文档 |
| 记住长对话上下文 | 对话太长会”忘记”前面说的 | 用 CLAUDE.md 固化关键信息,及时 /compact |
三种增强 AI 能力的方式
Section titled “三种增强 AI 能力的方式”AI 不够用时,不是换一个 AI,而是用不同的方式”补强”它:
| 方式 | 做法 | 类比 | 本课程对应 |
|---|---|---|---|
| 给更好的指令 | 写更清晰的 Prompt,提供上下文和约束 | 给新员工更详细的任务说明 | Vibe Coding 配方手册 |
| 给更多信息 | 用 MCP 让 AI 直接读文件、查数据库、搜文档 | 给员工开通公司内部系统的权限 | MCP 配置(Part 6) |
| 给专属规范 | 用 Skills 和 CLAUDE.md 定义工作标准 | 给员工一本公司的 SOP 手册 | Skills + CLAUDE.md |
这三种方式对应了 AI 领域的三个概念:
| AI 概念 | 通俗解释 | 你在课程中怎么用 |
|---|---|---|
| Prompt Engineering | 把话说得更清楚 | 思考框架 + 配方手册里的 Prompt 模板 |
| RAG(检索增强生成) | 让 AI 查资料再回答 | MCP 连接文件系统、数据库、最新文档 |
| Fine-tuning(微调) | 训练 AI 的专属技能 | Skills 定义专属工作规范 |
你不需要理解这些技术细节,只需要知道:当 AI 输出不满意时,先想想是哪一层的问题——是你没说清楚(Prompt)、AI 缺信息(MCP)、还是没有规范(Skills)。
Part 2:Claude Code 详解
Section titled “Part 2:Claude Code 详解”Claude Code 是什么
Section titled “Claude Code 是什么”Claude Code 是运行在终端里的 AI 编程工具。和 Cursor 的对话框不同,它可以直接操作你的项目:读写文件、运行命令、提交 Git——不只是”建议代码”,而是真的帮你做。
Claude Code vs Cursor 对话框
Section titled “Claude Code vs Cursor 对话框”| Cursor 对话框 | Claude Code | |
|---|---|---|
| 操作文件 | 你手动接受/拒绝修改 | 直接读写,可自动执行 |
| 运行命令 | 不能 | 可以运行任意 shell 命令 |
| Git 操作 | 不能 | 可以 add/commit/push |
| 项目感知 | 当前文件 + 有限上下文 | 整个项目目录 |
| 适合 | 单个文件的小修改 | 跨文件的复杂任务 |
启动 Claude Code
Section titled “启动 Claude Code”# 在项目根目录运行claude启动后你会进入一个对话界面,直接用中文说话就行。
常用命令速查
Section titled “常用命令速查”在 Claude Code 的对话框里输入(以 / 开头):
| 命令 | 作用 | 什么时候用 |
|---|---|---|
/help | 查看所有命令和可用 Skills | 刚开始不熟悉时 |
/clear | 清空当前对话上下文 | 换了一个完全不同的任务 |
/compact | 压缩上下文节省 token | 对话很长、项目很大时 |
/memory | 查看 AI 记住了什么 | 想确认 AI 的长期记忆 |
/cost | 查看本次对话消耗 | 控制 API 成本 |
用 ! 前缀可以直接运行 shell 命令,结果会进入对话上下文:
# 在 Claude Code 对话中:! go build ./... # 验证 Go 编译! git status # 查看当前 Git 状态! docker compose up -d # 启动数据库Claude Code 有几种权限模式,控制 AI 能自动执行哪些操作:
| 模式 | 说明 | 适合场景 |
|---|---|---|
| 默认模式 | 每次写文件/运行命令都提示你确认 | 新项目、不熟悉的操作 |
--dangerously-skip-permissions | 跳过所有确认,全自动执行 | 熟悉项目、信任 AI、追求效率 |
# 全自动模式(AI 可以直接修改文件,无需确认)claude --dangerously-skip-permissions建议:学习阶段用默认模式,每次确认能让你理解 AI 在做什么。熟悉后再开全自动。
你说:帮我在 server/handlers/ 目录下新建一个 expense.go,实现 GET /api/expenses 接口,从 PostgreSQL 查询当前用户的所有支出记录,按时间倒序,返回 JSON 数组。User 模型在 server/models/user.go,Expense 模型还没有,帮我一起建。
Claude Code 会:1. 读取 server/models/user.go 理解现有结构2. 创建 server/models/expense.go(新模型)3. 创建 server/handlers/expense.go(接口逻辑)4. 可能还会更新路由文件你只描述了意图,AI 完成了跨 4 个文件的工作。
Part 3:CLAUDE.md — 给 AI 的”项目说明书”
Section titled “Part 3:CLAUDE.md — 给 AI 的”项目说明书””CLAUDE.md 是放在项目根目录的一个 Markdown 文件。Claude Code 每次启动时自动读取它,相当于给 AI 一份永久的项目背景说明——你不用每次都重新介绍你的项目。
为什么需要它
Section titled “为什么需要它”没有 CLAUDE.md:
你每次都要说:"我们用 Go + Gin + GORM + PostgreSQL,后端在 server/ 目录,启动用 task server,数据库用 Docker..."有了 CLAUDE.md:
直接说:"帮我加一个导出报表的功能"AI 自己知道技术栈和项目结构。CLAUDE.md 的基本结构
Section titled “CLAUDE.md 的基本结构”本课程项目的 CLAUDE.md 就是一个很好的示例,你现在可以看一下项目根目录的那个文件。一般包含这几块:
# 项目名称
## 技术栈- 后端:Go + Gin + GORM + PostgreSQL- 前端:React + Vite + Tailwind CSS
## 项目结构- `server/` — 后端代码- `web/` — 前端代码
## 常用命令- `task server` — 启动后端- `task web` — 启动前端
## 关键约定- 所有接口都返回 JSON- 错误码统一用 HTTP 状态码- 数据库操作用 GORM,不写原生 SQL
## 注意事项- 修改 model 后需要重启服务器(AutoMigrate 在启动时执行)- 种子数据用 FirstOrCreate,可以重复执行动手:为你的项目写 CLAUDE.md
Section titled “动手:为你的项目写 CLAUDE.md”把下面这个模板复制到你项目根目录的 CLAUDE.md,然后填入实际内容:
# [项目名称]
## 技术栈- 后端:[语言] + [框架] + [数据库]- 前端:[框架]
## 项目结构- `[目录名]/` — [说明]
## 常用命令- `[命令]` — [说明]
## 关键约定- [约定1]- [约定2]
## 注意事项- [坑1]进阶:全局 CLAUDE.md
Section titled “进阶:全局 CLAUDE.md”除了项目级别的,你还可以在 ~/.claude/CLAUDE.md 放一个全局说明书,对你打开的所有项目都生效:
# 全局偏好
## 我的开发习惯- 代码注释用中文- 函数名用英文驼峰命名- 不用 ORM 的 Raw SQL,除非明确要求
## 我的技术偏好- 优先选 PostgreSQL,不用 MySQL- 前端优先用 Tailwind,不用 styled-componentsPart 4:Hooks — 让 AI 完成操作后自动执行某些事
Section titled “Part 4:Hooks — 让 AI 完成操作后自动执行某些事”Hooks 是”当某个事件发生时,自动运行一段 shell 命令”。比如:
- AI 修改了 Go 文件 → 自动运行
go build验证有没有编译错误 - AI 修改了前端文件 → 自动运行
eslint检查 - AI 完成了一次完整任务 → 自动运行测试套件
你不用手动去做这些验证,AI 完成后自动触发。
| 事件 | 触发时机 | 典型用途 |
|---|---|---|
PreToolUse | AI 调用工具之前 | 拦截危险操作(比如禁止删除某些文件) |
PostToolUse | AI 调用工具之后 | 写完代码后自动验证 |
UserPromptSubmit | 你发消息时 | 记录日志、加上下文 |
配置 Hooks
Section titled “配置 Hooks”Hooks 配置在 ~/.claude/settings.json(全局)或项目根目录的 .claude/settings.json(仅当前项目):
{ "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "cd $CLAUDE_PROJECT_DIR && go build ./... 2>&1 | head -20" } ] } ] }}这段配置的意思:每次 AI 编辑或新建文件后,自动在项目目录运行 go build,把编译错误反馈给 AI。
前端项目:AI 改文件后自动 lint
{ "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "cd $CLAUDE_PROJECT_DIR && npx eslint --fix $(echo $CLAUDE_FILE_PATHS | tr ',' ' ') 2>&1" } ] } ] }}任务完成后自动跑测试
{ "hooks": { "PostToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "cd $CLAUDE_PROJECT_DIR && go test ./... 2>&1 | tail -20" } ] } ] }}动手:配置你的第一个 Hook
Section titled “动手:配置你的第一个 Hook”创建 ~/.claude/settings.json(如果不存在的话),添加这个 Hook,让 AI 每次写文件后打印一条确认信息:
{ "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "echo '✅ AI 已修改文件,请注意查看变更'" } ] } ] }}Part 5:Skills — 给 AI 的”专属工作手册”
Section titled “Part 5:Skills — 给 AI 的”专属工作手册””Skills 是一段预先写好的指令集,告诉 AI”遇到这类任务要按什么方式工作”。
类比:
- 没有 Skills:你每次都要告诉 AI “写前端时要用 Tailwind,组件要有响应式,按钮要有 hover 效果…”
- 有了 Skills:输入
/frontend-design,AI 自动知道这一切
Skill = 可复用的工作 SOP,激活一次,AI 全程按规范执行。
使用已有 Skills
Section titled “使用已有 Skills”在 Claude Code 中输入 /help 可以看到所有可用的 Skills。调用方式:
# 在 Claude Code 对话中直接输入 skill 名称/frontend-design/commit/review-pr激活后,AI 会按这个 Skill 的规范工作,直到你清空上下文。
常用 Skills 示例
Section titled “常用 Skills 示例”| Skill | 作用 |
|---|---|
/frontend-design | 生成高质量前端 UI,有完整的设计规范 |
/commit | 按规范格式生成 Git commit message |
/review-pr | 系统性代码审查 |
/sc:implement | 按 TDD 方式实现功能 |
/copywriting | 写文案时遵循营销文案规范 |
写自己的 Skill
Section titled “写自己的 Skill”技能文件保存在 ~/.claude/skills/ 目录,格式是 Markdown + frontmatter:
---name: api-with-error-handlingdescription: 生成 Go API 接口时,始终包含完整的错误处理---
每次生成 Go API 接口时,必须:
1. 所有数据库操作都检查 err != nil2. 用 c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) 返回错误3. 输入参数校验放在函数开头,用 c.ShouldBindJSON4. 接口注释说明:路径、方法、参数、返回值
示例格式:func CreateExpense(c *gin.Context) { var req CreateExpenseRequest if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } // ... 业务逻辑 ... if err := db.Create(&expense).Error; err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } c.JSON(http.StatusCreated, expense)}保存后,在 Claude Code 中输入 /api-with-error-handling 就可以激活它。
Part 6:MCP — AI 连接外部世界的接口
Section titled “Part 6:MCP — AI 连接外部世界的接口”MCP(Model Context Protocol)是 AI 工具调用外部程序的标准协议。
类比:MCP 就像 USB-C 接口——不同的外设(文件系统、数据库、浏览器)只要支持这个标准,AI 就能直接”插上去”使用。
没有 MCP vs 有 MCP
Section titled “没有 MCP vs 有 MCP”| 没有 MCP | 有 MCP | |
|---|---|---|
| 文件操作 | AI 只能看你粘贴进来的代码 | AI 直接读写你的整个项目 |
| 数据库 | 你描述表结构给 AI 听 | AI 直接查询 PostgreSQL |
| 浏览器 | AI 不知道页面长什么样 | AI 能截图、点击、填表单 |
| 搜索 | AI 靠训练数据(可能过时) | AI 实时搜索最新文档 |
| GitHub | AI 不知道你的 PR/Issues | AI 直接读取仓库内容 |
常用 MCP 工具
Section titled “常用 MCP 工具”| MCP 工具 | 能做什么 | 典型场景 |
|---|---|---|
| filesystem | 读写本地文件目录 | 让 AI 在整个项目里找文件、修改 |
| postgres | 查询 PostgreSQL | AI 直接看数据库表结构和数据 |
| playwright | 控制 Chrome 浏览器 | 自动化测试、截图验证 UI |
| github | 读取 GitHub 仓库 | 让 AI 了解 PR、Issues、代码历史 |
| brave-search | 实时网页搜索 | 查最新文档、技术方案 |
| context7 | 查各种库的最新官方文档 | 用新版 API,不被旧训练数据误导 |
动手:在 Cursor 中配置 MCP
Section titled “动手:在 Cursor 中配置 MCP”第一步:安装 MCP 工具
大多数 MCP 工具以 npm 包的形式发布:
# 安装 filesystem MCP(允许 AI 访问本地文件)npm install -g @modelcontextprotocol/server-filesystem
# 安装 PostgreSQL MCPnpm install -g @modelcontextprotocol/server-postgres第二步:配置 Cursor
打开 Cursor → Settings → MCP,或直接编辑 ~/.cursor/mcp.json:
{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/Users/你的用户名/projects" ] }, "postgres": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb" ] } }}把 /Users/你的用户名/projects 替换成你的项目目录路径。
第三步:在 Claude Code 中配置
编辑 ~/.claude/settings.json,添加 mcpServers 字段:
{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/Users/你的用户名/projects" ] } }}验证成功
在 Claude Code 启动时,如果 MCP 加载成功,你会看到类似这样的提示:
✓ MCP server "filesystem" connected之后你可以直接说:
列出 /projects/my-app/server 目录下的所有 Go 文件AI 会真的去列出来,而不是猜。
配置 filesystem MCP 后:
你:帮我找一下项目里所有用到 bcrypt 的地方
AI:(直接搜索文件系统)找到了 3 处:- server/handlers/auth.go:45 — 密码验证- server/seed/seed.go:23 — 生成测试数据的密码- server/models/user.go:67 — BeforeSave hook
你要我修改其中某一处吗?Part 7:5 个机制的完整工作流
Section titled “Part 7:5 个机制的完整工作流”下面是一次真实工作流的完整示例,展示 5 个机制如何配合工作。
场景:给记账系统加一个”月度报表”功能
准备工作(一次性配置,以后不用重复):├── CLAUDE.md → AI 知道这是 Go + Gin + PostgreSQL 项目├── settings.json → MCP 让 AI 直接读数据库;Hook 让 AI 写完自动 build└── Skills → /api-with-error-handling 让 AI 按规范写接口
开始工作:你:/api-with-error-handling 帮我做一个月度报表接口:GET /api/reports/monthly?month=2024-01 返回这个月的:总支出、按分类汇总、支出最多的前5笔记录 直接查数据库实现,不用缓存
AI 做了什么:1. 读 CLAUDE.md → 知道技术栈和项目结构(CLAUDE.md)2. 用 MCP 查数据库 → 直接看 expenses 表的字段和索引(MCP)3. 按 Skill 规范写代码 → 每个 DB 操作都有错误处理(Skills)4. 写完后 → Hook 自动运行 go build,编译错误直接反馈给 AI(Hooks)5. 你验证接口 → curl 测一下,有问题继续改(Vibe Coding 循环)3 个常用 Prompt 模板
Section titled “3 个常用 Prompt 模板”模板 1:从零实现一个功能
/[相关-skill]
帮我在 [技术栈] 里实现 [功能描述]:- 接口:[HTTP方法] [路径]- 输入:[参数说明]- 输出:[返回值说明]- 业务规则:[关键约束]- 相关文件:[已有代码的路径]模板 2:修复一个 Bug
有个 Bug:[描述现象]
复现步骤:1. [步骤1]2. [步骤2]
期望结果:[应该是什么]实际结果:[错误信息/截图描述]
相关文件可能在:[路径]模板 3:重构/优化
[文件路径] 里的 [函数/模块名] 有以下问题:- [问题1]- [问题2]
帮我重构,要求:- 保持接口不变(外部调用方式不变)- [具体要求1]- [具体要求2]Part 8:动手练习
Section titled “Part 8:动手练习”完成这 3 个练习,你就掌握了本章所有核心机制。
练习 1:创建你的项目 CLAUDE.md
Section titled “练习 1:创建你的项目 CLAUDE.md”在本课程的项目根目录,已经有一个 CLAUDE.md 了(就是 AI 一直在读的那个)。 任务:在你自己的练习项目根目录新建一个 CLAUDE.md,填入你的项目信息。
用这个命令验证 AI 读到了它:
# 在 Claude Code 里说:告诉我你从 CLAUDE.md 里了解到了什么练习 2:配置 filesystem MCP
Section titled “练习 2:配置 filesystem MCP”-
安装 MCP:
Terminal window npm install -g @modelcontextprotocol/server-filesystem -
编辑
~/.claude/settings.json,加入 filesystem 配置(参考 Part 6) -
重启 Claude Code,然后说:
列出当前项目的顶层目录结构如果 AI 真的列出来了(不是猜的),说明 MCP 配置成功。
练习 3:配置一个简单 Hook
Section titled “练习 3:配置一个简单 Hook”编辑 ~/.claude/settings.json,加入这个 Hook(参考 Part 4):
{ "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [ { "type": "command", "command": "echo '[Hook] AI 修改了文件'" } ] } ] }}然后让 AI 随便改一个文件,看终端里是否出现了 [Hook] AI 修改了文件 的提示。
小结:你现在掌握了什么
Section titled “小结:你现在掌握了什么”| 机制 | 你能用它做什么 |
|---|---|
| Vibe Coding | 用自然语言描述需求,让 AI 写代码,你负责验证 |
| Claude Code | 在终端里让 AI 直接操作整个项目 |
| CLAUDE.md | 一次写好项目背景,AI 永远记住,不用重复介绍 |
| Hooks | AI 完成操作后自动触发验证,保证代码质量 |
| Skills | 激活专属工作规范,AI 按 SOP 执行,输出更稳定 |
| MCP | 让 AI 直接操作文件、数据库、浏览器,不只是”建议” |
这 6 个机制加在一起,就是专业 Vibe Coding 的完整工具链。
下一步:回到主线,开始 Step 1:思考框架,学会在给 AI 下指令之前先把系统逻辑想清楚。