当前位置: 首页 > news >正文

驾驭 Claude 的智能(Harnessing Claude’s intelligence)

Harnessing Claude’s intelligence

Anthropic 的联合创始人之一 Chris Olah 表示 ,像 Claude 这样的生成式 AI 系统更多是成长而非构建。研究人员设定了引导增长的条件,但具体的结构或能力并不总是可预测的。

这给基于 Claude 的开发带来了一个挑战:智能体框架(agent harnesses)中编码了关于 Claude 自身无法完成哪些任务的假设,但随着 Claude 能力不断增强,这些假设会逐渐过时。即使是像本文这样分享的经验教训,也值得经常重新审视。
这句话的翻译如下:

在本文中,我们分享了三个模式,团队在构建应用程序时应当采用这些模式,以便跟上 Claude 不断发展的智能,同时在延迟和成本之间取得平衡:利用它已经掌握的知识,思考你可以停止做哪些事情,以及谨慎地通过智能体框架来设定边界。

利用 Claude 已知的知识

我们建议使用 Claude 熟知的工具来构建应用程序。在 2024 年底,Claude 3.5 Sonnet 仅借助一个bash 工具和一个用于查看、创建及编辑文件的文本编辑器工具,就在 SWE-bench Verified 测试中达到了 49% 的得分——这在当时是最先进的水平。Claude Code 也是基于这些相同的工具构建的。Bash 并非为构建智能体而设计,但它是 Claude 知道如何使用、并且随着时间推移会越来越擅长的工具。

不同版本的 Claude 模型在 SWE-bench Verified 基准测试中的得分,凸显了其能力的演进。

编程式工具调用、技能和记忆,都是由我们的 bash 和文本编辑器工具组合而成的。

问问自己“我可以停止做什么?

智能体框架中编码了关于 Claude 自身无法完成哪些任务的假设。**随着 Claude 能力不断增强,这些假设应当被检验。

让 Claude 自行编排自己的行动

一个常见的假设是:每个工具的结果都应该流经 Claude 的上下文窗口,以便指导下一步行动。用 token 来处理工具结果可能既慢又昂贵,而且如果结果只需要传递给下一个工具,或者 Claude 只关心输出中的一小部分,那么这样做是不必要的。

Claude 调用工具,而工具则在某个环境中执行。

试想一下,为了分析某一列数据而读取一整张大型数据表:整张表都会进入上下文窗口,而 Claude 需要为它根本用不上的每一行数据支付 token 成本。这个问题可以通过工具设计来解决,比如使用硬编码的过滤器。但这并没有解决一个根本问题:编排决策本应由 Claude 来做,却由智能体框架代劳了。
给 Claude 提供一个代码执行工具(例如 bash 工具或特定语言的 REPL)就能解决这个问题:它允许 Claude 编写代码来表达工具调用以及它们之间的逻辑。这样一来,框架不再需要决定每个工具调用的结果都以 token 形式处理,而是由 Claude 决定哪些结果需要传递、过滤,或者通过管道传递给下一次调用,全程无需触及上下文窗口。只有代码执行的输出结果才会进入 Claude 的上下文窗口。

Claude 可以编写代码来表达工具调用以及这些调用之间的逻辑。

编排决策从框架转移到了模型本身。由于代码是 Claude 编排行动的一种通用方式,一个强大的编程模型也就成为一个强大的通用智能体。Claude 在使用这种模式处理非编程类评估任务时表现出了强劲的性能:在BrowseComp(一个测试智能体浏览网页能力的基准测试)上,赋予 Opus 4.6 过滤自身工具输出的能力,使其准确率从 45.3% 提升到了 61.6%。

让 Claude 管理自己的上下文

**特定任务的上下文能够引导 Claude 如何使用 bash、文本编辑器这类通用工具。**一个常见的假设是:系统提示词应该手工编写,并包含针对特定任务的指令。问题在于,将指令预先加载到提示词中无法在大量任务间扩展:每增加一个 token 都会消耗 Claude 的注意力预算,而且预先加载很少用到的指令也是一种浪费。
赋予 Claude 访问技能的能力可以解决这个问题:每个技能的 YAML 前置内容是一段简短的描述,会被预先加载到上下文窗口中,用于概览该技能的内容。只有当任务需要时,Claude 通过调用读取文件工具,才能逐步获取完整的技能内容。

Claude 可以利用技能,逐步披露与任务相关的上下文。

技能让 Claude 能够自由地组装自己的上下文窗口,而上下文编辑则相反,它提供了一种选择性地移除已过时或无关内容(例如旧的工具结果或思考块)的方法。

通过子智能体,Claude 越来越擅长判断何时应分叉出一个全新的上下文窗口,以便将特定任务的工作隔离开来。在 Opus 4.6 上,生成子智能体的能力使得 BrowseComp 的结果比最佳的单智能体运行提升了 2.8%。
这句话可以翻译为:

让 Claude 自行保存自己的上下文

长时间运行的智能体可能会超出单个上下文窗口的限制。一个常见的假设是:记忆系统应该依赖模型外部的检索基础设施。而我们的大部分工作则侧重于给 Claude 提供简单的方式,让它自己选择需要持久化哪些内容。
例如,压缩(compaction)功能让 Claude 能够总结自己过去的上下文,从而在长期任务中保持连续性。经过几个版本的迭代,Claude 在选择记住什么方面变得越来越擅长。以 BrowseComp(一个智能体搜索任务)为例,无论我们给 Sonnet 4.5 多大的压缩预算,它的准确率都稳定在 43%。然而在相同的设置下,Opus 4.5 的准确率提升到了 68%,而 Opus 4.6 则达到了 84%。
记忆文件夹(memory folder)是另一种方法,它允许 Claude 将上下文写入文件,并在需要时读取。我们已经看到 Claude 在智能体搜索中使用了这种方法。在 BrowseComp-Plus 上,给 Sonnet 4.5 配备一个记忆文件夹,将其准确率从 60.4% 提升到了 67.2%。

Claude 可以将上下文持久化到记忆文件夹中。

《宝可梦》这类长时程游戏,是 Claude 使用记忆文件夹能力提升的一个例证。Sonnet 3.5 将记忆当作逐字记录,写下的是非玩家角色(NPC)说的话,而不是真正重要的信息。在运行了 14,000 步之后,它生成了 31 个文件——其中有两个近乎重复的文件是关于毛毛虫类宝可梦的——而它仍然停留在第二个城镇。

caterpie_weedle_info: - Caterpie and Weedle are both caterpillar Pokémon. - Caterpie is a caterpillar Pokémon that does not have poison. - Weedle is a caterpillar Pokémon that does have poison. - This information is crucialforfuture encounters and battles. - If our Pokémon get poisoned, we should seek healing at a Pokémon Center as soon as possible.

翻译:

caterpie_weedle_info: - 绿毛虫和独角虫都是毛毛虫类宝可梦。 - 绿毛虫是一种毛毛虫类宝可梦,没有毒。 - 独角虫是一种毛毛虫类宝可梦,有毒。 - 这些信息对未来的遭遇战和对战至关重要。 - 如果我们的宝可梦中毒了,应尽快前往宝可梦中心治疗。

后来的模型则写下了战术笔记。Opus 4.6 在相同的步数下,拥有 10 个整理到目录中的文件、三枚 gym 徽章,以及一份从自身失败中提炼出的学习笔记文件:

/gameplay/learnings.md: - Bellsprout Sleep+Wrap combo: KO FAST with BITE before Sleep Powder lands. Don'tletitsetup!- Gen1Bag Limit:20items max. Toss unneeded TMs before dungeons. - Spin tile mazes: Different entry y-positions lead to DIFFERENT destinations. Try ALL entries and chain through multiple pockets. - B1Fy=16wall CONFIRMED SOLID at ALLx=9-28(step14557)

翻译:

/gameplay/learnings.md: - 喇叭芽的“睡眠粉+捆绑” combo:在睡眠粉命中之前,**快速用咬住**将其击倒。不要让它有机会 setup! - 第一世代背包限制:最多20个道具。进入迷宫前扔掉不需要的招式学习器。 - 旋转地板迷宫:不同的入口 y 坐标会通往**不同的**目的地。尝试所有入口,并在多个格子间穿行。 - B1Fy=16的墙壁**确认是实心的**,覆盖所有x=9-28(步骤14557处验证)。

谨慎设定边界

智能体框架围绕 Claude 提供结构,以强制执行用户体验、成本或安全性。

设计上下文以最大化缓存命中率

Messages API 是无状态的。Claude 无法看到之前轮次的对话历史。这意味着智能体框架需要在每一轮中,将新的上下文与所有过去的操作、工具描述和指令一起打包传递给 Claude。提示词可以基于设定的断点进行缓存。换句话说,Claude API 会将直到断点处的上下文写入缓存,并检查该上下文是否与任何已有的缓存条目匹配。
由于缓存的 token 成本仅为基础输入 token 的 10%,以下是智能体框架中帮助最大化缓存命中率的几个原则:

原则描述
静态内容在前,动态内容在后对请求进行排序,使稳定的内容(系统提示、工具)放在前面。
通过消息进行更新在消息中追加<system-reminder>,而不是直接编辑提示词。
不要切换模型在一个会话期间避免切换模型。缓存是模型特定的,切换会破坏缓存。如果需要一个更便宜的模型,请使用子智能体。
谨慎管理工具工具位于缓存前缀中。添加或移除工具会使缓存失效。对于动态发现,可使用工具搜索,这种方式是追加操作,不会破坏缓存。
更新断点对于多轮应用(例如智能体),将断点移动到最新消息处,以保持缓存为最新状态。可使用自动缓存来实现这一点。

使用声明式工具来处理用户体验、可观测性或安全边界

Claude 未必知道应用程序的安全边界或用户体验界面。Claude 发出工具调用,由框架进行处理。bash 工具为 Claude 提供了广泛的编程能力来执行操作,但给框架的只是一个命令字符串——每次操作的形式都一样。将操作提升为专用工具,就能为框架提供一个带有类型化参数的、特定于该操作的钩子,框架可以拦截、门控、渲染或审计这些参数。需要安全边界的操作自然适合做成专用工具。可逆性通常是一个很好的判断标准,而难以逆转的操作(如外部 API 调用)可以通过用户确认来进行门控。像 edit 这样的写入工具可以包含一个过时检查,以防止 Claude 覆盖自上次读取后已更改的文件。

专用工具可用于基于安全、用户体验或可观测性考虑的操作。

*当某个操作需要呈现给用户时,工具也很有用。例如,工具可以渲染为一个模态框,向用户清晰地展示问题,给用户多个选项,或者在用户提供反馈之前阻塞智能体的循环。最后,工具对于可观测性也很有用。当操作是一个类型化的工具时,框架就能获得结构化的参数,从而可以对其进行日志记录、追踪和回放。
是否将操作提升为工具这一决定,应当持续地重新评估。例如,Claude Code 的 auto 模式(在本文发布时处于研究模式)为 bash 工具提供了一个安全边界:它让另一个 Claude 读取命令字符串并判断其是否安全。这种模式可以减少对专用工具的需求,并且只应在用户信任大方向的任务中使用。但对于某些高风险的操作,专用工具仍然有其一席之地。

展望

Claude 智能的前沿始终在变化。关于 Claude 不能做什么的假设,需要随着其能力的每一次阶跃式提升而重新检验。
我们看到这种模式在不断重演。在我们为长时程任务构建的一个智能体中,Sonnet 4.5 在感知到上下文窗口接近极限时会提前草草收尾。我们添加了重置机制来清空上下文窗口,以解决这种“上下文焦虑”。到了 Opus 4.5,这个行为已经消失了。我们为弥补这一缺陷而构建的上下文重置机制,在智能体框架中反而变成了累赘。

移除这些累赘很重要,因为它们可能会成为 Claude 性能的瓶颈。随着时间的推移,我们应用程序中的结构或边界应当基于这样一个问题来修剪:我可以停止做什么?**

参考

Harnessing Claude’s intelligence

http://www.jsqmd.com/news/668975/

相关文章:

  • 贵阳毕业季求职指南|1200万毕业生涌入,这5类岗位和6家公司最值得关注 - 精选优质企业推荐官
  • TypeScript的template literal types实现SQL查询的类型安全
  • 【AGI军事伦理红区预警】:20年国防科技专家首次公开3大不可逾越的AI作战红线
  • 划时代claude-opus-4-7重磅来袭,DMXAPI平台特惠开放,降低 AI 使用成本
  • NLP学习笔记13:BERT系列模型——从预训练到 RoBERTa 与 ALBERT
  • CREO实战宝典:从阵列到骨架模型,解锁十大经典零件设计全流程(曲柱、风扇叶、齿轮参数化、油缸等)
  • 告别DrawCall卡顿!Unity 2022最新Sprite Atlas图集打包保姆级教程(含旧版本迁移指南)
  • 鸣潮自动化终极指南:如何用ok-ww实现智能自动战斗与资源收集
  • 2026年,泉州创业者资源对接会哪个好用?
  • 贵阳销售岗位火热招聘,这5家企业正在疯狂抢人 - 精选优质企业推荐官
  • c# 获取CAD已加载的线型 并且在对话框的下拉列表显示出来
  • 从STRIDE到EVITA:聊聊车载网络威胁建模中,那个更适合你的安全属性模型
  • 告别龟速下载!Hugging Face预训练模型(BERT/RoBERTa)手动下载与本地加载保姆级教程
  • 贵阳找工作必看:2026年销售岗位大盘点,为什么AI营销和顾问型销售更值得选? - 精选优质企业推荐官
  • 解决VisualStudio2026中文打印报错或者乱码
  • UE4/UE5委托实战避坑:从触发器交互到UI响应,手把手教你四种委托的正确用法
  • 如何快速使用MCA Selector:Minecraft世界编辑完整指南
  • 基于springboot的摄影作品分享活动参与网站
  • Ostrakon-VL像素终端部署:离线环境无网络依赖运行方案
  • OCR数据集哪家强?ICDAR/CTW/Total-Text等8大主流数据集实战评测与下载指北
  • Untrunc终极指南:三步修复损坏MP4/MOV视频的完整教程
  • 【卷卷观察】Vibe Coding 时代:有些人已经在用 AI 写代码,有些人还在争论 AI 能不能写代码
  • Vibe Coding 完全实战手册:2026年 AI 辅助编程工作流从入门到精通
  • 基于springboot的新农村自建房改造管理系统
  • YOLO目标检测专用数据集:盲道识别与多类障碍物检测(16类别,9000张标注图)
  • 正则表达式 - 修饰符
  • SITS2026基准套件发布,立即获取首批28家头部实验室实测数据对比表,含GPT-5、Claude-4、Qwen-Max等6大模型得分详情
  • CLIP模型背后的秘密:为什么InfoNCE损失成为自监督学习的标配?
  • 别再让视频裸奔了!手把手教你用PolyV思路给m3u8视频上三道锁(含动态Key实战)
  • Day03:ReAct架构概述:从_军师_到_将军_的进化