DSH 是什么?
一句话版:DSH(DeepSeek Harness)是一个基于 Cordis 构建的开源 coding agent(编程智能体)——它不仅是一个"给智能体干活的环境",更是一整套以一切皆插件、运行可重建为核心思想的智能体操作系统。
1. 先搞清楚:DSH 有三层含义
很多人把 DSH 说成"一个工具",其实它是三层东西叠在一起:
| 层 | 是什么 | 类比 |
|---|---|---|
| SDK(底座) | DeepSeek Harness SDK:一套用 Cordis 写成的框架,模型、工具、策略、存储、界面全是可组合插件 | 操作系统的内核 |
| dsh(工具) | 基于 SDK 的命令行工具:dsh web 开 Web UI、dsh --profile headless "任务" 跑任务 | 装好系统的电脑 |
| 生态(内容) | skills(技能)、插件、profile 组合包、社区 | 电脑里的应用商店 |
我们平时说"DSH",通常指第二层——那个跑在你自己电脑上的智能体工具。但你正在用的这个网站(dshfind)所在的 Harness 环境,就是运行在 DSH 之上的。
三层都建立在 Cordis(时空可组合性范式)之上
2. 它解决什么问题?(两句话)
智能体要干活,需要"环境";环境要能长期演化,需要"纪律"。
- 普通 AI 应用 = 一次调用模型,返回答案,完事。
- 智能体 = 反复调用模型 + 动手操作(读写文件、执行命令、调用 API)+ 长期运行。
- DSH = 在"长期运行"这个前提下,把工具、权限、记忆、会话、插件管理全部有序地管起来。
就像操作系统让多个程序共享一台电脑而不打架,DSH 让多个插件共享一个智能体运行时而不互相破坏。
3. 核心思想一:一切皆插件
这是 DSH 的第一性原理。它写在架构文档的第一行:
一切皆插件,循环也不例外。
"循环"指的是 agent loop(智能体循环)——也就是"感知 → 思考 → 行动"那个主循环。传统框架把主循环写死,你要扩展只能改源码(fork)。DSH 连主循环本身都是一个插件:
| 在传统框架里 | 在 DSH 里 |
|---|---|
| 想换模型 → 改框架源码 | 注册一个 LLM 适配器 插件 |
| 想加工具 → 改框架源码 | 在 ctx.tools 上注册一个工具插件 |
| 想改执行方式 → 改框架源码 | 换一个 bash / PTY 后端 插件 |
| 想改存储 → 换数据库 | 换一个会话持久化插件 |
| 想改界面 → 重写前端 | 换一个 UI 插件 |
"插件"在这里不是小功能,而是整个系统的积木:模型、工具、策略、存储、上下文管理、界面,全部平等地作为插件组合在一起。部署方不需要 fork agent loop,就能扩展或替换任何行为。
🎁 打个比方:普通框架是"一整栋楼,改户型要拆承重墙";DSH 是"乐高积木,任何一块都能单独换"。这正得益于它建立在 Cordis(时空可组合性范式)之上——就是我们要精读的那篇论文的实现。
4. 核心思想二:运行可重建(事件日志即真相)
智能体跑一天,会做几百次操作。怎么保证"一切都有据可查、随时能重来"?DSH 的答案是事件溯源:
凡是模型能看到的东西,都会记录在权威会话日志里;持久化、恢复、fork、回放、遥测、界面,全部从同一份事件流派生。
也就是说:
- 智能体的每一步(模型请求、工具调用、结果返回)都追加进一份会话日志(append-only)
- "模型可见 ⟺ 已记录"——模型看到的东西和日志记录的东西完全一致
- 你想恢复一个会话?从日志重建。想 fork 一份接着干?从日志复制。想回放?读日志。想统计?算日志
好处:没有"状态藏在你不知道的地方"这种事。系统出了任何问题,日志就是完整的真相,可以从任意检查点重建。
🎁 打比方:这不是"记日记",而是"全程录像 + 每一帧都可回到过去"。普通应用崩溃了只能重来,DSH 崩溃了可以从日志精确重建现场。
5. 核心思想三:能力即"接缝"(seam)
架构文档里有一个关键词:seam(接缝)。
一个"可替换能力"由三种角色组成:
Service Definition(能力定义:这个能力长什么样)
↕
Service Provider(提供者:谁来干活)
↕
Consumer(消费者:谁在用)
只要这三种角色是分离的,这个能力就是一个"接缝"——任何一端都可以单独替换,不影响其他两端。
DSH 里几乎一切都是接缝:
| 接缝 | 换插座的例子 |
|---|---|
| LLM | 换模型提供方(DeepSeek、其他)→ 注册新适配器 |
| 文件系统 | 换存储后端 → 实现 ctx.fs 提供方 |
| 进程执行 | 换命令执行方式 → 换 bash 后端 |
| 沙箱策略 | 换安全策略 → 监听 fs/* 策略事件 |
| 搜索/抓取 | 换搜索源 → 注册 web 提供方 |
为什么这很重要? 因为智能体的技术栈演进极快(模型月月换、工具天天新)。如果每个能力都是接缝,那么换一样东西只需要动一个插座,而不是重写整个系统。
6. 核心思想四:自指修改(智能体可以改自己)
DSH 有一个相当"科幻"但真实存在的功能:自指 Cordis 工具(需显式启用)。
启用后,智能体可以:
- 检查自身的实时运行时(现在装了哪些插件、注册了哪些服务)
- 在运行中挂载或卸载插件(给自己装上新工具,或者拆掉旧的)
这就是"自演化智能体"的雏形:运行中的系统修改自己。而这件事之所以安全(而不是自毁),正是因为底层有 Cordis 的"时空可组合性"保证——装上能拆下,拆下不留痕。
⚠️ 这条线索把第一章和第二章串起来了:想要"智能体自演化",就必须先解决"动态组合"。
7. 内置能力一览(真实清单)
DSH 开箱即用的能力(来自官方文档),你可以把它当"一个智能体该有的全部家当":
| 类别 | 具体能力 |
|---|---|
| 文件 | 读取、编辑、搜索 |
| 执行 | shell 命令、持久化终端(PTY) |
| 技能 | 可复用的 skill(技能) |
| 任务管理 | 目标(goals)、计划(plans)、待办(todos)、后台任务 |
| 协作 | subagent(子智能体)、workflow(工作流) |
| 安全 | 沙箱、审批 |
| 配置 | 设置、凭据(credentials,绝不内联进配置) |
| 会话 | 可持久化、可恢复、可 fork、可查询的会话 |
| 感知 | LSP(代码语义)、Web 访问 |
| 上下文 | 上下文压缩(context compaction) |
| 观测 | 遥测 |
8. 怎么用 DSH?(四种姿势)
| 姿势 | 命令/方式 | 场景 |
|---|---|---|
| Web UI | dsh web | 图形界面,含 Plan Mode(计划模式) |
| 命令行 | dsh --profile headless "总结这个工作区" | 跑一次任务,输出答案后退出 |
| 配置组合 | dsh --profile tui | 用 profile(插件组合包)定制启动 |
| 编程接入 | Python SDK / ACP / JSON-RPC | 把 DSH 嵌进你自己的程序 |
9. 关键点回顾
这一节信息量不小,记住这五句话就够了:
- DSH = SDK + 工具 + 生态,本质是"智能体的操作系统"
- 一切皆插件——模型、工具、策略、存储、UI 甚至主循环都是插件,扩展不用 fork
- 运行可重建——一切模型可见的内容都记入权威事件日志,可恢复、可回放、可 fork
- 能力即接缝——任何能力都能单独替换,换模型、换执行器都像换插座
- 自指修改——智能体可以检查并修改自己的运行时,而这依赖 Cordis 的"装上能拆下"保证
🚀 下一节我们聊"智能体框架的基本思想"——先搞清楚智能体自己是怎么思考、怎么动手的,再回头看 DSH 为什么这么设计。
自测题 · DSH 是什么
完成作答后点击「提交答案」,可以查看对错与解析。
