为什么值得再看一个 Agent Harness
过去一年大家普遍有一个体感:Claude Code、Codex 这类成熟 harness 里,一个想法「就是能跑」;可一旦自己从零搭 Agent,就要面对工具循环、上下文溢出、prompt 缓存、失败重试这一堆细节,拼出来的东西往往「差一点感觉」。AWS Strands 团队在 9 月 21 日发布的开源项目 Strands harness,瞄准的正是这个缺口:把一个达到前沿水平的 harness 完整组装好交给你,一行代码启动,Apache 2.0 协议,可本地跑也可部署到任意云。
数字先摆出来:在相同模型(Claude、GPT 系列)下,Strands harness 在六个基准上的 token 成本比 Claude Code、Codex 等主流 harness 低 28%,准确率持平或更高;换用 Fable 5 模型时,成本比 Claude Code 低 77%,且 Terminal Bench 2.1 得分反超。成本效率主要来自两个内置默认:prompt caching 和一套相当激进的上下文管理策略。
十分钟跑通
安装很简单,Python 与 TypeScript 双端支持:
pip install strands-harness
# 或
npm install @strands-agents/harness
TypeScript 侧的启动代码只有两行:
import { createHarness } from "@strands-agents/harness";
const agent = await createHarness({ model: "bedrock/global.anthropic.claude-opus-5" });
await agent("调研三个主流向量数据库,对比价格与配额,写成 comparison.md");
Python 侧的用法几乎对称,同样是创建后直接以自然语言派活:
from strands_harness import create_harness
agent = create_harness(model="anthropic/claude-opus-5")
agent("整理本周 AI 领域五条重要新闻,逐条附来源链接,存成 weekly.md")
模型选择上支持 Amazon Bedrock、Anthropic、OpenAI、Google、LiteLLM,也可以指向本地 Ollama 模型——这意味着整条链路可以完全离线跑,对做本地推理的团队很友好。切换模型只需改一个字符串,不需要动任何业务代码,这对想在同一套 Agent 逻辑上横评多个模型的团队尤其省事。
create_harness() 返回的 Agent 开箱自带这几样东西:
- 工具集:shell、文件的读取写入编辑、Web 工具。用的都是模型本来就熟悉的通用原语,而不是为单个任务定制的花哨工具;
- 自主上下文管理:把大体积的工具返回结果卸载到文件,并对每次请求中可复用的部分做缓存;
- 跨运行长期记忆:传入 session ID 就能恢复之前的对话;
- 任务委派:开放式子任务委派给内置的辅助 Agent,用 checklist 跟踪多步骤工作;
- 技能加载:目录里如果存在 skills 定义会自动加载。
默认上下文策略:28% 省在哪
这是本次发布里最有含金量的部分。三个默认值:
- 工具返回结果超过约 1500 个 token,就截断并把完整内容卸载到文件,模型需要时再读;
- 上下文窗口占用率超过 85% 时触发摘要压缩(compaction);
- 循环内一旦检测到溢出,立即执行上下文恢复,不让会话崩掉。
团队说测试中 token 效率和准确率的大头来自这套默认策略——尤其是第一条,把「工具输出灌爆上下文」这个最常见的成本黑洞直接焊死了。三个阈值都可以覆盖,如果你的任务平均工具输出很小,把截断阈值调高反而能减少读文件的往返。
💡 提示:如果你想复现它们的基准方法,团队预告了后续会发一篇研究员署名的基准论文,当前数据来自 EC2 上的 Harbor 分布式测试。
CLI 原型流:说人话改配置,再导出代码
Strands CLI 建立在 harness 之上,提供一条很顺的路径:先用自然语言改配置,满意后导出真实代码。官方演示里,工程师对着 CLI 说「加上 Playwright MCP,然后测一下加载博客视频的延迟」,Agent 自己把 MCP 工具接好并完成测量,最后跑一句 /export,就能拿到包含 Playwright MCP 配置的 TypeScript 或 Python 完整代码,直接丢给编码 Agent 继续迭代。
这个「原型在 CLI、交付是代码」的设计解决了一个真实痛点:早期原型阶段你不想写样板代码,但进入工程化阶段又必须拥有可版本化的代码库。npm install -g @strands-agents/cli 装上就能试。
从定制到部署
默认行为全部可覆盖:换模型、加工具、替换组件,一路下潜到 Strands Harness SDK 的原语层。部署侧的选择很宽——任何能跑 Linux 容器的平台都行,官方点名了 Modal、Cloudflare Containers、Azure Container Apps、Google Cloud Run、Amazon ECS 和 Amazon Bedrock AgentCore。对个人开发者,Modal 或 Cloudflare 的方案基本零运维;对企业用户,Bedrock AgentCore 提供现成的隔离与观测。
值得注意的边界
几点冷静判断。第一,它是通用 Agent harness,不是编码 Agent——写代码场景有成绩,但产品重心在「把你自己的 Agent 想法跑起来」。第二,28% 这个数字的参照系是六基准上的平均值,具体到你的工作负载,收益取决于工具输出体积和会话长度:长会话、大工具输出的任务收益最大,短问答几乎无感。第三,社区生态还很新,遇到问题官方 Discord 是最快的求助渠道。
如果你最近正打算把一个原型 Agent 推上生产,或者厌倦了自己拼上下文管理逻辑,这个项目值得今天下午就花一小时试一遍。
最后给一个横向视角。这次基准测试里另一个有意思的信号是开源 harness 的整体崛起:团队提到还有两个开源 harness 在成本与准确率的平衡上对 Claude Code 表现接近,而 DeepSeek harness 以最低 token 消耗换来最低准确率,展示了「极致省钱」路线的下限。也就是说,harness 之间的差异已经不是工程细节,而是实打实的账单差异——同一个任务、同一个模型,选错 harness 可能多付三倍的 token 费。把 harness 当作和模型同等重要的选型对象,是这份基准数据最直接的结论。