DeepSeek 把 Agent Core 也插件化了:Harness 的真正赌注

DeepSeek 把 Agent Core 也插件化了:Harness 的真正赌注

假设同一个团队要做两个 Agent 产品。

一个通过 Web 界面工作,会话存进 SQLite,允许使用 Bash 和文件工具;另一个只跑一次性任务, 会话写入 JSONL,禁止本地 Shell,通过 Python SDK 调用。再过一段时间,第二个产品甚至想换掉默认 Agent Loop。

如果模型、循环、工具、状态和界面都揉在一个 Agent 类里,团队通常只有两条路:继续增加条件分支, 或者 Fork 一份 Agent Core。分支越多,两个产品越难同步修复和升级。

DeepSeek Harness 想改变的正是这个位置。它的"Everything is a Plugin"不是说搜索和 MCP 可以装插件, 而是连模型适配器、Agent Loop、Session Log、Tool Registry 与产品 Surface 都进入同一套 Cordis 插件语义。

这也是它真正激进的地方:Agent Core 不再是一个不可触碰的中心。

我的判断是,DeepSeek Harness 的核心赌注不是做出功能更多的编码助手,而是让 Agent 产品差异通过 可组合、可卸载、可观察的运行时能力表达,减少复制 Agent Core 的必要性。它获得了更细的替换和生命周期 边界,也把复杂度转移到了插件图、接口契约、版本迁移和诊断上。

它究竟是 Harness、Runtime,还是产品

Harness、Runtime、Framework 和 Product 在行业里没有唯一强制定义。为了判断 DeepSeek Harness, 可以先采用一组操作性边界:

  • Framework 提供开发者描述流程、状态和组件的库与抽象。
  • Runtime 负责装载、调度、生命周期和实际执行。
  • Agent Harness 围绕模型组织上下文、工具、状态、权限、反馈和停止条件。
  • Product 在底层能力上给出默认界面、策略、体验和交付承诺。

DeepSeek 官方把 dsh 定位为 open-source agent harness。固定源码同时展现了明显的 Runtime 特征: Cordis 负责装载插件树,Profile 与 Bundle 决定组合,Web、Headless 和 SDK 驱动共同的底层语义。

它确实提供可运行界面,却仍是 Developer Preview。因此,"Web UI 能打开"和"已经是一款成熟的 Coding Agent 产品"是两件不同的事。

一句话概括:DeepSeek Harness 是一块用 Cordis 插件图重组 Agent 产品的运行时底盘,不是只允许在 固定 Agent Core 外围增加工具的插件框架。

"Everything"包括哪些核心能力

本文的架构判断绑定官方 Commit 47f943859bef60e4160492346772ded9b24f765a。固定架构文档明确写出,模型适配器、工具注册表、 Session Log 和 Agent Loop 本身都是插件,可以由配置替换。

核心能力 执行职责 进入插件语义后的变化
LLM Adapter 统一消息、流式输出与模型协议 换模型后端不必改 Agent Loop
Agent Loop 认领输入、请求模型、执行工具并判断是否继续 "换循环"与"换 Provider"都成为组合动作
Session Log 保存 Turn、Step、消息和工具事件 状态后端与循环可以分别演化
Tool Registry 汇总 Schema 并执行工具流水线 工具、执行 Provider 和策略不必绑在一个类里
Surface Web、Headless、SDK 等入口 多个产品入口不必各自复制 Agent Core

其中最不寻常的是 Agent Loop 也只是插件。普通插件系统通常默认主循环不可替换,扩展只发生在边缘; DeepSeek Harness 则把循环、状态和工具放在同一组合机制里。

但"存在替换接缝"不能直接写成"任意实现都兼容"。错误语义、流式事件、状态格式、安全策略和性能特征, 仍然需要契约测试和受控实验。把代码拆成包是架构事实,稳定组合这些包才是工程能力。

Cordis 不只管理注册,还管理插件何时存在

如果插件只在启动时向 Map 注册一个工具,退出进程时一起销毁,普通依赖注入已经够用。Agent Runtime 真正困难的场景是动态变化:Workspace 被加载或卸载,Provider 暂时出现或消失,配置被更新,局部能力 只在某个 Agent 的生命周期中存在。

Cordis 把设计目标称为 spatiotemporal composability。用工程语言可以压缩成两个问题:

  1. 插件注册的服务、事件和子作用域,能否在卸载时作为可追踪副作用被回收?
  2. 消费者能否声明需要什么能力,并在 Provider 出现、消失或变化时重新协调?

因此,Cordis Context 不只是一个服务容器,也追踪插件产生的 effects。这让"局部装上,再完整卸下" 成为设计目标,而不是依赖开发者记住每一次清理操作。

边界同样重要。Cordis 官方仍明确说明 API 尚未稳定;相关论文材料是项目作者持续维护的设计框架, 不是已经形成同行评审共识的可靠性定理。可逆生命周期减少一类耦合风险,但不会自动消除复杂插件图中的 竞态、瞬时依赖缺失和版本兼容问题。

五个构件怎样形成真正运行的产品

只看插件目录,还无法回答"这一轮实际启用了什么"。DeepSeek Harness 用五个构件把安装包转成运行组合。

Profile:表达产品选择

Profile 是命名后的产品组合。它决定使用哪些 Bundle,并保存产品自己的配置覆盖。Web 与 Headless 可以 共享基础能力,同时选择不同入口和默认策略。

Bundle:分发能力集合

Bundle 将一组 Cordis 配置行和代码作为可复用组合。基础 Bundle 提供模型、工具、持久化、Sandbox、 设置、凭据和遥测等能力;不同 Surface 再增加自己的增量。

Patch:注入环境差异

Bundle、Profile、Home 和命令行 Patch 逐层形成最终插件树。需要特别注意:Patch 按行 ID 定位并替换 整段配置,不是任意 YAML 深度合并。它更可预测,也要求配置者清楚被替换行的完整含义。

Capability Seam:定义替换边界

官方把一个完整接缝拆成 Service Definition、Provider 和 Consumer。Consumer 面向稳定服务,Provider 决定本地、远端或具体协议实现。只有一个接口声明,还不能算完整的可替换能力。

Event Log:保存共同事实

Session 通过追加事件保存模型可见事实,模型历史由日志投影而来;UI、回放、持久化、Fork 与 Resume 也从同一事件流派生。不同 Surface 因此不必各自维护一份"当前 Agent 状态"。

不过,append-only Log 的存在不等于跨机器恢复、所有副作用幂等或长任务可靠性已经成立。这些结论需要 故障注入和真实部署证据。

五者组合起来,才是 DeepSeek Harness 的产品方法:Profile 选择,Bundle 分发,Patch 覆盖,Seam 隔离实现,Event Log 保存共同事实。

灵活性没有消灭复杂度

把 Agent Core 插件化,最直接的收益是把变化限制在更小的边界里。

  • 切换 Session 后端,不必顺手重写 Agent Loop。
  • 为受限产品移除 Shell,可以从最终组合撤掉相关 Tool 与 Provider,而不是给循环增加分支。
  • Web 与 Headless 共享运行语义,不必维护两个逐渐分叉的核心。
  • Workspace 或单个 Agent 可以拥有局部能力和独立生命周期。

代价也非常具体:

  • 当前行为取决于最终插件树,只读某个入口文件不足以知道实际启用了什么。
  • 服务契约除了类型,还必须覆盖错误、流事件、安全与迁移语义。
  • 生命周期错误可能表现为重复注册、悬挂事件或 Provider 短暂缺失。
  • Bundle 与多层 Patch 提高复用性,也提高配置漂移和升级诊断成本。
  • Preview 阶段仍会发生兼容性破坏,采用者需要自行冻结版本并准备迁移。

所以,"Everything is a Plugin"并不是免费获得模块化,而是选择用显式组合图管理变化。

如果产品确实需要切换模型、循环、状态后端、执行世界或 Surface,这种复杂度可能值得。如果应用只有一个 固定 Loop、少量工具和单一部署,显式工作流加普通依赖注入往往更便宜、更容易审计。

当前证据支持到哪一步

截至 2026 年 8 月 14 日,官方仓库 HEAD 仍与固定基线 47f9438 相同;仓库快照内部版本是 rc5, npm 的 @deepseek-ai/dsh 和 PyPI 的 Python SDK 已是 rc6。PyPI 明确标记为 pre-release, 官方 README 仍标注 Developer Preview 并警告会出现兼容性破坏,Cordis 也仍声明 API 尚未稳定。

研究材料中的本机记录能证明更有限的内容:固定源码依赖可安装,Web 构建和页面检查完成,CLI 与配置 解析入口能加载,选定的 Session、Loop、Tools、Jobs、Subagent 和 Compaction 测试通过。缺少模型凭据时, Headless 返回 MISSING_CREDENTIAL

这能证明凭据门禁真实触发,不能证明真实模型 E2E 已完成,也不能推出生产级恢复、安全或调度能力成立。

一张表判断现在是否值得采用

使用情境 当前建议 进入下一步前要补什么
研究 Agent Runtime,替换 Loop、状态或 Provider 适合做隔离 PoC 冻结 Commit 与包版本,导出最终插件树
同一底盘派生 Web、Headless、SDK 等入口 值得验证组合收益 检查状态、权限和错误语义是否一致
需要按 Workspace 或 Agent 动态装卸能力 Cordis 路线具有针对性 测试重复装卸、Provider 消失和资源回收
只有固定 Loop、单一后端和少量工具 优先考虑简单方案 先证明动态组合能偿还配置与诊断成本
准备承载关键生产任务 当前应谨慎 真实模型 E2E、故障注入、迁移演练和权限审计
想直接证明它优于成熟产品或工作流框架 证据不足 固定模型、任务、权限、预算和版本后再比较

这张表不负责给项目打总分,而是把架构兴趣和生产证据分开。DeepSeek 已经公开了一份可以阅读源码、 可以运行局部路径的激进 Runtime 设计;它还没有替采用者完成稳定接口、迁移、故障恢复和安全验证。

结论

DeepSeek Harness 最值得关注的地方,不是插件数量,而是它把 Agent Loop、Session、LLM、Tools 与 Surface 都降为插件图中的普通参与者。产品不再围绕一个必须 Fork 的核心类生长,而是由 Profile、Bundle、Patch、 Capability Seam 与 Event Log 组合出来。

它真正获得的是替换边界和生命周期语义,真正支付的是组合、契约、版本、迁移和诊断成本。对需要派生 多个 Agent 产品或动态替换执行能力的团队,这是一条值得认真测试的路线;对固定、简单、强调稳定交付的 应用,更小的显式工作流仍可能是更好的答案。

现阶段最合理的态度不是把它当成熟产品追捧,也不是因为 Preview 就忽略它:把固定源码当作一份可以 验证的架构提案,把生产能力继续标记为待证明。

参考资料

  1. DeepSeek Harness 官方仓库:github.com/deepseek-ai...
  2. 固定 Commit 架构文档:github.com/deepseek-ai...
  3. 固定 Commit Capability Seams:github.com/deepseek-ai...
  4. Cordis 官方仓库:github.com/cordiverse/...
  5. DeepSeek Harness Python SDK:pypi.org/project/dee...

证据边界

  • 核心插件范围、组合顺序和 Capability Seam:固定官方源码。
  • Cordis 的时空组合性:项目作者的设计框架,不视为同行评审共识。
  • 收益、代价和采用表:基于固定架构的工程分析。
  • 本机记录:仅限已执行命令和页面范围,没有真实模型 E2E。
  • 竞品性能、生产恢复、安全与跨机器调度:未验证,不作结论。
相关推荐
wu_jing_sheng01 小时前
哨兵卫星数据下载工具:基于CDSE的PySide6桌面应用开发实践
人工智能
小唔w1 小时前
2026年AI培训行业观察:主流学习渠道一览
人工智能·学习
美狐美颜sdk1 小时前
直播APP开发技术架构解析:从音视频流到第三方美颜SDK接入的完整方案
大数据·人工智能·音视频·美颜sdk·美颜api
CIO_Alliance1 小时前
AI认知系列(3)| 数据、算法、算力、场景四要素协同
人工智能·算法·ipaas·系统集成·企业cio联盟·企业级ai化转型
技术传感器1 小时前
让 Hermes 自动完成一个软件需求:从 Issue 到 PR 的 AI 开发流水线
人工智能·架构·aigc·需求分析·issue
啥都想学点的研究生1 小时前
一篇文章讲清楚:机器学习的相关概念
人工智能·机器学习
Capricorn19881 小时前
知芽研究问题看板无法推进?从孵化区到笔记的机制排查指南
大数据·论文阅读·人工智能·笔记·学习方法·论文笔记
Wang's Blog2 小时前
AI Agent白手起家76:使用 CrewAI 搭建多智能体营销策略生成器
人工智能
梦想的旅途22 小时前
企微 API 二次开发:利用 AI Agent 实现自动化运维
运维·人工智能·企业微信