news 2026/8/16 23:06:22

(一)DeepSeek Harness炸场:88K星的开源Agent框架,把「一切皆插件」玩到了极致

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(一)DeepSeek Harness炸场:88K星的开源Agent框架,把「一切皆插件」玩到了极致

(一)DeepSeek Harness炸场:88K星的开源Agent框架,把「一切皆插件」玩到了极致

本文是《DeepSeek Harness 源码分析》100 篇系列的第 1 篇(开篇)。DeepSeek Harness(dsh)是 DeepSeek AI 开源的新一代 AI Agent 框架,短短时间内已斩获88K+ ⭐,成为 2024-2025 年最受关注的开源 AI 项目。本篇是这个系列的开篇——先全景鸟瞰整个项目,建立全局认知,后续篇章逐一深挖各模块。


一、DeepSeek Harness 是什么

DeepSeek Harness 是一个开源 Agent Harness(智能体框架),定位是让开发者能够以「搭积木」的方式组合出任意能力的 AI Agent。

核心 Slogan:

Everything is a Plugin.

这不仅仅是一句宣传语,而是体现在架构的每一个层面:

  • 模型适配器是插件
  • 工具注册表是插件
  • 会话日志是插件
  • Agent 循环本身也是插件
  • 甚至连沙箱、文件系统、LSP 都通过插件形式提供

这意味着:你可以在不修改任何一行 Harness 核心代码的情况下,替换掉整个模型层、替换整个工具集、替换整个执行环境。


二、快速上手

# 方式一:npm 一键体验(无需克隆仓库)npx @deepseek-ai/dsh web# 方式二:从源码运行gitclone https://github.com/deepseek-ai/deepseek-harness.gitcddeepseek-harnesspnpminstallpnpmrun buildpnpmdsh web

启动后访问http://127.0.0.1:3080即可看到 Web UI。

目前处于开发者预览版(developer preview)阶段,快速迭代中,生产使用需注意兼容性声明。


三、技术栈一览

层级技术选型
语言TypeScript(100%)
运行时Node.js
包管理pnpm
核心框架Cordis(可逆编程插件框架)
UIReact(Web App)
协议MCP(Model Context Protocol)、ACP(内部 Agent 通信)
沙箱E2B Cloud Sandbox + 本地进程隔离
许可MIT

四、核心架构:一切皆插件

4.1 为什么选择插件化?

传统 Agent 框架的问题:核心功能与实现紧耦合。换个模型要改代码,换个执行环境也要改代码。

DeepSeek Harness 的解法:把每一个能力都抽象成「插件」,通过配置组合

┌─────────────────────────────────────────────┐ │ Cordis 运行时(无特权核心) │ ├─────────────────────────────────────────────┤ │ Profile: web │ │ ├── Bundle: dsh-base(模型、工具、存储) │ │ ├── Bundle: dsh-web-app(React UI) │ │ └── User Patch: ~/.dsh/cordis.patch.yml │ └─────────────────────────────────────────────┘

Profile定义了要加载哪些BundleBundle是 Cordis 插件的打包格式。每一层都可以覆盖(Patch)下层配置,底层插件完全不知道上层的存在——这就是Layered Plugin Tree

4.2 Cordis 运行时

Cordis 是整个架构的基础设施层,由 cordiverse 提供,设计理念来自论文《A Programming Paradigm for Spatiotemporal Composability》。

Cordis 的三大核心特性:

  1. Plugin = Service:插件即服务,无特权核心
  2. 可逆注册:插件卸载时自动撤销所有注册(取消工具、关闭连接等)
  3. Typed Events:强类型事件系统,支持emit/parallel/serial/bail四种分发模式

这使得 DeepSeek Harness 可以实现真正的热拔插——测试时卸载插件不留任何副作用。


五、核心模块地图

DeepSeek Harness 的代码分布在约50 个 packages中:

Agent 核心

职责
core/agentAgent 接口定义、注册表
core/agent-loop默认 Agent 循环驱动
core/sessionSessionEvent 持久化日志
core/tools工具注册与执行管道
core/system-prompt提示词段落组装
core/scope作用域隔离机制

LLM 层

职责
llm/llm模型适配器抽象层
llm/llm-streaming流式输出处理

执行环境

职责
sandbox沙箱隔离(安全执行不受信代码)
shell本地 Shell 执行后端
subprocess子进程管理
terminal持久化 PTY 终端
fs文件系统抽象(可替换为远程 FS)
code-runtime代码执行引擎

协议与扩展

职责
mcpMCP(Model Context Protocol)协议支持
acpACP 内部 Agent 间通信协议
skill技能系统
subagent子代理抽象(同一接口,多种实现)

会话与存储

职责
session会话管理
session-query会话查询
compaction对话压缩(防止上下文爆炸)
storage持久化存储层
goal多目标管理
jobs后台任务调度

UI 与入口

职责
apps/cli命令行入口
apps/webWeb UI(React)

六、Agent 的工作流程

一个完整的 Agent 对话周期(Turn):

turn/start → claim next-step input → assemble system prompt + tool schemas → agent/pre-step ← 拦截点,可改写消息或拒绝 → agent/request ← 发出 LLM 请求 → llm/stream ← 流式接收响应 → assistant/chunk ← 实时 token 输出 → assistant/message ← 完整消息落盘 → tool/call ← 工具被调用 → tools/pre-execute ← 执行前拦截 → tools/execute ← 实际执行 → tools/post-execute ← 执行后处理 → tool/result ← 结果返回 step/end → 若还有待处理工具 → 进入下一步 → 若有新的输入消息 → claim 并进入下一步 → 否则 → agent/turn-stopping ← 关闭前的最后一个拦截点 turn/end

关键点:

  • turn/startturn/end是一次完整的用户输入处理流程
  • 每一步(step)包含一次 LLM 请求 + 零到多次工具调用
  • 所有状态变化都写入 Session Event 日志,可重建、可回放、可 fork
  • agent/pre-step/tools/pre-execute是级联事件(serial / bail),listener 必须调用next()继续传递

七、Seam 能力边界:换一处,全部跟着变

DeepSeek Harness 提出了一个精妙的Seam概念:

Service Definition(接口) ↓ Service Provider(实现,可插拔) ↓ Consumer(使用者,通常是工具)

最典型的例子是fs(文件系统):

  • 本地实现:直接读写磁盘
  • 远程实现:通过 API 操作远程服务器
  • 切换成本:只需换一个 Provider,整个 Agent 的文件系统能力立即迁移

更令人惊讶的是:Shell 和 LSP(语言服务器)也受益于这个设计——当你把shell指向云端 E2B 沙箱时,Bash 工具和代码补全一起迁移到云端,无需逐个修改配置。


八、与主流框架对比

维度DeepSeek HarnessLangChainAutoGPT
架构哲学一切皆可插拔Chain 可组合单体 Agent
插件卸载✅ 可逆回滚❌ 手动清理❌ 无
事件系统✅ Typed(emit/parallel/serial/bail)⚠️ Callback❌ 无
配置驱动✅ YAML Patch⚠️ 代码配置❌ 无
沙箱支持✅ 内置 E2B⚠️ 第三方❌ 无
协议支持MCP + ACPMCP(部分)❌ 无
stars88K+100K+140K+

九、下篇预告

下一篇(二)我们将深入Cordis 运行时的核心设计:可逆 Plugin/Service 机制、inject 依赖声明、Typed Event 的四种分发模式,以及它如何支撑起整个 Harness 的插件生态。


附录

  • GitHub:https://github.com/deepseek-ai/deepseek-harness
  • Cordis 论文:https://github.com/cordiverse/paper
  • 官方文档:https://github.com/deepseek-ai/deepseek-harness/blob/main/docs/architecture.md
  • Discord 社区:https://discord.gg/Ycq5dCaS4
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/16 23:03:28

华为OD机试真题 新系统 2026-08-09 Java、Go、C【查找最佳充电策略】

目录 题目 思路 Code 题目 题目内容: 给定一个电费组 priceArray,表示未来 priceRecords 小时内每小时的电价,单位为分/kWh。 找出充电成本最低的连续 hours 个小时的时间段开始时刻点。 若存在多种成本最低方案,优先返回成本最低方案中最早的时间点。 输入描述:…

作者头像 李华
网站建设 2026/8/16 23:03:14

江科大STM32入门:FLASH闪存详解——从结构原理到读写保护

STM32学习笔记 适用平台:本文基于 STM32F103C8T6(中容量产品,64KB Flash)讲解,使用标准库开发。 前言:为什么非要学FLASH? 学到这里,很多小伙伴可能有个疑问:我程序不是…

作者头像 李华
网站建设 2026/8/16 22:59:49

Edge浏览器全面罢工?从网络栈到WebView2的深度修复指南

1. 问题概述:当Edge浏览器“全面罢工”时如果你也遇到了Edge浏览器突然“全面罢工”的情况——不仅打不开任何网页,连浏览器自身的设置页面(edge://settings/)都无法加载,那感觉确实非常棘手。这通常意味着浏览器核心的…

作者头像 李华
网站建设 2026/8/16 22:58:16

从文档解析到RAG系统:让ChatGPT掌握私有知识的完整指南

1. 项目概述:为什么需要将文档喂给ChatGPT?最近身边不少朋友和同事都在问我一个挺实际的问题:“我手里有一堆PDF报告、Word文档,甚至是一大堆会议纪要,怎么才能让ChatGPT帮我分析、总结或者回答里面的问题?…

作者头像 李华