Harness 工程:把智能体部署到云端规模

Mike Chambers · AWS 资深 AI 专家布道师 · 2026-09-17
听中文精华AI 合成朗读00:00
把一个智能体里的模型部分拿掉,剩下的所有东西,那就是 harness。
— Mike Chambers

关联

这一集是 AWS 的资深 AI 专家开发者布道师 Mike Chambers 在 AI 工程师大会上的一场演讲,主题是 harness 工程——也就是「怎么给智能体套上那副缰绳」。他给出的定义很干脆:把一个智能体里的模型部分拿掉,剩下的所有东西就是 harness(挽具)——管理循环、记忆、技能、工具、MCP 连接的那一整套装具 。

他开场先立了一个区分:世上有两种智能体。一种是「我们使用的」——Claude Code、Cursor、Kiro 这类编码助手和生产力工具;另一种是「我们构建的」——自己开发、部署给大众用的智能体。

这两类要分开对待:你用的智能体尽管放开折腾(token maxing 那类玩法,想怎么烧就怎么烧),但你构建的智能体必须仔细设计,确保它对将要使用它的受众有效 。这两类也会串起来——你构建的可能正是别人使用的。

什么是 harness

harness 原意是「控制动物的一套皮带和扣件」,把「动物」换成「模型」,意思就对了。LangChain 和 MartinFowler.com 都写过相关文章(MartinFowler 那篇是 Brigitte 写的,不是 Martin 本人),讲的是「我们使用的」编码智能体的 harness 工程。而对工程团队来说,这个概念并不陌生:团队有编码标准已经几十年了,现在他们基本上有了 harness 标准——想部署到每个人编码系统上的那套东西 。

在使用型智能体的语境下,harness 包括:它怎么用记忆、你希望它用的技能、工具和 MCP 服务器(让它能连文档服务器之类)。AWS 为此出了免费的 GitHub 智能体工具包,帮助在 AWS 上部署代码的开发者。

Chambers 对此充满热情的原因是:他不想再看到 slop ops(垃圾运维)。专业云开发领域过去一直反对 ClickOps(在控制台上点来点去)——点来点去适合搞清楚状况,但不是部署到生产环境的方式。同理,可以让智能体回答「现在什么情况」,但别让它直接启动 S3 桶、开 EC2 实例;要让它把基础设施即代码构建出来,由代码去完成部署——这样你仍然拥有自己在云上的部署 。

从笔记本到云端规模:构建型智能体要考虑什么

构建型智能体同样要管记忆、技能、MCP 工具,但远远不止这些,尤其当你要把它部署给大众。怎么管理这个循环?

怎么管理扩展、支付、记忆、身份技能、运行时、上下文管理?还有他特意留到最后、但认为应该最先说的一点:可观测性和评估 。

把所有代码塞进一个容器直接部署?想扩展到数千用户那真不合适——必须把每个组件单独拆出来、分别横向扩展。而这,在他看来就是 harness 工程的本体 。

现场演示分三步递进:

  1. 本地最小智能体:用开源的 Strands Agents SDK,十几行代码——引入 agent 和 tool 装饰器,传入 system prompt 和几个工具(计算器、getTime),框架替你管理循环。算 harness 吗?算是,但跑在笔记本上,没有规模。

  2. 加记忆:第二个智能体(他用 Kiro 生成)加入了 session manager,在多次调用之间维护会话状态——一种中短期记忆,长期记忆则存在文件里。演示效果:因为之前聊过,智能体知道他住在澳大利亚,被问「谁会赢世界杯」时答「澳大利亚」。

  3. 上云端:用 Bedrock AgentCore 部署。他的 agentcore 命令行工具一步步引导:选 Python,选接入方式(HTTP、MCP、或 AGUI 做交互式聊天),框架随便选(任何模型都支持,不限于 Amazon 的),然后勾选长期和短期记忆——它会创建独立于智能体运行、异步连接的云基础设施来管记忆。关键卖点:代码里只需加上与 AgentCore app 的关联,就能在运行时扩展并实现多租户隔离——你可以写一个只服务一个用户的智能体,然后直接扩展出去,不用自己写任何多租户代码 ;安全和身份管理也随之大幅简化。

激进的一步:连智能体代码都不要了

演示的收尾最反直觉:CLI 里其实还有一个「harness」选项他没选——因为 AgentCore 已经把 harness 内置了。最简配置只是一个 JSON:指明用哪个模型、哪个 system prompt,连一行智能体代码都没有,直接 agentcore deploy 就能部署出去。他由此提出一个论断:如果「一个 system prompt 加几个 MCP 工具」就能跑,那也许 80% 的智能体用例、80% 的智能体开发基本上已经被解决了 。

最后他强调 AgentCore 的各能力是可组合的:已在生产环境跑得好好的智能体,如果喜欢「长期记忆由别人以无服务器方式代管」这个想法,可以只拿记忆这一块来集成,不必整体迁移 。Strands Agents SDK 则免费开源,是一个模型优先的智能体组装框架。

本集带走

  • 先分清两种智能体:「使用的」(Claude Code、Cursor 等)可以放开折腾;「构建的」必须为使用它的受众认真设计 harness。
  • harness = 智能体减去模型:循环、记忆、技能、工具、MCP、运行时、上下文管理、可观测性与评估——每一块都要能独立扩展,而不是塞进一个容器。
  • 别让智能体直接点云资源:延续反对 ClickOps 的思路,让智能体生成基础设施即代码,你才仍然拥有部署。
  • 多租户不必手写:在代码里接上 AgentCore app,就能把单用户智能体直接扩展到多租户,身份和安全一并简化。
  • 最简可能已够用:一个 JSON(模型 + system prompt)加 MCP 工具就能部署——Chambers 认为这可能已覆盖 80% 的智能体开发场景。
全部金句 3 条

把一个智能体里的模型部分拿掉,剩下的所有东西,那就是 harness。
If you take an agent, remove the model part from it and everything that you have left, that’s the harness.
—— Mike Chambers · [04:54]

在控制台上点来点去很适合搞清楚发生了什么,但这不是你把东西部署到生产环境的方式。
Clicking around on the console is great for being able to figure out what’s going on, but it’s not how you deploy things into production.
—— Mike Chambers · [06:30]

可以说,如果这都能做到的话,那么也许 80% 的智能体用例、80% 的智能体开发基本上已经解决了。
And there’s an argument to be made that essentially if that’s possible, then maybe 80% of agentic use cases, 80% of agent development’s kind of solved already.
—— Mike Chambers · [18:20]

接着看

顺着「智能体」挖下去

换个口味