👇 下方是排版效果 · 点右侧 复制 直接粘到公众号

QUOTE

不同领域 Agent 的构建、运行和交付,正在被放进 同一套 Harness

前五篇文章先分析插件怎样组成 DeepSeek Harness,又追踪了一次会话如何运行,最后把这些设计放进一个云服务器管理的实验。现在把这几篇文章反复提及的观点再做一次汇总:DeepSeek Harness 并不满足于把 Coding Agent做得更灵活,它想把不同领域 Agent 的构建、运行和交付都承载于同一套 Harness。

这里说的 Agent,是指能够调用工具并持续完成任务的智能体;Harness 则是 Agent 外面的工作环境,它把模型接到工具和权限系统中,并负责保存会话与运行过程。DeepSeek Harness 在这套环境里进一步引入 Host、Session、preset 和 Session Log等概念。Host 是长期运行的宿主进程,Session 是可以保存和恢复的一段 Agent 会话,preset(会话级 Agent 预设)为当前 Session 装入相应能力,Session Log(会话事件日志)则保存这段会话中发生过的事件。

— 图 1:DeepSeek Harness 用 Host 承载多段 Session,preset 负责装入能力,Session Log 记录运行事实。来源:根据本文整理。

所谓领域 Agent,也就不难理解了。它不是一个什么都能做的通用助手,而是围绕某类专业工作承担固定责任,我认为现阶段的AI落地应该发生在拥有明确业务目标和可信赖工作流程的不同专业领域。比如服务器运维 Agent,它需要考虑系统负载、服务健康状态等明确指标,发生异常时的操作过程也非常清晰,那么对于这个Agent而言,它应该看到服务器状态,也应该能提交许可范围内的变更,而除此之外的系统能力,则没有必要暴露给它,Agent 在这个严格约束的框架内可以降低风险并针对自己的业务目标逐步迭代。

本文看点

01

领域 Agent 的边界

从 server-operator 看工具收缩与审批

02

行业路线的分化

比较开发框架、托管 Agent 与 Meta-Harness

03

完整生命周期

构建、运行治理和产品交互形成闭环

01

DOMAIN AGENT

一个领域 Agent 怎样进入同一套 Harness

上一篇文章里的 server-operator 是一个很小的例子。它先读取服务器状态,根据许可范围生成变更方案,执行前交给人工审批。运行它的 Session 没有 Bash(命令行环境),也没有通用文件工具,因此模型即使产生越界动作,也找不到相应的执行入口。约束不再依赖提示词反复提醒,而是落在 Agent 能调用的工具上。

— 图 2:server-operator 运行时发起 server_change_apply 后,Harness 在执行前进入“等待审批”状态。来源:用户提供的 DeepSeek Harness 截图。

这和 Coding Agent 的工作方式有明显差别。一个拥有完整 Bash 的 Coding Agent 处理临时故障当然更加灵活,它可以读取配置和日志,必要时修改文件,再运行命令验证结果。问题也来自这份灵活性:如果某个运维 Agent 的职责只包括查看状态和提交受控变更,那么完整命令行权限会让它获得大量与职责无关的行动路径。

领域 Agent 因此需要做更多约束。模型只看到完成当前工作所需的状态,能够提交的动作也受到工具范围限制。服务器操作被接入 DeepSeek Harness 后,再用 preset 把所需能力装进新的 Session,server-operator 就可以和 Creator(创造模式,用来扩展 DeepSeek Harness 本身)运行在同一个 Host 中。前者处理受控运维,后者负责修改和测试。运行中暴露的问题回到 Creator 修正,新版本再进入新的运行 Session。这个实验最重要的结果,是一个 Agent 可以在 DeepSeek Harness 中被构建出来,随后沿用同一套运行基础继续工作。

— 图 3:server-operator 的运行闭环把构建、受限工具、人工审批和反馈修正放在同一套 Harness 中。来源:根据本文整理。

02

CLAUDE CODE

Claude Code 率先证明了专用 Harness 的力量

回顾过去两年 Anthropic 做出的贡献。在 AI 编程还没有成为今天这种行业共识的时候,Anthropic 已经持续把 Claude 的代码能力做扎实。当很多 Agent 项目还在讲多智能体协作和自主执行的宏大故事时,Claude Code 把注意力放在一个边界清楚、反馈充分的领域:软件工程。

它读取代码库,通过文件系统修改内容,再用命令行运行测试。代码仓库保存长期上下文,终端把模型接到工程动作,测试结果又会回到下一轮判断。Claude Code 因而跨过了“生成代码片段”这一步,开始承担连续的软件工程任务。后来 Anthropic 又把这套 Agent Loop(模型调用工具,并依据工具结果继续工作的循环)开放为 Claude Agent SDK,让其他程序也能复用相近的 Agent 能力。

Claude Code 让整个市场看到了专用 Harness 的力量:模型能力只有进入反馈充分的工作环境,才能稳定转化为生产力。围绕代码仓库、终端和测试长期打磨以后,Claude Code 大获成功,AI 编程也迅速成为主要模型厂商的核心产品方向。它对市场的影响已经远远超过一个编程工具,因为行业由此接受了更重要的经验:模型本身很强还不够,外面的工作环境同样会改变能力上限。

问题随后出现。既然 Coding Agent 已经这么好用,人们自然会尝试把它扩展到代码之外。Skill 和 MCP 可以接入专业知识与外部系统,Claude Agent SDK 也能承载新的 Agent 应用。然而,Claude Code 的基础语境来自软件工程,文件系统和命令行因此拥有很高的地位。对于一个权限需要收窄、步骤需要受控的领域 Agent,这套默认能力有时反而过于灵活。

维度 Coding Agent 领域 Agent 本文判断
工作目标 围绕代码库完成连续软件工程任务 围绕固定专业工作承担明确职责 二者不是强弱关系,而是目标不同
默认工具 文件系统、命令行、测试等通用工程工具 只暴露当前业务所需的状态读取、计划和执行工具 领域 Agent 的价值来自有意识的收缩
反馈来源 代码仓库、终端输出、测试结果 业务状态、审批结果、Session Log 与 Trajectory 反馈必须贴近工作场景
权限边界 通常更宽,便于处理开放式工程问题 由 preset 和工具边界限制 职责越明确,越应该机械化收窄权限
主要风险 灵活性带来超出当前职责的行动路径 工具过少可能限制问题处理范围 边界应按业务目标设计,而不是按通用能力默认展开
适合场景 代码修改、测试修复、工程自动化 运维、审批、客服、内部流程等可定义职责的领域 专用 Harness 能提高稳定性和可治理性

— 表 1:Coding Agent 与领域 Agent 的差异在于目标、工具边界和反馈来源,不是能力高低排名。来源:根据本文整理。

03

DESIGN GAP

OpenClaw/Hermes 与 DeepSeek Harness 的设计差异

OpenClaw 和 Hermes 从另一个方向继续推进 Agent。它们把 Agent 做成长期在线的服务,通过 Gateway 维护会话,再接入用户日常使用的通信渠道。Agent 因而不必停留在开发终端,可以运行在服务器上,也可以从消息渠道持续接受任务。

这解决了“Agent 怎样看起来更适合普通用户”的问题,却没有在约束上考虑:同一个运行系统里,如果同时存在不同专业工作,Agent 应该分别获得什么能力?哪些步骤只靠模型理解即可,哪些步骤必须由运行系统限制?领域 Agent 一旦进入生产环境,这些问题会比“能不能调用更多工具”更加重要。

DeepSeek Harness 在这里采用了更彻底的结构。它没有把 Coding Agent 当成所有 Agent 的固定外壳,而是把 Coding 本身也放进 preset。Coding、Creator 与其他领域 Agent 都运行在同一个 Host 中,只是各自的 Session 装入不同能力。于是,Coding Agent 不再天然高于其他 Agent,它负责构建新能力时是一种开发角色;进入运行阶段以后,领域 Agent 可以只携带自己所需的工具和规则。

04

PRESET

preset 开始成为领域 Agent 的交付单位

DeepSeek Harness 的 preset 因此不只是不同的开发模式。针对不同业务目标制定的工具边界和工作规则,都可以随 preset 进入新的 Session。对于用户而言,这已经很接近领域 Agent 的交付单位。

— 图 4:创建 Session 时,server-operator 已作为自定义 preset 出现在模式选择列表中。来源:用户提供的 DeepSeek Harness 截图。

Host 负责公共运行基础,preset 负责当前 Agent 的组成。插件把新的领域能力接入 Harness,preset 再按不同职责把需要的部分装进 Session。这样做的意义在于构建和运行之间少了一次重新包装:开发阶段验证过的能力范围,进入运行阶段后继续沿用。

Everything is a Plugin 可以理解为“主要能力都能通过插件装配”。这套机制先把 harness 拆解成可组合模块,preset 再把它们组成不同的 Agent。负责设计之套工作流的人因此可以把精力放在领域工具和工作规则上,不必为每种 Agent 重新搭一套会话外壳。构建与运行开始共享同一个可修改的 Host,preset 则把经过验证的领域能力带到新的 Session。

05

SESSION LOG

Session Log 把运行反馈带回构建过程

领域 Agent 开始运行以后,问题可能会逐渐暴露。模型很容易走错步骤,工具权限也可能给得太大。如果开发和运行各用一套记录系统(这是现在大部分 Agent 的现状),我们在调试和追踪时会需要理解两套系统,并在系统之间大量复制粘贴。

DeepSeek Harness 把 Session Log 放在运行系统的中心。模型看到的会话历史从这份日志重建,工具调用和返回结果也写入同一条事件流。Trajectory(运行路径视图)再把这些事件按会话顺序展开,让开发者能够检查每轮请求以及工具调用的耗时与模型用量。

这使 Agent 的迭代方式发生了变化。方法有问题时,可以修改 Skill;权限给得过宽,可以调整 preset;某个步骤若不能依赖模型自觉,就把它写进插件。新的版本进入下一个 Session 后,开发者继续沿 Session Log 检查运行结果。部署不再切断开发过程,运行本身开始成为下一轮构建的输入。

06

INDUSTRY

业界正在用三条路线处理同一个问题

把 DeepSeek Harness 放进行业坐标,会看到大家都在缩短 Agent 从开发到生产运行之间的距离,只是出发点不同。

从开发框架延伸到运行平台

OpenAI Agents SDK 先解决怎样编排 Agent,随后加入 Session、人工审批与运行追踪。LangGraph 从工作流框架出发,LangSmith 再补上 Agent Server 和 Studio(调试工作台),让开发完成的 Agent 进入持续运行环境。这条路线已经覆盖 Agent 应用从构建到生产的大部分过程,但系统中心依旧是一项 Agent 应用:开发工具负责把它写出来,运行平台再承接这项应用。

把 Agent 做成云端托管资源

Claude Managed Agents(Claude 托管 Agent)走得更靠近运行层。Agent 的工作方式和工具范围可以保存成可复用版本,再由 Session 引用。开发者不用自己维护完整运行环境,代价是这套 Host 由 Anthropic 云平台提供,模型和基础设施也围绕 Claude 组织。

在更高一层管理不同 Agent Harness

Mastra 提出的 Meta-Harness,可以理解为“管理其他 Agent Harness 的上层系统”。Claude Code、Cursor 和 Codex 能作为子 Agent 接入 Mastra,再沿用它的运行接口和评测能力。这条路线说明,Coding Harness 与其他 Agent 系统长期分离所产生的成本,已经开始成为独立问题。

这些路线都在缩短开发与运行之间的距离,不过 DeepSeek Harness 的出发点不太一样。很多系统的基本单位仍然是一项被开发出来、随后部署的 Agent 应用;DeepSeek Harness 的基本单位更接近长期存在的 Host,以及不断装入其中的不同 Agent Session。Coding、Creator 和领域 Agent 因而不再分属开发环境与生产环境,而是同一运行系统中的不同组成。

路线 代表系统 出发点 主要解决的问题 文章指出的差异
从开发框架延伸到运行平台 OpenAI Agents SDK、LangGraph/LangSmith 先编排和构建 Agent 应用 让 Agent 进入 Session、审批、追踪和服务端运行 系统中心仍是一项被开发后部署的 Agent 应用
把 Agent 做成云端托管资源 Claude Managed Agents 先提供托管运行层 把工作方式和工具范围保存为可复用版本 Host 由 Anthropic 云平台提供,围绕 Claude 组织
在更高一层管理不同 Harness Mastra Meta-Harness 管理多种 Coding Harness 与子 Agent 降低不同 Agent 系统长期分离的成本 把既有 Harness 接入上层运行接口和评测能力
会话级装配进入同一 Host DeepSeek Harness 长期存在的 Host 与不同 Agent Session 让 Coding、Creator 和领域 Agent 成为同一运行系统中的不同组成 构建、运行和治理共享同一套 Harness 结构

— 表 2:几条路线都在缩短 Agent 从开发到运行的距离,但基本单位和托管边界不同。来源:根据本文整理。

07

PRODUCT

基于 DeepSeek Harness 的产品交互层

领域 Agent 在 DeepSeek Harness 中跑起来,并不是发布过程的终点。DeepSeek Harness 很适合开发者和管理员,因为工具调用、人工审批与 Trajectory 都放在同一界面里。面向最终使用者时,产品界面还可以围绕具体工作重新设计,而不是要求所有人学习一套通用 Agent 控制台。

DeepSeek Harness 已经提供了把 Harness 留在后台的接口。Python SDK 允许上层程序启动并复用 Harness 内核,于是专用网站或移动应用可以保留自己的交互方式,把任务交给后台 Session。ACP(Agent Client Protocol,Agent 客户端协议)提供了另一条路径:外部客户端按照统一协议访问 Session,并接收工具调用和权限请求。

即时通信还可以进一步降低发布成本。社区项目 dsh-im 已经能把飞书、Slack 等通信渠道绑定到指定 preset,使消息进入固定的领域 Session。这样一来,内部工作流不必先开发完整应用,也能进入员工已经使用的通信环境。随着需求变复杂,再为同一套后台 Session 增加专用界面即可。

这一步把 DSH 的位置重新放回 Harness:开发和管理阶段可以看到它,面向用户交付以后,它完全可以退到产品背后。

THE END

构建、运行治理与产品交互组成一个生命周期

沿这条路线,领域 Agent 的生命周期可以分成三个层次。

构建层负责把专业能力变成可运行的 Agent。Creator 或 Coding Session 在这里接入领域工具,通过测试收紧工作边界,最后形成 preset。这个阶段回答的是“Agent 应该怎样工作”。

运行治理层负责让这个 Agent 长期运行。Host 维持 Session,审批机制限制高风险动作,Session Log 与 Trajectory 保存可供复查的过程。这个阶段回答的是“Agent 实际怎样工作,以及哪里需要修改”。

产品交互层面向使用者。专用网站、移动应用或通信渠道负责呈现领域所需的交互,DeepSeek Harness 则留在后台继续运行同一个 Agent。这个阶段回答的是“用户怎样使用这份能力”,而不是“用户怎样使用 DeepSeek Harness”。

. . . text

构建层

运行治理层

产品交互层

└── 运行反馈回到构建层

这三层连在一起后,Agent 的开发与生产运行不再是两套割裂的工程。运行过程中暴露的问题沿 Session Log 回到构建层,新版本又通过相同的 Harness 进入下一轮运行。最终产品可以不断变化,底下的 Agent 仍然沿用同一套运行结构。

Claude Code 已经证明,围绕一个专业领域把 Harness 做深,可以改变模型参与工作的方式;OpenClaw 与 Hermes 又说明 Agent 需要长期在线且增强交互能力的运行系统。DeepSeek Harness 的野心,是把这两条路继续向前推进:开发 Agent 在这里构建新的领域能力,领域 Agent 在这里长期运行,最终产品再把这套 Harness 藏到自己的交互界面之后。

如果这条路线继续完善,开发者交付领域 Agent 时,就不必每次重做会话系统和运行控制台。领域专业团队把精力放在自己的工作规则上,最终产品负责用户体验,DeepSeek Harness 留在中间承担长期运行与持续改进。它想成为的,是一套试图贯穿 Agent 构建、运行和交付的公共系统。


END

我是 {{作者名}},{{一句话简介,如:热衷于分享 AI 观察与干货}}。

如果你觉得今天这篇有收获,欢迎点赞、在看、转发三连,我们下篇见。