我使用了 Claude Code 超过 2000 小时 - 这是我如何用它构建任何东西的秘诀

CCole Medin
Computing/SoftwareAdult EducationInternet Technology

Transcript

00:00:00Claude Code 于去年 5 月 22 日正式发布,同时推出的还有 Claude 3.5。
00:00:06但在那之前还有一个研究预览版,所以我使用这个工具
00:00:11已经一年多了。我实际计算了一下,
00:00:15如果算上我提示 Claude、审查代码和监控的所有时间,我使用这个工具的时间
00:00:21已经超过 2000 小时了。所以,我确实有些经验可以教给你。这就是我在这段视频中想做的。
00:00:27现在,我想和大家分享我所有的实战策略,它们将带你
00:00:31从一名初级 Claude Code 用户成长为一名高级用户。我把所有内容打包成了
00:00:37我称之为 WISC 的框架。重点是,这些策略非常靠谱。我不是那种
00:00:43在过去几个月里才开始跟风使用 Claude Code 的 AI 内容创作者。就像我说的,
00:00:48我每天使用这个工具已经一年多了。因此,这些策略将适用于
00:00:54任何代码库,甚至是庞大的代码库,或者是包含多个代码库的项目。我已经看到这些策略
00:01:00在企业级项目中得到应用,所以无论你在做什么,这都适合你。这也
00:01:05适用于任何 AI 编程助手。我只是把重点放在 Claude Code 上,因为它是目前最好的。
00:01:10我假设你已经对 Claude Code 有了初步的了解,现在
00:01:15想要进阶。如果你想了解构建 AI 编程系统的基础知识,
00:01:21我会在这里链接一段相关的视频。我们所有的这些策略,
00:01:25都是为了处理那些变得杂乱的真实代码库,因为我们有一系列关于
00:01:32上下文管理的策略。这非常重要,因为“上下文腐烂”是目前 AI 编程助手
00:01:38面临的最大问题。即便 Claude Code 现在有了 100 万令牌的限制,我们
00:01:43仍然需要将上下文视为最宝贵的资源,必须在使用 AI 编程助手时对其进行精心设计。
00:01:49WISC 框架中的 W、I、S 和 C,所有的这些策略
00:01:56都围绕这一点展开,这些都是你可以立即应用到项目中的方法。
00:02:00我会在这里为大家讲解得简单明了。现在,你可能会问,
00:02:05“Cole,为什么我们要如此关注上下文管理?在使用 Claude Code 超过 2000 小时后,
00:02:11这就是你想关注的重点吗?”我的回答是:没错。我知道这非常具体,
00:02:17但我们现在需要直面上下文腐烂以及如何避免它。我甚至敢说,
00:02:23大约 80% 的情况下,当你的编程智能体在代码库中出错时,都是因为
00:02:28你没有管理好上下文。所以,我想从上下文腐烂的问题开始谈起,
00:02:33然后很快就会进入实践环节,深入探讨 WISC 框架的每一部分。但我首先想
00:02:38以上下文腐烂作为前序,这样你就能真正明白其中的原因。一旦你应用了 WISC 框架,
00:02:45即使是在杂乱的代码库上,你也能立即看到 AI 编程可靠性的飞跃。
00:02:50我一直强调更大、更杂乱的代码库,是因为在这些地方,上下文腐烂
00:02:56会成为一个越来越严重的问题。现在,行业内关于上下文腐烂
00:03:02已经有了很多研究,但我最喜欢、也是最实用且最流行的一份报告,是 Chroma 的
00:03:07技术报告,探讨了增加输入令牌如何影响大语言模型的性能。其中的核心观点
00:03:13就是,仅仅因为你可以把一定数量的令牌塞进大语言模型的上下文窗口中,并不意味着
00:03:18你应该这样做。是的,这也适用于具有 100 万令牌限制的新版 Claude Code。
00:03:24因为大语言模型和人一样,会被海量的信息淹没。这被称为
00:03:30“大海捞针”问题。当你有一条非常具体的信息,或者对于编程智能体来说,
00:03:35有一份它读过的、需要它回忆的特定文件时,它能很好地从短期记忆中
00:03:41调取出那条信息,但前提是你的上下文窗口没有被塞得满满当当。
00:03:47当你开始加载海量的上下文时,就会出现所谓的
00:03:52“干扰项”。这些信息与你需要大语言模型回忆的内容很接近或很相似,
00:03:58但并不完全准确。我们在 AI 编程中经常看到这种情况,特别是在大型代码库中。
00:04:04我们在整个代码库中遵循相同的模式,代码的不同部分
00:04:09在实现方式上有很多相似之处。因此,大语言模型会提取错误的信息,
00:04:14却对自己的修复或实现方案充满信心。我相信你一定经常遇到这种情况。
00:04:19这种“大海捞针”的问题在 AI 编程中无处不在。
00:04:24这就是上下文腐烂的概念。窗口越大,大语言模型
00:04:30就越难在当前与编程智能体的交互中,准确提取出我们需要的内容。
00:04:36回到图表,让我说得更具体一些。我们要通过
00:04:42这些策略解决的问题是:如何让我们的上下文窗口保持尽可能精简,
00:04:48同时又能给编程智能体提供它所需的所有上下文?这就是我们在这里
00:04:53要做的“上下文工程”。我会讲解每一个策略。
00:04:57我甚至为每个策略都准备了一个例子,我会带你在复杂的代码库中进行实操,
00:05:02我作为示例使用的所有命令、规则和文档,都放在这个文件夹里,
00:05:06我会把链接放在描述区。这样你不仅能从概念上理解这些策略,还能参考
00:05:12我在这个 .claude 文件夹里的这些示例命令。好了,让我们深入了解具体的策略吧。
00:05:17W 代表写入 (Write),I 代表隔离 (Isolate),S 代表选择 (Select),C 代表压缩 (Compress)。
00:05:24我们首先从 W 开始,也就是写入,将智能体的记忆外置化。
00:05:30我们要尽可能捕捉关键决策和智能体一直在处理的内容,
00:05:34以便在未来的会话中,让智能体能更快地进入状态,从而花费更少的
00:05:40初始令牌让智能体理解我们的真实需求。所以,第一个策略
00:05:46是将 git log 用作长期记忆。我非常喜欢这个方法,因为
00:05:52有很多人喜欢过度设计,为他们的编程智能体构建超级复杂的记忆框架,
00:05:56但实际上每个人都已经在用 git 和 GitHub 进行版本控制了。因此,我们可以
00:06:01利用已有的工具来为智能体提供长期记忆。让我们
00:06:07进入代码库,我给你们演示一下。在接下来的所有示例中,我将使用
00:06:12全新的 Archon 平台作为代码库。过去几个月我一直在幕后拼命完善它。
00:06:18这是你的 AI 指挥中心,你可以在这里创建、管理和执行更长周期的
00:06:23AI 编程工作流。我们甚至正在开发一个工作流构建器,它就像是 AI 编程界的 n8n。
00:06:28我们可以启动工作流,在任务控制中心查看并监控日志。
00:06:33我们可以查看过去的运行记录,了解到底发生了什么。例如,这是一个非常长的
00:06:39工作流,用于验证我代码库中的整个拉取请求 (PR)。所以,你可以从
00:06:44Archon 的演示中看出(顺便说一下,更多功能即将推出),
00:06:47这里有很多移动部件。这是一个非常复杂的代码库。所以,
00:06:51它非常适合作为我接下来要讲的所有策略的示例。
00:06:57说到将 git 作为长期记忆,我在这里给你们展示一个
00:07:03查看所有近期提交信息的单行命令示例。我想强调的是,
00:07:09我们有一种非常标准的方式来创建这些提交信息。这里有合并记录,也有
00:07:13功能实现和修复记录。我之所以把这些内容标准化,是为了
00:07:19让编程智能体通过提交信息了解我最近的工作内容,因为很多时候
00:07:24这些信息会引导我们接下来的工作。我之所以能让它
00:07:29如此标准化,是因为我运行了一个提交 (commit) 命令。虽然运行 git commit 很简单,
00:07:36但如果我们想让信息标准化并让编程智能体协助我们,
00:07:40使用特定的命令会非常强大。我在这里与编程智能体在同一个上下文窗口中
00:07:46完成了整个功能的实现。现在已经到了最后阶段,我准备进行提交。
00:07:51我只需要输入 /commit 即可。它会运行这个命令,其中包含了
00:07:55我记录所有工作的标准化规范。此外,还包括我对规则或命令进行的任何改进。
00:08:01所以这是一个分为两部分的命令:‘这是我们构建的内容’,‘这是我们如何改进 AI 层的’。
00:08:06它会自动生成提交信息,稍后我给你们看看效果。
00:08:10好了。现在看看我们的提交信息,可以看到我们对 CLI 进行了一些测试改进。
00:08:14前缀非常清晰,接着是详细内容。此外,为了让编程智能体
00:08:19知道它自己的规则和命令是如何随时间演进的,每当我们发现改进机会时,
00:08:23我们都会在提交信息中包含这些内容,比如我们的 plan 命令。当然,
00:08:29这个 commit 命令也是我为你提供的仓库资源之一。如果你想以此
00:08:33为起点,我也非常鼓励你自定义你的提交信息格式。
00:08:37最重要的一点是:我们要标准化信息。我们要让它尽可能详细,以便用作长期记忆。
00:08:41第二个‘写入’策略是:在编写任何代码之前,
00:08:47始终开启一个全新的上下文窗口。无论我处理什么任务,
00:08:53我的工作流总是:先和编程智能体进行一次对话来制定计划。我会创建一个
00:08:57包含结构化计划的 Markdown 文件。然后,我会将该文件作为唯一上下文
00:09:03发送给执行实现的全新会话。因此,你的规格说明 (spec) 必须包含
00:09:08智能体编写代码和进行验证所需的全部上下文。例如,在这次对话中,
00:09:14我只做规划。我会先运行 prime 命令启动。稍后我会详细解释。
00:09:18我加载上下文,然后用这个命令创建计划。这是我为你提供的
00:09:24另一个资源。它本质上是引导编程智能体:‘这是我们想要为
00:09:28单一 Markdown 文档创建的精确结构。’将我们的短期记忆
00:09:33整合到一个文档中。然后我们结束当前会话。进入一个新的上下文窗口
00:09:38并开始实施。我运行我的 execute 命令。然后我可以在这里
00:09:42指定结构化计划的路径。不需要其他上下文,因为这个文件已经包含了
00:09:48它所需的一切。这非常重要,因为它能让编程智能体极度专注于当前任务。
00:09:53如果我们在做规划的同一个地方进行实施,会有很多调研信息和其他杂事干扰上下文窗口。
00:09:57关于外置化智能体记忆,我最后的一个‘写入’策略是进度文件和决策日志。
00:10:03在更复杂的 AI 编程框架中,你经常会看到这类东西,比如 handoff.md 或 todo.md,
00:10:08用于在不同的子智能体、智能体团队,甚至只是不同的智能体阶段之间进行沟通。
00:10:13当你的上下文快用完时,你通常需要创建一份已完成工作的摘要。
00:10:17这样你就可以开启一个新的会话,因为你开始发现由于对话过长,
00:10:22智能体开始出现上下文腐烂并产生幻觉。显然,理想的做法是
00:10:27尽量避免这种长对话,但有时你确实需要。例如,我在开发 Archon 时经常做的一件事是,
00:10:33让它使用 Vercel agent browser CLI 在浏览器中执行端到端测试。
00:10:38我会让它走完一堆不同的用户旅程并测试边缘案例。这会消耗
00:10:44大量上下文。你可以看到底部,我运行了 /context 命令,我们已经用掉了 20 万令牌,
00:10:49而上限是 100 万。这很快就会填满。一旦上下文窗口中有了
00:10:56几十万个令牌,你就会发现智能体的性能开始下降。所以,
00:11:01我只需运行 /handoff。这个命令会创建一个摘要,现在可以将其传递给
00:11:05另一个会话,让那个智能体继续工作。但现在它的窗口里没有
00:11:11成千上万个工具调用之类的东西。这个 handoff 命令其实就是
00:11:16引导一个过程:‘这是我们要在文档中放入的内容。’这样下一个
00:11:21智能体就有了它所需的信息。好了,W 部分就讲完了,其中的每一项策略
00:11:25都至关重要,因为我们在记录关键决策,以便后续的智能体会话能快速接手。
00:11:31我知道我讲得很快。所以,如果有哪些策略
00:11:36你想让我专门做一段视频来讲解,请在评论区告诉我,因为每一项都值得深挖。
00:11:40现在我们进入 I 部分,即隔离 (Isolate),使用子智能体。我非常喜欢在调研中使用子智能体,
00:11:45几乎每个会话都会用到。关键点在于
00:11:52保持主上下文的整洁。我们可以利用子智能体在代码库或网络上进行
00:11:56数万甚至数十万令牌规模的调研。然后只将所需的摘要
00:12:03提供给我们的 Claude Code 主上下文窗口。与其将数万令牌的调研内容
00:12:10加载到主上下文窗口中,现在它可能只有 500 个令牌。这样我们仍然能获得核心信息,
00:12:16但根据 Anthropic 的一些研究,使用子智能体预加载调研上下文,
00:12:21而不是让主智能体处理一切,其性能提升了 90.2%。
00:12:28让我给你们举个例子。通常是在对话开始时,
00:12:33或者在我之前提到的结构化计划之前,也就是规划阶段。那是
00:12:38我大量使用子智能体的时候。看好了:我想在 Archon 中内置一个工作流构建器。
00:12:43所以我希望你启动两个子智能体,一个负责对代码库进行广泛研究,看看
00:12:50我们该如何构建工作流构建器,以及这对 Archon 意味着什么;然后启动另一个子智能体
00:12:55在网上研究技术栈的最佳实践。比如如果我想用 React,
00:13:01我们应该用哪个库?通常我们该如何构建像 Diffy 或 n8n 这样的工作流构建器?
00:13:06我在这里使用了我的文字转语音工具。发送提示词。搞定。
00:13:12这样我们不仅获得了隔离的好处,还提升了速度,因为它会并行运行这些子智能体,
00:13:16带回摘要,然后我的主智能体将汇总所有内容并给我最终结论。
00:13:21好了。两个子智能体都在后台并行运行。我们也可以
00:13:26查看每一个智能体的日志。等它们完成后,它就会带着
00:13:31最终报告回来。好了,子智能体运行结束了。我们的主上下文窗口本来可能要消耗
00:13:36几十万个令牌(那是子智能体调研的规模),
00:13:41但现在我们只使用了 44,000 个令牌,仅占窗口的 4%。这就是子智能体的威力。
00:13:46我不建议在实施阶段使用子智能体,因为通常你需要所有的实施细节。
00:13:53但在调研阶段,它非常强大。所以,隔离和子智能体对于你的规划
00:13:57过程非常重要。另一种使用子智能体的方法,是我称之为‘侦察兵模式’。
00:14:04在提交主上下文之前,先派侦察兵去打探。你的代码库或文档中
00:14:09可能有一些部分,你希望子智能体先去探索,看看是否有必要
00:14:14将其加载到你的主 Claude Code 会话中。它可以提前做出决定,
00:14:21比如:‘是的,我们需要把这个加入到更大规模的规划中’,或者‘不,这个不相关,跳过它’。
00:14:25例如,对于 Archon,我有几个 Markdown 文档对代码库的某些部分进行了深入探讨,
00:14:30这种内容我们不希望放在全局规则里,因为平时用不到。但有时
00:14:36你可能需要加载它。你可以想象这是存放在 Confluence 或 Google Drive 上的东西,
00:14:41也就是任何你存储上下文的地方。回到主对话中,
00:14:45我可以简单地说:启动一个子智能体去研究 .claude/docs 里的所有内容。
00:14:48这里是否有任何文档是我们在主上下文规划中需要加载的?
00:14:54我发送这个指令,它会做出判断,然后加载我关心的内容。就在刚才,
00:14:59我们启动了一个探索子智能体。它找到了所有的文档,并建议加载其中一个。
00:15:04我说:好的,加载它。这对我们正在规划的内容非常重要。
00:15:09所以,子智能体不仅可以做调研,有时当我们认为某些文档
00:15:13对主上下文窗口至关重要时,也可以利用侦察兵模式。以上就是隔离的全部内容。
00:15:18记住,要广泛地在调研和规划中使用子智能体。现在
00:15:23我们进入 S 部分,即选择 (Select)。要做到‘即用即取’,而不是‘以防万一’。
00:15:28我的意思是,如果你不能 100% 确定某条信息对你现在的编程智能体很重要,
00:15:34那就不要费心加载它。我们有一种分层方法来辅助实现这一点。
00:15:40首先是我们的全局规则。这些是我们始终希望编程智能体意识到的
00:15:46约束和约定。这个文件要保持简洁,
00:15:51我通常会控制在 500 到 700 行之间。很多人甚至主张更短,
00:15:57但里面要包含架构、运行命令、测试和日志策略等内容。
00:16:02这是我从 Archon 中提取的例子,但这些是你想让编程智能体时刻了解的内容。
00:16:08然后是第二层:我称之为‘按需上下文’。
00:16:12这些规则仅适用于代码库的特定部分。比如如果我们正在处理前端(虽然并不总是如此),
00:16:18如果是,那么这里有前端的全局规则,或者构建 API 端点的全局规则。
00:16:23因此,我们会针对特定的任务类型,在全局规则的基础上添加这些内容,
00:16:28因为我们并不总是会处理前端任务。举个例子,
00:16:33我们有刚才探索子智能体提取的工作流 YAML 参考文件。当我们处理工作流时,
00:16:38我们才需要它。但我们不想把它放在全局规则里,因为大部分时间
00:16:43我们在开发 Archon 时,并不是在处理那个特定部分。所以它是按需加载的上下文。
00:16:48第三层是技能 (Skills)。这在 Claude Code 甚至更广泛的领域都很流行。
00:16:52我们在这里分阶段处理:智能体会在认为真正需要时,
00:16:57去探索该技能中的指令和能力。我们从描述 (description) 开始。
00:17:05这在全局规则中只占极少的令牌。如果智能体决定使用该技能,它会加载完整的 skill.md,
00:17:10其中也可以指向其他脚本或参考文档,如果我们想要更深入地使用该技能的话。
00:17:15举个例子,我有自己的 agent browser 技能。这就是我之前展示的,
00:17:20用于所有端到端测试的浏览器自动化工具。我每天都用它。
00:17:25所以,每当我进行端到端测试时,我都会加载这套指令集,
00:17:29让智能体理解如何操作 agent browser。最后是第四层,
00:17:35我称之为 prime 命令。我刚才涵盖的所有内容都是静态文档,
00:17:40我们只是偶尔更新。但有时我们需要智能体去探索
00:17:46实时代码库。我们需要确保它掌握的所有信息都是最新的,
00:17:52为此我们愿意预先花费一些令牌让子智能体去执行。这就是
00:17:57prime 命令的作用:在规划阶段开始前探索代码库,
00:18:02以便它理解代码库现状,再开始下一步的构建。正如你所见,
00:18:07在我的 commands 文件夹里有许多不同的 prime 命令,因为根据我想构建的内容,
00:18:11我需要智能体理解代码库的不同部分。这就是我们正在看的通用 prime 命令。
00:18:16我只是告诉它从高层次上了解 Archon 的代码库。这里包含了
00:18:22我希望它阅读的步骤,包括 git log,因为这对于将 git log 用作长期记忆很重要。
00:18:27我还有一个专门的 prime workflows 命令,用于我明确知道要在 Archon 的工作流引擎上
00:18:32工作的时候。命令非常相似,但更加专业。我会在对话开始时运行它,
00:18:36以便智能体快速加载所需的一切。我可以确认它理解了我的代码库,
00:18:41然后进入我之前向你们展示的规划过程。简而言之:全局规则始终加载;
00:18:47当你明确要处理某个有独立文档的部分时,加载按需上下文;
00:18:53当你需要特定能力(比如开始端到端测试)时,加载技能;
00:18:58而 prime 命令通常在对话的最开始运行,为规划铺平道路。
00:19:03这就是选择部分的全部内容。现在我们进入压缩 (Compress),这也是讲起来最快的部分,
00:19:09因为如果你做好了写入、隔离和选择,其实不需要经常压缩。
00:19:13如果我们在用其他策略保持上下文精简,就能避免这一步,
00:19:18这是好事,因为你要尽可能避免压缩。如果必须压缩,
00:19:22有两项策略可以参考。这两项策略分别是 handoff(交接)和 focus compaction(聚焦压缩)。
00:19:28让我们进入 Claude Code 看看。handoff 我们已经讲过了,它是我们的‘写入’策略之一。
00:19:34我们总结刚刚完成的所有工作,以便在内存压缩后将其交接给
00:19:39另一个智能体或同一个智能体。此外,Claude Code 还内置了
00:19:46/compact 命令。这会总结我们的对话,然后清空对话记录,
00:19:52并将摘要放在上下文窗口的顶部。handoff 非常强大,因为我们可以
00:19:56定义自己的工作流来记忆信息。但 /compact 也非常有用,
00:20:02特别是因为我们可以选择性地提供总结指令。当我不得不进行压缩时,
00:20:06我每次都会用到这个功能。例如:‘重点关注我们刚刚测试的边缘案例’。
00:20:12这样当它创建摘要时,会更加关注它短期记忆中的那部分内容。
00:20:18我拼错了一个词,没关系。它会在这里运行压缩。所以 handoff 和 /compact
00:20:23有点像是二选一。但我确实发现有时两个都需要。特别是当你运行了
00:20:28两次以上的压缩后,那个对话通常已经太臃肿了,所以你会想用 handoff 开启一个
00:20:34全新的会话。但如果只是进行一次压缩,很多时候我运行一次 /compact 也就够了。
00:20:41不过通常在压缩后,我仍然会让智能体总结一下它还记得什么,
00:20:48以此确保它真的理解了。比如问:‘关于这些你还记得什么?’之类的。
00:20:53总之,这并不理想。要尽可能避免压缩。最好的压缩策略就是
00:20:58不需要压缩。好了,这就是 WISC 框架。
00:21:03内容很多,我希望对你们有所帮助。如果有任何一项策略
00:21:09你想让我深入讲解,请告诉我,因为其中任何一项我都可以专门做一期视频。
00:21:14这就是 WISC 框架。我希望你能用它将 Claude Code 或任何
00:21:19AI 编程助手的使用水平提升到新的高度。如果你觉得这段视频有帮助,
00:21:24并且期待更多关于 AI 编程以及如何将这些框架应用到实践中的内容,
00:21:30请务必点赞并订阅。那么,我们下期视频再见。
00:21:36嘘!我还有最后一件事要快点告诉你们,千万别错过。
00:21:414 月 2 日,我将在我的 YouTube 频道上举办一场免费的 AI 转型直播工作坊,
00:21:46届时 CTOX 的创始人 Lior Weinstein 也会参加。这可是件大事。
00:21:52Lior 将教我们如何针对 AI 重新构建整个组织架构,而我将教你如何
00:21:59掌握我用来为编程智能体构建可靠且可重复系统的 AI 编程方法论。
00:22:04我会在描述区放一个指向该页面的链接。直播将在我的 YouTube 频道进行,
00:22:09你可以点击这个按钮开启通知。我们到时候见!
00:22:14Le 2 avril, j'organiserai un atelier gratuit sur la transformation par l'IA en direct sur ma chaîne YouTube, aux côtés de
00:22:20Lior Weinstein, le fondateur de CTOX, et c'est un événement majeur. Lior va nous apprendre comment
00:22:27restructurer l'ensemble de notre organisation pour l'IA, puis je vous enseignerai comment maîtriser la méthodologie
00:22:32de codage par l'IA que j'utilise pour concevoir des systèmes fiables et reproductibles pour mes agents de codage. Ainsi,
00:22:38je mettrai un lien dans la description vers cette page. Ce sera en direct sur ma chaîne YouTube, donc vous
00:22:42pouvez activer les notifications en cliquant sur ce bouton juste ici. On se voit là-bas !

Key Takeaway

通过 WISC 框架进行精细化的上下文管理,是解决 AI 编程助手“大海捞针”难题、提升大型代码库构建可靠性的关键。

Highlights

“上下文腐烂”是 AI 编程助手面临的最大挑战,即随着上下文窗口填充,模型提取信息的准确性会显著下降。

WISC 框架(写入、隔离、选择、压缩)是高效管理 AI 编程上下文的核心方法论。

利用 Git 提交信息作为长期记忆,通过标准化提交格式让 AI 快速理解项目演进历史。

在规划和实施阶段之间开启全新的上下文窗口,通过结构化 Markdown 文件传递必要信息,以保持 AI 的专注度。

使用子智能体并行执行调研任务,主智能体仅接收精炼后的摘要,可将性能提升高达 90.2%。

分层管理上下文:全局规则(核心约束)、按需上下文(特定模块)、技能(特定能力)及 Prime 命令(实时探索)。

Timeline

引言:超越 2000 小时的实战经验

演讲者 Cole 分享了自 Claude Code 预览版发布以来超过 2000 小时的深度使用经验。他强调即便 Claude 拥有 100 万令牌的上下文窗口,开发者仍需将其视为最宝贵的资源。为了解决大型复杂代码库中的编程难题,他提出了名为 WISC 的系统化框架。该框架不仅适用于 Claude Code,也适用于任何主流的 AI 编程助手。通过这套方法,初级用户可以迅速成长为能够处理企业级项目的进阶玩家。

直面上下文腐烂与“大海捞针”问题

本段深入探讨了上下文管理的重要性,指出 80% 的 AI 错误源于上下文管理不善。演讲者引用了 Chroma 的技术报告,解释了“上下文腐烂”现象:即大量无关信息的堆积会导致模型产生干扰项。在大规模代码库中,相似的代码模式会导致 AI 提取错误信息却表现得过度自信。通过“上下文工程”,开发者可以保持窗口精简,从而克服“大海捞针”的检索难题。为了辅助学习,演讲者还在描述区提供了包含示例命令和规则的 GitHub 仓库。

W - 写入:外置化智能体记忆

W 代表 Write(写入),核心在于将关键决策记录在代码库中以减轻 AI 的认知负担。首先是将 git log 作为长期记忆,通过标准化的 /commit 命令记录功能实现和规则改进。其次是倡导“先规划再实施”的工作流,在实施阶段开启纯净的上下文窗口,仅加载规划好的结构化 Markdown 文件。最后是使用 handoff.md 或进度文件,在上下文耗尽或需要切换会话时,为下一个智能体提供清晰的任务交接摘要。这些策略确保了 AI 在不同会话间能无缝衔接,大幅降低了初始令牌的消耗。

I - 隔离:利用子智能体保持主窗口整洁

I 代表 Isolate(隔离),主张利用子智能体执行大规模的调研工作以保持主上下文的纯净。研究显示,使用子智能体预处理调研信息可将主智能体的性能提升 90.2%。演讲者演示了如何让两个子智能体并行研究代码库架构和外部技术栈,主智能体仅获取精炼后的 4% 令牌信息。此外还介绍了“侦察兵模式”,让子智能体先去探索无关紧要的文档,判断其是否有必要加载到主对话中。这种方式极大地加快了规划速度,同时避免了主窗口被数万个工具调用信息填满。

S - 选择:分层化的按需上下文加载

S 代表 Select(选择),强调“即用即取”而非“以防万一”的原则。演讲者提出了四层上下文管理模型:第一层是包含核心约束的全局规则文件(建议 500-700 行);第二层是特定于前端或 API 等模块的按需上下文。第三层是“技能”层,只有在 AI 需要特定能力(如浏览器自动化测试)时才加载详细指令。第四层是 Prime 命令,用于在规划前让 AI 实时扫描代码库以获取最新状态。这种分层机制确保了 AI 每一刻接收到的信息都是与其当前任务高度相关的。

C - 压缩:应对长对话的最后手段

C 代表 Compress(压缩),这是当对话过于臃肿时的补救策略。演讲者介绍了 Claude Code 内置的 /compact 命令,并建议在使用时附加特定指令以引导 AI 关注核心细节。虽然压缩很有用,但过度压缩会导致信息丢失,因此最好的策略是通过前三个步骤避免压缩。视频最后预告了 4 月 2 日的 AI 转型直播工作坊,届时将与 CTOX 创始人共同探讨 AI 组织架构的重塑。演讲者鼓励观众通过实践 WISC 框架,将 AI 编程能力提升到新的高度。

Community Posts

View all posts