DeepSeek Harness 开源:一切皆插件,Agent 进入组装时代
DeepSeek 今天连放两枚炸弹:凌晨发布旗舰模型 V4 Pro 正式版,半天之后 DeepSeek Harness 开发者预览版又在 GitHub 开源。模型抢走了头条,但 Harness 才是更值得细看的那一个。
它既不是新模型,也不是 API 客户端,而是一套用来构建、运行、扩展 Agent 的 SDK 与应用框架。仓库已经聚集了 230 多个 workspace 成员,文件系统、终端、子进程、PTY、语言服务器、网页访问、技能、子智能体、工作流、计划模式、会话持久化、凭据、遥测——几乎每项能力都有自己的独立包。
项目最醒目的设计主张只有一句话:一切皆插件,连 Agent Loop 本身也是插件。
洞洞板,不是组装好的电脑
如果把普通 Agent 项目比作一台装好的电脑,DeepSeek Harness 更像一块尺寸惊人的洞洞板:模型、工具、界面、存储、安全策略、上下文管理,都能插上去,也都能拔下来。
项目构建在 Cordis 微内核之上,运行中的 Harness 本质上是一个 Cordis Context:各包向 Context 注册服务、事件和能力,最终由配置文件把它们组合成可运行的 Agent。packages/core/ 解决最基本的问题——会话是什么、系统提示词怎么组装、工具怎么注册调用、Agent 怎么创建、一轮对话怎么从用户输入走到模型请求再走到工具执行。
核心之外是大量能力包:llm 负责模型适配与流式输出,shell/subprocess/terminal 管命令与进程树,fs 管文件读写,lsp 让 Agent 获得语义级代码导航,web 管搜索抓取,skill 管可复用技能,subagent 与 workflow 把单个 Agent 扩展成多智能体系统。
架构上它坚持三层分离:接口、实现、消费者。以 Bash 为例——接口定义「执行命令」是什么,本地实现负责真正创建进程,面向模型的工具包把能力变成模型可理解的 schema 与结果。将来本地 Shell 要换成远程容器、云沙箱或企业执行平台,只需替换实现层,不必重写模型工具和 Agent Loop。
这是典型的框架思维:目标不是做一个只有官方团队能维护的成品,而是让不同部署方能换模型、换存储、换安全策略、加工具,甚至换掉智能体循环本身。
cordis.yml:一份配置,组装出不同 Agent
插件化最终通过 cordis.yml 落到开发者手里。配置文件列出插件名称、稳定 ID 和参数,决定当前 Agent 拥有哪一组能力。
同一套代码可以组装成完全不同的产品:加 DeepSeek 适配器、文件系统、Bash 和 TUI,就是终端里的编程 Agent;把界面换成 Web 插件,就是浏览器应用;用 Headless 入口,它接受任务、跑完模型与工具轮次、打印答案退出;换成 ACP 或 JSON-RPC 前门,它又成了其他程序可驱动的自动化服务。
配置支持覆盖层——TUI 和 Web UI 可共享一份基础配置再各自叠加,个人配置放在最后一层,部署方不必复制整棵配置树。但有个坑要提醒:配置补丁替换的是目标插件的整个 config,不是深度合并——想深挖可以对比我们对 DeepSeek 下场造 Harness 的分析。只写一个新字段,原有 API Key、基础地址可能一起消失。很明确,但不一定符合新手直觉。
Agent Loop:不是循环,是交通规则
早期 Agent 项目的核心代码通常能简化成几行:发消息给模型、有工具调用就执行、把结果发回去、直到模型输出文本。Harness 当然也这么做,但它把这个过程拆成了严格的生命周期。
一次用户输入开启一个 Turn,一个 Turn 包含多个 Step,每个 Step 对应一次模型请求及后续工具执行。请求前系统组装稳定的系统提示词、运行环境、工具 schema 和会话消息;请求后,流式 chunk、完整消息、工具调用、工具结果、结束原因全部进入事件流。
工具也不是「拿到函数名就调用」:它会经过前置策略、不可逆安全守卫、实际执行、后置处理、内容整理和结果通知。允许或拒绝、超时、重试、指标、附加上下文,都可以从流水线不同位置接入。工具可以声明某类参数下的调用并发安全,调度器就让连续只读任务并行;一旦碰到修改状态或无法确定安全性的调用,就把它当作屏障,等前面的任务结束再独占执行。
这看起来像在乡间小路装航空管制——但当 Agent 同时搜索十个文件、跑测试、接收用户中途指令、还允许随时取消时,这些规则很快从「过度设计」变成「事故调查报告里最想早点拥有的东西」。系统还认真处理了运行中消息的去向:排队消息、注入上下文和 Steering 转向指令被区分对待,并通过回执确认转向指令真正进入了哪一次模型请求——它不只关心「消息收到了」,还关心「模型究竟在哪一步看到了它」。
Session Log:整个系统的权威来源
项目规定:凡是模型看见的内容,都必须能从日志中重建。用户消息、运行环境上下文、模型请求信息、流式输出、工具调用与结果、压缩事件、权限切换、取消原因,都以事件形式进入追加式会话流。界面、持久化、恢复、Fork、遥测、回放,不应各自维护一份「差不多正确」的状态,而应从同一个事件源派生。
这解决了 Agent 系统里最棘手的问题:任务出错时,我们到底能不能知道模型当时看到了什么?只存最终聊天文本,会丢掉太多关键信息——请求前注入的工作区状态、被裁剪的工具结果、系统自动切换的模型路由、流式输出中途用户的转向。Harness 在请求边界保存足以重建消息的记录,原始流式 chunk 也保留。会话持久化本身仍是插件,提供 JSONL 和 SQLite 后端,Resume 延续原会话,Fork 从确定的历史边界派生新会话,为调试、评估、审计、自动化提供了统一基础。
从一个 Agent 到一群 Agent
Harness 内置了子智能体和工作流能力:主 Agent 可以把任务委派给子 Agent——全新实例、从已有会话完成边界 Fork、或通过 ACP 连接外部子进程。作用域设计很关键:每个 Agent 拥有自己的上下文层,只能看到特定工具、提示词和命令,某个子 Agent 可以被限制为只做搜索分析,另一个才允许修改文件。
36氪的实测是个好数据点:用配置了 V4-Flash 的 Harness,一句提示、零中途干预,30 多分钟做出一个可玩的丧尸射击游戏;同样的提示词风格让配置了 GPT-5.6 sol-xhigh 的 Codex 做 3D 动画,效果明显更差——模型更大,反而输了。立功的是 Harness,不是模型。
为什么值得关注
Harness 正在成为 AI 基础设施的新战场。Codex、Claude Code、OpenClaw,现在加上 DeepSeek Harness,都在这一层角力,但打的是不同的仗:多数是封闭产品,为一种体验而优化;DeepSeek 选择把「组装方法」本身开源。这才是结构变化——Agent 不再是买来的应用,而是你亲手组装的产物,以开放微内核、可替换实现、可审计事件日志为底座。
开源还有战略上的算计:如果 Harness 层成为前沿模型与现实工作之间的接口,谁掌握默认组装方案,谁就掌握了分发——对模型、对工具、对算力。与 V4 Pro 同天开源,等于明说:模型只是产品的一半。
行动建议
开发者直接 clone 仓库跑一个会话,哪怕只用 Headless 入口,也能体会「组装出来的 Agent」和「成品 Agent」的差别。评估 Agent 基础设施的团队,重点测试三层分离:能不能不动循环就换存储、换安全策略、换执行后端?安全和审计团队应该研究 Session Log 原则——追加式事件源正是合规想要的。而对所有在 Agent 框架上做二次开发的人,建议把「一切皆插件」当作新的默认预期——Agent 的封闭应用时代,刚被画上了截止日期。
订阅智宅客
AI / 技术 / 数字生活方式,新文章第一时间送到邮箱。








