《Docker Agent:当所有人都在造 harness》
Docker 开源了 agent 构建/运行框架 docker-agent:YAML 声明式、多 agent 编排、MCP 工具、模型无关,还能像镜像一样分发。HN 评论区吵的却是:这跟容器有啥关系?harness 会不会变成下一个 JS 框架修罗场?访谈聊品牌、插件架构与 Docker 的求生欲。

这周 Docker Engineering 在 GitHub 开源了 docker-agent:一个用 YAML 声明式定义、不写代码就能造 AI agent 的构建与运行时。多 agent 自动委派、MCP 工具生态、模型提供商无关,还能把 agent 打包 push 到 OCI registry、pull 下来直接跑。仓库已经攒了 4000 多 star,Apache 2.0 开源。但 HN 评论区 120 多条讨论,吵的根本不是功能清单,而是三层火药味:第一,这玩意儿跟 Docker 容器到底有什么关系?第二,agent harness 是不是正在变成十年前的 JS 框架——"人人都有一个"?第三,用 Go 写 harness,插件架构怎么做?我请来陈默——云原生基础设施工程师,自己手搓过 agent harness,被 Go 的插件机制折磨过,聊聊这场 harness 大战。
本文由每日自动管线生成:选题与素材来自 Hacker News 公开讨论,访谈内容由 AI 基于原文整理,嘉宾为角色设定,观点不代表任何真实人物。
小听: 默哥,先给没跟的人补个背景:docker-agent 到底是干啥的,凭什么值得 Docker 专门开一个仓库?
陈默: 一句话:它是"agent 界的 docker compose"。你写一份 YAML,声明 agent 用的模型、指令、挂哪些 toolset(MCP server),然后 docker agent run agent.yaml,一个能干活的 agent 就起来了。不用写代码,还支持多 agent 组队、自动委派任务,内置 think、todo、memory,连 RAG 都给你配好了 BM25、embedding、混合检索。但最有 Docker 味的一点是分发:agent 可以打包 push 到任意 OCI registry,别人 pull 下来直接跑——当年"build once, run anywhere"教镜像的那套,现在想教 agent。
小听: 评论区最高赞的困惑我替大家问了:名字里有 Docker,但有人说它"跟容器技术一点关系都没有"?
陈默: 这话基本是对的,得拆开看:Docker 是公司名,不是容器技术名。一位 Docker 工程师亲自下场回帖澄清:docker-agent 是个独立二进制,不跑在容器里也跑得很好;项目最早的名字叫 cagent,就是"compose for agents"的意思,后来才改的名。品牌是双刃剑:docker agent 挂在 docker CLI 下面,老用户觉得亲切,新人第一反应是"我的 agent 要跑在容器里吗"——答案是不用。这种命名税,Docker 以后得一直交。
小听: 第二层火药味最有意思:有人说"agent harness 正在变成当年的 JS 框架——人人都有一个"。这梗你怎么看?
陈默: 历史押韵,押得严丝合缝。2015 年是"又一个 JS 框架",2026 年是"又一个 agent harness":大厂造、独角兽造、独立开发者也造,VS Code 分叉套个壳就能发一篇 Show HN。但 Docker 的赌注跟别人不一样——别人卷模型、卷 UX,它卷分发。OCI registry 是它唯一真正的护城河:agent 变成可版本、可签名、可分发的制品,这条路只有 Docker 走得最顺。容器时代它教会全世界"一次构建、处处运行",现在它想教会 agent 世界"一次打包、处处运行"。

人人都有一个 harness,就像当年,人人都有一个框架。
小听: 技术深水区来了:评论区有个 gopher 的血泪帖,说"Go 没有好的插件机制,给 harness 做扩展是真挑战"。这是什么情况?
陈默: 这是真痛点。harness 的核心矛盾是:你要让用户扩展,就得加载用户代码。TS 生态插件好写,但动态加载第三方代码是安全大坑;Go 是编译语言,plugin 包基本上只有玩具和博客在用。评论区给了几条野路子:Grafana 的 k6 往 Go 里嵌 JS 解释器,Mattermost 硬上 Go plugin,还有人主张干脆别做插件、只暴露 HTTP API。docker-agent 的解法很聪明:本体 Go 写,扩展全走 MCP server——把"插件"变成"进程",用协议代替动态加载。它没有解决 Go 的插件问题,它直接绕过去了。
小听: 还有个毒舌评论:"这就是在追热点"(chasing trends),"Docker 在求生"(quest for staying relevant)。你觉得公允吗?
陈默: 毒舌,但诚实了一半。Docker 在容器时代赢了技术、输了商业:编排输给 K8s,云输给巨头,最后靠 Docker Desktop 订阅续命。现在 agent 时代,它想抓住"分发"这个位置,求生欲确实拉满。但方向不算离谱——agent 最需要什么?隔离执行环境。一个乱写文件的 agent,你敢让它直接跑在宿主机上吗?沙箱本来就是 Docker 的老本行,这是它少数几个"天作之合"的赛道。追热点不可耻,追错跑道才可耻。

compose for agents:把 agent 也装进"集装箱"。
小听: 最后一个问题,替读者问个实在的:今天,一个普通开发者要不要试 docker-agent?
陈默: 三条建议。第一,YAML 声明式 + 版本管理,适合把团队的 agent 沉淀成资产——别再每个项目手搓一套 prompt,用完即焚;第二,OCI 分发值得玩味,内部 agent 市场、私有 registry 这条路,国内大厂其实也在悄悄走;第三,选 harness 别追新:看模型支持广度、看沙箱隔离、看 issue 响应速度。docker-agent 的沙箱是加分项,但 4000 star 的项目,进生产之前先自己跑一遍 e2e,这是底线。
小听: 总结一下今天的访谈:Docker 开源 docker-agent,YAML 声明式、多 agent、MCP 工具、模型无关,最大的野心是把 agent 变成可分发的制品;HN 吵的三件事——名字和容器的关系、harness 泛滥的框架轮回、Go 插件架构的取舍;Docker 赌的是分发这条老本行。原始讨论和原文见参考链接。