Claude Code 完整教程

  • Eyad
  • 发布于 22小时前
  • 阅读 102

本文作者是一名资深软件工程师和创业公司的CTO,分享了使用 Claude Code 构建强大系统的经验,包括使用 Claude Code 的一些技巧,例如先思考再输入,编写 CLAUDE.md 文件,控制上下文窗口,优化提示词,以及构建自动化系统。

我已经做了 7 年软件工程师,在亚马逊、迪士尼和 Capital One 之间。我交付的代码触及了数百万用户,我构建的系统不能出现故障。现在我是一家为企业构建代理的初创公司的 CTO,Claude Code 是我的日常工具。

这是一个初学者手册,你可能会觉得有用,其中包含了我使用 Claude 构建处理大型公司复杂工作负载的健壮系统后所学到的一切。如果对你有帮助,请在下面告诉我。

先思考

大多数人认为,有了 Claude Code 和其他 AI 工具,你需要做的第一件事就是打字(或开始说话)。但这可能是你一开始就可能犯的最大错误之一。你真正需要做的第一件事是思考。

10 次中有 10 次,我通过计划模式获得的输出比我只是开始说话并将所有内容喷到 Claude Code 中要好得多。这根本没法比。

现在对于你们中的一些人来说,这说起来容易做起来难。你可能没有多年的软件工程经验让你独自思考这个问题。对此,我有两条建议:1. 开始学习。如果你从未掌握这一点,即使只是一点点,你也会让自己处于不利地位。

  1. 与 ChatGPT/Gemini/Claude 进行深入的来回交流,你确切地描述你想要构建什么,你向 LLM 询问你可以在系统设计方面采取的各种选项,最终你们两个达成解决方案。你和 LLM 应该互相提问,而不是单行道。

这适用于一切。这也包括像总结电子邮件这样非常小的任务。在要求 Claude 构建功能之前,请考虑架构。在要求它重构某些内容之前,请考虑最终状态应该是什么样子。在要求它调试之前,请考虑你实际了解问题的哪些信息。你在计划模式中拥有的信息越多,你的输出实际上会越好,因为输入会越好。

这种模式是一致的:先思考,然后再打字,会产生比先打字并希望 Claude 解决问题的效果好得多的结果。

这引出了我的下一个架构观点。架构,尤其是在软件工程中,有点像只给一个人输出而不给其他任何东西。这为如何获得输出留下了很大的回旋余地,这基本上就是 AI 生成代码的问题所在。如果你说一些非常宽泛的东西,比如“构建一个身份验证系统”,而不是“使用现有的 User 模型构建电子邮件/密码身份验证,将会话存储在 Redis 中,有效期为 24 小时,并添加中间件来保护 /api/protected 下的所有路由”,你可以看到区别。

你点击 shift + tab 两次,你就进入了计划模式。相信我,这会占用你 5 分钟的时间,但会为你节省以后无数小时的调试时间。

CLAUDE.md

是一个 markdown 文件。Markdown 是一种文本格式,AI 模型可以很好地处理它,特别是 Claude,它比我测试过的大多数其他模型处理得更好。

当你启动 Claude Code 会话时,Claude 做的第一件事是读取你的 CLAUDE.md 文件。该文件中的每条指令都会影响 Claude 处理项目的方式。它本质上是 Claude 在每次对话之前读取的入职材料。

大多数人要么完全忽略它,要么用垃圾填满它,这使得 Claude 变得更糟而不是更好。存在一个阈值,信息过多或过少意味着更差的模型输出。

以下是真正重要的内容:

保持简短。Claude 一次只能可靠地遵循大约 150 到 200 条指令,而 Claude Code 的系统提示已经使用了大约 50 条。你添加的每条指令都会争夺注意力。如果你的 CLAUDE.md 是一部小说,Claude 将开始随机忽略某些内容,你将不知道是哪些内容。

使其特定于你的项目。不要解释 components 文件夹是什么。Claude 知道什么是 components。告诉它奇怪的东西,比如真正重要的 bash 命令。你流程中的一切都应该包含在其中。

告诉它原因,而不仅仅是什么。Claude 在这方面有点像人。当你给它一条指令背后的原因时,Claude 会比你只是告诉它做什么更好地执行它。“使用 TypeScript 严格模式”是可以的。“使用 TypeScript 严格模式,因为我们遇到了来自隐式 any 类型的生产 bug”更好。原因让 Claude 在做出你没有预料到的判断时提供背景信息。你会惊讶于这实际上有多有效。

不断更新它。在你工作时按 # 键,Claude 会自动将指令添加到你的 CLAUDE.md 中。每次你发现自己两次纠正 Claude 同一件事时,这就是它应该在该文件中的信号。随着时间的推移,你的 CLAUDE.md 成为你的代码库实际工作方式的鲜活文档。

糟糕的 CLAUDE.md 看起来像是为新员工编写的文档。好的 CLAUDE.md 看起来像是如果你知道自己明天会失忆而给自己留下的笔记。

上下文窗口的局限性

例如,Opus 4.5 有一个 200,000 个 token 的上下文窗口。但这是大多数人没有意识到的:模型在你达到 100% 之前就开始恶化。(这取决于你是通过 API 还是桌面应用程序使用)

在大约 20-40% 的上下文使用率时,输出的质量就开始下降,即使不明显。如果你曾经遇到过 Claude Code 压缩后仍然给出糟糕的输出,那就是原因。模型在压缩发生之前就已经降级了,并且压缩不会神奇地恢复质量。(点击 /compact 进行压缩)

你发送的每条消息、Claude 读取的每个文件、它生成的每段代码、每个工具结果 - 所有这些都会累积。一旦质量开始下降,更多的上下文会使其变得更糟,而不是更好。所以这里有一些真正有助于避免糟糕的上下文的事情

限定你的对话范围。每个功能或任务一个对话。不要使用同一个对话来构建你的身份验证系统,然后还重构你的数据库层。上下文会混在一起,Claude 会感到困惑。我知道至少有一个阅读本文的人有这种行为。

使用外部存储器。如果你正在处理复杂的事情,让 Claude 将计划和进度写入实际文件(我使用 SCRATCHPAD.mdplan.md )。这些文件会跨会话保留。当你明天回来时,Claude 可以读取该文件并从你离开的地方继续,而不是从零开始。旁注:如果你有一个文件的层次系统,将这些文件保存在最顶层是你如何使这些文件适用于你决定构建的每个任务/功能的方式。

复制-粘贴重置。这是一个我经常使用的技巧。当上下文变得臃肿时,我从终端复制所有重要的内容,运行 /compact 以获得摘要,然后完全 /clear 上下文,并仅粘贴回重要的内容。具有关键信息的新鲜上下文。比让 Claude 在降级的上下文中挣扎要好得多。

知道何时清除。如果对话偏离轨道或累积了一堆不相关的上下文,只需 /clear 并重新开始。这比试图解决困惑更好。Claude 仍然会有你的 CLAUDE.md ,所以你不会丢失你的项目上下文。十次有九次,使用 clear 实际上比不使用它更好,尽管这听起来违反直觉。

有效的心理模型:Claude 是无状态的。每个对话都从零开始,除了你明确提供的。据此计划。

提示是关键

人们花几周时间学习框架和工具。他们没有花时间学习如何与实际生成他们代码的东西进行通信。

提示不是什么神秘的艺术。它可能是最基本的交流形式。而且像任何交流一样,清晰比模糊能给你更好的结果。每一次。

真正有帮助的是:

具体说明你想要什么。“构建一个身份验证系统”给了 Claude 创造性的自由,它会很糟糕地使用它。“使用这个现有的 User 模型构建电子邮件/密码身份验证,将会话存储在 Redis 中,并添加中间件来保护 /api/protected 下的路由”给了 Claude 一个明确的目标。即使这样仍然不完美。

告诉它不要做什么。Claude 有一些倾向。特别是 Claude 4.5 喜欢过度设计 - 额外的文件,不必要的抽象,你没有要求的灵活性。如果你想要一些最小化的东西,请说“保持简单。不要添加我没有要求的抽象。如果可能,一个文件。”此外,始终交叉引用 Claude 生成的内容,因为你不希望最终承担技术债务,特别是如果你正在构建一些非常简单的东西,但它最终会为一项实际上可以用几行代码修复的任务构建 12 个不同的文件。

你必须记住的是,AI 的设计目的是加速我们,而不是完全取代我们,尤其是在非常专业的软件工程时代。Claude 仍然会犯错误。我确信它会继续犯错误,即使它会随着时间的推移而变得更好。因此,能够识别这些错误实际上可以解决你很多问题。

告诉它关于原因的背景信息。“我们需要它很快,因为它在每个请求上运行”改变了 Claude 处理问题的方式。“这是一个我们会扔掉的原型”改变了哪些权衡是有意义的。Claude 无法读取你没有提及的约束条件。

记住:输出就是一切,但它只来自输入。如果你的输出很糟糕,那么你的输入就很糟糕。没有办法绕过这一点。

糟糕的输入 == 糟糕的输出

人们在得到糟糕的结果时会责怪模型。“Claude 不够聪明”或“我需要一个更好的模型”。

现实检查:你很糟糕。如果你使用像 Opus 4.5 这样好的模型得到糟糕的输出,这意味着你的输入和你的提示很糟糕。到此为止。

模型很重要。实际上,非常重要。但模型质量在这一点上是基本要求。瓶颈几乎总是在人为方面:你如何构建你的提示,你如何提供上下文,你如何清楚地沟通你实际想要什么。

如果你一直得到糟糕的结果,修复方法不是切换模型。修复方法是在以下方面做得更好:

你如何编写提示。具体 > 模糊。约束 > 开放式。示例 > 描述。

你如何构建请求。将复杂的任务分解为步骤。在实施之前就架构达成一致。审查输出并迭代。

你如何提供上下文。Claude 需要知道什么才能做好这件事?你正在做出哪些 Claude 看不到的假设?

也就是说,模型之间存在真正的差异:

Sonnet 更快更便宜。它非常适合路径清晰的执行任务 - 编写样板代码,根据特定计划进行重构,实施你已经做出架构决策的功能。

Opus 更慢更昂贵。它更适合复杂的推理、计划和需要 Claude 深入思考权衡的任务。

一个有效的工作流程:使用 Opus 进行计划并做出架构决策,然后切换到 Sonnet(在 Claude Code 中按 Shift+Tab)进行实施。这将取决于你的任务,有时你也可以使用 opus 4.5 进行实施。如果你通过 API 使用情况选项卡执行此操作,请考虑出售你的肾脏。你的 CLAUDE.md 可确保两个模型在相同的约束下运行,因此交接是干净的。

MCP、工具和配置

Claude 具有大量的特性。MCP 服务器。Hook。自定义斜杠命令。Settings.json 配置。技能。插件。

你不需要所有这些。但你应该实际尝试它们并进行实验,因为如果你不进行实验,你可能会浪费时间和金钱。我保证 Claude 至少会发布一项你不知道的新功能,如果你关注 Claude Code 的创始人 Boris,你可以实际了解该功能。

MCP(模型上下文协议)允许 Claude 连接到外部服务。Slack、GitHub、数据库、API。如果你发现自己不断地将信息从一个地方复制到 Claude 中,可能有一个 MCP 服务器可以自动执行此操作。有大量的 MCP 市场,如果没有 MCP,它只是一种获取结构化数据的方式,因此你可以为你需要的但当前不存在的任何工具创建自己的 MCP 服务器。如果我发现一个不存在的 MCP,我会感到非常惊讶。

Hook允许你在 Claude 进行更改之前或之后自动运行代码。想要 Prettier 在 Claude 触及的每个文件上运行吗?Hook。想要每次编辑后进行类型检查吗?Hook。这会立即发现问题,而不是让它们堆积起来。这实际上也有助于消除技术债务。如果你在每隔一千行代码之后设置一个特定的Hook,你就有安全功能可能会清理你的代码。当 Claude 审查你的 PR 时,这应该非常有帮助。

自定义斜杠命令只是你重复使用的提示,打包为命令。创建一个 .claude/commands 文件夹,添加包含你的提示的 markdown 文件,现在你可以使用 /commandname 运行它们。如果你经常运行相同类型的任务 - 调试、审查、部署 - 将其设为一个命令。

如果你有 Pro Max 计划(我每月支付 200 美元),为什么不尝试 Claude 提供的所有功能呢?看看哪些有效,哪些无效。反正你也在为此付费。

这里有一点:如果某些东西第一次尝试不起作用,请不要关闭。这些模型基本上每周都在改进。一个月前不起作用的东西现在可能起作用。成为早期采用者意味着保持好奇心并重新测试事物。

当 Claude 卡住时

有时 Claude 只是循环。它尝试相同的事情,失败,再次尝试,失败,然后继续。或者它自信地实施了一些完全错误的东西,你花了 20 分钟试图解释原因。

当这种情况发生时,本能是继续推进。更多的指令。更多的更正。更多的上下文。但现实是,更好的做法是完全改变方法。

从简单开始 - 清除对话。累积的上下文可能会让它感到困惑。/clear 给你一个新的开始。

简化任务。如果 Claude 正在努力完成一项复杂的任务,请将其分解为更小的部分。在将它们组合在一起之前,让每个部分都起作用。但实际上,如果 Claude 正在努力完成一项复杂的任务,这意味着你的计划模式不足。

展示而不是讲述。如果 Claude 一直误解你想要什么,请自己编写一个最小的示例。“这是输出应该是什么样子。现在将此模式应用于其余部分。”Claude 非常擅长理解成功指标是什么样子,并且实际上能够遵循它们,以及一个好的例子是什么。

要有创造力。尝试一个不同的角度。有时,你构建问题的方式与 Claude 的思考方式不太一致。重新构建 - “将此实现为状态机”与“处理这些转换” - 可以解锁进度。

这里的元技能是尽早认识到你何时处于循环中。如果你已经解释了相同的事情三次,但 Claude 仍然没有理解,更多的解释将无济于事。改变一些东西。

构建系统

从 Claude 获得最大价值的人不是将其用于一次性任务。他们正在构建 Claude 是一个组件的系统。但 claude 代码远不止于此。它有一个 -p 标志用于无头模式。它运行你的提示并输出结果,而无需进入交互式界面。这意味着你可以编写脚本。将输出管道传输到其他工具。将其与 bash 命令链接。将其集成到自动化工作流程中。

企业正在将此用于自动 PR 审查、自动支持工单回复、自动日志记录和文档更新。所有这些都已记录、可审计,并根据有效和无效的内容随着时间的推移而改进。

飞轮:Claude 犯了一个错误,你审查日志,你改进 CLAUDE.md 或工具,Claude 下一次会做得更好。这会复合。目前,我正在努力让 Claude 已经改进其自己的 Claude.md 文件。经过几个月的迭代,以这种方式构建的系统明显比它们在发布时更好 - 相同的模型,只是配置更好。

如果你只以交互方式使用 Claude,那么你就是在浪费价值。考虑一下在你的工作流程中,Claude 可以在没有你观看的情况下运行。

总结

在打字之前先思考。计划会产生比仅仅开始说话好得多的结果。CLAUDE.md 是你的杠杆点。保持简短、具体,告诉它原因,并不断更新。这个单一文件会影响每一次交互。

上下文在 30% 时会降级,而不是 100%。使用外部存储器,限定对话范围,不要害怕使用复制-粘贴重置技巧来清除和重新开始。

架构比任何事情都重要。你不能跳过计划。如果你不首先考虑结构,输出会很糟糕。

输出来自输入。如果你使用一个好的模型得到糟糕的结果,那么你的提示需要改进。在沟通方面做得更好。

尝试工具和配置。MCP、Hook、斜杠命令。如果你为 Pro Max 付费,请尝试所有功能。即使事情第一次不起作用,也要保持好奇心。

当卡住时,改变方法。不要循环。清除、简化、展示、重新构建。

构建系统,而不是一次性任务。无头模式、自动化、随着时间的推移记录改进。

如果你正在使用 Claude 进行构建 - 无论是你自己的项目还是生产系统 - 这些因素决定了你是在与工具作斗争还是顺应工具。

  • 原文链接: x.com/i/status/201007695...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Eyad
Eyad
江湖只有他的大名,没有他的介绍。