
Agent 不只是模型,Agent = Model + Harness。 模型负责推理,Harness 负责工具、状态、权限、上下文、执行环境、恢复、评估、观测和反馈闭环。 Agent Harness不是一个花哨的新名词,而是 Agent 从 demo 走向生产之后必然出现的工程抽象。
业界提出 agent harness,本质上是因为大家逐渐发现:只靠"更强的模型 + 一个提示词"不足以稳定完成真实复杂任务。模型能力越强,越需要一个工程化外壳来承接它的行动、状态、安全、反馈和恢复能力。这个外壳就是 harness。
Model 负责理解、推理、生成决策;Harness 负责让这些决策在真实环境中可执行、可控、可恢复、可评估。
注:业界权威学术和开源对Harness的观点参考:附录-业界对Harness理解
真实任务不是一次模型调用能完成的
早期很多 LLM 应用是"用户输入 -> 模型输出"。但 Agent 要完成的是长链路任务,比如:
这些任务需要多轮循环:观察环境 -> 思考下一步 -> 调用工具 -> 读取结果 -> 调整计划 -> 继续执行
模型需要"手",而不只是"大脑"
模型本身只能生成文本或结构化输出。要真正干活,它需要:
长周期任务需要状态管理
一次多轮聊天,上下文会满,进程可能会挂,容器可能会重启,任务可能跨小时甚至跨天。 如果没有 harness,Agent 的状态通常散落在:
这很脆弱,所以需要管理:
长任务不能只依赖模型当前上下文,必须有外部持久状态和交接机制
Agent 需要反馈闭环,而不是盲目执行
模型会犯错。尤其是 coding agent,常见问题包括:
人类工程师写代码时会依赖大量反馈:
安全和权限管理
Agent 一旦能执行工具,就有安全问题:
如果把 token、代码、shell、网络访问全部丢进同一个环境,风险很高。提示注入也可能诱导模型读取密钥、泄露数据或执行危险命令。
所以 harness 通常需要提供:
这也是 Anthropic Managed Agents 强调 session、harness、sandbox 解耦的重要原因之一:凭证不应该直接进入 sandbox,工具访问应该通过受控代理完成。
多 Agent 协作也需要 Harness 编排
复杂任务往往不是一个 Agent 单线完成,而是多个角色协作:
这些 Agent 怎么分工?怎么传递上下文?谁有权限执行工具?失败后谁重试?什么时候终止? 这些也是 harness 或 agent runtime 的职责。
产品化 Agent 需要可观测性和可运维性
真实生产环境里,Agent 不能是黑盒。团队需要知道:
所以 harness 还要承担:
OpenAI Agents SDK、LangGraph、Microsoft Agent Framework 都强调 tracing、durable execution、middleware、telemetry 这些能力。这些其实都是 harness 工程化之后的自然产物。
| 问题 | Harness 解决什么 |
|---|---|
| 模型只能输出文本 | 提供工具和执行环境 |
| 任务太长 | 管理 session、状态和恢复 |
| 容易犯错 | 接入测试、lint、日志等反馈 |
| 工具有风险 | 做权限、安全、审批和隔离 |
| 上下文有限 | 做上下文组织、摘要、检索 |
| 模型变化快 | 提供稳定接口,内部演进 |
| Agent 难评估 | 记录轨迹,支持 replay/eval |
| 多 Agent 复杂 | 做任务编排和角色协作 |
| 生产不可观测 | 提供 tracing、metrics、审计 |
Agent Harness不是一个花哨的新名词,而是 Agent 从 demo 走向生产之后必然出现的工程抽象。
更工程化的说:Agent Harness = Agent 的运行时 + 工具层 + 状态层 + 安全层 + 反馈层 + 评估层
| 概念 | 主要作用 | 基本原理 |
|---|---|---|
| Agent Loop | 驱动 Agent 多步执行任务 | 模型生成回复或工具调用,harness 执行工具并把结果回填给模型,如此循环直到完成、中断或达到轮数限制 |
| Prompt / Instructions | 定义 Agent 的角色、目标和行为边界 | 通过 system prompt、developer prompt、agent prompt、tool prompt 约束模型如何思考、何时调用工具、不能做什么 |
| Context | 决定模型能"看见什么" | 将用户输入、历史消息、工具结果、文件片段、检索结果、memory 等组装进模型上下文窗口 |
| Memory | 跨会话沉淀长期知识 | 从 session 中提取用户偏好、项目知识、历史经验,并在后续任务中检索注入,减少重复理解 |
| Tools | 让 Agent 能执行外部动作 | 模型只负责提出 tool call,harness 根据 schema、权限和运行环境真正执行,如读写文件、Bash、搜索、API 调用 |
| MCP | 标准化工具/资源接入协议 | 外部系统通过 MCP 暴露 tools、resources、prompts,Agent harness 以统一协议发现和调用能力 |
| Connector | 连接企业系统和外部服务 | 对接 Jira、GitHub、Slack、CRM、数据库、知识库等系统,处理认证、API 封装、权限映射和数据格式转换。Connector 解决"接什么、怎么接";MCP 解决"怎么标准化给 Agent 用" |
| Skills | 封装可复用的专业能力 | 通常包含说明、流程、脚本、示例或领域知识,让 Agent 在特定任务上有更稳定的执行方式。Skill = 领域知识 + 操作流程 + 工具说明 + 可选脚本/资源 |
| Subagent | 处理独立子任务 | 主 Agent 将部分任务委托给子 Agent,适合并行搜索、代码审查、测试验证、隔离大量中间结果 |
| Agent Team | 多 Agent 长期协作 | 多个 Agent 以 team lead + teammates 的方式协作,通过任务列表、消息和权限转发完成复杂项目 |
| Workflow / Script | 程序化编排多 Agent 和工具 | 将调度逻辑写成脚本或流程,适合大规模审计、迁移、批处理和可重复执行的任务 |
| Planner / Task List | 管理复杂任务拆解和进度 | 将目标拆成任务、依赖和状态,跟踪 pending / in progress / done / blocked,防止长任务跑偏 |
| Permission / Policy | 控制 Agent 能做什么 | 通过企业策略、用户授权、agentType 权限、工具 allowlist/denylist、审批流限制高风险操作 |
| Sandbox / Runtime | 隔离工具执行环境 | 在容器、worktree、远程沙箱或受限 shell 中执行工具,限制文件、网络、进程和资源访问 |
| Knowledge / Retrieval | 给 Agent 提供外部知识 | 从网页、文档、知识库、代码库中检索相关内容,并以受控方式注入上下文,提升准确性 |
| Observability / Transcript | 记录和追踪 Agent 执行过程 | 保存对话、模型调用、工具调用、工具结果、错误、耗时、token、agentId,用于调试、审计和恢复 |
| Evaluation / Feedback | 持续评估和优化 Agent | 通过测试集、人工反馈、任务成功率、安全拦截率、成本和延迟指标衡量 Agent 表现 |
业界Agent Harness主要挑战:
业界客户端Agent Harness,包括claude code,codex等,把Harness所有的memory,沙箱,agent loop都打包CLI在容器中执行,但面对长任务和复杂任务,会暴露出连接脆弱、状态丢失、恢复困难、扩展差、安全边界不清晰的问题(参考 Anthropic Managed Agents):
腾讯云ADP 基于云端Agent Harness的设计考虑点和方案
考虑点:可恢复、安全边界清晰、弹性扩展、可替换、长任务,可持续演进。
方案:采用Agent loop(brain),memory,sandbox,tools,可观测解耦设计。
| 维度 | 解耦前 | 解耦后 |
|---|---|---|
| 恢复能力 | Agent Loop,Session、Memory、Sandbox 都在同一个容器里,容器挂了任务状态可能丢失,新的进程难以接管 | Session,Memory独立持久化,和Sandbox算力解耦,崩溃后可通过 SessionId 重新读取历史并继续执行。整体执行框架采用异步化设计,基于标准 AGUI 事件协议进行状态与结果回传。支持流式反馈、断线重连、过程恢复和执行状态同步,更适合真实业务场景下的长时任务与复杂交互 |
| 安全边界 | 用户代码、模型执行环境、工具凭证、用户数据混在一起,Prompt Injection 或恶意代码可能读取敏感信息 | Sandbox 只负责隔离执行,凭证放在 Vault / Proxy 中,敏感信息不进入执行环境 |
| 扩展性 | 每个 Agent session 绑定一个容器,即使暂时不执行代码也要启动容器,启动慢、资源消耗高 | Agent Loop、Memory、Sandbox、Tools 可独立伸缩,只有真正需要执行时才创建 Sandbox,资源利用率更高 |
| 运维复杂度 | 容器变成"宠物",不能随意销毁;排障可能需要进入用户容器,带来安全和合规风险 | Sandbox 可替换、可重建,问题更容易隔离和恢复 |
| 演进能力 | Agent Loop 与容器、状态、执行环境强绑定,模型升级或 agent loop 调整容易牵动底层架构 | 通过稳定接口连接 Agent Loop、Memory、Sandbox、Tools/MCP,底层策略可独立升级,业务接口保持稳定 |
ADP 的Agent Harness架构图

Agent Loop 通常是 harness 的核心执行循环:它负责把"用户目标"不断转成 模型调用 → 工具调用 → 状态更新 → 再次决策,协调 LLM、工具、运行时状态、记忆、事件、hook 和续跑策略,让 agent 从输入逐步推进到任务完成、等待用户、失败、被中断或达到上限。
#### Agent Loop挑战点
上下文管理
难点:
解决方案:
长任务稳定性
难点:Agent Loop 不是一次 API 调用,而是一个长运行过程。长任务里任何环节都可能失败:
解决方案:
多Agent协作
单 Agent 的场景:适合上下文高度连续、决策需要集中、任务不值得拆开的场景。 多 Agent 的场景:适合任务可以拆分、互相独立、需要并行、需要独立判断或需要隔离执行的场景。
ADP 多Agent核心设计:
SubAgent:参考claude code设计,主 Agent 通过 AgentTool 启动子 Agent,子 Agent 复用同一套 agent loop,但拥有独立上下文和生命周期。
多 Agent 不是一个独立的"多智能体框架",而是把 Agent 工具做成了"递归启动另一个 agent loop"的能力:主 Agent 调用 AgentTool,选择某个 agentType,为它构造独立的 system prompt、工具集、权限、MCP、memory、上下文,然后通过 runAgent() 再跑一套完整的 agentLoop() 循环。
agentType:
| agentType | 主要用途 | 工具/权限特点 |
|---|---|---|
| general-purpose | 通用研究、搜索、复杂多步任务 | tools: ['*'],能力最宽 |
| Explore | 快速探索代码库 | 只读,禁止 Edit / Write / Agent |
| verification | 实现后验证、跑测试/构建/检查 | 后台、只读、必须给 PASS/FAIL/PARTIAL |
| fork | 特殊 fork agent | 继承父上下文 |
Agent Team【即将上线】:
subagent 执行流程:主 Agent -> 子 Agent -> 返回一次结果
agent team 执行流程:team lead 创建团队 -> teammate 持续运行 -> 领取任务 -> 做任务 -> 发消息 -> 等待新任务 -> 可被中断/恢复/关闭
适合场景:
#### Memory核心难点
| 难点 | 说明 |
|---|---|
| 存什么 | 区分短期 session、长期 memory、项目规则、用户偏好,避免全存导致噪声 |
| 何时存 | 判断哪些信息未来有价值,避免把临时信息、错误推断、无效结果写入长期记忆 |
| 怎么取 | 检索时要准确、相关、不过量,避免取不到关键记忆或取出无关旧信息 |
| 如何更新/遗忘 | 记忆会过期,需要版本、时间、作用域、冲突处理和删除机制 |
| 如何安全可信 | 需要权限隔离、脱敏、来源记录、置信度管理,避免跨用户/项目污染 |
#### ADP Memory架构设计

跨会话长期记忆:从对话中自动提取并沉淀用户偏好、反馈风格、项目背景、关键事实四类长期记忆,按用户维度跨 session 召回。Agent在每轮对话中可主动命中并复用历史结论,保证跨会话的记忆连贯性。
Part / Message / Session 多级存储结构:对齐主流 agent 协议,以 Part 为最小语义单元(文本、工具调用、工具结果、推理、压缩摘要等多类型),向上聚合为 Message 和 Session。完整保留 agent的多模态消息流与工具调用链路,无有损压缩,支持细粒度回放、审计与二次加工。
Session 级智能压缩:针对长对话与长任务场景提供 session 维度的持续摘要能力。后台增量压缩对话历史,compact接口直接消费已就绪的摘要,将同步压缩的响应耗时由秒级降至毫秒级,规避上下文窗口超限与同步调用超时风险。
结构化 Todo 与任务记忆:提供 run → todo_list → todo 三层任务记忆模型,面向 code-agent 等长链路、多步骤任务场景。完整记录每次 agent 运行的任务规划、执行进度与状态流转,支持长任务的中断恢复与执行过程可观测。
提取与召回解耦,全链路可溯源:写入侧采用异步增量提取,不阻塞主链路;读取侧由 agent 按需主动召回,命中结果以结构化方式注入上下文,并保留来源会话、来源 run、命中记忆 ID 等元信息。
多租户隔离与业务级灰度:以 Memory Resource 作为顶层租户单元,按用户、场景、空间多维度隔离,数据归属严格。长期记忆、session 摘要等能力均支持租户级独立开关与灰度。
#### ADP Memory规划
长期记忆久了会出现的问:
长期记忆整理(类似claude code中的auto-dream)【即将上线】
沙箱它给 agent 一个可操作但受控的工作空间,让 agent 能读写文件、跑命令、生成产物、调用部分环境能力,同时把权限、资源、路径、网络和副作用控制在边界内。Sandbox 承载工具执行与工作区副作用的隔离执行层,负责把模型提出的动作安全、可观测、可恢复地落到真实或虚拟环境中。
#### 基于AGS Cube安全沙箱的优势
将工具执行从 Agent 进程中解耦出来,形成可独立部署、可复用、可治理的工具执行服务。相比常见的 SDK 内嵌式工具或 IDE/CLI 强绑定工具,它更强调运行时隔离、跨框架复用、并发安全和资源生命周期管理。
#### 沙箱内置工具(Runtime Tools)
主要实现bash,read,write,edit,glop,grep等
#### HTTP-as-Boundary:把工具执行层从 Agent 进程里抽离
业界主流方案有两种:LangChain / LangGraph 工具函数直接定义在 Agent 进程里;Cursor / Aider 工具能力和用户界面紧耦合。
Sandbox claudecode 选择把工具执行变成一个独立的 HTTP 服务,带来三层好处:
#### Adapter 模式 + 编译期模板替换:双运行时统一接口、零运行时开销
支持两套独立的工具执行运行时(OpenCode 和 ClaudeCode),并通过环境变量 CODETOOL_ADAPTER 切换。采用编译期模板替换:构建时通过 adapter.cc.ts / adapter.oc.ts 替换主入口,最终得到两个完全独立的 artifact。
三个特性:
#### 双层 AsyncLocalStorage 并发隔离:让业务代码"无感知"并发
工具执行服务必须处理并发请求,每个请求有自己的 workdir、sessionId、cwd。Sandbox 用了双层 AsyncLocalStorage:
业务代码看起来像单进程同步代码,但底层是天然请求隔离的。比 LangChain 进程内共享 os.chdir() 的做法安全得多。
#### 三层生命周期的 DirectoryContextRegistry:资源精细回收
三层生命周期:
支持 0 = 无限/永久的可配置语义。
#### 文件操作的并发安全契约:Read-before-Write + mtime 防覆盖
#### 流式 COS 集成:大目录传输不落盘
全流式架构:
#### Agent内置工具
#### 平台开发工具&connector
Agent harness 的安全重点不是"让模型保证不犯错",而是:模型负责建议和决策,harness 负责边界、权限、隔离、审计和最终执行控制。真正可靠的实现一定是:最小权限 + 工具校验 + 沙箱隔离 + 人工审批 + 全链路审计。
#### ADP权限体系
ADP平台实现三级分层权限架构(企业级-空间级-应用级)配合角色权限矩阵与资源配额管控,实现了功能+数据双维度的精细化权限隔离。

#### ADP安全设计考虑
执行环境安全
数据安全
Prompt injection 防护
多 Agent 安全
Transcript:记录完整会话、工具调用、工具结果、Agent 执行轨迹
Sidechain Transcript:subagent/background agent 独立记录,避免污染主会话,也支持恢复
LLM Gateway Transcript:用于记录一次或多次模型调用的完整请求/响应轨迹,包含 prompt、messages、model、参数、响应、token、耗时、错误等信息,用于调试、审计、回放和问题定位
Agent 身份追踪:记录 agentId、agentType、teamName、parentSessionId
Tool Use / Tool Result 记录:记录模型调用了什么工具、参数是什么、工具返回什么
API Request/Session ID:每次 API 请求有 traceid,微服务内部通过context传递tranceid
Usage 统计:统计 token、tool use count、duration 等
面向Agent的使用者,开箱即用。腾讯云智能体开发平台:https://adp.cloud.tencent.com/adp/

面向Agent的企业开发者,它更像运行在平台上的托管智能体。企业可以预先配置 Agent 的提示词、工具、skill、MCP、权限、发布版本,然后通过 API、控制台、工作流或业务系统调用它。
#### 集成方式:Agent构建在ADP平台,对话集成ADP的对话接口
适合想快速使用 Agent 能力的企业。在 ADP 控制台里完成 Agent 创建、skill 配置、MCP 工具配置、提示词调试、发布管理;自己的业务系统只集成运行时对话 API。
适合场景:



#### 集成方式:Agent的构建配置和对话使用全部API集成
适合企业开发自己的智能体平台,面向企业内部团队、客户或开发者提供 Agent 创建、配置、发布和运行能力。ADP 同时提供配置端 API 和运行时对话 API,企业可以在自己的平台中完成 Agent 全生命周期管理。
适合场景:
典型例子:
API:

- Agent运行时API:也叫数据面API(Data Plane API):
| 文章 | 来源 | 重点 | 适合用来支撑的观点 |
|---|---|---|---|
| Harness engineering: leveraging Codex in an agent-first world | OpenAI | OpenAI 用 Codex agents 生成约百万行代码,强调人的工作从"写代码"转为"设计环境、表达意图、构建反馈回路" | Harness engineering 是 agent-first 软件工程的核心能力 |
| Unlocking the Codex harness: how we built the App Server | OpenAI | 解释 Codex harness 是支撑 Web、CLI、IDE、macOS App 的同一套 agent loop 与逻辑,并通过 App Server 暴露稳定协议 | Harness 应该被产品化、协议化、可复用 |
| Effective harnesses for long-running agents | Anthropic | 讨论长任务 agent 跨多个 context window 工作时,如何通过 initializer agent、进度文件、git history、feature list 等维持连续性 | 长周期 agent 的关键不是单次提示,而是跨 session 的状态与交接设计 |
| Harness design for long-running application development | Anthropic | 从前端设计、全栈应用生成案例出发,提出 planner / generator / evaluator 三 agent 架构,以及 context reset、结构化 handoff | 复杂任务需要规划、生成、评估分离 |
| Scaling Managed Agents: Decoupling the brain from the hands | Anthropic | 把 agent 拆成 session、harness、sandbox 三个稳定接口;harness 负责调用 Claude 并路由工具调用 | Harness 是连接模型、工具、环境、状态的中间层 |
| Harness engineering for coding agent users | Martin Fowler / Thoughtworks | 提出 guides 与 sensors 模型:guides 在行动前引导,sensors 在行动后验证和反馈 | Harness 可以理解为 agent 的控制系统 |
| Maintainability sensors for coding agents | Martin Fowler / Thoughtworks | 深入讲 coding agent 的可维护性传感器,如 lint、依赖规则、架构约束、AI review | |
| The next evolution of the Agents SDK | OpenAI | 明确提出 model-native harness、sandbox execution、MCP、skills、AGENTS.md、shell、apply patch 等 agent 原语 | The next evolution of the Agents SDK |
| Agents SDK docs | OpenAI | 官方定义 agent 应用需要 orchestration、tool execution、approvals、state | Agents SDK docs |
| Building LangGraph: Designing an Agent Runtime from first principles | LangChain | 从生产级 agent runtime 角度讲 durable execution、稳定 API、runtime 演进 | Building LangGraph: Designing an Agent Runtime from first principles |
| Google Agent Development Kit | 覆盖 prompts、tool calls、多 agent orchestration、graph workflows、eval、部署、观测 | Google Agent Development Kit | |
| Microsoft Agent Framework Overview | Microsoft | 强调 session state、type safety、middleware、telemetry、graph workflow、人机协同 | Microsoft Agent Framework Overview |
| SWE-agent Agent-Computer Interface | SWE-agent | 证明 agent 与计算机交互接口设计会显著影响 coding agent 表现 | SWE-agent Agent-Computer Interface |