为什么选择 Claude Code

Claude Code 发布于 2025 年 2 月,是 Anthropic 开发的命令行 Coding Agent,是主流 AI 模型厂商中第一个官方推出的、集成自家模型的 agentic coding tool。

它的核心优势在于:

  1. 环境适应性:作为一个纯命令行工具,它可以部署到任何环境(本地开发机、远程服务器或 CI/CD Runner)。借助 Agent SDK(CLI 的 -p 参数以及 Python/TypeScript SDK),在自动化工作流上有无限的扩展空间。
  2. 体验行业新标准:Anthropic 是 MCP(Model Context Protocol)等行业标准的缔造者,这意味着 Claude Code 往往能最先上线这些先进能力。
  3. 繁荣的生态与用户基础:拥有目前最活跃的开发者社区
  4. 完整的能力:内置了 Sub-agent、Hooks、Agent Teams以及 Checkpointing 等功能。
  5. 灵活的模型接入方案:支持接入第三方模型(包括国产大语言模型),这为开发者大幅降低了日常使用成本。

存在的缺点:
Claude Code 目前是闭源工具,相对封闭,未来有可能会限制接入第三方模型。关于这点,opencode 可作为开源替代品。

Claude Code 的原理

coding agent 的核心是一个循环(agentic loop)

这个循环由两个核心能力驱动:

  1. 大语言模型的推理能力:理解代码、分析问题、决定下一步做什么。(注:最新版本引入了 自适应思考 / Effort Level 机制,模型会根据任务复杂度自动决定推理的深度。)
  2. 工具调用能力:比如 Read(读文件)、Grep(搜索内容)、Edit(编辑文件)、Bash(执行命令)、WebFetch(抓取网页)

在这两个能力的驱动下,agent 在循环中围绕三件事推进工作:

  1. 收集上下文(gather context)
  2. 行动(take action)
  3. 验证(verify results)

这三个阶段不是严格的先后顺序,而是交织在一起的。agent 在每一步都会根据上一步的结果决定下一步该做什么——比如在行动途中发现信息不够,就会回头继续收集上下文。

案例:“帮我完成登录功能”

【第 1 轮循环(收集信息)】
看看目录结构:ls -la
看到输出结果了,这是一个 React 项目,有 src/pages/Login 目录

【第 2 轮循环(收集信息)】
执行 cat Login.jsx 看看文件当前内容

【第 3 轮循环(开始行动)】
发现文件里只有个空壳子,没写 API 请求
我需要写入完整的登录逻辑代码
修改文件:在 Login.jsx 中插入登录代码

【最后几轮循环(验证阶段)】
代码写完了,我得跑一下测试看看报错没:npm run test

【跳出循环】
测试通过,需求完成。

在整个过程中,你随时可以打断 agent,纠正方向或补充信息。
agent 自主工作,但始终响应你的输入。

Claude Code 的功能

上下文

  • 长期记忆
    • CLAUDE.md:每次会话都会加载的背景信息。
      • 用 @ 符号,在 CLAUDE.md 中导入任何其他文件的内容
      • CLAUDE.md 是操作手册,提供具体的说明。比如:用 make test进行测试
    • Auto Memory:Claude 自动记录的笔记(项目模式、调试经验、架构要点等),存储在
      ~/.claude/projects/<project>/memory/ 下,每次会话自动加载。
    • constitution.md(非内置概念,是一种使用模式):由 CLAUDE.md 通过 @
      导入,用于存放抽象的项目原则
      • 这个概念参考了 GitHub 的spec-kit项目。
  • 短期记忆
    • @:引用上下文
      • 用法 1:@/path/to/your/file
      • 用法 2:@/path/to/your/directory/
    • !:执行命令
      • 用法:! <your_shell_command>
  • 会话管理指令;
    • /clear:重置上下文
    • /compact:压缩上下文
    • /rewind:“时光机”,回退当前会话到之前某个节点

扩展能力

  • Skill:可复用的知识与工作流。
    • 特点:渐进式加载。Claude Code 只会先加载 SKILL.md
      头部的元信息(description),之后在调用该 skill 时才加载完整内容,并按需读取 skill
      目录下的支持文件。
  • MCP(Model Context Protocol):连接外部服务
    • 案例:查数据库、发 Slack
  • Subagent:隔离的工作单元
    • 特点:独立上下文窗口,做完任务只返回摘要
  • Agent Teams:多会话协作(实验性功能,默认关闭)
    • 特点:多个 Claude 实例组队,共享任务列表,互相通信
  • Hook:生命周期钩子
    • 支持三种类型:shell 命令(command)、LLM 提示词(prompt)、Agent
    • 备注:注意:并非所有 Hook 事件都支持全部三种类型。PreToolUse、PostToolUse、Stop 等支持三种,但 SessionStart、SessionEnd、Notification、WorktreeCreate 等只支持 command 类型。

备注:
Slash Commands 已合并到 Skills 体系中。.claude/commands/review.md 和
.claude/skills/review/SKILL.md 效果完全一样。已有的 commands
文件仍然有效,但官方建议新建时统一使用 Skill。

安全

  • 权限控制:工具/文件/域名的 allow/ask/deny 规则
  • 沙箱:OS 级文件系统与网络隔离

自动化

  • Headless 模式:官方已更名为 Agent SDK
    • CLI 方式:用 claude -p 非交互式运行,支持 JSON 输出、schema 约束、流式输出
    • 也提供 Python SDK 和 TypeScript SDK,可在代码中程序化调用

最佳实践

大多数最佳实践都基于一个核心约束条件:Claude 的上下文窗口会很快被填满,并且性能会随着窗口的填满而下降。

实践 1:为 Claude 提供验证其工作的方法

提供测试用例、屏幕截图或预期输出,以便 Claude 可以进行自我检查。
UI 的修改可以使用 Claude in Chrome 扩展进行验证。

实践 2:先探索,再计划,再编码(Plan Mode)

不要让 Claude 面对大需求直接写代码,这容易导致它解决错误的问题。

  • 按 Shift+Tab 切换到 Plan Mode(探索模式),让 Claude 只读地浏览代码库并生成实施计划。
  • 确认计划无误后,再切换回正常模式让其编写代码。将“思考”与“执行”分离,能大幅降低返工率。

实践 3:在提示词中提供具体的上下文

准确描述问题,提供必要的信息。
可以使用 @ 引用文件,粘贴截图/图片,或直接通过管道 (pipe) 传入数据。

实践 4:利用“采访模式”对齐复杂需求

如果你面对一个模糊的大需求不知道从何说起,不妨让 Claude 反向提问。

  • 输入:“我想重构这个模块,但思路不清晰。请调用内置的 AskUserQuestion 工具对我进行采访,挖掘我没考虑到的边界情况。”
  • 它会像一位资深架构师一样,弹出一系列结构化选择题帮你梳理思路,最后生成一份严谨的需求文档。

实践 5:使用安全的自动模式 (Autonomous Mode)

减少权限弹窗干扰有两种方式:

推荐方案:使用沙盒模式(/sandbox),为 Claude Code划定文件系统和网络的访问边界,在边界内Claude Code 可以自由操作,无需反复确认权限。

替代方案(高风险):使用 claude --dangerously-skip-permissions 绕过所有权限检查。可能导致数据丢失、系统损坏或数据泄露,仅建议在无网络访问的容器环境中使用。

实践 6:积极管理上下文

  • 在不相关的任务之间使用 /clear 重置上下文
  • 用 /compact <指令> 手动压缩,例如 /compact 只保留 API 相关的改动`

实践 7:写好 CLAUDE.md

CLAUDE.md 是 Claude 每次对话开始时都会读取的文件,相当于持久化的提示词。

  • 用 /init 自动生成初始版本,然后逐步完善
  • 写构建命令、代码风格规则、工作流约定等 Claude 无法从代码推断的信息
  • 保持精简,控制在 500 行以内。

附录

如何减少 token 使用

主动管理上下文

  • 切换任务时用 /clear 清除旧上下文
  • 用 /compact 并附加指令(如 /compact 保留代码示例和 API 用法)

减少 MCP 服务器开销

  • 每个 MCP 服务器都会向上下文注入工具定义,即使未使用
  • 优先使用 CLI 工具(如 gh、aws、gcloud),比 MCP 更省上下文
  • 用 /mcp 禁用不需要的服务器

安装代码智能插件

  • 为强类型语言(TypeScript、Go、Rust 等)安装代码智能插件。一次"跳转到定义"就能替代多次 grep + 读文件,大幅减少上下文消耗。

精简 CLAUDE.md

  • 保持 CLAUDE.md 在 500 行以内,只放通用必要信息
  • 将特定工作流的详细指令迁移到 Skills 中(按需加载)


转载请注明