跳转到内容

AI 编程工具入门:Claude Code 完全指南

完成时间:约 60 分钟。完成后你将掌握 Vibe Coding 的核心工作流、Claude Code 的所有关键机制。

这一章讲的是”怎么用 AI 工具”——不只是「问问题」,而是系统性地让 AI 成为你真正的编程搭档。


Vibe Coding = 用自然语言描述你想要什么,AI 帮你写代码。你不写代码,你写需求。

传统编程Vibe Coding
你做什么写每一行代码描述意图,验证结果
学习重点语法、API、框架细节想清楚系统逻辑,判断 AI 的对错
遇到问题查文档、Stack Overflow把错误信息直接发给 AI
速度几小时~几天几分钟~几小时
适合需要极致控制的底层工作绝大多数业务系统开发
1. 描述 → 告诉 AI 你想要什么(越清晰越好)
2. 生成 → AI 写代码
3. 验证 → 跑起来,看结果对不对
4. 迭代 → 不对就告诉 AI 哪里不对,继续改

这个循环你会重复几十次。你的核心工作是第 1 步(描述清楚)和第 3 步(判断对错),第 2 步交给 AI。

❌ 差的描述:
"帮我写一个登录功能"
✅ 好的描述:
"帮我在 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 的能力边界 — 它能做什么,不能做什么”

Vibe Coding 很强大,但 AI 有明确的能力边界。理解这些边界,才能知道什么时候该信任 AI,什么时候该自己判断。

擅长举例
写常见的业务代码CRUD 接口、表单页面、数据库查询
解释代码和错误”这段代码在做什么?""这个报错是什么意思?“
代码重构和优化”把这个函数拆成更小的函数”
生成测试用例”帮我写单元测试覆盖这个函数”
查找和修复 Bug给它错误信息,它能定位问题
写配置文件Dockerfile、CI/CD、Nginx 配置
不擅长为什么你该怎么办
判断业务逻辑对不对AI 不了解你的业务规则用思考框架想清楚,再让 AI 实现
做架构决策它倾向于推荐”高级”方案,不一定适合你的规模明确告诉它约束条件(人数、数据量)
保证安全性经常忘记权限检查、输入校验每次都用审查清单检查
处理复杂并发容易写出在高并发下出错的代码涉及”同时操作”的场景要特别验证
了解最新文档训练数据有截止日期,可能过时用 MCP + Context7 查最新文档
记住长对话上下文对话太长会”忘记”前面说的用 CLAUDE.md 固化关键信息,及时 /compact

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)。


Claude Code 是运行在终端里的 AI 编程工具。和 Cursor 的对话框不同,它可以直接操作你的项目:读写文件、运行命令、提交 Git——不只是”建议代码”,而是真的帮你做。

Cursor 对话框Claude Code
操作文件你手动接受/拒绝修改直接读写,可自动执行
运行命令不能可以运行任意 shell 命令
Git 操作不能可以 add/commit/push
项目感知当前文件 + 有限上下文整个项目目录
适合单个文件的小修改跨文件的复杂任务
Terminal window
# 在项目根目录运行
claude

启动后你会进入一个对话界面,直接用中文说话就行。

在 Claude Code 的对话框里输入(以 / 开头):

命令作用什么时候用
/help查看所有命令和可用 Skills刚开始不熟悉时
/clear清空当前对话上下文换了一个完全不同的任务
/compact压缩上下文节省 token对话很长、项目很大时
/memory查看 AI 记住了什么想确认 AI 的长期记忆
/cost查看本次对话消耗控制 API 成本

! 前缀可以直接运行 shell 命令,结果会进入对话上下文:

Terminal window
# 在 Claude Code 对话中:
! go build ./... # 验证 Go 编译
! git status # 查看当前 Git 状态
! docker compose up -d # 启动数据库

Claude Code 有几种权限模式,控制 AI 能自动执行哪些操作:

模式说明适合场景
默认模式每次写文件/运行命令都提示你确认新项目、不熟悉的操作
--dangerously-skip-permissions跳过所有确认,全自动执行熟悉项目、信任 AI、追求效率
Terminal window
# 全自动模式(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 一份永久的项目背景说明——你不用每次都重新介绍你的项目。

没有 CLAUDE.md:

你每次都要说:"我们用 Go + Gin + GORM + PostgreSQL,
后端在 server/ 目录,启动用 task server,数据库用 Docker..."

有了 CLAUDE.md:

直接说:"帮我加一个导出报表的功能"
AI 自己知道技术栈和项目结构。

本课程项目的 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,然后填入实际内容:

# [项目名称]
## 技术栈
- 后端:[语言] + [框架] + [数据库]
- 前端:[框架]
## 项目结构
- `[目录名]/` — [说明]
## 常用命令
- `[命令]` — [说明]
## 关键约定
- [约定1]
- [约定2]
## 注意事项
- [坑1]

除了项目级别的,你还可以在 ~/.claude/CLAUDE.md 放一个全局说明书,对你打开的所有项目都生效

# 全局偏好
## 我的开发习惯
- 代码注释用中文
- 函数名用英文驼峰命名
- 不用 ORM 的 Raw SQL,除非明确要求
## 我的技术偏好
- 优先选 PostgreSQL,不用 MySQL
- 前端优先用 Tailwind,不用 styled-components

Part 4:Hooks — 让 AI 完成操作后自动执行某些事

Section titled “Part 4:Hooks — 让 AI 完成操作后自动执行某些事”

Hooks 是”当某个事件发生时,自动运行一段 shell 命令”。比如:

  • AI 修改了 Go 文件 → 自动运行 go build 验证有没有编译错误
  • AI 修改了前端文件 → 自动运行 eslint 检查
  • AI 完成了一次完整任务 → 自动运行测试套件

你不用手动去做这些验证,AI 完成后自动触发。

事件触发时机典型用途
PreToolUseAI 调用工具之前拦截危险操作(比如禁止删除某些文件)
PostToolUseAI 调用工具之后写完代码后自动验证
UserPromptSubmit你发消息记录日志、加上下文

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"
}
]
}
]
}
}

创建 ~/.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 全程按规范执行。

在 Claude Code 中输入 /help 可以看到所有可用的 Skills。调用方式:

# 在 Claude Code 对话中直接输入 skill 名称
/frontend-design
/commit
/review-pr

激活后,AI 会按这个 Skill 的规范工作,直到你清空上下文。

Skill作用
/frontend-design生成高质量前端 UI,有完整的设计规范
/commit按规范格式生成 Git commit message
/review-pr系统性代码审查
/sc:implement按 TDD 方式实现功能
/copywriting写文案时遵循营销文案规范

技能文件保存在 ~/.claude/skills/ 目录,格式是 Markdown + frontmatter:

---
name: api-with-error-handling
description: 生成 Go API 接口时,始终包含完整的错误处理
---
每次生成 Go API 接口时,必须:
1. 所有数据库操作都检查 err != nil
2. 用 c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) 返回错误
3. 输入参数校验放在函数开头,用 c.ShouldBindJSON
4. 接口注释说明:路径、方法、参数、返回值
示例格式:
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有 MCP
文件操作AI 只能看你粘贴进来的代码AI 直接读写你的整个项目
数据库你描述表结构给 AI 听AI 直接查询 PostgreSQL
浏览器AI 不知道页面长什么样AI 能截图、点击、填表单
搜索AI 靠训练数据(可能过时)AI 实时搜索最新文档
GitHubAI 不知道你的 PR/IssuesAI 直接读取仓库内容
MCP 工具能做什么典型场景
filesystem读写本地文件目录让 AI 在整个项目里找文件、修改
postgres查询 PostgreSQLAI 直接看数据库表结构和数据
playwright控制 Chrome 浏览器自动化测试、截图验证 UI
github读取 GitHub 仓库让 AI 了解 PR、Issues、代码历史
brave-search实时网页搜索查最新文档、技术方案
context7查各种库的最新官方文档用新版 API,不被旧训练数据误导

第一步:安装 MCP 工具

大多数 MCP 工具以 npm 包的形式发布:

Terminal window
# 安装 filesystem MCP(允许 AI 访问本地文件)
npm install -g @modelcontextprotocol/server-filesystem
# 安装 PostgreSQL MCP
npm 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
你要我修改其中某一处吗?

下面是一次真实工作流的完整示例,展示 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 循环)

模板 1:从零实现一个功能

/[相关-skill]
帮我在 [技术栈] 里实现 [功能描述]:
- 接口:[HTTP方法] [路径]
- 输入:[参数说明]
- 输出:[返回值说明]
- 业务规则:[关键约束]
- 相关文件:[已有代码的路径]

模板 2:修复一个 Bug

有个 Bug:[描述现象]
复现步骤:
1. [步骤1]
2. [步骤2]
期望结果:[应该是什么]
实际结果:[错误信息/截图描述]
相关文件可能在:[路径]

模板 3:重构/优化

[文件路径] 里的 [函数/模块名] 有以下问题:
- [问题1]
- [问题2]
帮我重构,要求:
- 保持接口不变(外部调用方式不变)
- [具体要求1]
- [具体要求2]

完成这 3 个练习,你就掌握了本章所有核心机制。

在本课程的项目根目录,已经有一个 CLAUDE.md 了(就是 AI 一直在读的那个)。 任务:在你自己的练习项目根目录新建一个 CLAUDE.md,填入你的项目信息。

用这个命令验证 AI 读到了它:

# 在 Claude Code 里说:
告诉我你从 CLAUDE.md 里了解到了什么
  1. 安装 MCP:

    Terminal window
    npm install -g @modelcontextprotocol/server-filesystem
  2. 编辑 ~/.claude/settings.json,加入 filesystem 配置(参考 Part 6)

  3. 重启 Claude Code,然后说:

    列出当前项目的顶层目录结构

    如果 AI 真的列出来了(不是猜的),说明 MCP 配置成功。

编辑 ~/.claude/settings.json,加入这个 Hook(参考 Part 4):

{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "echo '[Hook] AI 修改了文件'"
}
]
}
]
}
}

然后让 AI 随便改一个文件,看终端里是否出现了 [Hook] AI 修改了文件 的提示。


机制你能用它做什么
Vibe Coding用自然语言描述需求,让 AI 写代码,你负责验证
Claude Code在终端里让 AI 直接操作整个项目
CLAUDE.md一次写好项目背景,AI 永远记住,不用重复介绍
HooksAI 完成操作后自动触发验证,保证代码质量
Skills激活专属工作规范,AI 按 SOP 执行,输出更稳定
MCP让 AI 直接操作文件、数据库、浏览器,不只是”建议”

这 6 个机制加在一起,就是专业 Vibe Coding 的完整工具链

下一步:回到主线,开始 Step 1:思考框架,学会在给 AI 下指令之前先把系统逻辑想清楚。