技术蓝皮书 · Technical Blue Paper

DeepSeek Harness

一切皆插件的开源智能体运行时

给大模型装上「手」和「脚」,让它从「会聊天」变成「真办事」。

🏗️ 一切皆插件 🧩 时空可组合 · Cordis 🖥️ MIT 开源 ⚡ 省 Token
版本 v0.1.0-rc.5 · 2026 年 8 月 · 开发者预览

一分钟读懂

先建立三个直觉,后面每一节都在为这三句话补细节。

🦾

它是什么

裸的大模型只会「你说一句、我答一句」;Harness 是给它装上手和脚的通用底座——能读文件、跑命令、上网、委派子任务,把一件事真的做完

🧱

它怎么拼

整个 Harness 像一套乐高。不止能力是积木,连「指挥模型干活的循环」本身也是一块可拆换的积木,没有一块是焊死的。

📼

它怎么靠谱

模型看到的每一句话都被写进黑匣子日志,可回放、可审计、省 Token,还能随时「分叉 / 恢复」会话。

从「会聊天」到「会办事」

大模型很会说话,但要修 bug、跑测试、写调研,光会说不够,还得能动手

🤖 裸大模型

只会「聊天」

你问一句,它答一句,不动手

装上「手脚」+ 循环

🦾 智能体

会「办事」

读文件 · 跑命令 · 上网 · 委派子任务

😫 自建智能体的五座大山

  • 循环逻辑琐碎——请求构造、工具调度、重试,都要自己写
  • 能力难插拔——换一个文件系统就得逐处改造
  • 上下文膨胀——历史越长,Token 越贵越慢
  • 可观测性差——它为什么这么决定,事后难复盘
  • 生态碎片化——换个框架就得重写一遍

💡 Harness 的一招鲜

统一的 插件协议 + 事件系统 + 会话日志

把五座大山一次性推平:能力可插拔、循环可替换、每步可回放、上下文省着用。

设计理念:一切皆插件

一条主线 + 四条纪律。

主线

一切皆插件

模型适配器、工具注册表、会话日志、沙箱、审批,连智能体循环本身都是可替换插件。没有焊死的核心。

注册即副作用——装上的东西,卸载时自动还原。

依赖声明式——插件先说「我要什么」,等齐了才启动。

模型可见即已记录——模型看到了什么,日志里就一定有什么。

面向扩展点编程——新行为挂到文档化的扩展点上。

架构:五层,自底向上

底层是内置的 Cordis 框架;每层之间用「服务 + 事件」解耦。

flowchart TB
  subgraph L1["🔌 接入层"]
    direction LR
    A1["Web UI"] --- A2["CLI · dsh"] --- A3["Python SDK"] --- A4["ACP / JSON-RPC"]
  end
  subgraph L2["🧩 应用组装层"]
    B1["Profile / 组合包 Bundle / patch 补丁"]
  end
  subgraph L3["🧰 能力 seam 层"]
    C1["fs · shell · subprocess · terminal · lsp · web · skill · subagent · workflow · sandbox …"]
  end
  subgraph L4["🦴 核心主干层"]
    D1["session · system-prompt · tools · agent · agent-loop · scope · llm"]
  end
  subgraph L5["⚙️ 框架层"]
    E1["Cordis —— Context / inject / Events / Effects"]
  end
  L1 --> L2 --> L3 --> L4 --> L5
        

插件树 = 一摞「透明胶片」

越靠上越有话语权,后叠的可以覆盖先叠的。悬停每一层看看它是什么。

--patch 命令行覆盖层最上面,最后说话
home 级 cordis.patch.yml机器全局的你的自定义
Profile 的 cordis.patch.yml这个配置集的自定义
dsh-web-app / dsh-headless应用层组合包
dsh-base最底层:模型 / 工具 / 存储 / 沙箱 / 审批

能力 seam:插座 · 插头 · 电器

一项能力怎么设计成「能换」?就像标准插座:换厂家的插头,电器照常用。

flowchart TB
  P["🔌 Service Provider
具体实现 · 本地 / 沙箱"] -->|"实现"| D["🔳 Service Definition
接口契约(「能执行命令」)"] C["🔋 Consumer
使用方 · bash 工具"] -->|"只依赖接口"| D
关键价值:换一个 Provider,整个产品就跟着变。把文件系统指向远程沙箱,Bash、PTY、LSP 一起搬过去——不用为每种能力单独写远程版

事件:四种「喊法」

出了事就喊一嗓子,谁关心谁听。点击切换四种分发模式:

会话日志:一台黑匣子

模型做的每一步都记成事件,只增不改。一份日志,四处受用:

flowchart TB
  LOG["📼 会话日志(黑匣子 · 只增不改)"]
  LOG --> R1["回放 · 逐字重演"]
  LOG --> R2["生成上下文 · 按需重算"]
  LOG --> R3["分叉 / 恢复 · fork / resume"]
  LOG --> R4["排查 · 审计 · 遥测"]
        
📉

压缩 compaction——对话太长时,把历史「挤水分」成摘要,而不是原样全发。

📦

溢出 spill——不常用的工具结果「挪到仓库」存起来,需要时再取。

智能体循环:思考—动手—看结果

步骤 = 想一次 + 动手一次;轮次 = 从接下活到干完。

用户下达任务
领取输入
组装提示词
模型思考
调用工具
看结果
干完了
还有活 → 回到 ③
sequenceDiagram
  autonumber
  participant U as 👤 用户
  participant D as 🎛️ 驱动器
  participant M as 🧠 模型
  participant T as 🛠️ 工具
  participant L as 📼 日志
  U->>D: 下达任务
  D->>L: turn/start(开一轮)
  D->>M: 组装提示词 + 请求
  M->>D: 回复(可能要求调工具)
  D->>T: 调用工具(pre → 并发 execute → post)
  T->>D: 工具结果
  D->>L: step/end(一步结束)
  Note over D: 还有活 → 回到模型;干完 → turn/end
        

能力工具生态

模型适配器像发动机,可以换;工具像工具箱,按需带上。

📁

文件系统

read write edit glob grep read_image

⌨️

Shell / 终端

bash pwsh terminal_*

🧪

代码运行 / LSP

run_code lsp

🌐

联网

web_search web_fetch

🗂️

会话检索

session_search session_event_* session_trace

📝

规划

todo_write exit_plan_mode create_goal get_goal update_goal

定时 / 后台

schedule_* job_list job_output job_kill

👥

子智能体

subagent list_agents send_message interrupt_agent

🚀

编排

workflow ralph

🧬

自我改装

cordis_define cordis_inspect_* cordis_run cordis_stop

多智能体:包工头派活

主智能体把子任务派给若干子智能体,每个只带自己的工具箱。

flowchart TB
  M["🧑‍✈️ 主智能体(包工头 / 总指挥)"]
  M -->|派活| S1["子智能体 A
工具箱 ①"] M -->|派活| S2["子智能体 B
工具箱 ②"] M -->|派活| S3["子智能体 C
工具箱 ③"]
🏗️

workflow

流水线总包:拆任务给一大批子智能体,分阶段并发干,最后收口汇总。

🔄

Ralph

换个新脑子重看:每轮开一个不带记忆的新智能体,避免旧思路越陷越深。

🎯

goal

长期目标 + 进度条:贴在会话上的持久目标,带「进行中/暂停/卡住/完成」状态。

安全:沙箱「安全屋」

智能体要干的危险动作,都被关进屋里,只能在划定的工作区内动手。

flowchart TB
  subgraph ROOM["🏠 沙箱「安全屋」"]
    direction LR
    B1["bash"] --- B2["文件读写"] --- B3["PTY"] --- B4["LSP"]
  end
  AGENT["🦾 智能体"] -->|"只能在屋内动手"| ROOM
        
🛡️

沙箱:bwrap / Landlock / Seatbelt / Windows ACL(与宿主共享内核,非容器)。

审批:操作需审批时,UI 先问你;ask_user_question 可反问你。

🔐

凭据:环境变量优先;API key 只写,只存脱敏描述符。

🚦

守卫:防重复调用、工具超时强制执行器,防循环空转。

对比分析

维度DeepSeek Harness通用自研循环Claude Cowork*
核心定位通用智能体运行时项目内胶水代码桌面智能体工作台
架构范式一切皆插件(Cordis)定制化单体工具 / 技能 + 托管代理
扩展方式挂载插件 / patch改源码生态插件 / MCP
循环可替换循环本身是插件通常写死产品内置
自我改装运行时 cordis_*未公开同等能力
多智能体subagent / workflow / ralph / goal视实现而定托管代理
开源是(MIT)

* 竞品信息据公开报道,仅供参考。

接入:同一台引擎,不同的遥控器

🖥️

Web UI

npx @deepseek-ai/dsh web
默认 127.0.0.1:3080

💻

CLI

dsh web · dsh --profile headless "task" · dsh plugin

🐍

Python SDK

deepseek-harness-sdk + runtime-bin,经 JSON-RPC 通信

🔌

ACP

Agent Client Protocol 服务器,面向自动化

🧩

插件开发

npm 包统一 @deepseek-ai/dsh-*,约 50 分组 / 200+ 包

📚

应用场景

代码重构 · CI 诊断 · 报告撰写 · 大规模审计

参考资料

免责声明:本蓝皮书对源码与文档的描述以仓库版本 0.1.0-rc.5 为准;开发者预览阶段演进极快,具体接口与默认值请以官方最新文档为准。对同类产品的对比基于公开报道,仅供参考。