DeepSeek Harness 最近上线:Everything is a Plugin 有什么特别之处

最近 DeepSeek 公开了 DeepSeek Harness(dsh) 的 Developer Preview,并开放了源码。官方给它的定位是 Agent Harness,也就是模型之外负责组织工具、Session、执行环境、权限和运行流程的一层基础设施。项目目前仍处于快速迭代阶段,官方明确提醒后续会存在兼容性变更。(GitHub)

它这次最显眼的一句话是:

Everything is a Plugin.

这里的 Plugin 范围很大。模型、工具、Skill、Session、Sandbox、Storage、Agent Loop、调度和 UI 都被纳入插件体系,开发者可以通过配置替换或重新组合这些能力。(深度求索)

这篇文章就围绕 DeepSeek Harness 当前几个比较有代表性的设计展开。

一、Everything is a Plugin:Agent Runtime 也可以重新组合

DeepSeek Harness 当前把 Agent 的主要运行能力都放进了插件体系

对于常见的插件系统我们可能会想到工具扩展,例如给 Agent 增加文件读取、Shell、搜索或者浏览器。

DeepSeek Harness 把插件粒度继续做到了 Runtime 层。

官方架构文档列出的插件能力包括:

能力 在 Agent 中负责什么
Model Adapter 连接具体模型
Tool Registry 管理可以交给模型调用的工具
Session Log 保存运行过程
Agent Loop 驱动模型与工具持续交互
Skills 提供可复用任务能力
Sandbox 限制命令和文件操作范围
Storage 保存持久化数据
Scheduling 处理任务调度
UI 提供交互界面

其中连 Agent Loop 本身也是插件。DeepSeek Harness 的架构文档明确说明,模型适配器、工具注册表、Session Log 和 Agent Loop 都可以通过配置替换。扩展新的实现时,可以把插件挂载到现有插件旁边,而不需要修改一个固定的 Runtime Core。(Deepseek Harness)

所以一个 DeepSeek Harness 实例可以由一组能力组合出来:

diff 复制代码
模型插件
+
工具插件
+
Session 插件
+
Agent Loop
+
Sandbox
+
Storage
+
Skills
+
UI

↓       

一个可以运行的 Agent

开发 Coding Agent 时,可以安装文件编辑、Shell、代码搜索和测试相关插件。

做自动化 Agent 时,可以调整工具、调度和存储。

做企业内部 Agent 时,还可以替换执行环境、权限策略或者模型 Provider。

Runtime 不再和某一套固定工具、模型和执行环境绑在一起,这就是这套插件设计最直接的用途。(深度求索)

二、Cordis:插件之间通过能力接口协作

插件拆得很细之后,需要解决它们之间怎样建立依赖。

DeepSeek Harness 底层使用的是 Cordis 。官方把它描述为 Harness 下方的插件框架,负责插件的挂载、卸载、依赖以及共享 Context。(Deepseek Harness)

一个插件可以在 Context 中注册服务,例如:

复制代码
ctx.tools
ctx.llm
ctx.sessions

其他插件需要使用这些能力时,通过 Context 取得对应 Service,而不是直接依赖某个具体实现。(Deepseek Harness)

比如 Bash 工具需要执行命令。

DeepSeek Harness 当前把这一部分拆成了:

markdown 复制代码
Shell 能力定义
        ↓
具体 Shell Provider
        ↓
Bash Tool

Shell 可以由本地执行器提供,也可以接入受 Sandbox 管理的执行器。Bash Tool 使用统一的 Shell 能力,上层工具因此不用把具体执行环境写死。(Deepseek Harness)

文件系统也采用类似结构。官方 Capability Seams 文档中,文件能力有统一的 ctx.fs 接口,而本地文件系统、Sandbox 文件系统以及 E2B 可以作为不同实现接入。(Deepseek Harness)

这种结构带来的结果比较直观:工具依赖文件能力而不是直接依赖某一个本地文件系统实现

更换执行环境时,相关工具可以继续沿用统一接口。

Cordis 还提供 typed events。不同插件可以通过事件监听 Agent 请求、工具结果、Session 变化等运行节点,从而把权限检查、日志、结果处理等逻辑插入已有流程。(Deepseek Harness)

三、Profile 和 Bundle:插件最后怎样组装成一个 Agent

插件化解决了能力拆分,DeepSeek Harness 还提供了 Profile 和 Bundle 来管理组合。(Deepseek Harness)

Bundle 可以理解为一组插件配置。

Profile 则描述一次运行需要加载哪些 Bundle,以及额外使用哪些插件和配置。

例如 Web 版本需要:

diff 复制代码
基础 Agent 能力
+
模型
+
工具
+
Session
+
HTTP Server
+
Web UI

Headless 场景不需要 Web Server 和浏览器 UI,可以只保留模型、工具和 Session 等运行能力。

DeepSeek Harness 官方目前提供 webheadless 等 Profile 模板,运行时会按照 Profile 中定义的层级组合插件树。(Deepseek Harness)

开发者还可以查看当前机器实际启动的插件配置:

css 复制代码
dsh --profile web --dump-config

官方架构文档说明,Profile 上层还可以继续应用自己的 Patch,替换某一项插件配置或者插入新的插件。(Deepseek Harness)

因此,同一套 Harness 可以维护多套不同组合:

css 复制代码
Profile A
Coding Agent

Profile B
自动化 Agent

Profile C
Benchmark Agent

Profile D
企业内部 Agent

变化主要集中在插件配置,而不是复制多份完整 Runtime 代码。

四、Every run is traceable:Agent 的执行过程可以回放

DeepSeek Harness 另一个官方重点是:

Every run is traceable.

Agent 工作时产生的不只是最终回答。

一次 Coding Agent 任务可能包含:

复制代码
用户任务
↓
模型分析
↓
读取文件
↓
文件内容
↓
继续分析
↓
修改文件
↓
运行测试
↓
测试结果
↓
再次修改

DeepSeek Harness 使用 append-only Session Log 保存模型实际看到的内容。官方列出的记录包括 System Prompt、Reasoning、工具调用及结果、Subagent 调度以及 Context Injection。Trajectory 页面可以按照来源查看这些记录。(深度求索)

Session Log 还承担了恢复运行状态的作用。

官方架构文档指出,模型下一轮看到的历史由 Session Log 推导,Resume、Fork、Transcript、Telemetry 和 Persistence 也都基于这条事件流。(Deepseek Harness)

因此一次失败任务可以沿着运行记录检查:

复制代码
模型当时拿到了哪些信息

→ 调用了哪个工具

→ 工具返回了什么

→ 下一轮模型又接收了哪些内容

Agent 调试时,这类轨迹很重要。

最终结果错误,原因可能出现在模型判断、工具返回、Context 注入、权限处理或者 Session 恢复中的任意一个阶段。完整事件流可以把排查范围缩小到具体步骤。

五、四种 Runtime Mode 对应不同运行方式

DeepSeek Harness 当前提供四种 Runtime Mode:Standard、Code、Minimal 和 Creator。(深度求索)

Standard Mode

Standard Mode 提供完整的 Coding Agent 能力,包括文件编辑、Shell、文件与 Web 搜索、Skills、Planning、Goals、Subagents 和 Workflows。(深度求索)

适合直接运行完整 Agent。

Code Mode

Code Mode 在 Standard Mode 的能力基础上,把工具通过 Code Mode SDK 暴露出来,让模型生成 TypeScript 程序来组织多步工具调用。(深度求索)

普通 Tool Calling 更接近:

css 复制代码
模型
→ 调工具 A
→ 返回模型
→ 调工具 B
→ 返回模型

Code Mode 可以把一部分工具编排放到模型生成的程序中执行:

复制代码
模型生成程序
↓
调用多个工具
↓
处理工具结果
↓
返回最终结果

DeepSeek Harness 的工具执行 Pipeline 仍会处理 Code Mode 内部发出的子调用,包括策略检查和工具结果记录。(Deepseek Harness)

Minimal Mode

Minimal Mode 当前只保留 Persistent Bash 和文件编辑器两个工具,官方将它作为更精简的 Coding Agent 环境,并用于模型 Benchmark。(深度求索)

这种环境可以减少复杂工具链对模型评测结果的影响。

Creator Mode

Creator Mode 面向 Harness 本身的开发,可以查看当前 Runtime、测试 Cordis Plugin,并组合新的 Agent Preset。(深度求索)

它和 Everything is a Plugin 的设计正好对应起来:

复制代码
查看当前 Runtime
↓
添加 / 替换插件
↓
测试插件
↓
保存新的组合

六、Sandbox 和 Approval 也在插件体系里

Agent 一旦拥有 Bash 和文件写入能力,模型生成的内容会直接影响真实环境。

DeepSeek Harness 当前把 Sandbox、Approval 和 Permission Preset 分成独立能力。(Deepseek Harness)

例如官方当前提供的 Sandbox Mode 包括:

arduino 复制代码
read-only
workspace-write
danger-full-access

read-only 限制写入,workspace-write 允许修改 Workspace 和后端允许的临时目录,danger-full-access 则跳过这层文件系统限制。Sandbox 当前主要约束文件系统影响,网络和进程可见性并不属于这一组 Sandbox Mode 的控制范围。(Deepseek Harness)

Approval Policy 则负责工具执行前是否需要确认。

官方的 Permission Preset 会把 Sandbox Mode 和 Approval Policy 组合起来,例如默认表中包含 workspace-write 与需要确认的策略,以及 danger-full-access 与无需确认的组合。(Deepseek Harness)

工具实际执行还会经过一条 Pipeline:

sql 复制代码
工具调用
↓
pre-execute
↓
权限和 Guard
↓
工具执行
↓
post-execute
↓
生成最终 Tool Result

文件系统还可以在更下层做 read-before-edit 等检查。(Deepseek Harness)

这种设计把权限控制放到了执行路径里。开发企业 Agent 时,删除文件、执行系统命令、修改仓库等操作可以根据风险配置不同限制,而不需要完全依赖 Prompt 里的文字约束。

七、DeepSeek Harness 目前适合怎么看

DeepSeek Harness 当前最大的特点很明确:

vbnet 复制代码
Model
Tools
Skills
Session
Agent Loop
Sandbox
Storage
Scheduling
UI

↓ 全部插件化

Cordis

↓ 配置组合

具体 Agent Runtime

Everything is a Plugin 让 Agent Runtime 的组成部分拥有统一的扩展方式;Cordis 负责依赖和事件通信;Profile 与 Bundle 管理组合;Session Log 保存完整运行轨迹;Sandbox 和 Approval 控制工具执行边界。(Deepseek Harness)

对于正在研究 Agent 工程的人,这个项目比较适合作为 Runtime 架构参考。它展示了模型、工具、执行环境、Session 和权限怎样从一个固定程序拆成独立能力。

插件化也会增加另一部分工程成本。插件数量增长以后,依赖关系、配置层级、版本兼容和问题定位都需要额外管理。DeepSeek Harness 自己目前仍处于 Developer Preview,官方已经明确说明插件和 API 会继续变化,并可能出现破坏兼容性的更新。(GitHub)

现在体验它也比较直接。安装 Node.js 后可以运行:

bash 复制代码
npx @deepseek-ai/dsh web

默认 Web UI 会启动在本地 127.0.0.1:3080。官方同时提供源码运行方式和 Python SDK,用于把 Harness Runtime 接进自己的程序。(GitHub)

八、小结

DeepSeek Harness 这次最值得记住的设计就是 Everything is a Plugin

它把插件从工具扩展推进到了整个 Agent Runtime:模型适配器、工具、Session、Agent Loop、Sandbox、Storage、Skills 和 UI 都可以独立存在,再通过 Cordis 和配置组合成具体运行环境。(深度求索)

在这套插件架构之外,Session 全程可追踪、Profile / Bundle 组合、不同 Runtime Mode,以及 Sandbox 和 Approval 也是目前比较完整的几块设计。它们处理的分别是 Agent 调试、运行配置、不同工作模式和执行安全问题。

项目仍然处于 Developer Preview,现在更适合用来研究和实验 Agent Harness 的组织方式。准备接进长期项目时,需要把插件 API 变化、配置维护和权限边界一起算进工程成本。(GitHub)

参考资料

本文主要参考 DeepSeek Harness 官方发布页、GitHub README、Architecture、Cordis、Profile / Bundle、Tool Execution Pipeline、Sandbox 与 Python SDK 文档。项目状态与实现细节均以当前官方资料为准。(深度求索)

相关推荐
武子康1 小时前
从 DeepSeek Harness 看:Tool 注册成功,为什么还不等于安全可用
人工智能·llm·agent
暂时先用这个名字1 小时前
安装deepseek harness及插件
人工智能·ai·npm·pnpm·deepseek·深度求索·harness
skywalk81631 小时前
用WorkBuddy成功把Deepseek Harness移植到FreeBSD
人工智能·deepseek·harness
GoCodingInMyWay3 小时前
DeepSeek Harness 开始
ai·agent·deepseek·harness
GoCoding3 小时前
DeepSeek Harness 开始
agent·ai编程·deepseek
fthux11 小时前
装闭 RenoPit 源码解析(09):AnalysisEngine装修闭坑分析主流程
人工智能·ai·开源·github·open source·renopit
ovO11 小时前
我按下“发送”之后:DeepSeek Harness 如何把一次请求变成 1,177 个增量片段
人工智能·开源·deepseek
JackieDYH11 小时前
Git 与 GitHub 新电脑配置指南(从零开始)
git·github·工具·使用教程
mCell14 小时前
用 Cordis 从零构建一个 Mini DeepSeek Harness
typescript·agent·deepseek