课程0基础Agent开发课 / Claude-Code实战教程 / Claude-Code是什么和为什么用它
— 12 min read

Claude-Code是什么和为什么用它

> **时效说明**:本文内容以 2026 年 3 月为基准。

Claude Code:Claude Code 是什么,为什么用它

时效说明:本文内容以 2026 年 3 月为基准。

1.1 从"复制粘贴给ChatGPT"到Claude Code

你可能有过这种经历:写了一段 Spring Boot 的 Controller,逻辑有点绕,想让 AI 帮忙看看。于是你打开浏览器,登录 ChatGPT 或者 Claude 网页版,把代码手动复制进去,然后描述问题,等 AI 给出建议,再把修改后的代码粘贴回 IDE。

这个流程有几个让人抓狂的问题:

问题一:上下文残缺。 你只能给 AI 看一个文件,或者一个片段。它不知道这个方法被哪些地方调用,不知道你项目里的其他 Service 是怎么写的,不知道你用了哪个版本的框架。AI 只能看到你粘贴过来的那一小段代码,给出的建议经常是"想象中的答案"——看起来对,但套进你的具体项目就跑不通。

问题二:手动来回。 AI 给的建议你还要自己动手改,改完之后如果有新问题,你得重新描述,再粘贴,来来回回好几轮。遇到要改多个文件的情况更麻烦,你要一个文件一个文件地粘贴,然后再一个文件一个文件地把修改后的内容粘贴回去。

问题三:上下文丢失。 每次重新开聊天窗口,之前的对话全没了。昨天跟 AI 讨论了半天的设计方案,今天想继续,得从头解释一遍。

问题四:特别明显的 Java 项目痛点。 一个成熟的 Spring Boot 微服务,少则几十个类,多则几百个。涉及继承链、多层 Service 调用、MyBatis Mapper、DTO/VO/Entity 转换……这种项目给网页版 AI 看,你能粘贴进去的内容不到整个项目的 1%,AI 根本建立不起来有效的理解。

典型的痛苦场景:

  • 想让 AI 帮你排查一个 NPE,但它看不到 A 类调用了 B 类,B 类里才是真正出问题的地方
  • 想让 AI 帮你重构 UserService,但重构完之后你发现 OrderService 里有三个地方调用了被你改掉的方法签名
  • 接手一个陌生项目,想让 AI 帮你梳理架构,但没办法把几百个文件都粘贴给它

Claude Code 解决的正是这些问题。它不跑在浏览器里,而是跑在你的终端里,直接读取你本地的项目文件,能看到整个代码库。你说"帮我优化一下 UserService 里的分页查询",它会自己找到这个文件,分析上下文,然后给你展示一个 diff,你确认之后它直接改文件——不需要你手动复制粘贴任何东西。

1.2 Claude Code 的本质:操作本地环境的 AI Agent

很多人第一次接触 Claude Code,容易把它理解成"更方便的 ChatGPT"。这个理解不太准确。

Claude Code 的本质是一个 AI Agent,不是聊天工具。

两者的区别在于:聊天工具的职责到给出回答为止,而 Agent 还会执行后续操作。你问 ChatGPT "这段代码怎么优化",它告诉你答案,执行是你的事。但 Claude Code 不一样,它能调用工具:

  • 读文件:扫描你的项目,读取任意文件内容
  • 写文件:创建新文件,修改现有文件
  • 执行 shell 命令:运行 mvn testgit diffgrep,甚至启动你的应用
  • 调用 git:查看提交历史,理解代码变更上下文
  • 联网搜索:查询最新的文档和技术信息(可选功能)
  • 启动子代理:把大任务拆成多个并行子任务执行

它有一个任务循环(Task Loop),在这个循环里它会自己判断下一步该做什么,直到任务完成。这不是"AI 告诉你该怎么做",而是"AI 帮你做好这件事"。

打个你熟悉的比方:ChatGPT 像是给你发邮件提建议的顾问,而 Claude Code 像是能 SSH 进你服务器的实习生——当然,在你确认之前它不会擅自动你的代码。

这个 Agent 本质也是为什么这门课专门用一整章来讲 Claude Code。我们整个课程讲的是 Agent 开发,而 Claude Code 本身就是一个设计精良的 Agent 应用。你在用它的过程中,自然就能理解 Agent 的核心机制:工具调用、上下文管理、循环推理、人在回路(Human in the Loop)。这些概念不再是抽象的,你可以直接观察 Claude Code 是怎么做到这些的。

1.3 Claude Code 的核心工具能力

了解 Claude Code 有哪些工具,能帮你更有效地使用它,也能让你理解它为什么能做到那些看起来"神奇"的事情。

1.3.1 文件读写工具

这是最基础也最核心的能力。Claude Code 能读取项目里的任意文件,也能创建或修改文件。

读文件时,它不是随机读的,而是有策略的:先读项目结构(目录树),再根据你的任务判断需要读哪些文件。对于 Java 项目,它通常会优先读 pom.xml(了解依赖和版本)、主要的配置文件(application.yml),然后才是具体的业务代码。

写文件时,它会把改动展示给你看(diff 形式),你确认后才真正写入。这是一个非常重要的设计:AI 决定改什么,人决定是否生效

1.3.2 Bash 执行工具

Claude Code 能执行 shell 命令,这让它能做很多单纯"读写文件"做不到的事情:

code
# 它能运行测试,看测试是否通过
mvn test -Dtest=UserServiceTest

# 它能查代码里的引用
grep -r "findActiveUsers" --include="*.java" .

# 它能看 git 历史,理解最近改了什么
git log --oneline -20

# 它能编译检查有没有语法错误
mvn compile -q

执行 shell 命令也需要你确认(默认情况下),除非你明确授权某些命令可以自动执行。

1.3.3 联网搜索工具

当 Claude Code 遇到它知识库里没有(或者不确定)的最新信息时,它可以联网搜索。比如:

  • 某个库的最新版本号
  • 某个错误信息的解决方案
  • 最新的 Spring Boot 迁移指南

这个功能在处理版本兼容性问题时特别有用。不过联网搜索需要开启相应权限,国内网络环境下有时也需要代理。

1.3.4 子代理(Sub-agent)

对于复杂的大型任务,Claude Code 能启动多个子代理并行执行。比如你让它"给所有 Controller 加上完整的 Javadoc 注释",它可能启动多个子代理,每个负责一批文件,并行完成。

这个能力对于大型项目批量处理任务非常有用,后面专门的章节会讲这个用法。

1.4 Anthropic 用 Claude Code 开发 Claude Code 本身

这一点值得单独说,因为它不只是一个有趣的小知识。

Anthropic 在开发 Claude Code 时,团队自己就在用 Claude Code。工程师用它来写代码、跑测试、审查 PR,模型在真实使用中暴露问题,然后被修复,再继续使用。这个自我迭代的闭环让 Claude Code 进步非常快——它不是一个实验室里做出来然后推出去的产品,而是在真实工程场景里磨出来的。

对你来说,这意味着什么?意味着 Claude Code 在理解工程化代码方面特别强,因为它的开发者就是工程师,用它干的活就是真实的工程任务。它对代码库结构、git 工作流、单元测试这些场景的处理,明显比通用聊天 AI 更贴近实际。

同时,这也说明 Anthropic 足够信任它自己的工具。一个连自己产品都不敢用来开发自己产品的团队,凭什么让你用它来开发你的产品?

1.5 后端程序员为什么特别适合用它

对于 Java 后端工程师来说,命令行本来就是家。你每天都在用 mvn clean installgit commitkubectl apply,终端不是陌生的地方。Claude Code 跑在终端里,跟你原有的工作流融合起来很自然,不需要切换到另一个应用,不需要改变开发习惯。

还有几个特别适合 Java 后端的场景:

场景一:阅读陌生大型项目。 接手了一个几年前的老项目,几十万行代码,没有任何文档。以前你只能慢慢点文件看,现在可以直接问:"这个项目的整体架构是什么?数据库访问层用的是什么?有哪些定时任务?" Claude Code 能在几分钟内给你一个清晰的架构梳理。

场景二:大范围重构。 把 MyBatis 换成 MyBatis-Plus,把旧的日期 API 换成 java.time,把所有的 System.out.println 换成 slf4j……这类"改动很多文件但每个改动都很机械"的任务,Claude Code 做起来又快又准,而且每个改动都让你确认。

场景三:写测试。 这是很多后端程序员最烦的事情之一。你可以直接让 Claude Code:"给 UserService 里所有的 public 方法写 JUnit 5 单元测试,用 Mockito mock 依赖。" 它能读懂你的代码逻辑,生成真正有意义的测试用例,而不是那种只会走 happy path 的测试。

场景四:排查问题。 遇到一个诡异的 bug,你把错误日志粘贴给它,让它顺着调用链找下去。它能自己翻文件,一层一层追调用,找到可能的原因,比你自己加断点调试快很多。

1.6 Claude Code vs 其他工具的详细对比

这几个工具经常被放在一起比较,但它们的定位其实差别挺大。

工具 使用方式 核心定位 最适合的场景
ChatGPT / Claude 网页版 浏览器对话 通用问答助手 学概念、写文章、快速提问
GitHub Copilot IDE 内代码补全 智能输入法 写代码时实时补全,减少打字量
Cursor 基于 VS Code 的独立 AI IDE 编辑器内 AI 在编辑器里直接对话改代码
Claude Code 终端命令行工具 AI Agent 理解整个项目、大范围重构、工程任务
Windsurf 独立 AI IDE 编辑器内 AI 类似 Cursor,另一个 AI IDE 选项

和 Copilot 的关系:
Copilot 是"你写代码时 AI 帮你补全",Claude Code 是"你描述任务,AI 帮你完成"。前者是输入增强,后者是任务委托。两者不冲突,可以同时用。Copilot 负责你打字时的实时补全,Claude Code 负责更大粒度的任务。

和 Cursor 的关系:
Cursor 是 VS Code 改造版,更适合写代码过程中随时问 AI。Claude Code 更适合明确的任务型操作,比如"给这个模块加测试"、"按照这个需求文档实现功能"。另外,Cursor 需要你切换 IDE,如果你原来用 IntelliJ IDEA,可能不愿意为了 Cursor 换编辑器。Claude Code 不要求你换编辑器,你用什么 IDE 还是用什么。

Claude Code 的真实使用体验:

用了一段时间之后,你会发现 Claude Code 最大的价值不是"帮你写代码",而是"帮你不写代码"。很多机械性、重复性的工作——加注释、加日志、加异常处理、格式化代码、补全缺失的测试——你不需要亲自做了。这些事情 Claude Code 做得比你快,而且在你确认每一步的前提下,风险是可控的。

1.7 Claude Code 的局限性

诚实地说,Claude Code 也不是万能的。知道它的局限,能帮你在合适的场景用合适的工具。

局限一:不适合需要你"在状态里"的创造性编码。
如果你正在做一个全新的、需要大量思考的架构设计,Claude Code 可能反而会打断你的思路。它适合执行明确的任务,不适合在你思维模糊时替你思考。这时候老老实实自己写,或者用网页版 AI 讨论设计,比开着 Claude Code 强行推进要好。

局限二:对超大代码库的理解有上限。
Claude Code 能处理的上下文是有限制的。一个几百万行代码的超大单体,它扫描一遍已经占满了上下文窗口。这种情况下,你需要明确告诉它聚焦在哪个模块,而不是指望它理解整个代码库。

局限三:它可能自信地给出错误答案。
AI 模型都有这个问题:有时候它的回答看起来很有把握,但其实是错的。尤其是涉及到你的业务逻辑时,它不了解你公司的上下文,可能给出"技术上没错但业务上有问题"的改动。所以始终要仔细看 diff,不要因为 AI 给的所以就直接全部确认。

局限四:不适合直接操作生产环境。
Claude Code 能执行 shell 命令,所以理论上你可以在生产服务器上运行它。但这非常不建议。即便它的每个操作你都确认,生产环境的容错空间很小,一个疏忽就可能造成事故。把 Claude Code 用在开发和测试环境,生产部署还是走你们的标准发布流程。

局限五:对 GUI 工具无能为力。
如果你的项目调试依赖 Nacos 控制台、Arthas 诊断工具的 GUI 界面,或者你的工作流里有大量点击操作,Claude Code 帮不上太多忙。它的强项是命令行和文件操作。

1.8 第一次用的正确姿势

很多人第一次用 Claude Code,容易走两个极端:要么太保守(只让它解释代码,不让它动文件),要么太激进(直接让它重构核心模块)。正确的姿势是循序渐进。

第一步:先从只读任务开始。
让它解释代码、分析架构、找代码里的潜在问题。这些任务没有任何风险,但能让你快速感受到它的能力边界。比如:

code
这个项目用了什么设计模式?在哪些地方?
code
UserService 里有没有明显的性能问题?

第二步:小范围的修改任务。
找一个影响范围小、容易验证的任务,比如给一个工具类加注释,或者修一个明确的小 bug。观察它给出 diff 的方式,感受确认流程,建立信任。

第三步:稍大的任务,但要在可恢复的状态下做。
在 git 仓库里做修改,修改前先 git stash 或者新建一个分支,这样即使 Claude Code 的改动不满意,git checkout . 一秒恢复。不要在未纳入版本控制的目录里让它做大范围修改。

第四步:复杂任务,配合 CLAUDE.md 规范文件。
当你要做较复杂的任务时,先在项目根目录创建 .claude/CLAUDE.md,把项目的技术栈、编码规范、禁止改动的文件都写进去。这样 Claude Code 的每次操作都会在你设定的约束内进行。后面的章节会详细讲 CLAUDE.md 的写法。

最不该做的事:

  • 在没有 git 的目录里让它做大改动(改坏了找不回来)
  • 一上来就让它改核心业务逻辑(先建立对它的理解再信任它)
  • 全选 a(全部确认)然后不看 diff(你还是得认真看每一处改动)
  • 在生产环境的服务器上运行它

本页目录