Claude Code:AI编程工具的革命性进化

引言

AI编程工具在三年内经历了三次重大变革:从GitHub Copilot的代码补全,到Cursor的对话式编程,再到Claude Code的终端Agent模式。这不仅是技术的进步,更是人与AI协作关系的根本转变——你的角色从”写代码的人”变成了”给指令的人”。

Claude Code是什么

Claude Code是Anthropic推出的AI编程助手,与传统IDE集成的AI工具不同,它直接在终端运行,能够自主规划步骤、读写代码、执行命令、操作git,完成完整的开发循环。Boris Cherny(Claude Code创建者)公开表示,使用Opus 4.5后就再也没有手写过一行代码,47天里有46天都在使用。

核心差异:

  • 运行环境:终端原生,直接操作操作系统,而非嵌入IDE
  • 自主程度:可完全无人值守运行,不需要持续监督
  • 记忆系统:通过CLAUDE.md文件提供显式的项目记忆
  • 并行能力:原生支持多实例并行工作

如何更好地使用大模型能力

1. 进阶对话技巧:让AI真正理解你

具体化原则:三要素缺一不可

  • 指定文件和路径:不要说”做个登录功能”,要说”在src/auth/目录下新增Google OAuth登录,用Better Auth库,参考现有的GitHub登录实现方式”
  • 指向已有模式:项目里已有写得好的代码就是最好的范本。”看src/components/UserWidget.tsx的实现方式,照着做一个CalendarWidget”
  • 描述症状而非原因:遇到bug说”用户在session超时后登录失败,请检查src/auth/下的token刷新流程”,而不是猜测”token刷新逻辑有问题”

让Claude采访你
对于复杂功能,不要一上来就写需求文档。先让Claude采访你:

1
2
我想做一个支付功能,在动手之前,先采访我,
问清楚所有你需要知道的事情。

Claude会问:支持哪些支付方式?需要处理退款吗?并发量预估多少?这些问题中至少有一半是你自己没考虑过的。采访结束后,让Claude整理成Spec,然后开新会话执行,避免采访过程的对话历史占用上下文。

Context Engineering:信息不是越多越好
上下文太多,模型表现反而变差。核心原则是给对的信息,而不是所有信息

  • @src/utils/auth.ts引用特定文件
  • 粘贴截图说明UI问题(比文字描述准确10倍)
  • cat error.log | claude直接pipe数据
  • 给URL让Claude读取(比复制粘贴更好)

Effort级别:别省这个钱
Claude Code有四个effort级别(Low/Medium/High/Max)。Boris的做法是从不把它调低。理由很简单:Low做错了,你纠正它花的时间可能比直接用High做对还长。High级别让Claude想得更深,需要返工的次数更少,总体效率反而更高。

2. Plan模式:先想清楚再动手

Plan模式让Claude只规划不执行,你可以在这个阶段反复讨论方案、调整细节。Boris推荐的黄金工作流是:

  1. Plan模式下描述需求,来回讨论
  2. 用编辑器(Ctrl+G)写详细的执行指令
  3. 切换到执行模式,开启Auto-accept

这个流程的精髓在于:把纠结放在Plan阶段解决完,执行阶段一气呵成。边做边改、反复返工是最浪费tokens的用法。

3. Auto模式:更安全的自动驾驶

Auto模式通过AI分类器替你做权限判断,安全操作自动放行,危险操作才拦截。它有两层防御:

  • 输入层:Prompt Injection探测器扫描所有内容
  • 输出层:Transcript分类器评估每个操作的风险(两阶段:快速判断+深度推理)

Auto模式会拦截的典型场景:

  • 范围升级:你说”清理旧分支”,Claude把远程分支也删了
  • 凭证探索:Claude遇到认证错误,开始自行搜索其他API token
  • 绕过安全检查:部署预检失败,Claude用--skip-verify重试
  • 数据外泄:Claude想分享代码,自行创建了公开的GitHub Gist

4. CLAUDE.md:给AI一张地图

CLAUDE.md是Claude Code每次启动时自动读取的配置文件,被称为agent的”宪法”。关键原则:

  • 从护栏开始:不要写百科全书,每次Claude犯错就加一条规则
  • 保持精简:Boris团队的CLAUDE.md只有约2500 tokens(100行左右)
  • 写对的内容:Claude能从代码读出来的不要写,猜不到的必须写

CLAUDE.md层级结构

1
2
3
~/.claude/CLAUDE.md          # 全局级:所有项目共用的偏好
./CLAUDE.md # 项目级:检入git,团队共享
./src/CLAUDE.md # 子目录级:monorepo中特定模块的规则

这个文件会形成迭代飞轮:Claude犯错 → 记录到CLAUDE.md → 下次不再犯 → 错误率持续降低。

5. 会话管理:别让上下文变成垃圾场

核心命令速查

  • /clear:清空当前会话,切换到完全不相关的任务时使用
  • /compact:压缩上下文,保留关键信息释放空间
  • /btw:侧链提问,不污染当前上下文
  • Esc × 2:Rewind回滚,恢复对话/代码/两者

何时该用/clear
修完API bug → /clear → 开始前端组件任务。如果不clear,Claude的上下文里还残留着大量关于那个API bug的信息,会干扰它对新任务的理解。

上下文压缩的代价
长对话中Claude会压缩上下文来节省token。压缩是有损的:核心信息会保留,但具体措辞、边角细节、你的语气暗示容易丢失。重要的约束和要求,写进CLAUDE.md而不是只在对话里说一次

扩展能力:从单兵到团队

Skills:可复用的工作流包

Skills是最容易上手的扩展方式。在.claude/skills/目录下创建SKILL.md文件,Claude会根据上下文自动加载。

两种类型

  • 知识型Skills:告诉Claude”这个项目里的事情应该怎么做”。比如API规范、编码风格、项目约定
  • 工作流型Skills:告诉Claude”遇到这种任务按什么步骤执行”。比如/fix-issue(修bug的标准流程)、/review-pr(代码审查流程)

实战案例:创建/techdebt命令
把”发现技术债 → 评估影响 → 创建issue → 关联到sprint”这个流程写成skill:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# .claude/skills/techdebt/SKILL.md
---
disable-model-invocation: true # 只能手动调用,防止误触发
---

# /techdebt - 技术债务记录流程

## 步骤
1. 让用户描述技术债务的具体内容
2. 评估影响范围(性能/可维护性/安全性)
3. 评估优先级(P0-P3)
4. 创建GitHub issue,标题格式:[Tech Debt] xxx
5. 添加标签:tech-debt, 优先级标签
6. 关联到当前sprint(如果是P0/P1)
7. 在Slack #tech-debt频道通知

以后发现技术债时,直接输入/techdebt,Claude会自动走完整个流程。

安装社区Skills
Boris整理了一套高频使用的skills:

1
2
3
mkdir -p ~/.claude/skills/boris && \
curl -L -o ~/.claude/skills/boris/SKILL.md \
https://howborisusesclaudecode.com/api/install

Hooks:从建议到强制执行

Skills vs Hooks的本质区别

  • CLAUDE.md和Skills是建议,Claude会尽量遵守但遵从率不是100%
  • Hooks是强制执行,Claude无法跳过或忽略

生命周期钩子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"command": "npx eslint --fix $CLAUDE_FILE_PATH"
}
],
"PermissionRequest": [
{
"command": "./scripts/auto-approve.sh $CLAUDE_TOOL $CLAUDE_ARGS"
}
],
"PostCompact": [
{
"command": "echo '重要:所有API调用必须有错误处理' | claude inject"
}
],
"Stop": [
{
"command": "./scripts/check-if-should-continue.sh"
}
]
}
}

实用案例

  1. 自动格式化:每次Claude编辑文件后自动跑eslint,不依赖Claude”记住”要格式化
  2. 智能权限批准:用脚本判断操作类型,低风险的(读文件、运行测试)自动批准,高风险的(删除文件、推送代码)仍然弹出确认
  3. 上下文压缩后注入:长对话中Claude会压缩上下文。PostCompact hook可以在压缩后自动重新注入关键规则,确保Claude不会”失忆”
  4. 推动Claude继续:有时Claude会在复杂任务中途停下来问”要继续吗?”。Stop hook可以检测这种情况,自动让Claude继续执行

让Claude帮你写Hooks
不需要自己从零写。直接告诉Claude:

1
Write a hook that runs eslint after every file edit

它会帮你生成配置并写入.claude/settings.json

MCP:连接外部世界的USB接口

MCP(Model Context Protocol)是Anthropic推出的开放标准,让AI工具能连接外部数据源和服务。

添加MCP服务器

1
2
3
4
5
6
7
8
# 添加Slack MCP
claude mcp add slack -- npx -y @modelcontextprotocol/server-slack

# 添加数据库MCP
claude mcp add postgres -- npx -y @modelcontextprotocol/server-postgres

# 查看已安装的MCP
claude mcp list

实用MCP推荐

MCP 能力 适用场景
Slack MCP 搜索/发送消息 让Claude自动同步进度、回复问题
数据库MCP 直接查询数据库 不用手动复制SQL结果
Figma MCP 读取设计稿 把设计直接转成代码
Sentry MCP 获取错误日志 Claude自动定位线上bug
GitHub MCP 操作仓库/Issue/PR 自动化项目管理

Boris的自动化Bug修复流程
接入Slack MCP + GitHub MCP后:

  1. 有人在Slack里报告bug
  2. Claude自动读取bug描述
  3. 找到相关代码
  4. 尝试修复
  5. 提交PR
  6. 在Slack里回复”已修复,PR链接在这里”

整个过程不需要人工介入。

MCP配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// .mcp.json
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_TOKEN": "${SLACK_TOKEN}"
}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "${DATABASE_URL}"]
}
}
}

配置文件可以提交到Git,团队成员clone后自动获得相同的MCP配置。

Plugins:打包好的扩展包

Plugins是Skills + Hooks + MCP的组合打包。在Claude Code里输入/plugin浏览插件市场。

示例:代码智能Plugin
一个Plugin可能同时包含:

  • 一个skill:告诉Claude如何利用符号导航理解代码结构
  • 一个hook:编辑后自动运行类型检查
  • 一个MCP:连接语言服务器获取精确的符号信息

一键安装,三者配合让Claude在理解和修改代码时更准确。

Slash Commands:带预计算的快捷入口

Commands存在.claude/commands/目录中,可以包含内联的Bash脚本来预计算信息:

1
2
3
4
5
6
# .claude/commands/commit-push-pr.md
帮我完成以下操作:

1. 查看当前的git diff:
```bash
git diff --stat
  1. 生成commit message并提交
  2. 推送到远程分支
  3. 创建Pull Request,标题基于commit内容

注意:PR描述要包含变更摘要。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

输入`/commit-push-pr`,Claude就会按照这个流程自动执行。

**Skills vs Commands选择指南**
- 如果需要Claude"知道什么",用skill
- 如果需要Claude"做一串事",用command

### 三种扩展机制的协作实战

假设团队工作流:收到bug报告 → 定位问题 → 修复 → 跑测试 → 提交PR → 通知相关人

**完整自动化流程**
1. **Slack MCP**:接收bug报告并能回复修复结果
2. **Skill(fix-issue)**:指导Claude按标准流程定位和修复问题
3. **Hook(PostToolUse)**:确保每次修改后都自动跑测试和格式化
4. **Slack MCP**:通知修复结果

单独用任何一个都有价值,组合起来就是一个完整的自动化bug修复流水线。

## 多Agent协作:从单兵到团队作战

### Git Worktrees:并行工作的基础设施

**为什么需要并行**
Claude Code的工作模式是"你给任务 → Claude花几分钟执行 → 你review结果 → 给下一个任务"。中间有大量等待时间。只开一个session,大部分时间你在等Claude干活。开5个session,你review第一个的时候其他4个还在跑,等待时间几乎降到零。

**Worktree操作**
```bash
# 启动一个在独立worktree中运行的Claude session
claude --worktree

# 在Tmux会话中启动(可以后台运行)
claude --worktree --tmux

# 设置shell别名快速跳转
alias za="tmux select-window -t claude:0"
alias zb="tmux select-window -t claude:1"
alias zc="tmux select-window -t claude:2"

每次运行claude --worktree,Claude Code会自动创建一个新的worktree、切到一个新分支,然后在那个隔离环境中工作。

Subagents:给主session叫个帮手

并行session适合处理互不相关的独立任务。Subagents解决的是另一个问题:在当前任务中调一个”专家”来处理特定环节。

定义Subagent

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# .claude/agents/security-reviewer.md
---
name: Security Reviewer
tools: [Read, Grep] # 只读权限,不能改代码
model: opus-4.6 # 使用推理能力更强的模型
---

你是一个安全审查专家。审查代码时重点关注:
1. 认证和授权逻辑
2. 敏感数据处理
3. SQL注入风险
4. XSS漏洞
5. CSRF防护

发现问题时,给出具体的修复建议和代码示例。

Subagents的核心价值:独立上下文
每个subagent运行在自己的上下文窗口中,不消耗主session的上下文空间。当主session的对话已经很长、上下文快要满了的时候,调用一个subagent来处理子任务,相当于开了一个新的”思考空间”。

你甚至可以在prompt中加上”use subagents”,让Claude主动判断什么时候该把子任务分配给subagent。

Agent Teams:让它们自己协调

Agent Teams是Claude Code最强大的协作模式,核心理念:不是你来协调多个agent,而是让agent自己协调

Writer/Reviewer模式

1
2
3
4
5
6
7
8
1. Writer Agent 写代码
- 负责实现功能,按照需求写代码、跑测试

2. Reviewer Agent 审代码
- review Writer的输出,指出问题、建议改进

3. Writer根据反馈修改
- 收到review意见后改进代码,形成迭代循环

这个模式比单个agent写代码好不少。原因和人类团队一样:写代码的人容易陷入自己的思路,审代码的人能从不同角度发现问题。

Coordinator Mode:四阶段协调
复杂任务会自动走四个阶段:

  1. Research(调研):多个worker并行调查代码库
  2. Synthesis(综合):coordinator综合发现生成规格说明
  3. Implementation(实现):worker按规格做精准修改
  4. Verification(验证):验证结果

你不需要手动配置这个流程,Agent Teams会根据任务复杂度自动判断。

Fan-out批处理:人海战术的AI版

非交互模式

1
2
3
4
5
6
7
8
# 非交互模式执行单个任务
claude -p "把这个文件从 JavaScript 迁移到 TypeScript"

# 批量迁移一批文件
for file in $(cat files-to-migrate.txt); do
claude -p "Migrate $file from JS to TS" \
--allowedTools "Edit,Bash(git commit *)" &
done

注意末尾的&:这让每个Claude实例在后台并行运行。如果有50个文件要迁移,50个Claude同时跑,可能几分钟就完成了原本需要一整天的工作。

/batch命令

1
2
3
4
5
6
7
8
9
10
1. 交互式规划
告诉Claude你想做什么(比如"把所有React类组件迁移到函数组件")
Claude会分析项目,列出所有需要处理的文件

2. 确认执行
你review计划,确认后Claude启动数十个agent并行执行

3. 汇总结果
所有agent完成后,Claude汇总成功/失败情况
你只需要处理少数失败的case

这种模式特别适合大规模重构、代码迁移、批量修复等场景。

异步和远程执行

Remote Control
生成一个连接链接,在手机上打开这个链接,就能远程创建和管理本地的Claude session。适合通勤路上想启动一个任务、出门前让Claude跑起来的场景。

/schedule:云端定时任务

1
/schedule "Check for outdated dependencies and create PRs"

设定定时触发的Claude任务,在云端执行。电脑关机了任务照样按时跑。适合日常维护类工作:依赖更新、安全扫描、日报生成。

/loop:本地长时间运行
有些任务要跑很长时间(监控CI状态、持续集成测试)。/loop让Claude在本地最多无人值守运行3天。

异步工作的心智转变
传统开发是同步的:你写代码、跑测试、等结果。异步模式下,睡觉前启动一批任务,早上起来review结果。把AI当成”夜班团队”,白天你定方向做决策,晚上它执行。

实战经验

五条核心建议

  1. 需求拆小:每次只给一步,验证通过再进下一步
  2. 先跑通最小功能:不要一开始就追求完美
  3. 验证比开发更重要:每完成一个模块立刻测试
  4. 及时开新session:避免上下文污染
  5. 产品感知是最大杠杆:AI能让执行速度提升10倍,但方向错了就是以10倍速度走向错误

三层模型:时间该花在哪

Claude Code的所有能力可以归入三个层次:

Prompt层:你说的话

  • 每次对话都要重新投入
  • 一次性回报
  • 初学者把所有精力都花在这里

Context层:AI能看到的信息

  • CLAUDE.md文件、项目文件结构、git历史
  • 写一次持续生效
  • 复利回报

Harness层:自动化环境

  • Skills、Hooks、MCP、Agent Teams
  • 搭一次永久运行
  • 指数回报

比喻:Prompt是你开口说话,Context是你提前准备好的PPT,Harness是你搭建的整个舞台。观众(Claude)的表现,取决于这三层的综合质量。

核心原则:把时间花在构建Context和Harness上,而不是优化Prompt。

六个坑,你大概率会踩

陷阱 表现 解决方案
一个会话什么都塞 修bug、加功能、重构代码、写文档全在一个会话里 一个会话聚焦一个任务,做完就/clear
反复纠正,越改越偏 Claude做错了一步你纠正,改了又错另一个地方 纠正两次不行,果断/clear重来
看着像对的就接受了 Claude写了一大堆代码,输出看着挺合理就接受了 每一轮改动都实际运行一次
过度微操 Claude每写一个文件你都要看、每改一行代码你都要评论 关注结果,让Claude把完整任务做完
需求模糊 “帮我优化一下这个代码””让这个页面好看点” 给具体的、可验证的需求
不写CLAUDE.md 项目根目录没有CLAUDE.md,或者有但从不更新 每次Claude犯错就加一条规则

引擎盖下的Claude Code

TAOR循环:Think-Act-Observe-Repeat

Claude Code的核心工作循环:

1
2
3
4
5
6
7
Think(分析当前状态,决定下一步)

Act(调用工具,执行操作)

Observe(读取返回结果,评估是否完成)

Repeat(未完成则继续循环)

这解释了为什么Claude有时候要”绕几步路”才到终点。它不是在执行预设的脚本,而是在实时做决策。每做一步,都要重新观察结果、重新判断下一步该做什么。

40+工具,4个能力原语

Claude Code内部有40多个工具,但所有能力归结为4个原语:

  • Read:读文件、读代码、搜索内容(Read、Grep、Glob)
  • Write:写文件、编辑代码(Write、Edit)
  • Execute:运行命令、执行脚本(Bash)
  • Connect:连接外部服务(MCP工具、WebFetch)

Bash工具是万能适配器,让Claude能使用人类开发者的一切命令行工具。不需要给每种编程语言做专门集成,通过Execute + Bash就能操作一切。

上下文压缩:为什么长对话会”遗忘”

当上下文窗口快满时,系统会把整个对话历史压缩成一段摘要文本。压缩是有损的:核心信息会保留,但具体措辞、边角细节、你的语气暗示容易丢失。

长会话如果经历了多次压缩,信息损失会累积。每压缩一次就损失一点,几次之后,最早的上下文可能只剩一个模糊的影子。

实操建议:重要的约束和要求,写进CLAUDE.md而不是只在对话里说一次。对话会被压缩,但CLAUDE.md每次都会重新读取。

身份转变:从写代码到构建产品

关键能力的转移

使用Claude Code后,关键能力正在发生转移:

旧能力(重要性下降) 新能力(重要性上升)
语法熟练度 需求拆解能力
框架API记忆 架构判断力
手动调试技巧 输出质量评审
代码模板积累 产品品味

从”怎么写”到”写什么”——这是最根本的心智转变。

Boris的工作方式

Boris Cherny公开说过自己超过90%的代码都由Claude Code生成。他的日常更多是:描述需求、审查输出、做架构决策。他有句话挺有意思:**”我现在的工作更像是一个有技术判断力的产品经理。”**

一人公司成为可能

小猫补光灯做到App Store付费榜Top 1时,很多人问是不是有开发团队。答案是没有。从第一行代码到上架审核,全部是AI写的。

但这不意味着开发过程很轻松。关键在于:

  • 需求拆小:每次只给一步,验证通过再进下一步
  • 先跑通最小功能:不要一开始就追求完美
  • 验证比开发更重要:每完成一个模块立刻测试
  • 产品感知是最大杠杆:AI能让执行速度提升10倍,但方向错了就是以10倍速度走向错误

结语

Claude Code在2025年2月公开发布,5月正式GA,仅6个月就达到10亿美元年化收入。Netflix、Spotify、DoorDash等公司都在内部大规模使用。这不是极客的玩具,正在变成软件开发的标准方式。

一人公司的产品节奏:想法 → 1天做出MVP → 自己用3天 → 找10人测试 → 根据反馈迭代 → 上架。Claude Code覆盖的是”1天做出MVP”和”根据反馈迭代”这两步,其他步骤需要你的判断力。

从想法到产品的距离,现在短到你可能还不太适应。


参考资料:《Claude Code从入门到精通 v2.0》- 花叔