乐于分享
好东西不私藏

Agent应用开发实践分享:Harness is the OS for Model to Work in the Physical World

Agent应用开发实践分享:Harness is the OS for Model to Work in the Physical World

引言Model+Harness=Agent:从模型意图到可验证生产动作

Agent是未来所有生产工作的绝对主体,核心链路是AGI完成智力加速计算,并通过Harness系统接入可操作、可控制、可验证的Interface of the physical world来完成工作。

当前所有的Agent应用基本都符合该框架,通过不断强化Model的复杂工作推理能力、Interfaces的数量/覆盖面、Harness的效率/控制粒度,来提高应用的使用价值。

Model本身不直接改变外部世界,它每一次inference都是在冻结的知识与推理空间中完成一次性的高维计算流这个计算流可以产生回答、计划、JSONtoolcall,但这些输出在进入外部系统前都只是意图,不是执行事实。

所以Agent不是简单的Model+ToolsTools只是外部interface的入口,真正决定Agent能力上限的,是Harness能否把模型意图转成受控动作,并把动作转成可验证事实。

1.Model:高维计算流与外部事实边界

在当前Transformer骨架下,Model可以理解为一个由大规模人类知识、代码、语言、交互模式压缩得到的超高维隐空间。

Pre-training建立通用知识和模式压缩,通过Scaling LawTransformer Block的架构优化

I.不断提升整个隐空间的知识覆盖度与对客观正确性的逼近度与精度。

ii.不断提高隐空间的逼近效率/Token

iii.不断降低推理的隐空间寻路成本/Token

Post-trainingPre-Training的基础上,通过Domain data优化局部特定的隐空间结构,使模型获得更高的Domain marginal intelligence/token

加速解决人类现实世界复杂智力问题的根本需求,天然会反过来要求Model自身不断增强以下能力:

Context Window

i.不断扩大每一次高维计算的信道容量,容纳更多的历史信息。

Ii.不断优化输入/输出数据的结构来提高固定Context Window下的输出效率(最大化信道传输效率)。——输入输出Sequence结构、缓存设计。

Reasoning/Planning

i.将人类的复杂推理逻辑过程内嵌到Model隐空间内-COT

ii.放大COT的高维计算规模来获取更高精度的输出。

Structured Output

把隐空间计算结果转换成外部系统可解析的数据结构,JSON/schema是最基础的外部系统接口,解决模型输出如何被外部系统消费

Tool Call

模型从回答问题进入操作环境的基础形态,Tool call表达的是模型想调用什么能力、传入什么参数、期望什么结果

这四类能力都在增强Model对外部环境的可接入性,但它们仍然不等于执行。

Model每一次输入输出,本质上是在冻结知识隐空间内完成一次一次性高维计算流,它可以判断、计划、请求操作,但不能直接作用外界环境。

因此,Model侧的边界可以写成一个contract

1.模型可以提出行动。

2.模型无法拥有外部真相。

3.工具调用是意图,而非执行。

4.补全文本并非任务结束。

是Harness Engineering的必要性:把模型意图和真实生产环境之间的断层补上。

2.Interfaces:人类生产环境的交互界面

标题里的physical world,不是狭义物理空间,而是人类真实工作的整体环境,它已经高度数字化:文件系统、OS、terminal、browser、Office、IDE数据库、企业软件、API、MCP server、云服务,以及这些系统背后的权限、状态、流程和审计。

过去几十年ICT基础设施的演进,本质上是把计算机生产环境一层层封装成interface

1.硬件层:用二进制信号表征、计算、存储和传输生产数据。

2.驱动/固件层:封装硬件能力,对OS/kernel提供低层ABI和控制接口。

3.OS/kernel:用进程、线程、文件系统、网络、IO管理构建标准化控制体系,对应用软件提供资源抽象。

4.应用软件层:把具体生产场景封装成UIAPICLIpluginworkflow

5.业务系统层:在应用之上叠加权限、状态、流程、数据模型和审计。

以上均通过计算机环境的语言体系(机器码、汇编语言、高级语言构建的程序世界)实现分层控制交互。

这些interfaces的交互主体以往只有人,但未来Model会成为绝对主体,原因如下

1.Model与计算机接口底层表达形式一致,天然实现更高交互带宽、更全面交互范围(数据IO效率)。

2.Model单体有指数级知识体量,驱动智能加速计算(数据计算效率)。

3.Model天然可以实现复制、并发。(数据IO、计算的整体规模)

4.基于Amdahl‘s Law,如果一个生产流程的核心瓶颈是智力工作,提升效率的最优方式就是尽可能放大Model的过程权重。

5.4的基础上,人类必然会开放越来越多的interfacesModel对接交互。

这就引出最关键的问题:Interfaces越来越多、层次越来越丰富,如何高效控制Model与interface的交互过程,并不断提升交互效率(任务Token成本)?

解决这个问题,就需要构建Harness Engineering——不是开发单个tool adapter,而是实现对interface的统一控制。

3.Harness:运行在计算机OS之上,供模型使用的操作系统

Harness可以理解为运行在OS上的一类模型控制进程。它不替代OS,但它为Model定义了一套通用任务生命周期,使模型能够以受控方式观察、决策、行动、验证和结束。

一次Chat/TASK的Harness生命周期可以拆成

3.1解析用户输入

Harness先解析用户输入:goal、mode、references、source guidance、artifact target、model config、context policy。用户给的是自然语言意图,Harness要把它转成runtime可消费的数据结构。

3.2构建运行边界

Harness决定任务边界:workspace root、tool disclosure、capability set、permission policy、timeout、budget、approval policy、rollback policy、sensitive data disclosure。这个阶段决定模型能看到什么、能调用什么、能改什么。

3.3构建模型输入

Harness构建初始模型输入:system prompt、user prompt、context pack、tools schema、domain prompt、model config、历史状态摘要。这里的核心不是prompt”,而是把任务现场编码成模型可计算的输入。

3.4维护模型通信链路

Harness维护与ModelAPI的通信链路:streaming、retry、timeout、schema validation、provider transcript、tool-call protocolProvider返回的任何tool call都先进入意图层。

3.5启动AgentLoop

-POST prompts。

-接收并解析model response。

-将provider native tool call映射到registered capability。

-做参数校验、权限校验、workspace boundary校验。

-执行tool/capability。

-记录tool result、receipt、artifact、raw result ref。

-根据新事实重建下一轮context。

-继续loop,直到模型通过Harness提供的closure tool主动结束。

这里的关键点是:

1.模型只能提出action,Harness决定action是否可执行,runtime负责执行,truth ledger负责记录。

2.任务结束不应该由普通assistant content决定。Harness必须提供明确closure tool。这一步本质是任务完成账本。没有closure toolAgent很容易在长程任务里提前宣布完成。

3.6处理失败和恢复

网络错误、schema错误、权限阻塞、tool参数错误、terminal timeoutcontext overflowartifact audit failure、用户取消,都应该作为failure event记录。任务结束后,Harness还要释放子进程、更新run state、保存even tlog,并把最终状态投影给产品层。

综上,Harness Engineering的核心不是堆工具,而是定义一次任务如何合法开始、如何被执行、如何被证明、如何失败、如何恢复、如何沉淀为后续迭代数据。

4.常见Agent概念在Harness生命周期中的位置

很多Agent领域概念,本质上都可以放回Harness进程生命周期中理解

Tool Use是模型调用外部能力的结构化入口。工程重点不是tool数量,而是tool的能力域、参数contract、权限边界、执行receipt和失败语义。

Planning通过prompt、route或controller要求模型按特定模式分解任务;Planning只是意图组织方式,不能替代执行事实。

Skills是domain prompt、流程约束和工具使用经验的封装。它解决局部任务稳定性问题,但仍然依赖Harness的tool/runtime/truth。

MCP是外部工具服务接入协议,它把Harness进程外的工具服务标准化暴露给模型或Agent runtime,但它不自动解决权限、证据和任务闭环问题。

Memory对历史loop、用户偏好、任务结果、失败经验做结构化存储、检索和压缩,再作为后续context输入。Memory的关键不是保存聊天记录,而是决定什么事实可以被复用、以什么粒度复用、是否会污染当前任务。

Subagent为当前Harness提供启动子Harness的能力。真正难点不在多开一个模型调用,而在子进程生命周期、context分配、文件并发写锁、IPC、失败传播、结果合并和责任归属。

Multi-Agent可以是多个Harness进程协作,也可以是产品层多个隔离任务并发。难点是调度、隔离、共享状态、冲突处理和evidence合并。

这些概念如果脱离Harness生命周期,容易变成单纯的功能堆叠;放回生命周期里,它们才是工程化的Agent系统模块。

5.SuperNova:从provider tool call到receipt-backed execution

SuperNova是我为了吃透AgentHarness领域实践开发的桌面端Agent应用。

可直接下载windows安装包使用:https://github.com/Ray-Code-Svg/SuperNovaAgent.git

核心链路是:

Workbench->LocalRuntimeProtocol->ProductRuntime->ProcessKernel->ProviderToolCall->RegisteredCapability->Receipt->ProcessTruth/ChatTruth->ProductProjection->UI

这条链路里,每层都有明确分工,且只拥有自己的source of truth:

Workbench是用户操作面

它负责workspace/container选择、

Chat/TASK模式、

composer、

source picker、

artifact target、

model/context config、

message stream、

task rail、

artifact card

用户干预。

它只消费projection,不拥有executiontruth。

Local Runtime Protocol是UI和runtime之间的typed boundary

workspace、container、chat、task、artifact、run、stream、settings、model_config、context_pack都通过DTO和stream event对齐。

Product Runtime是产品运行层

它负责AxumHTTP/SSEroutes、ProductDB、run_registry、message_feed、projection_shards、runtime_event_log、Kernel Bridge和Kernel Worker它维护用户可见的read model和run state,但不替代Kernel truth。

ProcessKernel才是执行事实层

ChatRuntime写ChatTruth;

RootProcess+TaskAgent管TASKloop;

ModelRuntime+DeepSeekModelProvider处理provider native tool calls;

Registered capability runtime执行OS、terminal、office、data、artifact、package、client_env等能力。

这套结构里有几个不变量

1.provider native tool call是模型意图,不是执行事实。

2.文件变更、命令执行、文档处理、包构建必须经过registered capability。

3.capability成功或失败都要写receipt。

4.TASK的完成不能靠普通assistant answer,而要通过process.complete写入completion ledger。

5.UI看到的是projection;真正的事实来自ProcessTruthChatTruth、receipt、artifact和replayable event。

例如,一个TASK想生成并验证交付物,模型可以提出os.write_artifact等工具意图;但只有Kernel在workspace boundary和capability token下完成执行、写入receipt,并经过closure gate检查后,任务才可以被认为完成。

6.SuperNovaAgent开发历程复盘

耗时4个月;

一共96个仓库CheckPoint;

共消耗40亿左右Tokens;

模型使用GPT5.3~5.5;

推理强度保持超高;

维护长期handoff文档、dev_imple文档用于为Model提供完整历史context;

总订阅成本260$。

开发历程:

3次Harness Engineer架构重构

阶段一:使用LangGraph框架构建Harness状态机,但没有构建Harness各组件的数据Contract,Model陷入无序推理,无法完成任何任务。

阶段二:使用LangGraph框架构建Harness状态机,构建了数据Contract,Model能获取真实环境输入,推理开始有效,但陷入了Case Family的伪Agent架构,本质上是workflow,无法完成通用任务。

阶段三:补充学习了OS知识,理解了程序的进程本质,重新设计了基于进程生命周期控制的Harness Kernel架构,规模抽象底层直接调用OS Native API的Tool Capability,构建DeepSeek Native Tool Call的Adapter层。

1次桌面端产品架构重构:

阶段一:配套阶段1,2HarnessKernel,用于测试验证,存在众多python胶水层。

阶段二:通用HarnessKernel实现后,历史胶水层接口已混乱,无法承载桌面端产品闭环,重新设计了桌面端UI+ProductRuntime+LocalRuntimeProtocol+HarnessKernel的分层架构,以Harness Kernel作为整个产品的唯一运行时Source of Truth,分层之间定义清晰DTO Contract。

1次开发语言选型切换:

HarnessKernel阶段一、阶段二都使用python,阶段三切换到Rust;

桌面端产品重构时,使用React/Vue构建前端UI,产品服务端整体都使用Rust。

原因:Rust作为编译型语言,在复杂项目集成,大规模代码工程开发、规模化单元测试、集成测试时,Cargo test能提前有效定位代码漏洞,便于代码全局的问题定位与收敛闭合。

UI/UX原型设计:

1.为达到商业级桌面端的UI/UX体验效果,自己手绘了UI/UX原型图。

2.总体原则是:UI/UX是产品全量功能的精确投影,而不是视觉元素的堆砌,要避免给用户造成任何注意力浪费。

3.最终桌面端呈现效果

测试验收:

1、服务端测试自动化:先针对Harness Kernel开发了覆盖全量Agent底层能力的通用TASK Test Matrix,每次都自动跑全量case,然后从人类用户的结果接受度、Case执行的健康度遍历检查全量Case的测试日志;划分问题类别,最后分批做修复,循环整个loop直到达成开发目标。

2、桌面端手动测试:构建真实桌面端安装环境下的workspace测试区,设计通用Test Matrix,覆盖UI/UX的功能/性能测试,手动测试安装后的桌面端应用,并手动记录问题日志,结合产品服务端测试的运行日志让Codex进行修复loop

3Agent开发暴露的测试问题类别

1.Context failure:模型没有看到关键文件、历史状态被压缩错、引用粒度不对。

2.Tool schema failureschema设计不稳定,模型经常传错字段或误解参数语义。

3.Policy failure:权限太松导致风险,太紧导致任务无法推进。

4.Runtime failure:terminal timeout、子进程挂死、provider error、network retry、service lifecycle不一致。

5.Projection failure:Kernel truth已更新,但ProductRuntime或UI没有正确显示。

6.Artifact quality failure:产物存在,但内容空泛、模板化、coverage不足或没有满足用户真实目标。

7.Closure failure:模型过早完成、无法完成,或者completion statement和receipts不一致。

桌面端RC0版本功能如下:

1.Winodws安装包,配置API后安装即用

2.API加密保存,不暴露

3.支持多workspace*多container任务并发,支持container归档/恢复。

4.批量读workspace文件并回答用户问题(Chat模式)

5.workspace内执行和产出结果(TASK模式)

1)在workspace边界内修改文件、生成文件、复制/移动/重命名/删除文件。

2)通过Terminal运行有边界命令,或启动、检查、停止本地服务。

3)读取、创建、校验、改写DOCX等办公文档。

4)读取和处理CSV/dataset,并导出CSV或Markdown结果。

5)生成Markdown、JSON、TXT、CSV、DOCX等用户可见交付物。

6)打包输出zip,并生成manifest、checksum等辅助文件。

7)在任务结束时给出completion statement、产物列表、关键来源和已知限制。

8)使用@命令符精准指定Agent参考特定源数据。

9)精准配置Model SKU、Reasoning强度、OutputTokenBudget

10)精准控制历史Chat/TASK上下文注入。

11)支持长程TASK内自动压缩历史上下文。

12)支持用户观察每一次API请求的Context使用情况,估算上下文注入的Context占用。

7.后续可继续深入探索的Harness趋势

从未来AI应用与人类用户需求出发,Agent绝对不仅是单纯的工具,而可能成为人类用户在数字世界的镜像Entity,不单单能完成任务,而且能代表用户在数字世界行动,这样才能让AI真正加速经济活动(摆脱人类单体思考带宽的限制),从这个方向出发,Harness还有以下可拓展方向:

1.围绕Agent Entity的:

身份协议:Agent是谁,代表谁?

授权协议:Agent能做什么?

记忆协议:Agent继承什么,不继承什么?

任务协议:Agent如何接受、分发、交接工作?

验证协议:Agent任务结果如何验收?

审计协议:Agent行动历史如何追踪?

结算协议:Agent产出的价值如何交换?

冲突协议:Agent出错和争议如何处理?

2.Agent Entity实现相互通信,需要构建面向Agent的分层通信协议与软件栈。

3.Agent Entity的集群化与Sharing Contexts Management。

4.Agent Entity的主动行为能力(不是固定模式的定时任务),比如主动根据Memroy/Context向用户提出建议等。

5.Agent Entity构建一套经济生态系统,让Agent代表用户在数字世界进行经济交易,互联网已经解放了人类个体经济活动的空间/时间限制,而Agent将彻底释放人类个体思考带宽的瓶颈,实现规模并发。

8.总结

综上,我对Agent Harness的理解概括为:

Harness is the OS for Model to work in the physical world.

HarnessModel高维知识计算器进入可验证的生产动作系统Agent的关键不只是模型多聪明,而是模型意图能否在真实环境中被控制、执行、证明、复盘,并最终通过真实任务循环推动HarnessModel共同进化。

欢迎下载windows安装包体验SuperNovaAgent:https://github.com/Ray-Code-Svg/SuperNovaAgent.git