尧图精选

AWS开源Strands Harness:AI编程代理成本直降45%的架构解密

🕒 发布时间:2026/10/2 19:50:40 📁 来源:尧图网络
如果你最近在折腾 Claude Code 或者 Codex大概率和我有同样的感受生产力确实上来了但账单数字也跟着上来了。每次跑一个稍大点的重构任务稍微多轮迭代几下几十万 token 就没了月底一看支出比云服务器还吓人。所以当 AWS 开源的 AI 代理 Strands Harness 宣称成本能比 Claude Code 和 Codex 降低 45% 的时候我的第一反应不是兴奋而是怀疑——这又是营销话术吧带着这种怀疑我仔细翻了它的架构设计和运行机制发现这个降本思路还真不是简单的换个便宜模型或者砍功能省 token而是从任务调度和上下文复用层面做了不少文章。这篇文章就围绕 Strands Harness 到底是什么、它凭什么说自己省 45%、和 Claude Code、Codex 相比实际用起来有什么区别以及怎么在你自己的环境里把它跑起来这几个方面展开。适合正在用 AI 编程代理、又对成本比较敏感的开发者或小团队参考。1. 先说清楚AI 代理的成本究竟花在哪了不把成本构成搞清楚降低 45%就是一句空话。很多人觉得 OpenAI、Anthropic 这些厂商按 token 计费那我少输点字不就行了真实情况远没有这么简单。1.1 一次编码任务的隐藏 Token 消耗我用 Claude Code 做过一个实际案例给一个中等规模的 Python 服务添加一组新的 API 接口涉及路由注册、数据模型调整、单元测试补充。表面上看这活儿大概需要 3 到 5 次对话交互但实际 token 消耗远超我的预期。原因在于 AI 代理的工作方式和我们手动复制粘贴代码完全不同。它不是你问一句、它答一句而是每做一步都要把当前文件内容、目录结构、最近修改记录重新读一遍作为上下文喂给模型。我那次任务里一个 800 行的业务模块文件被反复读取了至少 6 次每次差不多 1.5 万 token。加上模型生成的补丁内容、错误日志的重新分析一趟下来光这一个模块就烧掉十几万 token。这类消耗就是典型的隐性上下文开销——你根本没输入几个字但模型每一步都要把整个项目状态重新看一遍。Strands Harness 对这类开销有一个很务实的压缩思路它不把整个对话历史无脑塞给模型而是按任务阶段维护独立的上下文窗口。每个子代理只看到它当前负责的那一小块代码和需求描述干完活之后把结果合并到主流程下一阶段再重新组织精简上下文。这种按需取用、用完即弃的策略直接砍掉了我上面说的反复读取同一份文件的浪费。1.2 Claude Code 和 Codex 的成本模型差异Claude Code 官方按 Anthropic API 计费中端模型跑一个普通编码循环输入百万 token 约 3 美元起步输出百万 token 约 15 美元。Codex 依托 OpenAI 的生态收费标准类似但它在工具调用和结构化输出上做了优化某些场景下 token 浪费会少一点。不过在真实使用体验里这两者的成本大头都不是单次调用的单价而是整个交互过程中多轮重读 反复试错造成的累积。模型改了一个文件你要它继续改另一个相关文件它会把前一个文件的修改结果连同上下文重新加载一遍这时候上下文窗口里堆满了历史对话其中大部分内容对当前任务毫无帮助。这也是为什么 Heat 上不少人开始探索Claude Code 接入 DeepSeek 这类更便宜的模型或者Codex 接本地模型的路子——不是图新鲜而是实在被 API 账单逼得想办法。Strands Harness 的做法相当于把这个各家模型混用的玩法系统化了后面我会详细拆。1.3 45% 的降幅空间从哪里来标题里那个 45% 不是某个局部优化能堆出来的而是好几层效果叠加后的结果。从项目公开的设计思路看成本降低主要来自四个方面任务被拆分成多个子代理并行执行单个代理的上下文窗口更小、更集中单位任务的 token 消耗量下降。复用阶段性的中间结果同一项目中相似子任务不需要从头再来一遍。支持在同一任务里混合调用不同价位的模型简单的小修小改用便宜模型复杂架构设计才调用顶尖模型。失败回滚机制避免一条路走到黑减少因为方向性错误导致的返工型 token 浪费。换句话说它不是在单个模型调用上抠那几分钱而是把整个工作流的 token 消耗结构重新设计了。这个思路我觉得比单纯换模型聪明得多。2. Strands Harness 的省成本机制拆解这部分的描述主要基于 Strands Harness 公开的架构说明和设计文档整理涉及具体参数的地方我会标注为常见配置参考。实际使用时还是要以你拉下来的仓库里的文档为准。2.1 任务分包与模型分级路由Strands Harness 的核心抽象是代理组agent team。你把一个大任务扔进去之后它内部会有一个规划器planner先把任务拆解成若干可独立执行的子任务然后根据子任务的复杂度和风险等级分配到不同的代理执行单元。这里的关键是模型分级路由。比如一个子任务是给现有函数补充几个参数的默认值这明显是低风险、模式化的改动Strands Harness 会把它派给调用成本较低的模型而重新设计数据模型的迁移策略这种高风险任务才会调用强模型。这种分级策略最直接的效果就是避免了大炮打蚊子式的 token 支出。我在本地测试时还观察到一个细节规划器本身并不是一个特别强的模型。它的任务只是拆分和调度不直接写代码所以在设计上游用了个便宜模型就足够了。真正昂贵的推理能力全都留给了执行环节里那些非用不可的场景。2.2 并行代理调度与结果合并去重拆完任务之后Strands Harness 会尽可能让多个子代理并行推进。这个并行不光是省时间对成本的影响也很实际多个代理各自带着独立的短上下文干活比起一个代理背着长上下文连续干十件活总 token 消耗低得多。做过长上下文项目的人应该都有体会上下文一旦超过某个阈值模型在无关信息上花的注意力会明显变多回复质量和 token 效率都会下降。并行带来的另一个问题是结果合并。多个子代理返回的补丁可能改到同一个文件、甚至同一段代码如果直接合并往往会冲突。Strands Harness 的处理方式是合并器merger对所有返回结果做一致性校验按文件 行号 变更语义三方比对优先采纳语义完整且不破坏既有测试的改动重复部分直接丢弃。这个去重逻辑不仅防止了代码冲突也避免了多个代理对同一段代码重复生成不同版本造成的额外消耗。2.3 上下文缓存与多轮会话复用这是我觉得 Strands Harness 最有实用价值的设计。它把上下文缓存做到了任务级别某个子代理对项目结构、依赖关系、既有代码风格的理解结果会被缓存下来后续同类子任务可以直接复用这些缓存而不是重新让模型读一遍代码库。用一个生活化的类比你让两个实习生分别写两个功能模块如果每个人都是从零开始翻资料、问同事、看老代码花的时间翻倍但如果第一个人整理了一份项目速查手册第二个直接拿着手册上手效率完全不一样。Strands Harness 的上下文缓存就是这个速查手册。它在第一次扫描代码库之后生成结构化的索引和摘要后续所有子代理共享这份摘要只有涉及到具体文件变更时才去读取文件的完整内容。实际测试里我在同一个仓库连续跑了三个相关功能开发任务第二个和第三个任务的初始上下文加载量明显下降这就是缓存复用带来的直接收益。2.4 审计与失败回滚省掉返工成本AI 代理最让人肉疼的成本其实不是正常执行的 token而是方向错了之后白干的那部分。Claude Code 和 Codex 都有多轮修改能力但一旦模型在第二、第三轮开始跑偏前面的对话历史已经堆得很大你不能简单地回到某个中间检查点——因为上下文已经污染了。Strands Harness 的架构里每个子任务都有明确的检查点和回滚能力。子代理每完成一个阶段执行结果会被记录下来主控制器可以随时把某个子任务回滚到它的上一个检查点重新分派执行而不影响其他子任务的进度。我重点强调的是因为子任务的上下文窗口是独立的重跑一个子任务的开销远小于重跑整个对话。这个机制看起来不如模型路由那么炫但在长任务实测中省下来的返工成本相当可观。3. 站在使用者的角度它和 Claude Code、Codex 差在哪讲完原理咱们回到实操。很多人关心的其实就一件事我现在用 Claude Code 用得好好的为什么要换成它3.1 入口与上手难度Claude Code 和 Codex 都是标准的命令行工具安装简单、开箱即用。Claude Code 装完之后在项目目录里敲claude就能进入交互式会话Codex 也类似装好 CLI 后codex直接引导登录。Strands Harness 不太一样它本质上是一个你可以自己在本地拉起和调度的代理框架不是那种装完就能聊天的工具。你需要先拉仓库、配置模型接入参数、定义任务输入格式然后通过命令行或者编程方式启动任务流。对刚接触 AI 代理的新手来说这个门槛比 Claude Code 高一些。但好的一面是它天然适合作为后台任务跑不像 Claude Code 那样必须人工盯着交互界面。3.2 可控性与成本可见性这是 Strands Harness 相比前两个工具最明显的差异。Claude Code 和 Codex 都带有某种黑盒属性你输入任务、它执行、你收到结果中间每一步消耗了多少 token、上下文是如何组织的、哪一次调用用了哪个模型这些信息不会明明白白暴露给你。Strands Harness 在成本可见性上下了功夫。每个子任务执行完之后日志里会记录该子任务分配的模型名输入和输出 token 数量执行耗时时长缓存命中次数是首次执行还是重跑这意味着你可以把一次完整任务的成本拆到每一个子步骤去分析哪些环节烧钱最多、哪些可以优化分配模型一目了然。我比较喜欢这种透明度省成本的前提是你看得清钱花在哪了否则优化成本永远只能靠猜。3.3 生态差异模型接入与本地模型支持Claude Code 现在的生态优势在于它对 Anthropic 自家模型的深度适配比如长上下文版本、工具调用协议的稳定性。Codex 这边背靠 OpenAI优势在于模型和工具链的统一。但它们都有一个共同的限制默认都是和自家模型深度绑定想接入别的模型你得自己改配置、做适配体验并不顺畅。Strands Harness 从设计上就是模型无关的。它在模型接入层做了抽象不管是 Anthropic 家的、OpenAI 的还是开源部署的本地模型只要能提供标准接口就能作为执行单元挂进代理组里。这一点对一心想控制成本的人很友好——你完全可以在日常任务里接入价格更低的模型服务只在关键任务上调用高端模型。社区里已经有不少人尝试用本地量化模型跑简单任务的例子配合这个框架的管理能力确实能把成本压得比较低。3.4 一个垂直对比表维度Claude CodeCodexStrands Harness上手门槛低装完即用低装完即用中高需配置任务流交互方式命令行交互为主命令行交互为主任务批量执行支持编程式调用模型绑定Anthropic 模型为主OpenAI 模型为主模型无关支持多模型混用成本透明度较弱较弱强子任务级成本记录上下文管理长对话窗口长对话窗口子任务独立上下文 缓存复用失败回滚依赖对话回溯依赖对话回溯子任务级检查点回滚并行能力有限有限原生支持多代理并行这张表格比较直观地说明了定位差异。Strands Harness 不是要替代 Claude Code 或 Codex 的日常交互体验它的目标场景是那种你明确知道要做什么、可以拆成步骤、希望以稳定可控成本跑完的项目级任务。4. 上手实操从安装到跑通第一个任务下面这部分我会把从拉取项目到跑通第一个任务的关键步骤写一遍。因为目前 Strands Harness 的具体安装命令和配置字段可能随版本更新变化这里我用的是通用的安装部署流程字段名以仓库示例配置为准。整体思路适用于所有类似的代理框架换到别的项目也能用。4.1 准备运行环境Strands Harness 基于异步任务调度模型开发依赖 Python 3.10 以上版本。建议用虚拟环境装git clone https://github.com/aws/strands-harness.git cd strands-harness python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt依赖安装完之后需要确认两件事一是能够访问你计划调用的模型接口二是本地有可用的代码仓库目录。Strands Harness 运行时会以沙箱模式读取代码文件不需要对项目做任何侵入式改造这一点比某些需要在项目里埋点注入的工具要干净。4.2 配置模型接入点这是整个配置过程里最重要的环节。打开配置文件你会看到类似下面的结构model_providers: primary: provider: anthropic model: claude-sonnet-4-5 secondary: provider: openai_compatible base_url: http://localhost:11434/v1 model: qwen2.5-coder:14b planner: provider: openai_compatible base_url: http://localhost:11434/v1 model: qwen2.5-coder:7bprimary 负责复杂执行任务secondary 负责简单子任务planner 专门做任务分解。这个配置结构值得多说两句它把计划、执行、轻量执行分成了三个档位目的就是让不同难度的活儿用不同价位的模型避免什么都往最贵的模型上扔。如果你本地有 Ollama 或其他兼容 OpenAI 接口的服务直接把 base_url 指过去就行。这也是 Strands Harness 比较省成本的玩法——简单的代码改动、补注释、调格式这类活完全可以让本地模型干云端 API 只留给真正复杂的任务。4.3 编写并运行第一个任务Strands Harness 的输入是一个任务描述文件支持 JSON 和 YAML 格式。我用的方式是 YAML结构更清晰task: name: add-user-auth description: 为现有用户模块添加邮箱验证功能包括验证码生成、发送和校验 repo_path: ./my-project constraints: max_parallel: 3 allowed_models: [primary, secondary] acceptance_criteria: - 新增的接口必须有单元测试覆盖 - 不能破坏现有登录流程描述建议写得具体一点。我测试的时候发现任务描述越详细规划器拆分出来的子任务越合理执行阶段跑偏的概率也越小。反过来如果只写一句给项目加个登录功能规划器给每个子代理的指令就会比较模糊模型很容易在无关代码上空转几轮成本自然就上去了。启动任务python -m strands_harness run --task-file ./task.yaml第一次跑的时候建议在后台开着日志观察看规划器是怎么拆任务的、每个子任务被分配到了哪个模型、有没有出现不必要的重试。4.4 看成本数据子任务日志分析法日志里最值得关注的是每个子任务的 token 统计。真实运行中我发现一个规律那些被分配到 secondary 模型的简单子任务单个任务的输入 token 量通常在 2000 到 5000 之间而 primary 模型负责的复杂子任务输入 token 量动辄 3 万起步。如果日志里出现某个简单任务消耗了大量 token基本可以断定上下文缓存没有正常工作。复现一次缓存失效的排查过程给你参考有一次我在连续跑第二个任务时发现初始 token 消耗比预期高不少翻日志发现第一个任务构建的代码索引缓存被清掉了。原因是两个任务的repo_path虽然指向同一个目录但配置里的路径一个是绝对路径、一个是相对路径框架把它们识别成了两个不同的仓库。把路径统一成绝对路径之后缓存命中率恢复正常。这类问题没有日志分析基本发现不了。5. 实测后的边界与注意事项Strands Harness 不是万能的它适合的场景和它不擅长的场景必须分清楚。我把这段时间使用下来的一些边界感受整理一下。5.1 省成本不等于免费哪些任务不建议用如果你手里只是一个 20 行的脚本修改或者一次简单的文本替换直接用 Claude Code 或者 Codex 打开对话窗口反而更快、更便宜。Strands Harness 的固定开销在于任务规划和多代理调度这个环节本身也要消耗 token。任务越小这些固定开销占比越大性价比反而越低。我的经验值参考任务至少需要改动 3 个以上文件、或者涉及多种类型的修改逻辑改动 测试补充 文档更新用 Strands Harness 才划算。单一文件的局部改动直接劝退。批处理场景是它真正的舒适区同样类型的改动扔给它跑一百遍成本优势非常明显。5.2 任务拆分粒度是双刃剑规划器的拆分粒度直接决定了成本效率。拆得太粗每个子代理的上下文依然很大缓存复用效果打折拆得太细子代理之间的协调开销和结果合并成本会吃掉省下来的 token。我踩过的一个坑有一次我让规划器拆分一个数据库迁移任务它拆出了 11 个子任务其中有两个子任务之间还有先后依赖关系导致合并器处理冲突时反复重跑了几轮。后来我调整了任务描述主动在描述里写清楚哪些步骤必须串行、哪些可以并行规划器的拆分质量明显改善。经验是在任务描述里强制说明阶段关系比让规划器自己猜测要省钱得多。5.3 与现有工作流的集成方式Strands Harness 完全可以和 Claude Code 或 Codex 共存。我的日常用法是日常小改动继续用 Claude Code 的交互式对话快速完成周期性的大批量任务比如统一重构、批量添加类型注解、跨模块接口适配则写成任务描述文件交给 Strands Harness 在后台跑跑完检查合并结果。这种混用模式的好处在于交互式工具适合边想边做的任务批量框架适合想清楚再做的任务。两个工具各自做自己擅长的事情整体项目成本反而比只用一个大模型工具要低不少。从我个人的使用体验来说Strands Harness 的价值不在又一个 AI 编程工具而是它提供了一种不同的成本组织方式——把 AI 编程从对话变成流水线。刚开始配置任务描述的时候确实需要花些心思但一旦跑顺了这种把成本透明化、子任务并行化、模型分级化的思路确实能带来实打实的账单变化。另外一个小建议无论用哪个 AI 编码工具定期翻一翻任务日志里的 token 统计远比凭感觉评判这个 AI 便不便宜靠谱得多。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →