CrabNote螃蟹笔记

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

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

驾驭 Claude 的智能 | 构建应用的 3 个关键模式【译】 驾驭 Claude 的智能 | 构建应用的 3 个关键模式【译】 Modified April 4 Claude 能够亲自编写代码,来控制工具的调用并串联它们之间的逻辑。 在这个过程中,流程编排的指挥棒从外层框架交还给了大语言模型 (LLM) 本身。因为写代码是 Claude 编排动作的一种极其通用的方式,所以一个强大的编程模型,自然也就是一个强大的 通用 AI 智能体。Claude 巧妙运用这一模式,在非编程类的评估测试中 [13] 也大放异彩:在 BrowseComp(一个测试智能体浏览网页能力的基准测试 [14] )中,当我们赋予 Opus 4.6 过滤自身工具输出的能力后,它的准确率直接从 45.3% 狂飙到了 61.6%。 让 Claude 管理自己的上下文 针对特定任务的上下文提示,能指引 Claude 更好地使用 bash 和文本编辑器等通用工具。过去我们总以为,必须针对每个任务,手工雕琢极其详细的系统提示词 (system prompts) [15] 。然而,这种提前把指令“填鸭式”塞进提示词的做法,在面对海量任务时根本行不通:你增加的每一个 token,都在无情消耗 Claude 的注意力预算 [16] ( 相当于模型的脑力,塞入太多无用信息会导致模型抓不住重点 ),提前加载那些百年不用一次的指令,纯粹是浪费资源。 赋予 Claude 访问技能 (skills) [17] 库的能力,完美破解了这个僵局:现在,只需把每个技能简短的 YAML 头部信息(类似目录摘要)预先加载到上下文窗口中,让 Claude 知道有哪些技能可用即可。如果当前任务需要,Claude 会主动调用读取文件的工具,将完整的技能内容进行“渐进式展开”(按需加载)。 Claude 会借助技能库,根据任务需求逐步展开相关的上下文。 如果说技能让 Claude 拥有了自由拼装上下文的能力,那么上下文编辑 (context editing) [18] 则是相反的艺术:它提供了一种机制,允许模型选择性地删掉那些过时或不再相关的废话,比如陈旧的工具执行结果,或者自己早期的思考草稿。 不仅如此,有了子智能体 (subagents) [19] 的协助,Claude 越来越懂得何时应该“另起炉灶”——开启一个干干净净的全新上下文窗口,来隔离并专注处理某项特定任务。在 Opus 4.6 中 [20] ,这种召唤子智能体的神技,让其在 BrowseComp 测试上的成绩,比表现最好的单智能体方案还提升了 2.8%。 让 Claude 持久化自己的上下文 对于需要长时间运行的智能体,很容易耗尽单一上下文窗口 (context window) [10] 的容量。业界普遍以为,这时候必须在模型外部搭建一套复杂的检索架构(例如 RAG)来充当记忆系统。但我们的大量研究表明:更聪明的做法是给 Claude 提供简便的工具,让它 自己决定 哪些内容值得保存下来。 例如,压缩 (compaction) [21] 技术允许 Claude 自己对过去的上下文进行浓缩总结,从而在马拉松式的长周期任务中不至于“断片”。经历了几轮模型迭代,Claude 挑选记忆内容的眼光越来越准。以 BrowseComp 为例 [22] (这是一个自主探索型的搜索任务),以前无论我们给 Sonnet 4.5 多少压缩预算,它的准确率死活卡在 43%。但在同样的配置下,Opus 4.5 跃升到了 68%,而最新的 Opus 4.6 更是飙升至了 84%。 引入记忆文件夹 (memory folder) [8] 则是另一种妙招。它允许 Claude 像记笔记一样,把重要的上下文写成文件存起来,需要的时候再去读取翻看。我们在智能体搜索任务中见证了它的威力:在 BrowseComp Plus 测试中,仅仅是给了 Sonnet 4.5 一个记忆文件夹,就让它的准确率从 60.4% 稳稳提升到了 67.2% [23] 。 Claude 可以将重要的上下文持久化保存到记忆文件夹中。 让 AI 玩《宝可梦》(Pokémon) 这样的长线游戏 [24] ,是展示 Claude 记忆文件夹利用能力飞跃的绝佳案例。早期的 Sonnet 3.5 简直把记忆当成了会议速记,只会傻乎乎地记录游戏里 NPC(非玩家角色)说了什么废话,根本抓不住重点。玩了 14,000 步之后,它生成了 31 个凌乱的文件——甚至包括两份几乎一模一样的关于毛毛虫宝可梦的无聊笔记——而且游戏进度悲催地卡在第二个城镇: Code block Plain Text caterpie weedle info (绿毛虫和独角虫信息): 绿毛虫 (Caterpie) 和独角虫 (Weedle) 都是毛毛虫形态的宝可梦。 绿毛虫是没有毒性的。 独角虫是有毒性的。 这些信息对未来的相遇和战斗至关重要。 如果我们的宝可梦中毒了,我们需要尽快去宝可梦中心治疗。 而当我们派上后期的强大模型时,画风突变,它开始记起“硬核战术笔记”。同样的 14,000 步,Opus 4.6 只生成了 10 个井井有条、按目录分类的文件。它不仅横扫拿下了 3 枚道馆徽章,甚至还从自己踩过的坑里,提炼出了一份专门的“经验教训”文档: Code block Plain Text /gameplay/learnings.md (游戏/经验教训.md): 喇叭芽的催眠粉+紧束连招:必须在它催眠粉命中前,用“咬住”快速击倒它。绝对不能让它布置战术! 第一世代背包限制:最多只能放 20 个道具。进迷宫前一定要把没用的技能机器 (TMs) 扔掉。 旋转地砖迷宫:不同的入口 y 坐标会导致完全不同的终点。尝试所有入口,并在多个口袋空间中穿梭。 B1F y=16 墙壁确认是实体的,范围覆盖所有 x=9 28(第 14557 步记录) 3. 谨慎设定边界 (Set boundaries carefully) 外层的智能体框架相当于给 Claude 穿上了一层约束衣,目的通常是为了保障用户体验 (UX)、控制花销,或者是守住安全底线。 巧妙设计上下文工程 (Context Engineering),让缓存命中率拉满 Messages API [25] 是无状态的。这意味着 Claude 本身就像拥有“金鱼的记忆”,它看不到之前的对话历史。因此,在每一轮对话中,外层框架都必须像个尽职的快递员,把新的上下文连同之前所有的动作记录、工具说明以及给 Claude 的指令,一并打包重新发送过去。 为了避免重复劳动,我们可以通过设置断点 (breakpoints) [26] 来缓存提示词。换句话说,Claude API 会把断点之前的所有上下文内容写进缓存里,并在下一次请求来的时候,检查当前内容是否与之前的缓存相匹配。 要知道,命中缓存的 token 价格仅仅是基础输入 token 价格的 10% [27] !为了帮你的应用既省钱又提速,以下是在智能体框架中最大化缓存命中率的几条黄金原则: 原则 描述 静态内容在前,动态内容在后 安排请求顺序时,将稳定的内容(如系统提示词、工具列表)放在最前面。 用消息来更新 如果需要提醒模型,请在消息末尾追加一个 <system reminder ,而不是去修改原始的提示词( 修改前面会导致整个缓存失效 )。 别中途换模型 避免在同一个会话中切换不同的模型。缓存是跟着特定模型走的;一旦切换,缓存全盘作废。如果你需要一个更便宜的模型处理简单任务,请使用子智能体。 谨慎管理工具 工具列表位于缓存的头部。因此,增加或删除任何一个工具都会使其失效。对于动态发现新工具的场景,请使用 工具搜索 (tool search) 功能,这只会向后追加内容而不会破坏缓存。 及时更新断点 对于多轮对话应用(比如智能体),应将断点移至最新的一条消息上,以保持缓存的新鲜度。强烈建议使用 自动缓存 (auto caching) 来处理此事。 利用声明式工具打造 UX、可观测性与安全边界 Claude 并不天然懂得你应用的“安全底线”在哪,也不知道你的产品界面长啥样。它只会闷头发出“调用工具”的指令,剩下的脏活累活全由外层框架接手。虽然 bash 工具给了 Claude 在代码世界里翻江倒海的超能力,但对于外层框架而言,bash 工具抛出来的只是一串干巴巴的命令行字符——不管 Claude 执行什么危险动作,格式全是一样的,这让框架很难做管控。 此时,将某些关键动作晋升为 专属的声明式工具 (dedicated tools) 就显得尤为重要。这给了外层框架一个特定的、带有明确参数类型的“抓手”,让它能游刃有余地进行拦截审查、设置权限闸门、渲染前端界面,或者进行安全审计。 那些容易触碰安全红线的动作,天生就该被做成专属工具。“是否可逆”是一个极佳的判断标准。对于像调用外部 API 这种泼水难收的操作,你可以设置一道门槛,强制要求“用户确认”后才能放行。对于像 edit (编辑)这样的写入工具,你可以内置一个“文件陈旧度检查”,防止 Claude 稀里糊涂地覆盖掉别人刚刚修改过的文件。 基于安全性、用户体验或可观测性的考量,我们应当为特定的高危/关键操作配备专属工具。 当某个动作需要直观地展示给终端用户时,专属工具也大有可为。例如,它可以被渲染成一个前端弹窗 (modal),清晰地向用户提问、抛出多个选项,或者干脆暂停智能体的运行循环,乖乖等待用户给出反馈再继续。 最后,专属工具对于系统的可观测性(排查问题)大有裨益。当动作是一个格式严谨的工具时,外层框架就能拿到结构化的参数数据,随后的日志记录、链路追踪和场景回放都会变得轻而易举。 当然,“要不要把这个动作做成专属工具”绝不是一锤子买卖,需要你持续重新评估。以 Claude Code 的自动模式 (auto mode) [28] (本文发布时正处于研究阶段)为例,它为 bash 工具套上了一层极其硬核的安全边界:它会召唤“第二个 Claude”来阅读这串命令行字符,让 AI 来审查 AI 的操作是否安全。这种“用魔法打败魔法”的模式,实际上 减少了 对传统专属工具的依赖。不过,这种做法只适用于用户对大方向足够信任的任务。对于那些一着不慎满盘皆输的高危操作,老老实实写一个专属工具依然拥有不可撼动的地位。 展望未来 (Looking forward) Claude 智能的边界一直在狂奔拓荒。每当它完成一次能力上的跃迁,我们过去对它“做不到什么”的成见,都必须重新推翻再验证。 我们一次次见证了历史的重演。在我们为长周期任务搭建的一个智能体 [9] 中,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] Harnessing Claude's Intelligence | 3 Key Patterns for Building Apps | Claude: https://claude.com/blog/harnessing claudes intelligence [2] 说过: https://www.darioamodei.com/post/the urgency of interpretability [3] 行业最高水平: https://www.anthropic.com/engineering/swe bench sonnet [4] bash 工具: https://platform.claude.com/docs/en/agents and tools/tool use/bash tool [5] 文本编辑器工具: https://platform.claude.com/docs/en/agents and tools/tool use/text editor tool [6] 智能体技能 (Agent Skills): https://agentskills.io/home [7] 编程式工具调用 (programmatic tool calling): https://platform.claude.com/docs/en/agents and tools/tool use/programmatic tool calling [8] 记忆工具 (memory tool): https://platform.claude.com/docs/en/agents and tools/tool use/memory tool [9] 智能体框架里写满了我们对 Claude 能力边界的偏见: https://www.anthropic.com/engineering/harness design long running apps [10] 上下文窗口 (context window): https://platform.claude.com/docs/en/build with claude/context windows [11] 硬编码过滤 (hard coded filters): https://platform.claude.com/docs/en/about claude/models/migration guide additional recommended changes [12] 代码执行 (code execution): https://platform.claude.com/docs/en/agents and tools/tool use/code execution tool [13] 非编程类的评估测试中: https://claude.com/blog/improved web search with dynamic filtering [14] 基准测试: https://arxiv.org/abs/2504.12516 [15] 系统提示词 (system prompts): https://platform.claude.com/docs/en/release notes/system prompts [16] Claude 的注意力预算: https://www.anthropic.com/engineering/effective context engineering for ai agents [17] 技能 (skills): https://platform.claude.com/docs/en/agents and tools/agent skills/overview [18] 上下文编辑 (context editing): https://platform.claude.com/docs/en/build with claude/context editing [19] 子智能体 (subagents): https://code.claude.com/docs/en/sub agents [20] 在 Opus 4.6 中: https://www cdn.anthropic.com/0dd865075ad3132672ee0ab40b05a53f14cf5288.pdf [21] 压缩 (compaction): https://platform.claude.com/docs/en/build with claude/compaction [22] 以 BrowseComp 为例: https://www cdn.anthropic.com/14e4fb01875d2a69f646fa5e574dea2b1c0ff7b5.pdf [23] 从 60.4% 稳稳提升到了 67.2%: https://www cdn.anthropic.com/bf10f64990cfda0ba858290be7b8cc6317685f47.pdf [24] 长线游戏: https://www.youtube.com/watch?v=CXhYDOvgpuU [25] Messages API: https://platform.claude.com/docs/en/build with claude/working with messages [26] 断点 (breakpoints): https://platform.claude.com/docs/en/build with claude/prompt caching [27] 基础输入 token 价格的 10%: https://platform.claude.com/docs/en/about claude/pricing [28] 自动模式 (auto mode): https://www.anthropic.com/engineering/claude code auto mode Claude 能够亲自编写代码,来控制工具的调用并串联它们之间的逻辑。 在这个过程中,流程编排的指挥棒从外层框架交还给了大语言模型 (LLM) 本身。因为写代码是 Claude 编排动作的一种极其通用的方式,所以一个强大的编程模型,自然也就是一个强大的 通用 AI 智能体。Claude 巧妙运用这一模式,在非编程类的评估测试中 [13] 也大放异彩:在 BrowseComp(一个测试智能体浏览网页能力的基准测试 [14] )中,当我们赋予 Opus 4.6 过滤自身工具输出的能力后,它的准确率直接从 45.3% 狂飙到了 61.6%。 让 Claude 管理自己的上下文 针对特定任务的上下文提示,能指引 Claude 更好地使用 bash 和文本编辑器等通用工具。过去我们总以为,必须针对每个任务,手工雕琢极其详细的系统提示词 (system prompts) [15] 。然而,这种提前把指令“填鸭式”塞进提示词的做法,在面对海量任务时根本行不通:你增加的每一个 token,都在无情消耗 Claude 的注意力预算 [16] ( 相当于模型的脑力,塞入太多无用信息会导致模型抓不住重点 ),提前加载那些百年不用一次的指令,纯粹是浪费资源。 赋予 Claude 访问技能 (skills) [17] 库的能力,完美破解了这个僵局:现在,只需把每个技能简短的 YAML 头部信息(类似目录摘要)预先加载到上下文窗口中,让 Claude 知道有哪些技能可用即可。如果当前任务需要,Claude 会主动调用读取文件的工具,将完整的技能内容进行“渐进式展开”(按需加载)。 Claude 会借助技能库,根据任务需求逐步展开相关的上下文。 如果说技能让 Claude 拥有了自由拼装上下文的能力,那么上下文编辑 (context editing) [18] 则是相反的艺术:它提供了一种机制,允许模型选择性地删掉那些过时或不再相关的废话,比如陈旧的工具执行结果,或者自己早期的思考草稿。 不仅如此,有了子智能体 (subagents) [19] 的协助,Claude 越来越懂得何时应该“另起炉灶”——开启一个干干净净的全新上下文窗口,来隔离并专注处理某项特定任务。在 Opus 4.6 中 [20] ,这种召唤子智能体的神技,让其在 BrowseComp 测试上的成绩,比表现最好的单智能体方案还提升了 2.8%。 让 Claude 持久化自己的上下文 对于需要长时间运行的智能体,很容易耗尽单一上下文窗口 (context window) [10] 的容量。业界普遍以为,这时候必须在模型外部搭建一套复杂的检索架构(例如 RAG)来充当记忆系统。但我们的大量研究表明:更聪明的做法是给 Claude 提供简便的工具,让它 自己决定 哪些内容值得保存下来。 例如,压缩 (compaction) [21] 技术允许 Claude 自己对过去的上下文进行浓缩总结,从而在马拉松式的长周期任务中不至于“断片”。经历了几轮模型迭代,Claude 挑选记忆内容的眼光越来越准。以 BrowseComp 为例 [22] (这是一个自主探索型的搜索任务),以前无论我们给 Sonnet 4.5 多少压缩预算,它的准确率死活卡在 43%。但在同样的配置下,Opus 4.5 跃升到了 68%,而最新的 Opus 4.6 更是飙升至了 84%。 引入记忆文件夹 (memory folder) [8] 则是另一种妙招。它允许 Claude 像记笔记一样,把重要的上下文写成文件存起来,需要的时候再去读取翻看。我们在智能体搜索任务中见证了它的威力:在 BrowseComp Plus 测试中,仅仅是给了 Sonnet 4.5 一个记忆文件夹,就让它的准确率从 60.4% 稳稳提升到了 67.2% [23] 。 Claude 可以将重要的上下文持久化保存到记忆文件夹中。 让 AI 玩《宝可梦》(Pokémon) 这样的长线游戏 [24] ,是展示 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 [25] 是无状态的。这意味着 Claude 本身就像拥有“金鱼的记忆”,它看不到之前的对话历史。因此,在每一轮对话中,外层框架都必须像个尽职的快递员,把新的上下文连同之前所有的动作记录、工具说明以及给 Claude 的指令,一并打包重新发送过去。 为了避免重复劳动,我们可以通过设置断点 (breakpoints) [26] 来缓存提示词。换句话说,Claude API 会把断点之前的所有上下文内容写进缓存里,并在下一次请求来的时候,检查当前内容是否与之前的缓存相匹配。 要知道,命中缓存的 token 价格仅仅是基础输入 token 价格的 10% [27] !为了帮你的应用既省钱又提速,以下是在智能体框架中最大化缓存命中率的几条黄金原则: 原则 描述 静态内容在前,动态内容在后 安排请求顺序时,将稳定的内容(如系统提示词、工具列表)放在最前面。 用消息来更新 如果需要提醒模型,请在消息末尾追加一个 <system reminder ,而不是去修改原始的提示词( 修改前面会导致整个缓存失效 )。 别中途换模型 避免在同一个会话中切换不同的模型。缓存是跟着特定模型走的;一旦切换,缓存全盘作废。如果你需要一个更便宜的模型处理简单任务,请使用子智能体。 谨慎管理工具 工具列表位于缓存的头部。因此,增加或删除任何一个工具都会使其失效。对于动态发现新工具的场景,请使用 工具搜索 (tool search) 功能,这只会向后追加内容而不会破坏缓存。 及时更新断点 对于多轮对话应用(比如智能体),应将断点移至最新的一条消息上,以保持缓存的新鲜度。强烈建议使用 自动缓存 (auto caching) 来处理此事。 原则 原则 描述 描述 静态内容在前,动态内容在后 静态内容在前,动态内容在后 安排请求顺序时,将稳定的内容(如系统提示词、工具列表)放在最前面。 安排请求顺序时,将稳定的内容(如系统提示词、工具列表)放在最前面。 用消息来更新 用消息来更新 如果需要提醒模型,请在消息末尾追加一个 <system reminder ,而不是去修改原始的提示词( 修改前面会导致整个缓存失效 )。 如果需要提醒模型,请在消息末尾追加一个 <system reminder ,而不是去修改原始的提示词( 修改前面会导致整个缓存失效 )。 别中途换模型 别中途换模型 避免在同一个会话中切换不同的模型。缓存是跟着特定模型走的;一旦切换,缓存全盘作废。如果你需要一个更便宜的模型处理简单任务,请使用子智能体。 避免在同一个会话中切换不同的模型。缓存是跟着特定模型走的;一旦切换,缓存全盘作废。如果你需要一个更便宜的模型处理简单任务,请使用子智能体。 谨慎管理工具 谨慎管理工具 工具列表位于缓存的头部。因此,增加或删除任何一个工具都会使其失效。对于动态发现新工具的场景,请使用 工具搜索 (tool search) 功能,这只会向后追加内容而不会破坏缓存。 工具列表位于缓存的头部。因此,增加或删除任何一个工具都会使其失效。对于动态发现新工具的场景,请使用 工具搜索 (tool search) 功能,这只会向后追加内容而不会破坏缓存。 及时更新断点 及时更新断点 对于多轮对话应用(比如智能体),应将断点移至最新的一条消息上,以保持缓存的新鲜度。强烈建议使用 自动缓存 (auto caching) 来处理此事。 对于多轮对话应用(比如智能体),应将断点移至最新的一条消息上,以保持缓存的新鲜度。强烈建议使用 自动缓存 (auto caching) 来处理此事。 利用声明式工具打造 UX、可观测性与安全边界 Claude 并不天然懂得你应用的“安全底线”在哪,也不知道你的产品界面长啥样。它只会闷头发出“调用工具”的指令,剩下的脏活累活全由外层框架接手。虽然 bash 工具给了 Claude 在代码世界里翻江倒海的超能力,但对于外层框架而言,bash 工具抛出来的只是一串干巴巴的命令行字符——不管 Claude 执行什么危险动作,格式全是一样的,这让框架很难做管控。 此时,将某些关键动作晋升为 专属的声明式工具 (dedicated tools) 就显得尤为重要。这给了外层框架一个特定的、带有明确参数类型的“抓手”,让它能游刃有余地进行拦截审查、设置权限闸门、渲染前端界面,或者进行安全审计。 那些容易触碰安全红线的动作,天生就该被做成专属工具。“是否可逆”是一个极佳的判断标准。对于像调用外部 API 这种泼水难收的操作,你可以设置一道门槛,强制要求“用户确认”后才能放行。对于像 edit (编辑)这样的写入工具,你可以内置一个“文件陈旧度检查”,防止 Claude 稀里糊涂地覆盖掉别人刚刚修改过的文件。 基于安全性、用户体验或可观测性的考量,我们应当为特定的高危/关键操作配备专属工具。 当某个动作需要直观地展示给终端用户时,专属工具也大有可为。例如,它可以被渲染成一个前端弹窗 (modal),清晰地向用户提问、抛出多个选项,或者干脆暂停智能体的运行循环,乖乖等待用户给出反馈再继续。 最后,专属工具对于系统的可观测性(排查问题)大有裨益。当动作是一个格式严谨的工具时,外层框架就能拿到结构化的参数数据,随后的日志记录、链路追踪和场景回放都会变得轻而易举。 当然,“要不要把这个动作做成专属工具”绝不是一锤子买卖,需要你持续重新评估。以 Claude Code 的自动模式 (auto mode) [28] (本文发布时正处于研究阶段)为例,它为 bash 工具套上了一层极其硬核的安全边界:它会召唤“第二个 Claude”来阅读这串命令行字符,让 AI 来审查 AI 的操作是否安全。这种“用魔法打败魔法”的模式,实际上 减少了 对传统专属工具的依赖。不过,这种做法只适用于用户对大方向足够信任的任务。对于那些一着不慎满盘皆输的高危操作,老老实实写一个专属工具依然拥有不可撼动的地位。 展望未来 (Looking forward) Claude 智能的边界一直在狂奔拓荒。每当它完成一次能力上的跃迁,我们过去对它“做不到什么”的成见,都必须重新推翻再验证。 我们一次次见证了历史的重演。在我们为长周期任务搭建的一个智能体 [9] 中,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] Harnessing Claude's Intelligence | 3 Key Patterns for Building Apps | Claude: https://claude.com/blog/harnessing claudes intelligence [2] 说过: https://www.darioamodei.com/post/the urgency of interpretability [3] 行业最高水平: https://www.anthropic.com/engineering/swe bench sonnet [4] bash 工具: https://platform.claude.com/docs/en/agents and tools/tool use/bash tool [5] 文本编辑器工具: https://platform.claude.com/docs/en/agents and tools/tool use/text editor tool [6] 智能体技能 (Agent Skills): https://agentskills.io/home [7] 编程式工具调用 (programmatic tool calling): https://platform.claude.com/docs/en/agents and tools/tool use/programmatic tool calling [8] 记忆工具 (memory tool): https://platform.claude.com/docs/en/agents and tools/tool use/memory tool [9] 智能体框架里写满了我们对 Claude 能力边界的偏见: https://www.anthropic.com/engineering/harness design long running apps [10] 上下文窗口 (context window): https://platform.claude.com/docs/en/build with claude/context windows [11] 硬编码过滤 (hard coded filters): https://platform.claude.com/docs/en/about claude/models/migration guide additional recommended changes [12] 代码执行 (code execution): https://platform.claude.com/docs/en/agents and tools/tool use/code execution tool [13] 非编程类的评估测试中: https://claude.com/blog/improved web search with dynamic filtering [14] 基准测试: https://arxiv.org/abs/2504.12516 [15] 系统提示词 (system prompts): https://platform.claude.com/docs/en/release notes/system prompts [16] Claude 的注意力预算: https://www.anthropic.com/engineering/effective context engineering for ai agents [17] 技能 (skills): https://platform.claude.com/docs/en/agents and tools/agent skills/overview [18] 上下文编辑 (context editing): https://platform.claude.com/docs/en/build with claude/context editing [19] 子智能体 (subagents): https://code.claude.com/docs/en/sub agents [20] 在 Opus 4.6 中: https://www cdn.anthropic.com/0dd865075ad3132672ee0ab40b05a53f14cf5288.pdf [21] 压缩