jixiaxue 知识库
blog / baoyu-blog / 2026-04-03-harnessing-claude-intelligence-3-patterns

驾驭 Claude 的智能 | 构建应用的 3 个关键模式

2026-04-03

驾驭 Claude 的智能 | 构建应用的 3 个关键模式

来源: claude.com/blog | 作者: Lance Martin(原文)/ 宝玉(翻译) | 日期: 2026-04-03 原文链接: https://claude.com/blog/harnessing-claudes-intelligence

一句话总结

构建 Claude 应用的核心策略是:用 Claude 熟悉的通用工具(bash + 文本编辑器),把编排、上下文管理和记忆的控制权交还给模型本身,只在安全/UX/可观测性需要时才设定框架边界。

速览

  1. 用 Claude 熟悉的工具构建应用——bash 和文本编辑器是 Claude 最擅长的工具,所有高级能力(技能、编程式工具调用、记忆)都是它们的组合衍生
  2. 让模型自主编排工具调用——通过代码执行工具让 Claude 自己写代码串联工具,避免无用数据塞满上下文窗口
  3. 让模型管理自己的上下文——用技能库按需加载指令,用上下文编辑删除废旧信息,用子智能体隔离任务
  4. 让模型持久化自己的记忆——压缩技术和记忆文件夹让 Claude 自主决定保存什么,比外部 RAG 更高效
  5. 模型越强,框架越应精简——随着 Claude 进化,过去的”能力假设”会过时,框架中的补丁代码会变成负担
  6. 缓存命中率决定成本和延迟——静态内容前置、不中途换模型、谨慎增删工具、用 system-reminder 而非修改提示词
  7. 高危操作必须做成声明式专属工具——“是否可逆”是判断标准,不可逆操作需要用户确认闸门
  8. 持续反问”我可以放手不管什么”——每次模型升级后重新检验框架中的假设,砍掉过时的约束

核心内容

用 Claude 熟悉的工具,而非为它造新的

Lance Martin 指出,Claude 在 SWE-bench Verified 上创下 49% 行业最高分时,仅用了 bash 和文本编辑器两个工具。Claude Code 也基于同样的工具构建。这些工具并非为 AI 智能体设计,但 Claude 深度训练过它们,随着模型迭代会越来越熟练。

更关键的是,Claude 能将这两个通用工具组合出丰富的高级模式:智能体技能(Skills)本质是用文件系统存取指令集,编程式工具调用是用 bash 执行代码来串联 API,记忆工具是用文本编辑器读写文件。与其给 Claude 一堆它不熟悉的专用工具,不如让它用自己最擅长的积木搭出解决方案。

把编排权交还给模型,而非框架替它做决定

开发者常犯的错误是把每次工具调用的完整结果都塞回上下文窗口。Lance Martin 举例:为分析一个大表的某列,把整个表都给模型,既浪费 token 又拖慢速度。用硬编码过滤治标不治本——问题的根源是框架在替模型做编排决策。

解决方案是给 Claude 一个代码执行工具(bash 或 REPL),让它自己写代码来调用工具、过滤结果、串联流水线。只有最终精简结果才进入上下文窗口。这个模式的效果惊人:在 BrowseComp 测试中,赋予 Opus 4.6 过滤自身工具输出的能力后,准确率从 45.3% 飙升到 61.6%。

这意味着一个强大的编程模型天然就是一个强大的通用智能体——写代码是最灵活的编排方式。

让模型自己管理上下文的加载和清理

过去的做法是把所有可能用到的指令预先塞进系统提示词,但这消耗”注意力预算”——塞入太多信息会导致模型抓不住重点。

技能库(Skills)提供了更好的方案:只把每个技能的简短 YAML 摘要预加载到上下文,Claude 按需读取完整内容,实现”渐进式展开”。反方向的能力是上下文编辑(Context Editing),允许模型主动删除过时的工具结果或早期思考草稿。子智能体则让 Claude 能开启全新的干净上下文来隔离特定任务——Opus 4.6 使用子智能体后,BrowseComp 成绩比最好的单智能体方案还高 2.8%。

压缩和记忆文件夹让长任务不再”断片”

长时间运行的智能体容易耗尽上下文窗口。业界惯性思维是搭建外部 RAG 系统,但更有效的做法是让 Claude 自己决定保存什么。

压缩(Compaction)技术让 Claude 自主浓缩过去的上下文。模型迭代带来了显著提升:同样的 BrowseComp 任务,Sonnet 4.5 准确率卡在 43%,Opus 4.5 跃升到 68%,Opus 4.6 飙升至 84%。

记忆文件夹让 Claude 像记笔记一样存取关键信息。BrowseComp-Plus 测试中,仅给 Sonnet 4.5 一个记忆文件夹,准确率就从 60.4% 提升到 67.2%。

宝可梦游戏案例生动展示了记忆能力的进化:早期 Sonnet 3.5 生成 31 个凌乱文件,记录”绿毛虫没有毒性”这类无用信息,卡在第二个城镇。Opus 4.6 只生成 10 个按目录分类的文件,包含战术分析和经验教训文档,拿下 3 枚道馆徽章。

上下文工程:让缓存命中率拉满以控制成本

Messages API 无状态,每轮对话都要重新发送全部上下文。缓存断点(Breakpoints)可以避免重复计算,命中缓存的 token 价格只有基础价的 10%。

最大化缓存命中率的原则:静态内容(系统提示词、工具列表)放最前面;用 system-reminder 追加提醒而非修改原始提示词;不在会话中切换模型(缓存跟着模型走);不随意增删工具(工具列表在缓存头部);多轮对话中及时更新断点位置。

高危操作做成声明式专属工具,但不要过度

bash 工具的输出是不透明的命令行字符串,框架无法区分安全和危险操作。将关键动作做成专属的声明式工具,框架就能拿到结构化参数,实现拦截审查、权限闸门、UI 渲染和安全审计。

“是否可逆”是最佳判断标准:不可逆操作(如外部 API 调用)需要用户确认闸门;写入操作需要文件陈旧度检查;需要用户交互的动作可渲染为前端弹窗。

但这不是一锤子买卖。Claude Code 的自动模式用”第二个 Claude”审查 bash 命令的安全性,这种”AI 审查 AI”的模式减少了对传统专属工具的依赖。不过对于高危操作,专属工具仍然不可替代。

不断砍掉过时的框架约束

Lance Martin 分享了一个案例:Sonnet 4.5 会在上下文快满时”恐慌”并草草结束任务,团队为此写了强制重置上下文的代码。到了 Opus 4.5,这个问题自愈了,那段代码变成了无用的历史包袱。

这印证了 AI 界的”苦涩的教训”:过度依赖人类手工规则,最终会拖累模型自身进化出的能力。开发者应当不断审视框架中的约束,反复拷问:“这一次,我又可以放手不管什么了?“

名言金句

  1. “像 Claude 这样的生成式 AI 系统,与其说是被’制造’出来的,不如说是被’培育’出来的。” —— Chris Olah
  2. “一个强大的编程模型,自然也就是一个强大的通用 AI 智能体。”
  3. “你增加的每一个 token,都在无情消耗 Claude 的注意力预算。”
  4. “这一次,我又可以放手不管什么了?”
  5. “过度依赖人类经验的手工规则,最终往往会拖累模型自身依靠算力进化出的能力。” —— 苦涩的教训

可行建议

资源清单

展开正文

驾驭 Claude 的智能 | 构建应用的三大核心模式

原文:Harnessing Claude’s Intelligence | 3 Key Patterns for Building Apps | Claude 作者:Lance Martin

Anthropic 的联合创始人 Chris Olah 曾说过,像 Claude 这样的生成式 AI 系统,与其说是被”制造”出来的,不如说是被”培育”出来的。研究人员设定好引导它们生长的条件,但最终会演化出怎样的确切结构或能力,往往是无法准确预测的。

这给使用 Claude 开发应用带来了挑战:开发者通常会使用 AI 套壳或智能体框架 (agent harnesses)(指用来包裹、控制和辅助 AI 模型运行的外部代码结构)来弥补 Claude 自身做不到的事情。这些框架基于各种”假设”构建,但随着 Claude 能力的不断进化,这些假设很快就会过时。因此,即使是本文分享的经验之谈,也需要你时常温故而知新。

在这篇文章中,我们将分享团队在构建应用时应该采用的三个核心模式。这些模式能帮助你的应用跟上 Claude 智能进化的步伐,同时兼顾延迟和系统成本。这三大模式分别是:善用它已知的技能思考”我可以放手不管什么”,以及谨慎设定智能体框架的边界

1. 善用 Claude 已知的技能 (Use what Claude knows)

我们强烈建议,使用 Claude 已经非常熟悉的工具来构建你的应用。

时间拉回 2024 年底,Claude 3.5 Sonnet 在 SWE-bench Verified(一个用于评估 AI 解决真实软件工程问题能力的权威基准测试)上达到了 49% 的得分,创下了当时的行业最高水平。令人惊讶的是,它仅仅使用了一个 bash 工具(一种允许 AI 在计算机命令行中执行指令的工具)和一个用于查看、创建和修改文件的文本编辑器工具。Anthropic 的官方编程助手 Claude Code 也是基于这些同样的工具构建的。Bash 最初并非为构建 AI 智能体 (AI Agent) 而设计,但它却是 Claude 深谙此道的工具,并且随着时间的推移,Claude 驾驭它的技巧会越来越纯熟。

我们发现,Claude 能够将这些通用工具组合成极其丰富的模式,以此来解决各种复杂问题。例如,智能体技能 (Agent Skills)、编程式工具调用 (programmatic tool calling) 以及记忆工具 (memory tool),本质上都是由基础的 bash 和文本编辑器工具组合衍生而来的。

2. 思考:“我可以放手不管什么?” (Ask ‘what can I stop doing?’)

如前所述,智能体框架里写满了我们对 Claude 能力边界的偏见(认为它这也不行,那也不行)。随着 Claude 变得越来越强大,是时候去重新检验这些陈旧的假设了。

让 Claude 自主编排行动

大家常犯的一个错误假设是:认为每次调用工具返回的结果,都必须立刻塞回 Claude 的上下文窗口 (context window) 中,好让它决定下一步干嘛。但实际上,把所有的工具结果都转化成词元 (tokens) 给模型处理,不仅速度慢、成本高,而且往往毫无必要——尤其是当这个结果仅仅是为了传递给下一个工具,或者 Claude 只需要结果中极小的一部分数据时。

想象一个场景:为了分析一个庞大数据表中的某一列,你把整个表格都扔给了模型。结果是整个表格塞满了上下文,而你要为 Claude 根本不需要的那些行支付高昂的 token 费用。虽然你可以在工具开发时加入硬编码过滤 (hard-coded filters) 来解决这个问题,但这治标不治本。问题的核心在于:外层的智能体框架正在替模型做编排决策 (orchestration decision),而现实是,Claude 自己才是做这个决定的最佳人选。

只要给 Claude 开放一个代码执行 (code execution) 工具(比如 bash 工具或特定编程语言的交互环境 REPL),难题就迎刃而解:它允许 Claude 自己写代码来执行工具调用,并亲自处理这些工具之间的数据流转逻辑。与其让框架强制把所有结果都喂给上下文,不如让 Claude 决定哪些结果直接略过、哪些进行过滤,或者哪些直接像流水线一样输入给下一次调用。全程无需弄脏宝贵的上下文窗口,只有最终代码执行得出的精简结果,才会真正进入 Claude 的视野。

在这个过程中,流程编排的指挥棒从外层框架交还给了大语言模型 (LLM) 本身。因为写代码是 Claude 编排动作的一种极其通用的方式,所以一个强大的编程模型,自然也就是一个强大的通用 AI 智能体。Claude 巧妙运用这一模式,在非编程类的评估测试中也大放异彩:在 BrowseComp(一个测试智能体浏览网页能力的基准测试)中,当我们赋予 Opus 4.6 过滤自身工具输出的能力后,它的准确率直接从 45.3% 狂飙到了 61.6%。

让 Claude 管理自己的上下文

针对特定任务的上下文提示,能指引 Claude 更好地使用 bash 和文本编辑器等通用工具。过去我们总以为,必须针对每个任务,手工雕琢极其详细的系统提示词 (system prompts)。然而,这种提前把指令”填鸭式”塞进提示词的做法,在面对海量任务时根本行不通:你增加的每一个 token,都在无情消耗 Claude 的注意力预算(相当于模型的脑力,塞入太多无用信息会导致模型抓不住重点),提前加载那些百年不用一次的指令,纯粹是浪费资源。

赋予 Claude 访问技能 (skills) 库的能力,完美破解了这个僵局:现在,只需把每个技能简短的 YAML 头部信息(类似目录摘要)预先加载到上下文窗口中,让 Claude 知道有哪些技能可用即可。如果当前任务需要,Claude 会主动调用读取文件的工具,将完整的技能内容进行”渐进式展开”(按需加载)。

如果说技能让 Claude 拥有了自由拼装上下文的能力,那么上下文编辑 (context editing) 则是相反的艺术:它提供了一种机制,允许模型选择性地删掉那些过时或不再相关的废话,比如陈旧的工具执行结果,或者自己早期的思考草稿。

不仅如此,有了子智能体 (subagents) 的协助,Claude 越来越懂得何时应该”另起炉灶”——开启一个干干净净的全新上下文窗口,来隔离并专注处理某项特定任务。在 Opus 4.6 中,这种召唤子智能体的神技,让其在 BrowseComp 测试上的成绩,比表现最好的单智能体方案还提升了 2.8%。

让 Claude 持久化自己的上下文

对于需要长时间运行的智能体,很容易耗尽单一上下文窗口 (context window) 的容量。业界普遍以为,这时候必须在模型外部搭建一套复杂的检索架构(例如 RAG)来充当记忆系统。但我们的大量研究表明:更聪明的做法是给 Claude 提供简便的工具,让它自己决定哪些内容值得保存下来。

例如,压缩 (compaction) 技术允许 Claude 自己对过去的上下文进行浓缩总结,从而在马拉松式的长周期任务中不至于”断片”。经历了几轮模型迭代,Claude 挑选记忆内容的眼光越来越准。以 BrowseComp 为例(这是一个自主探索型的搜索任务),以前无论我们给 Sonnet 4.5 多少压缩预算,它的准确率死活卡在 43%。但在同样的配置下,Opus 4.5 跃升到了 68%,而最新的 Opus 4.6 更是飙升至了 84%。

引入记忆文件夹 (memory folder) 则是另一种妙招。它允许 Claude 像记笔记一样,把重要的上下文写成文件存起来,需要的时候再去读取翻看。我们在智能体搜索任务中见证了它的威力:在 BrowseComp-Plus 测试中,仅仅是给了 Sonnet 4.5 一个记忆文件夹,就让它的准确率从 60.4% 稳稳提升到了 67.2%。

让 AI 玩《宝可梦》(Pokémon) 这样的长线游戏,是展示 Claude 记忆文件夹利用能力飞跃的绝佳案例。早期的 Sonnet 3.5 简直把记忆当成了会议速记,只会傻乎乎地记录游戏里 NPC(非玩家角色)说了什么废话,根本抓不住重点。玩了 14,000 步之后,它生成了 31 个凌乱的文件——甚至包括两份几乎一模一样的关于毛毛虫宝可梦的无聊笔记——而且游戏进度悲催地卡在第二个城镇。

而当我们派上后期的强大模型时,画风突变,它开始记起”硬核战术笔记”。同样的 14,000 步,Opus 4.6 只生成了 10 个井井有条、按目录分类的文件。它不仅横扫拿下了 3 枚道馆徽章,甚至还从自己踩过的坑里,提炼出了一份专门的”经验教训”文档。

3. 谨慎设定边界 (Set boundaries carefully)

外层的智能体框架相当于给 Claude 穿上了一层约束衣,目的通常是为了保障用户体验 (UX)、控制花销,或者是守住安全底线。

巧妙设计上下文工程 (Context Engineering),让缓存命中率拉满

Messages API 是无状态的。这意味着 Claude 本身就像拥有”金鱼的记忆”,它看不到之前的对话历史。因此,在每一轮对话中,外层框架都必须像个尽职的快递员,把新的上下文连同之前所有的动作记录、工具说明以及给 Claude 的指令,一并打包重新发送过去。

为了避免重复劳动,我们可以通过设置断点 (breakpoints) 来缓存提示词。换句话说,Claude API 会把断点之前的所有上下文内容写进缓存里,并在下一次请求来的时候,检查当前内容是否与之前的缓存相匹配。

要知道,命中缓存的 token 价格仅仅是基础输入 token 价格的 10%!为了帮你的应用既省钱又提速,以下是在智能体框架中最大化缓存命中率的几条黄金原则:

原则描述
静态内容在前,动态内容在后安排请求顺序时,将稳定的内容(如系统提示词、工具列表)放在最前面。
用消息来更新如果需要提醒模型,请在消息末尾追加一个 <system-reminder>,而不是去修改原始的提示词(修改前面会导致整个缓存失效)。
别中途换模型避免在同一个会话中切换不同的模型。缓存是跟着特定模型走的;一旦切换,缓存全盘作废。如果你需要一个更便宜的模型处理简单任务,请使用子智能体。
谨慎管理工具工具列表位于缓存的头部。因此,增加或删除任何一个工具都会使其失效。对于动态发现新工具的场景,请使用工具搜索 (tool search) 功能,这只会向后追加内容而不会破坏缓存。
及时更新断点对于多轮对话应用(比如智能体),应将断点移至最新的一条消息上,以保持缓存的新鲜度。强烈建议使用自动缓存 (auto-caching) 来处理此事。

利用声明式工具打造 UX、可观测性与安全边界

Claude 并不天然懂得你应用的”安全底线”在哪,也不知道你的产品界面长啥样。它只会闷头发出”调用工具”的指令,剩下的脏活累活全由外层框架接手。虽然 bash 工具给了 Claude 在代码世界里翻江倒海的超能力,但对于外层框架而言,bash 工具抛出来的只是一串干巴巴的命令行字符——不管 Claude 执行什么危险动作,格式全是一样的,这让框架很难做管控。

此时,将某些关键动作晋升为专属的声明式工具 (dedicated tools) 就显得尤为重要。这给了外层框架一个特定的、带有明确参数类型的”抓手”,让它能游刃有余地进行拦截审查、设置权限闸门、渲染前端界面,或者进行安全审计。

那些容易触碰安全红线的动作,天生就该被做成专属工具。“是否可逆”是一个极佳的判断标准。对于像调用外部 API 这种泼水难收的操作,你可以设置一道门槛,强制要求”用户确认”后才能放行。对于像 edit(编辑)这样的写入工具,你可以内置一个”文件陈旧度检查”,防止 Claude 稀里糊涂地覆盖掉别人刚刚修改过的文件。

当某个动作需要直观地展示给终端用户时,专属工具也大有可为。例如,它可以被渲染成一个前端弹窗 (modal),清晰地向用户提问、抛出多个选项,或者干脆暂停智能体的运行循环,乖乖等待用户给出反馈再继续。

最后,专属工具对于系统的可观测性(排查问题)大有裨益。当动作是一个格式严谨的工具时,外层框架就能拿到结构化的参数数据,随后的日志记录、链路追踪和场景回放都会变得轻而易举。

当然,“要不要把这个动作做成专属工具”绝不是一锤子买卖,需要你持续重新评估。以 Claude Code 的自动模式 (auto-mode)(本文发布时正处于研究阶段)为例,它为 bash 工具套上了一层极其硬核的安全边界:它会召唤”第二个 Claude”来阅读这串命令行字符,让 AI 来审查 AI 的操作是否安全。这种”用魔法打败魔法”的模式,实际上减少了对传统专属工具的依赖。不过,这种做法只适用于用户对大方向足够信任的任务。对于那些一着不慎满盘皆输的高危操作,老老实实写一个专属工具依然拥有不可撼动的地位。

展望未来 (Looking forward)

Claude 智能的边界一直在狂奔拓荒。每当它完成一次能力上的跃迁,我们过去对它”做不到什么”的成见,都必须重新推翻再验证。

我们一次次见证了历史的重演。在我们为长周期任务搭建的一个智能体中,Sonnet 4.5 一旦察觉到上下文快要塞满了,就会出现”恐慌”,然后草草结束任务。为了缓解它的”上下文焦虑症”,我们在代码里硬加了强行清理上下文窗口的”重置”逻辑。结果到了 Opus 4.5,这个毛病竟然自己不治而愈了!于是,我们当年煞费苦心写出来的”上下文重置”代码,瞬间变成了智能体框架里毫无用处的历史包袱(dead weight)。

痛快地砍掉这些包袱极其重要,因为它们往往会反过来成为束缚 Claude 发挥实力的瓶颈(这也印证了 AI 界著名的”苦涩的教训 (the Bitter Lesson)“:过度依赖人类经验的手工规则,最终往往会拖累模型自身依靠算力进化出的能力)。在未来漫长的岁月里,我们应当不厌其烦地审视应用中的结构和边界,并反复拷问自己那个灵魂问题:“这一次,我又可以放手不管什么了?“

致谢 (Acknowledgements)

本文由 Claude 平台团队技术人员 Lance Martin 撰写。特别感谢 Thariq Shihipar、Barry Zhang、Mike Lambert、David Hershey 以及 Daliang Li 对本文涵盖主题提供的深度探讨。同时,感谢 Lydia Hallie、Lexi Ross、Katelyn Lesse、Andy Schumeister、Rebecca Hiscott、Jake Eaton、Pedram Navid 以及 Molly Vorwerck 提供的编辑审阅与宝贵反馈。


来源:https://claude.com/blog/harnessing-claudes-intelligence

证据原始数据 (1 条)
原始稿: /Users/eamanc/Documents/pe/jixiaxuegong/blog/baoyu-blog/2026-04-03-harnessing-claude-intelligence-3-patterns/transcript-raw.md