看完 DSH 文档后,我总结了这 7 个关键点

从 "Agent = Model + Harness" 到 "Everything is a Plugin",DeepSeek Harness 到底在做什么?

前言

最近 DeepSeek 开源了 DeepSeek Harness(简称 DSH),一个基于 Cordis 插件框架的 Agent 运行时。花了一整天时间翻完官方文档和社区资料后,我发现它不只是又一个 "AI 编程助手"------它的设计哲学和架构选择,可能会影响下一代 Agent 框架的演进方向。

这篇文章是我看完文档后的个人总结,帮你快速抓住 DSH 的核心设计。


一、DSH 不是 IDE 插件,而是 Agent 的 "操作系统"

首先要纠正一个常见误解:DSH 不是像 Copilot 或 Claude Code 那样的 IDE 扩展,它是一个独立的 Agent 运行时进程。

官方给了一个很简洁的公式:

Agent = Model + Harness

模型(如 DeepSeek-V4)是 Agent 的"灵魂",负责思考和决策;而 Harness 是 Agent 的"身体",赋予它理解环境、使用工具、持续工作的能力。DSH 就是这个 Harness。

它和 IDE 助手的本质区别在于:IDE 助手围着当前编辑器窗口转,而 DSH 有自己的配置、会话、插件体系和权限边界,是一个完整独立的进程。


二、"一切皆插件" 不是口号,是架构底线

DSH 最核心的设计选择是 "Everything is a Plugin" 。这句话在官方文档里反复出现,而且不是营销话术------它是真的把 所有 能力都插件化了:

  • 模型适配器(LLM 后端)
  • 工具(文件编辑、Shell、搜索)
  • Skills(可复用的任务方法)
  • 会话管理(对话与状态)
  • 沙箱(隔离执行环境)
  • 存储/文件系统
  • Agent 循环与调度(控制流本身)
  • UI(甚至界面也是插件)

底层基于 Cordis 元框架(由 Koishi 作者 Shigma 开发),Cordis 只负责三件事:插件加载/卸载、依赖管理、事件总线。Agent 的所有具体能力完全存在于插件之中。

这意味着:你可以在不修改 DSH 源码的情况下,替换任意一个组件。想换模型?装个新插件。想换沙箱?装个新插件。甚至想换掉 Agent 循环本身?也可以。


三、三层组装机制:Profile + Bundle + Patch

DSH 启动时不是"加载一个配置文件"那么简单,它按顺序叠加多层配置,最终在内存里拼出一棵完整的插件树:

css 复制代码
空条目列表
  → Profile 列出的每个 Bundle(按序)
  → Profile 的 cordis.patch.yml
  → Home 级的 cordis.patch.yml
  → 任意 --patch overlay

三个核心概念:

概念 作用
Profile 本地保存的"装配档",列出要加载哪些组合包
Bundle 组合包,把一组插件和配置打包分发
Patch 补丁,按名字定位并替换某个插件的配置

dsh-base 是每个 Profile 的必装第一层,提供模型适配器、工具、持久化、安全策略等基础能力。后续的组合包和用户补丁按名字覆盖它。

调试配置时有个实用命令:

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

可以导出当前实际启动的完整插件装配表,排查"加了配置没生效"的问题。


四、四种内置模式,本质上是四套插件组合

DSH 提供了四种开箱即用的 Preset,针对不同的任务类型优化了工具集和上下文配置:

模式 适用场景 核心特点
Standard 日常编码、代码重构 最全面:文件编辑、Shell、搜索、Skills、子 Agent、工作流
PTC(Code Mode) 批量文件改写、高吞吐操作 模型生成一段 TypeScript 程序编排多步工具调用,无多轮 Round-trip
Minimal 基准测试、极简 Bug 修复 仅保留 bash + str_replace_editor,排除冗余干扰
Forge(Creator) 自定义 Preset、插件调试 可检查/组合运行时插件,最接近"自我演进"实验

关键洞察 :这四种模式不是"四种不同的程序",而是同一套插件树的不同组合方式。Standard 模式加载了全套工具插件,Minimal 模式只加载两个,PTC 模式额外加载了 Code Mode SDK 插件。

这意味着你可以基于这些模板,创建自己的 Preset,组合出适合你团队的 Agent 行为。


五、PTC 模式:让 AI 写代码来调用 AI

PTC(Programmable Tool Composition)模式是 DSH 最具特色的设计之一。

传统模式下,模型每步决策都要经历 "思考 → 调用工具 → 等待结果 → 再思考" 的 Round-trip,Token 消耗高、延迟大。

PTC 模式的做法是:让模型一次性生成一段 TypeScript 程序,这段程序内部编排多步工具调用,然后在一个沙箱里执行

typescript 复制代码
// 模型生成的 PTC 程序示意
const files = await tools.list_files({ path: "./src" });
for (const file of files) {
  const content = await tools.read_file({ path: file });
  if (content.includes("TODO")) {
    await tools.edit_file({ 
      path: file, 
      old_string: "TODO", 
      new_string: "DONE" 
    });
  }
}

优势很明显:

  • Token 消耗大幅降低(无多轮往返)
  • 复杂逻辑可以写循环、条件判断
  • 执行原子性更好(一段程序要么全成功,要么回滚)

实测中,批量文件改写场景下 PTC 模式的性能提升可达 40% 以上。


六、Trajectory:让 Agent 的"黑盒"变透明

DSH 有一个我非常欣赏的设计:每一次运行都有迹可循(Trajectory)

模型看到的一切------系统提示词、思维链、工具调用、子 Agent 调度、上下文注入------全部写入仅追加的会话日志。你可以在 Trajectory 视图中:

  • 按来源查看每一步的详细信息
  • 恢复到某个历史状态
  • 分叉出一个新会话继续探索
  • 检索回放完整执行过程

这对调试 Agent 行为极其有价值。当 Agent 做了你意想不到的操作时,你不需要猜它"当时在想什么",直接看 Trajectory 就能还原完整决策链。


七、插件开发:从使用者到贡献者的门槛很低

DSH 的插件开发非常简洁。一个最小插件只需要:

typescript 复制代码
// src/index.ts
import type { Context } from '@deepseek-ai/cordis'
import { defineTool } from '@deepseek-ai/dsh-tools'

export const name = 'hello-dsh'
export const inject = ['tools']  // 声明依赖

export function apply(ctx: Context) {
  ctx.tools.register(defineTool({
    name: 'greet',
    description: '向用户打招呼',
    parameters: {
      name: { type: 'string', required: true }
    },
    async execute(args) {
      return { message: `Hello, ${args.name}!` }
    }
  }))
}

几个关键约定:

  • export const nameexport function apply 作为入口,不要用 export default
  • inject 声明依赖的服务,框架会自动处理加载顺序
  • 所有注册都用 ctx.effect() 包装,保证插件卸载时自动清理
  • 插件可以小到一个文件,也可以复杂到包含 Host 端 + Client 端 + RPC 通信

安装也简单:

bash 复制代码
dsh plugin --profile web add ./my-plugin

社区已经涌现出数百个插件,从文档转换、PDF 解析、Office 文档生成到皮肤主题、桌宠,生态正在快速生长。


我的个人看法

看完文档后,DSH 给我最大的冲击不是某个具体功能,而是它的架构彻底性

市面上大多数 Agent 框架(包括 Claude Code、Codex)都有一个"核心内核 + 外围扩展"的结构------你可以扩展工具、扩展技能,但核心循环和模型调用逻辑是封死的。DSH 则把最后一层特权也拆掉了:Agent 循环本身也是插件,UI 也是插件,甚至遥测也是插件。

这种设计在当下看起来有点"过度工程"------毕竟 DSH 还处于 Developer Preview,接口随时可能变。但长远来看,它回答了一个关键问题:当 AI Agent 成为基础设施时,它的运行时应该长什么样?

DSH 的答案是:它应该像操作系统一样,内核只负责调度,所有能力都是可插拔的模块。

如果你现在就想上手,最简单的路径是:

bash 复制代码
# 1. 安装 Node.js
# 2. 一行命令启动 Web UI
npx @deepseek-ai/dsh web

# 3. 装个插件试试
dsh plugin --profile web add "github:dsh-external/dsh-session-search#main"

然后打开 http://127.0.0.1:3080,选一个 Preset,开始你的第一次 Agent 会话。


以上就是我看完 DSH 文档后的完整总结。如果你也在用 DSH,欢迎在评论区交流使用体验和踩坑记录 👇

相关推荐
元界metalite1 小时前
Spring-MVC微服务接口怎么分层-网关Controller与Service边界
后端
qq_452396231 小时前
第八篇:《Monorepo 实战:Turborepo 与 pnpm workspace 驱动的大型项目协作》
前端
数据狐(Datafox)1 小时前
1688.item_search工程实战:1688商品列表API分页采集与B2B货源数据分析落地
java·前端·数据分析
省长1 小时前
不想写代码,但想要集成一个登录页面?Sa-Token-Quick-Login 帮你实现!
java·后端·开源
铁皮饭盒1 小时前
浏览器AI肯定离不开onnxruntime, 微软开源
前端·javascript·后端
得物技术1 小时前
企业级 MultiAgent 的记忆系统:短期上下文与四层记忆架构实现|得物技术
java·人工智能·后端
vivo互联网技术1 小时前
vivo 广告小游戏:从"写代码"到"说需求"
前端·人工智能·游戏开发
李可以量化1 小时前
Redis Client 从了解到精通(二)上:redis-py 高级用法与核心命令实战
前端·数据库·redis·python·缓存·ptrade