DeepSeek Harness vs OpenAI Codex Harness — Agent基础设施军备竞赛深度解析
8月13日,DeepSeek Harness 开源;8月21日,OpenAI Codex Harness 全面开源。8天之内,全球两大AI巨头相继开放Agent底层基础设施,一场关于"Agent该长什么样"的军备竞赛正式打响。本文将从设计哲学、技术架构、工程实现、生态模式四个维度,深入拆解这两大框架的异同,并探讨它们对整个AI Agent产业格局的深远影响。
一、背景:从模型竞赛到框架竞赛,Agent进入下半场
1.1 为什么是现在?
过去三年,AI行业的竞争主轴是"谁的模型更强"。GPT-4、Claude 3、Gemini、DeepSeek-V3……参数规模不断攀升,基准测试榜单不断刷新。但到了2025年中,一个共识逐渐形成:模型能力已经不是Agent落地的最大瓶颈。
真正的瓶颈在于:如何把模型能力"封装"成可靠、可控、可嵌入业务流程的智能体?这涉及到工具调用、记忆管理、安全沙箱、多Agent协同、可观测性等一系列工程问题。这些问题不解决,再强的模型也只是"聊天框里的实习生"——能说会道,但干不了真活。
正是在这个背景下,Agent Harness(智能体 harness/运行时框架)从幕后走向台前。
1.2 8天两场开源,不是巧合
8月13日凌晨,DeepSeek Harness(简称DSH)以MIT协议开源,半小时GitHub Star破万,24小时内社区涌现288个插件仓库。
8天后的8月21日,OpenAI总裁Greg Brockman在X上宣布Codex Harness全面开源,Apache-2.0许可。
8天,两大顶级玩家相继出牌。这不是巧合——这说明Agent基础设施层已经成熟到了"谁先开放谁占位"的关键节点。就像移动互联网时代的iOS和Android,谁先定义了应用的运行时标准,谁就掌握了生态的话语权。
但更值得玩味的是,两家给出的答案截然不同:DeepSeek要做Agent世界的"安卓"——开源开放、社区驱动、一切皆插件;而OpenAI要做"iOS"——精品路线、企业级深度、嵌入优先、质量管控。
二、DeepSeek Harness:一切皆插件的组装哲学
2.1 设计理念:Everything is a Plugin
DeepSeek Harness的官方Slogan只有一句话:"Everything is a Plugin." 这不是营销口号,而是贯穿整个架构的底层准则。
传统的Agent框架通常采用"内核+扩展"模式:核心逻辑写死在内核里,外围功能通过Hook或回调扩展。想换个模型提供商?改适配层。想加个新工具?改Agent Loop。想换沙箱?Fork整个项目。
DSH彻底反转了这个逻辑——内核什么都不做,只负责管理插件的生命周期。模型、工具、界面、存储、安全策略、上下文管理,甚至Agent循环本身,全部以插件的形式存在。运行中的Harness本质上是一个Context容器,不同的包向它注册服务、事件和能力,最终由YAML配置文件把它们"组装"成一套可以运行的智能体。
# dsh.config.yaml 示例 —— 用配置文件组装一个Agent
preset: standard
model:
plugin: '@dsh/model-deepseek'
config:
apiKey: ${DSH_API_KEY}
model: deepseek-v3
tools:
- plugin: '@dsh/tool-bash'
- plugin: '@dsh/tool-file-editor'
- plugin: '@dsh/tool-web-search'
ui:
plugin: '@dsh/ui-web'
config:
port: 3080
sandbox:
plugin: '@dsh/sandbox-docker'这种设计的威力在于:你不需要修改框架源码,只需要改配置,就能"换脑"(换模型)、"换手"(换工具)、"换皮肤"(换UI)。 对于企业来说,这意味着技术选型的灵活性和供应商锁定风险的大幅降低。
2.2 底层基石:Cordis微内核架构
DSH的插件化体系不是从零造的轮子,而是构建在开源框架Cordis之上。Cordis最初是为Koishi(一个机器人框架)设计的微内核,经过多年迭代已经非常成熟。
Cordis内核只做三件事:
emit(广播)、waterfall(瀑布流)、parallel(并行)、serial(串行)// 一个最简DSH插件示例
import { Context, Plugin } from '@dsh/core';
export const myTool: Plugin = {
name: 'my-custom-tool',
apply(ctx: Context) {
// 注册一个工具
ctx.tool.register({
name: 'greet',
description: '向用户打招呼',
parameters: {
type: 'object',
properties: {
name: { type: 'string', description: '用户名字' }
},
required: ['name']
},
async execute({ name }) {
return `Hello, ${name}! 这是来自自定义插件的问候。`;
}
});
// 监听Agent循环事件
ctx.on('agent/turn/before', (turn) => {
console.log(`第 ${turn.index} 轮对话开始`);
});
}
};基于Cordis的架构带来了一个关键特性:插件可以依赖插件。这意味着社区可以构建"插件的插件",形成层层叠加的生态网络。比如dsh-agent-teams这个多Agent协作插件,本身又依赖了模型插件、工具插件和会话管理插件。
2.3 四种运行模式:从开箱即用到深度定制
DSH没有搞"一刀切",而是为不同场景设计了四种运行模式:
| 模式 | 定位 | 核心特性 | 适用人群 |
|------|------|----------|----------|
| Standard(标准模式) | 日常首选 | 文件编辑、Shell命令、网页检索、子Agent调用、工作流编排 | 大多数开发者和用户 |
| PTC(Program-to-Code) | 高阶玩法 | 模型直接编写TypeScript程序,将多步复杂操作串起来执行 | 需要高效复杂任务编排的场景 |
| Minimal(极简模式) | 模型评测 | 只保留持久化Bash和str_replace_editor,剔除一切噪音 | 模型基准测试、能力评估 |
| Creative(创造模式) | 深度定制 | 运行时检查系统状态、动态挂载/卸载Cordis插件、Agent自改装 | 框架研究者、高级定制需求 |
其中最具想象力的是Creative模式——Agent可以在运行时自己编写插件、挂载运行、完成任务后卸载。这为"自进化Agent"打开了大门:当Agent学会了一种新的工作方式,它可以自己把它写成代码固化成能力,下次直接调用。
2.4 可观测性:让Agent从黑盒变成白盒
Agent最让人头疼的问题之一就是"它到底干了啥?"。一旦出错,黑盒式的Agent几乎无法调试。
DSH在可观测性上做得相当扎实:
这种设计让调试Agent像调试普通程序一样可回溯、可复现——对于企业级应用来说,这不是锦上添花,而是刚需。
三、OpenAI Codex Harness:把Agent装进产品的嵌入哲学
3.1 设计理念:反套壳革命
如果说DeepSeek的关键词是"插件",那么Codex Harness的关键词就是"嵌入"。
OpenAI在官方博客中一针见血地指出:与其要求每一个团队都把他们原本熟悉的工作流程,强行搬到一个通用的代码助手中去,不如把Agent直接带入那些围绕实际工作设计的软件里。
安全分析师看的是预警队列,客服工程师看的是账户历史,产品经理看的是需求看板。对于这些真实的打工人来说,重要的不是那个"聊天框",而是他们眼前的业务看板。Codex Harness要做的,就是把Agent能力作为引擎,嵌入到这些已有的产品和工作流中。
OpenAI称之为:"前端业务规则归你,底层Agent循环归我。"
3.2 三大组件:从CLI到嵌入式引擎
Codex Harness开源了三个核心组件:
| 组件 | 语言 | 定位 | 核心能力 |
|------|------|------|----------|
| codex-exec | Rust | CLI自动化流水线 | 命令行工具、脚本执行、CI/CD集成 |
| Codex SDK | TypeScript / Python | 编程式接口 | 类型安全的Agent构建、工具定义、会话管理 |
| app-server | Rust | 核心引擎 | JSON-RPC服务、持久对话、流式事件、人工审批、自定义工具 |
其中app-server是整个体系的明星组件。它是一个独立运行的Rust进程,通过JSON-RPC协议与你的业务应用通信,提供完整的Agent能力。
// 使用Codex SDK连接app-server示例
import { CodexClient } from '@openai/codex';
const client = new CodexClient({
transport: {
type: 'stdio', // 也支持 websocket、unix socket
command: 'codex-app-server'
}
});
// 创建一个会话(Thread)
const thread = await client.threads.create({
toolResources: {
// 暴露业务系统的自定义工具给Agent
customTools: [
{
name: 'query_customer',
description: '查询客户信息',
inputSchema: {
type: 'object',
properties: {
customerId: { type: 'string' }
}
}
}
]
}
});
// 发送消息并流式接收响应
const stream = await client.turns.create(thread.id, {
message: '帮我查一下客户C1001的最近订单',
// 开启人工审批模式:敏感操作需要人确认
humanApproval: {
mode: 'sensitive-tools',
tools: ['query_customer']
}
});这种架构的核心优势是关注点分离:你的业务系统负责UI、数据、权限控制,app-server负责Agent的核心循环——记忆管理、工具调用、推理规划。两者通过标准协议通信,互不侵入。
3.3 记忆系统:读写分离的两阶段管道
Codex Harness在记忆系统上的设计体现了企业级产品的深度。它没有采用简单的"向量存储+相似度检索"方案,而是设计了更精细的分层架构:
memories/read和memories/write是两个独立的接口,读取和写入走不同的处理管道这种设计比大多数开源框架的"一把梭"向量检索更接近真正的"持续学习"——记忆不是简单的堆加,而是有组织、有结构、有遗忘的动态过程。
3.4 安全体系:五层纵深防御
企业级场景对安全的要求怎么强调都不为过。Codex Harness在安全沙箱上采用了五层纵深防御设计:
五层防护层层递进,即使某一层被突破,下一层仍然能阻止越权操作。对于金融、医疗、政企等强监管场景,这种安全设计是选型时的决定性因素。
四、全方位对比:安卓与iOS的Agent版复刻?
4.1 核心维度对比表
| 维度 | DeepSeek Harness | OpenAI Codex Harness |
|------|-----------------|---------------------|
| 开源时间 | 2025年8月13日 | 2025年8月21日 |
| 开源协议 | MIT | Apache-2.0 |
| 核心语言 | TypeScript | Rust(核心)+ TS/Python(SDK) |
| 设计哲学 | 一切皆插件,组装式框架 | 反套壳革命,嵌入式引擎 |
| 底层架构 | Cordis微内核 + 200+插件包 | app-server(JSON-RPC)+ 80+ Rust子模块 |
| 仓库规模 | 50个包组、200+子包、12000+提交 | 80+子模块、3200+ .rs文件、9600+提交 |
| 社区生态 | 2600+社区插件、1100+精选、社区驱动 | 不接受外部PR、只收Issue、官方主导 |
| 模型绑定 | 完全解耦,支持任意LLM | 原生支持OpenAI模型,可扩展其他 |
| 运行模式 | 4种预设模式(标准/PTC/极简/创造) | 嵌入式为主,CLI为辅 |
| 记忆系统 | 插件化,社区方案多样(如OpenViking) | 内置读写分离 + 两阶段提取管道 |
| 安全沙箱 | 插件化,支持Docker等多种方案 | 五层纵深防御(V8+策略+加固+沙箱) |
| 可观测性 | Trajectory轨迹 + 回放/分叉/恢复 | 结构化日志 + 事件流 |
| 企业级成熟度 | 开发者预览版(rc阶段) | 迭代一年多,有企业客户验证 |
| 上手门槛 | 低,npx一行命令启动 | 中高,Rust编译 + 协议对接 |
| 类比定位 | Agent的"安卓"——开放生态 | Agent的"iOS"——精品深度 |
4.2 设计哲学的根本分歧
表面上看,两个框架做的事情高度重叠——文件读写、终端执行、子智能体、工作流编排、会话持久化、安全沙箱、工具调用……但底层的设计哲学是两条根本不同的路线:
DeepSeek Harness = 组装框架
你选择插什么模块进去——哪个模型、哪些工具、什么界面、什么安全策略——框架帮你组装成一个可以运行的Agent。它的终极形态是"Agent的乐高积木":内核极轻,能力全靠插件堆,组合方式无穷无尽。
Codex Harness = 嵌入引擎
你不拆它、不改它,你把它装进你的产品。发动机提供动力(Agent循环、记忆、工具调用),你掌控方向盘(界面、数据、权限审批)。它的终极形态是"Agent的发动机":你不需要知道发动机怎么造的,你只需要知道怎么把它装到你的车上。
这两种哲学没有对错,只有适用场景的不同。
4.3 各自的王牌与天花板
#### DeepSeek的王牌:社区生态的爆发力
DeepSeek最大的优势不是代码本身,而是它点燃的社区。开源仅8天,dsh-plugin标签下就涌现了2600+个公开仓库,其中不乏产品级成熟度的项目:
社区用8天,完成了大厂可能需要几个月才能做完的生态布局。这种爆发力是闭源生态永远无法比拟的。
#### DeepSeek的天花板
TypeScript的性能上限是天然的。对于高并发、低延迟的企业级场景,Rust实现的Codex有结构性优势。更现实的问题是社区质量参差——2600+仓库里,有工业级精品,也有大量玩具级项目。开源生态的通病,质量管控靠社区自治,出了问题DeepSeek团队不会背锅。
此外,DSH目前仍处于v0.1.0-rc.x候选发布阶段,虽然迭代极快,但对生产环境来说仍是心理障碍。
#### OpenAI的王牌:企业级深度与实战验证
Codex的优势不在广度,在深度。作为商业产品迭代了一年多,它在几个关键维度上更成熟:
#### OpenAI的天花板
Codex最大的短板是没有社区生态。文档明确写着"不接受外部代码贡献",只接受issue报告。这意味着所有扩展都靠你自己写,没有2600个社区插件可以"白嫖"。
Rust语言本身也是门槛。对于独立开发者和小团队,TypeScript的上手成本远低于Rust——前者AI辅助能帮你读写改,后者遇到边界case可能直接卡住。
五、MCP:工具调用的统一战线
在讨论Agent Harness时,不能不提到一个重要的行业共识——MCP(Model Context Protocol)。
5.1 MCP是什么?
MCP是由Anthropic牵头推出的开放协议,旨在为Agent工具调用建立统一标准。你可以把它理解为Agent世界的"USB接口":一端插各种工具和数据源,一端插各种大模型和Agent框架,中间靠标准协议打通。
在MCP出现之前,每个Agent框架都有自己的工具定义方式——OpenAI有Function Calling格式,Anthropic有Tool Use格式,各种开源框架更是各搞一套。工具开发者要适配N个框架,框架开发者要接入N个工具,重复劳动巨大。
MCP的出现就是为了终结这种碎片化。
5.2 MCP的核心架构
MCP采用Client-Host-Server三层架构,基于JSON-RPC 2.0构建有状态的会话协议:
┌─────────────────────────────────────────────────┐
│ MCP 三层架构模型 │
├─────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Client │◄──►│ Host │◄──►│ Server │ │
│ │ (大模型/ │ │ (Agent │ │ (工具/ │ │
│ │ Agent) │ │ Harness)│ │ 数据源) │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ 发起调用 中转/管理 提供能力 │
└─────────────────────────────────────────────────┘核心能力包括三类:
5.3 两大框架对MCP的态度
有趣的是,DeepSeek和OpenAI在MCP上采取了不同的策略:
从长远来看,MCP的普及是必然趋势——就像USB统一了外设接口,MCP将统一Agent的工具接口。谁先拥抱MCP,谁就能接入更广泛的工具生态。
六、实践指南:如何选择?
6.1 场景化选型建议
| 你的场景 | 推荐选择 | 理由 |
|----------|----------|------|
| 从零构建独立Agent产品 | DeepSeek Harness | 插件化组装适合从零开始,2600+插件减少重复造轮子 |
| 将Agent嵌入已有业务系统 | Codex Harness(app-server模式) | JSON-RPC嵌入式架构,界面和数据归你,Agent循环归引擎 |
| 企业级安全合规场景 | Codex Harness | 五层安全沙箱 + 执行策略 + 进程加固,企业级标配 |
| 快速原型验证/个人项目 | DeepSeek Harness | npx一行启动,TypeScript友好,社区资源丰富 |
| 自进化/持续学习Agent | 两者结合 | 架构借鉴Codex的记忆管道,底座用DSH的插件生态 |
| 多Agent协同系统 | DeepSeek Harness + dsh-agent-teams | 社区已有成熟的多Agent调度方案,产品级可用 |
6.2 代码示例:快速上手对比
#### DeepSeek Harness 快速启动
# 一行命令启动Web UI
npx @deepseek-ai/dsh web
# 或者从源码构建
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web#### Codex Harness 快速启动(app-server模式)
# 安装Codex CLI
cargo install codex-cli
# 启动app-server(stdio模式)
codex app-server --stdio
# 或者用SDK连接(Python示例)
from openai import Codex
client = Codex(
transport="stdio",
command=["codex", "app-server", "--stdio"]
)
thread = client.threads.create()
turn = client.turns.create(
thread_id=thread.id,
message="帮我分析一下当前目录的项目结构"
)6.3 自定义工具开发对比
#### DSH插件方式
// dsh-plugin-weather/index.ts
import { Context, Plugin } from '@dsh/core';
export const weatherPlugin: Plugin = {
name: 'weather-tool',
apply(ctx: Context) {
ctx.tool.register({
name: 'get_weather',
description: '获取指定城市的天气信息',
parameters: {
type: 'object',
properties: {
city: { type: 'string', description: '城市名称' },
unit: { type: 'string', enum: ['celsius', 'fahrenheit'], default: 'celsius' }
},
required: ['city']
},
async execute({ city, unit }) {
const res = await fetch(`https://api.weather.com/${city}?unit=${unit}`);
return res.json();
}
});
}
};#### Codex MCP方式
# weather_mcp_server.py
from mcp.server import Server
from mcp.types import Tool, TextContent
import json
app = Server("weather-server")
@app.list_tools()
async def list_tools() -> list[Tool]:
return [
Tool(
name="get_weather",
description="获取指定城市的天气信息",
inputSchema={
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名称"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["city"]
}
)
]
@app.call_tool()
async def call_tool(name: str, arguments: dict) -> list[TextContent]:
if name == "get_weather":
city = arguments.get("city", "")
unit = arguments.get("unit", "celsius")
# 调用天气API...
return [TextContent(type="text", text=f"{city}今天25度,晴。")]
return []可以看到,两种方式的核心逻辑相似,但DSH的插件是"注册到框架",而MCP的工具是"通过协议暴露"——前者是插件化组装,后者是标准化互联。
七、未来展望:框架之上的竞争才刚刚开始
7.1 被忽视的关键信号
OpenAI在官方博客中提到了一个容易被忽视但极其重要的数据:
在ARC-AGI-3基准测试中,仅仅对Harness做了两项调整——保留推理与上下文压缩——GPT-5.6 Sol的得分就从13.3%飙升到38.3%,输出Token减少了六倍。
13.3%到38.3%,接近三倍的提升,不是来自模型迭代,而是来自框架设计。
这个数据传递的信号是:Agent的竞争已经从"谁的模型强"进入"谁的Harness好"的第二阶段。模型能力是基础,但如何编排、管理、增强这个模型,才是决定Agent最终表现的关键。
这也解释了为什么两家巨头要在8天内相继开源——因为Harness已经成为Agent时代的"操作系统",谁定义了运行时标准,谁就掌握了生态的主导权。
7.2 两条路线会收敛吗?
一个有趣的问题是:DeepSeek的"安卓路线"和Codex的"iOS路线",最终会像移动互联网时代那样长期共存,还是会有一方胜出?
我的判断是长期共存,但会互相借鉴:
但两者的基因差异决定了它们不会完全趋同。DeepSeek从出生就是社区的,Codex从出生就是企业的。这种底色会持续影响它们的产品决策和生态走向。
7.3 对开发者意味着什么
两大顶级框架同时免费开放,对开发者来说既是好消息也是坏消息:
好消息:你免费拿到了全球最强的两套Agent基础设施。不用再从零写Agent循环、不用再折腾工具调用协议、不用再踩沙箱的坑——这些脏活累活,巨头已经帮你干了。
坏消息:你的护城河不能再是"我有个好框架"了。当框架变成免费的基础设施,竞争就上移到了框架之上——谁能用更好的框架做出更好的产品,谁能在垂直场景做到体验断崖式领先,谁能在"反套壳"的理念下做出真正解决业务问题的原生AI应用。
"套壳时代"结束了。过去一年,很多开发者陷入"套壳"的怪圈——做ChatBot、包一层UI、接几个API,产品越来越像,护城河越来越浅。现在两大框架同时把"反套壳"变成基础设施,通用聊天框的黄昏到了,原生AI应用的黎明才刚刚开始。
7.4 下一个战场:Agent的自我进化
我认为,下一个真正的技术突破点在于Agent的自我进化能力。
目前的Agent框架,无论DSH还是Codex,本质上都是"人类设计能力,Agent使用能力"。但如果Agent能自己创造能力呢?
DSH的Creative模式已经摸到了这个门槛——Agent可以在运行时自己写插件、挂载运行。如果再结合Codex那样的记忆整合机制,Agent就能从"经验"中提炼出"技能",固化成可复用的能力。
这才是真正的"自进化Agent":不是靠人类给它加功能,而是它在工作中自己学会新技能。这一步一旦走通,Agent的能力增长曲线将从线性变成指数级。
而两大框架的开源,恰恰为这个方向的探索降低了门槛。全球的研究者和开发者,可以站在巨人的肩膀上,去探索Agent自我进化的可能性。
八、结语:不是终点,是起点
8天,两大框架,两种哲学。
DeepSeek选了"组装"——一切皆插件,社区驱动,广度优先。它相信生态的力量,相信千千万万开发者的创造力,能让Agent以最快的速度渗透到每一个角落。
OpenAI选了"嵌入"——把Agent装进产品,企业级深度,深度优先。它相信体验的力量,相信深度融入工作流的Agent,才能真正创造价值。
它们不是在争夺同一个市场,它们在共同做一件事:把Agent从"聊天框里的实习生"变成"能嵌入任何产品的隐形大脑"。
当Agent的基础设施免费开放,通用聊天框的黄昏就到了。接下来,是原生AI应用的黎明——那些围绕实际工作设计的软件,终于能装上一个聪明的脑子了。
这不是终点,是起点。两大框架开放了底座,接下来要看的是:谁能用这些底座,做出真正改变工作方式的原生AI应用。
答案不在框架里,在产品里。在每一个开发者的手中。
本文基于DeepSeek Harness与OpenAI Codex Harness的公开资料与社区信息综合分析,所有技术细节以官方文档为准。
💬 评论区 (0)
暂无评论,快来抢沙发吧!