你的 claude.md 设置让 AI 编程效率降低了 99%

AAI LABS
컴퓨터/소프트웨어경영/리더십AI/미래기술

Transcript

00:00:00仅仅一个文件就能决定你得到的最终实现
00:00:04是否真的是你所需要的。
00:00:05对于 Claude Code 用户来说,这个文件是 claud.md,其他工具有它们自己的文件,但最常见的是
00:00:10使用 agents.md。
00:00:11但无论你使用哪一个,除非你进行了正确的设置,否则你会在每一个任务上
00:00:15与你的智能体不断博弈。
00:00:17如果你认为运行一个简单的初始化命令就足够了,那你就
00:00:20大错特错了。
00:00:21你需要遵循针对项目定制的结构化模式,这样才能使你的智能体
00:00:26表现更好。
00:00:27因此,我们从其他可靠来源以及我们自己使用 Claude Code 的实践中
00:00:31整理出了最佳实践,你可以将它们直接应用到
00:00:35你的工作流中。
00:00:36最后一点非常重要,因为它决定了你的智能体如何遵循你的指令,
00:00:41如果不遵循这一点,文件中的其余指令也不会产生多大影响。
00:00:45你需要添加到 claud.md 文件中的第一件事,直接来自于
00:00:49Andrej Karpathy 的技能代码库,其中包含了关于 claud.md 的最佳模式。
00:00:54你需要明确指令 Claude 在编码前先进行思考。
00:00:58这能让 Claude 明确表达出它的假设。
00:01:01如果存在多种解读方式,它应该把它们全部列出来,以便我们能从中
00:01:05选择合适的实现方案。
00:01:07这促使 Claude 在真正着手编写代码之前,从不同的角度进行思考,
00:01:11从而进入解决方案的实现阶段。
00:01:12这确保了它实现的解决方案与你的预期保持一致。
00:01:15这一行指令减少了工作流中大量的纠偏工作,这就是为什么我们觉得它
00:01:20非常有帮助。
00:01:21加上这条指令后,每当你要求 Claude 实现一个功能时,它基本上
00:01:25会针对你给出的任务提出一系列相关问题,以便你的回答能指导它
00:01:29如何准确地完成任务。
00:01:31这一部分特别有用,因为这样 Claude 就不会只凭猜测去实现,
00:01:35也不会直接套用它从训练数据中记住的模式去强行执行。
00:01:39它会深思熟虑什么是正确的实现方式,并与你确认那是否是
00:01:43你预期的方案,然后再去完成该功能,而不是盲目地
00:01:48猜测,导致你不得不打断 Claude,因为它没有遵循你心目中
00:01:52正确的实现方式,而这种情况发生得太频繁,要求你进行
00:01:56大量的纠偏。
00:01:57下一个原则是选择“简约优先”。
00:01:59这个原则听起来很简单,但依然需要明确写入 claud.md,以便
00:02:04智能体能时刻铭记这一原则。
00:02:07Claude 或任何其他智能体往往会为可以用简单方法解决的问题,写出庞大的解决方案。
00:02:11但这样做不仅会导致开发延误,还是个麻烦。
00:02:12这也使得后续的代码重构变得困难,甚至更难添加新功能,因为
00:02:15实现过程过于冗长,以至于在实现简单功能时消耗了大量的 Token。
00:02:19所以,这一行指令实际上是在推动 Claude 趋向于简约。
00:02:24我们在每个项目中都会加入这一条,尤其是在处理大型应用时,因为
00:02:27在那种规模下,这样做显得尤为重要。
00:02:32这专门告诉 Claude 不要添加任何不必要的额外功能,并确保
00:02:35针对该实现提供适当的错误处理。
00:02:39围绕它建立的纪律性框架基本上是一道硬性门槛。
00:02:41如果某个问题的解决方案可以用 200 行代码完成,但本来可以重构到 50 行,
00:02:44那么 Claude 就需要重新编写该方案,因为它的方法选错了。
00:02:49这实际上将防止 Claude 编写大量无用的冗余代码,并处理
00:02:54那些根本无法实现的内容,从而纠正 Claude 选错的方向。
00:02:58Claude.md 的第三部分是实施“外科手术式”的修改,简而言之,就是只触碰
00:03:03智能体绝对必须触碰的部分。
00:03:08这解决了我们在 Claude 一次编写大量代码时经常面临的一个问题,即需要
00:03:11在 claud.md 文件中明确说明修复范围。
00:03:15Claude 或一般的智能体在接到一个任务时,倾向于尝试去改进
00:03:19该任务周围的其他部分。
00:03:24这些改进可能看起来像是相邻的代码修改或者对代码库进行格式化,而
00:03:25我们目前实际上并不希望它关注这些。
00:03:29但这很烦人,因为 Claude 的注意力会被分散在它试图同时实现的多个内容上。
00:03:32包含这类修改是不好的,因为 Claude 实际上是在加入我们当下并不希望它做的事情。
00:03:36因此,我们需要在 claud.md 中明确写下不准这样做的指令。
00:03:37如果智能体发现了任何无关的冗余代码,它应该指出而不是自己直接去修复它。
00:03:41有时候这些代码存在是有特定原因的,这些问题应该在稍后阶段解决,
00:03:43而不是在应用程序当前的阶段。
00:03:47让 Claude 决定如何正确行事的思维框架是检查每一处改动,
00:03:52看看它是否真正追溯到了用户所要求的任务。
00:03:56如果确实如此,那么它就应该进行该修改。
00:03:58如果并非如此,它就不应该触碰那个功能。
00:04:03如果添加了这一行,那么无论 Claude 在实现上有任何问题,它基本上
00:04:06只会修改用户要求它修复的部分。
00:04:08因此,它会告诉你它在同一个文件中发现的所有其他问题,你可以从那里
00:04:10决定是否确实希望它修复那些问题。
00:04:14最后一个从 Andrej Karpathy 那里提炼出来的模式是“目标驱动式执行”。
00:04:17智能体不知道正确的输出看起来应该是什么样,这是核心问题。
00:04:21如果它们知道,工作效率会高得多,而这正是该规则所修复的问题。
00:04:24在 claud.md 文件中,我们需要明确指令 Claude 为我们交给它的每个任务定义成功标准。
00:04:29因此,对于我们交给它的任何任务,Claude 都需要将其转化为一个可验证的目标。
00:04:33例如,如果你给它一个添加验证的任务,它会为无效输入编写测试,
00:04:36并确保这些测试用例在正确的输入下确实能返回正确的值。
00:04:41所以整个想法是让智能体实现测试用例,然后迭代直到所有
00:04:43测试用例通过,最终项目表现出我们所需要的正确行为。
00:04:47如果你给它任何任务的提示,它就会设定可验证的目标并规划实现方案。
00:04:52然后它会通过添加所有测试用例并展示它将如何
00:04:57从本质上处理整个应用程序,来为你验证工作。
00:05:01这种方法在逻辑推理上有效,但如果你想让智能体验证你的
00:05:06UI 界面看起来如何,智能体是无法为此编写测试用例的。
00:05:11所以对于这一点,你可以添加 Claude Chrome 扩展程序或 Puppeteer MCP,以便它可以使用这些工具
00:05:15来验证 UI 的视觉效果。
00:05:17这很有帮助,因为仅靠看代码很难判断 UI 的变化,赋予
00:05:21智能体一种可验证的方法来观察当前应用的视觉表现,然后利用它来修复
00:05:23界面问题。
00:05:28因此,你可以明确添加一行指令,让它知道 UI 实现完成后,
00:05:30它还需要通过 MCP 验证结果。
00:05:35如果你是通过 Claude Code 的 init 命令创建的 claud.md 文件,你会发现
00:05:40它添加了运行开发服务器和构建服务器的命令。
00:05:41但这些已经在它的训练数据中了,Claude 已经知道这些命令,
00:05:45我们不需要在 claud.md 中浪费行数去告诉它它已经知道的东西。
00:05:48所以在你的文件中,你只需要提到你想要 Claude 使用的工具,而不是它默认使用的那些。
00:05:53有些 CLI 工具能让工作流变快,但并不在 Claude 的默认训练数据中,
00:05:57或者是它已经依赖的模式中。
00:06:01因此,你必须明确添加那些工具,以便 Claude 知道它们已安装,
00:06:05而不会一直回退到它自己默认使用的工具上。
00:06:09例如,如果你安装了 github cli 而不是使用 git 进行工作,你可以在 claud.md 中
00:06:11添加指令,要求它使用该 cli 而不是默认的 git 命令来执行
00:06:16所有操作。
00:06:18同样,你可以添加更多非默认的命令。
00:06:22你还需要在此文件中添加项目的运行指令,如果它们与
00:06:26通常的指令不同的话。
00:06:30例如,大多数默认设置的项目都是通过 npm 运行的,如果你的项目是通过
00:06:36pnpm 运行的,你需要添加此信息,以便智能体知道实际上需要
00:06:37运行哪些命令。
00:06:41除了 Claude 已经知道的命令之外,其他任何内容都不应该包含在 claud.md
00:06:45文件中。
00:06:46claud.md 中的下一个建议受到 Claude Code 创建者的启发,以及他所揭示的
00:06:51工作流。
00:06:56他谈到 claud.md 并不是一个“写一次用一生”的文件。
00:06:57它是一个需要不断更改、更新和改进的内容,作为构建过程的一部分,
00:07:01它是一个需要不断迭代的持续过程。
00:07:02因此,你需要添加一条指令:如果用户不得不告诉 Claude 它的实现
00:07:07不正确,它应该首先应用用户指出的更正。
00:07:08一旦 Claude 应用了这些更正,它还应该将这些经验教训添加到专门的
00:07:12文件中,以便 Claude 可以逐渐建立一个知识库,记录它不应该做什么
00:07:16以及正确的做法是什么,它可以根据需要随时参考。
00:07:20但在我们继续之前,让我们听听赞助商的消息。
00:07:25Klaus,你可能听说过 AI 智能体。
00:07:29也许你尝试过自己设置一个,但 15 分钟后,你就盯着终端发呆,
00:07:33把 API 密钥粘贴到配置文件里,想知道自己是不是泄露了什么重要信息。
00:07:38Klaus 省去了所有这些麻烦。
00:07:42Klaus 运行的是 OpenClaw,这是一个运行在云端的开源 AI 智能体。
00:07:45注册后,你将获得 15 美元的 Open Router 积分并开始提问。
00:07:47不需要终端,不需要 Docker,也不需要进行 API 密钥大搜索。
00:07:51我通过要求 Klaus 抓取一个创业目录,将结果整理成表格
00:07:56并通过电子邮件发送给我来进行测试。
00:07:57聊天窗口发一个指令,就完成了。
00:08:00无需代码,无需浏览器扩展。
00:08:04它自带了像 Exa 和 Apollo 这样的内置工具,并且可以连接到 Slack、WhatsApp,甚至
00:08:07iMessage。
00:08:12所有操作都在一台防火墙保护的机器上运行,与你的个人账户完全隔离。
00:08:13如果出了问题,他们的自动修复智能体 Clawbert 会为你打补丁,无需你动手。
00:08:15点击置顶评论中的链接,免费试用 Klaus。
00:08:17由于大多数编码项目都是通过 Git 管理的,你需要明确添加一条指令
00:08:21在 claud.md 中,明确 Claude 不应在未经确认的情况下运行不可逆的命令。
00:08:22如果需要运行此类命令,智能体必须首先请求权限。
00:08:27这些命令很危险,因为一旦执行,后果无法挽回,
00:08:31并且它们可能会破坏生产环境。
00:08:35比如强制推送 (force pushing)、重置 HEAD (resetting the head)、合并分支或执行强制删除
00:08:39命令。
00:08:44你还需要添加一条指令:如果 Claude 不确定某个命令是否具有破坏性,
00:08:48它应该询问而不是擅自做主。
00:08:53这将为你省去很多麻烦。
00:08:55例如,如果 Claude 不小心试图合并一个你不希望它合并的分支,
00:09:00它会在操作前请求许可,然后你可以拒绝它,从而确保你的工作
00:09:01安全无虞。
00:09:04没有必要把所有方面的信息都塞进一个 claud.md 文件里,因为那样只会
00:09:07造成不必要的冗余,分散智能体对真正核心任务的注意力。
00:09:08因此,你需要创建基于路径的作用域规则文件,并在第一行声明其作用域,
00:09:12并包含针对那些具体文件的指令。
00:09:16你还需要在 claud.md 中提到这些文件的位置,以便 Claude 知道它们存在。
00:09:17例如,如果你希望 Claude 在编写 API 时遵循某些具体指令,
00:09:22你可以为它们添加一个规则文件,这样当 Claude 在处理它们时,它可以加载
00:09:27这些指令并直接使用它们。
00:09:31但同样重要的是,这也确保了与 API 相关的指令不会在 Claude
00:09:34不在处理它们时产生干扰。
00:09:40你可以为项目的不同部分拥有多个规则文件,每个文件都包含
00:09:44针对该特定领域的指令。
00:09:48这样,Claude 只有在处理该部分时才会加载相关的指令。
00:09:50因此,它能防止上下文臃肿,使智能体专注于当前任务,而不是
00:09:55被不相关的规则分散注意力。
00:09:56大多数大型应用都在单体仓库 (mono repo) 中,这是一个庞大的仓库,
00:10:00所有的不同组件都放在一起,每个文件夹都充当一个独立的部分,
00:10:02每个部分都被独立管理,同时为主要应用程序的不同方面做出贡献。
00:10:06所以如果你在一个单体仓库中运行项目,你需要确保每个子
00:10:11仓库都包含自己的 claud.md 文件,这样它才能包含特定于
00:10:13它自己的指令,而不必仅仅依赖全局 claud.md 中的指令。
00:10:18全局文件应该只包含广泛适用于系统所有部分的指令。
00:10:22但是基于作用域的 claud.md 文件效果更好,因为它们可以包含特定于
00:10:27该特定应用程序或模块的指令。
00:10:28这使得智能体的表现更好,因为它将拥有更专注的引导。
00:10:32因此,把所有大型项目的指令都放在主文件中是错误的举措。
00:10:37这会让文件充斥着信息,当 Claude 经过与当前任务无关的指令区域时,
00:10:42它可能会导致注意力分散,偏离它真正需要做的事情。
00:10:47另外,如果你喜欢我们的内容,考虑点击“点赞”按钮,因为它有助于我们
00:10:48创作更多类似内容,并让更多人看到。
00:10:52你还需要在 claud.md 文件中添加项目描述,并确保此
00:10:54指令放置在文件的最开始,而不是埋在其他指令中。
00:10:58因为智能体通过首先阅读它,就能获得整个应用的核心概要。
00:11:02所以它从一开始就能理解应用的结构、它的功能、
00:11:07不同的服务和依赖项是什么,以及应用是如何运行的。
00:11:11通过这种方式,它从一开始就知道,而不是靠查看代码来推断
00:11:12应用的功能。
00:11:16我们在 claud.md 文件中需要添加的另一个部分是:Claude 不仅需要验证
00:11:19该功能是否存在,还要在报告任何任务为完成之前,验证它是否按预期正常工作。
00:11:24它应该使用所有可用的验证机制来确认构建和测试正常通过,
00:11:29但这部分的重点是通过真实的验证步骤来确保任务真正完成,
00:11:30而不是仅仅检查该功能的代码是否存在。
00:11:33因此,这条指令促使 Claude 更忠实地报告工作,并使用多种
00:11:38检查方式,如单元测试、linting 和类型检查,以确保应用是正确实现的,
00:11:41并按预期工作。
00:11:45最后但同样重要的是,你在 claud.md 文件中排列指令的顺序也
00:11:46对于确保智能体的高性能非常重要。
00:11:50你必须按优先级对它们进行排序。
00:11:55第一条指令应该是硬规则,意味着绝对不可协商,没有任何例外。
00:11:57这些硬规则应该始终放在首位,在任何其他规则之前。
00:12:02然后是中等优先级的规则,它们不如前一条规则那么严格。
00:12:07它们在一定程度上可以协商,但仍然很重要,不应被违反。
00:12:11之后是低优先级的指令,主要包括参考资料和便利性建议,
00:12:15这样智能体就不需要回过头来将这一部分作为核心决策源。
00:12:20另外一个重要事项是,你需要确保 claud.md 文件保持简短。
00:12:23最佳实践是将其严格限制在 300 行以内,这被认为是
00:12:27智能体表现的最佳状态。
00:12:29一旦超过这个长度,性能就开始下降。
00:12:31这里提到的 claud.md 文件和此处提到的所有其他资源都可以在
00:12:36AI Labs Pro 中为本视频获取,你也可以从我们之前的所有视频中下载
00:12:37并将其用于你自己的项目。
00:12:40如果你觉得我们所做的事情有价值,并想支持该频道,这是最好的
00:12:44方式。
00:12:48链接在描述栏里。
00:12:52视频到这里就结束了。
00:12:57如果你愿意支持本频道并帮助我们继续制作这样的视频,你可以
00:13:01通过点击下方的“超级感谢”按钮来做到这一点。
00:13:06一如既往,感谢您的观看,我们下一期再见。
00:13:07但一旦超过这个长度,性能就开始下降。
00:13:10这里提到的 claud.md 文件和此处提到的所有其他资源都可以在
00:13:15AI Labs Pro 中为本视频获取,你也可以从我们之前的所有视频中下载
00:13:20并将其用于你自己的项目。
00:13:21如果你觉得我们所做的事情有价值,并想支持该频道,这是最好的
00:13:25方式。
00:13:26链接在描述栏里。
00:13:27视频到这里就结束了。
00:13:29如果你愿意支持本频道并帮助我们继续制作这样的视频,你可以
00:13:33通过点击下方的“超级感谢”按钮来做到这一点。
00:13:35一如既往,感谢您的观看,我们下一期再见。

Key Takeaway

通过将 claud.md 文件限制在 300 行内并采用按优先级排序的结构化指令,配合强制思考、目标驱动式执行和基于作用域的规则文件,可以大幅提升 AI 编程智能体的执行准确率。

Highlights

  • 在 claud.md 中明确指令 Claude 在编码前先进行思考,能够显著减少工作流中的纠偏次数。

  • 将 claud.md 文件严格限制在 300 行以内,能确保智能体维持最佳性能。

  • 引入简约优先原则并硬性限制代码行数,防止 Claude 编写大量无用的冗余代码。

  • 要求 Claude 在运行不可逆的 Git 命令(如强制推送、重置 HEAD)前必须获得用户明确权限。

  • 为项目的不同子部分创建基于路径的作用域规则文件,能有效防止上下文臃肿并提升智能体专注度。

  • 项目描述指令必须放置在 claud.md 文件的最开始,以确保智能体从一开始就掌握应用架构的核心概要。

Timeline

强制思考与简约优先原则

  • 指令 Claude 在编码前先列出假设并进行思考,以确保实现方案与用户预期一致。
  • 将简约优先原则明确写入规则文件,强制智能体寻找最高效的实现方式而非编写冗余代码。
  • 针对超过 200 行的可重构方案实施硬性门槛,要求智能体重新编写直至精简。

通过要求 Claude 明确表达思考过程,可以减少盲目套用训练模式导致的偏差。明确简约原则能避免因实现过程过于冗长而消耗大量 Token,并简化后续代码重构难度。

外科手术式修改与目标驱动执行

  • 通过指令禁止智能体对任务范围之外的代码进行格式化或相邻修改。
  • 强制 Claude 将任务转化为可验证的测试目标,利用测试用例通过与否作为任务完成的标准。
  • 在 UI 验证任务中引入 Puppeteer MCP 等外部工具,以解决纯代码逻辑无法验证视觉效果的问题。

为了防止智能体在任务之外进行无关修改,必须限制其修复范围。目标驱动式执行要求智能体在编码前设定清晰的成功指标,通过测试用例驱动开发,确保代码行为符合预期。

工具配置与交互安全规范

  • 在配置文件中仅列出非默认工具及运行指令,避免干扰智能体已知的训练数据。
  • 建立持续迭代机制,要求 Claude 在应用更正后将经验记录到知识库中。
  • 严格限制不可逆命令的执行,任何涉及强制推送或删除的操作必须请求用户许可。

智能体无需重复学习已知的标准开发工具。为了保障生产环境安全,必须设立硬性规则以拦截危险命令。同时,将更正措施纳入知识库有助于智能体在后续任务中避免重复错误。

作用域规则与指令优先级管理

  • 为大型项目使用基于路径的作用域文件,确保 Claude 只加载当前任务所需的上下文指令。
  • 必须将硬性不可协商规则放置在 claud.md 的首位,并根据优先级依次排列其他规则。
  • 将项目整体描述置于文件起始位置,以便 Claude 在处理任务前快速构建应用认知。

通过将全局指令与局部作用域指令分离,可以有效减轻智能体的认知负荷。将规则严格按照优先级排列并限制文件总长度在 300 行以内,是维持高水平工程表现的关键工程化手段。

Community Posts

View all posts