博客

DeepSeek Harness 是什么:一条命令跑起来的开源 Agent 框架

快速回答

DeepSeek Harness(简称 dsh)是 DeepSeek AI 开源的「Agent Harness」——一套把聊天模型变成能真正干活、会改代码、能跑命令的智能体的运行时框架,MIT 许可证,当前为开发者预览版。

一句话公式先记住:

text
Agent = 模型 + Harness

模型是大脑,Harness 是其余的一切:工具、文件系统、shell、子代理协作、上下文存取,以及「什么时候停下来」。DeepSeek Harness 是模型无关的——它默认配 DeepSeek V4 系列,但通过一个环境变量就能换到任何 OpenAI 兼容端点。

五个要点先记住它:

  • 一切皆插件:文件系统、shell、模型适配器、Web UI、子代理,连 agent loop 本身都是插件,不存在需要打补丁的特权内核
  • 会话日志即唯一事实来源:模型看到的一切都来自可回放的日志,fork / 恢复 / 上下文压缩全是日志的免费派生品。
  • Agent 能改装自己:运行中的 agent 可以现场定义新插件注入真实运行时,新工具立刻对模型可见。
  • 开源 1 个多小时破 2 万星,首日冲到 2.8 万–3.1 万星,是近期涨星最快的开源项目之一。
  • 明确标 Developer Preview:接口会变、迭代极快,做生产依赖要追版本。

DeepSeek Harness 到底是什么

官方把它定位为 agent harness(智能体框架)。先厘清一个概念:它不是又一个聊天机器人应用,也不是一个模型。

  • 不是模型:它默认对接 DeepSeek V4 系列,但模型可替换。你把它接到 Claude、GPT、Gemini 上都行。
  • 不是聊天应用:它更像「agent 运行时的前端」。你给一个目标,agent 在工具里循环直到完成,Web UI 只是观察和干预的入口。
  • 是框架:一套用来「组装一个 agent」的积木。要哪个能力、不要哪个能力、用什么模型、用哪个沙箱,都由配置决定。

和传统 Agent 框架的本质区别:没有特权内核

绝大多数 agent 框架长这样:一个带主循环(agent loop)的核心,外面挂工具、记忆、沙箱插件。内核是神圣不可侵犯的,扩展只能通过官方预留的钩子。

DeepSeek Harness 把这条规则反过来

产品的每一部分都是插件,包括模型适配器、工具注册表、会话日志,甚至 agent loop 本身。不存在需要打补丁的特权内核。

底层是 vendor 进来的 Cordis 插件框架(设计依据是论文《A Programming Paradigm for Spatiotemporal Composability》)。在这个框架里:

  • 插件 = 可逆副作用:注册任何东西都是副作用,插件卸载时自动撤销,reload / HMR 时按声明顺序干净重来,没有「装上了就卸不掉」的遗留状态。
  • 依赖用声明,不用编排:插件用 inject 声明自己需要的服务(ctx.toolsctx.llmctx.sessions…),框架按依赖自动决定加载顺序。你永远不 import 具体实现,只按 key 找服务——所以任何服务都可以从配置整体替换
  • 拦截就是监听器:事件有 emit(观察)、waterfall(环绕中间件)、parallel(并行)、serial(串行)四种分发模式。要加审批、要拦截某个工具调用,挂一个 waterfall 监听器就行,不需要改循环本身。

一句话:扩展 dsh 的方式,是把插件挂到别的插件旁边。没有后门,没有特权。

为什么它 1 小时破 2 万星

热度不是营销堆出来的。拆完源码你会发现,爆火靠的是三个反直觉的架构决策,每个都值得单独拿出来讲。

决策一:模型可见即已记录(省 Token 传言的真相)

dsh 最狠的设计是一条运行时不变式

抵达模型请求的一切,都必须能从日志重建。

会话日志(SessionEvent log)是唯一事实来源。模型看到的每条消息、每个工具调用与结果、每次注入的上下文,都是追加式日志里的事件;模型历史从日志投影出来,UI 与模型历史永远同源。

这个决策的威力是连锁的:

功能 实现方式 传统框架
fork 会话 从某条边界事件派生,天然一致 要单独复制状态
恢复会话 重放日志,无需「记忆序列化」 要持久化内存状态
上下文压缩 在日志上做一次显式替换事件 容易造成历史不一致
回放 / UI 直接读原始日志 要另存一份副本

大多数框架把「会话日志」当调试功能;dsh 把它当唯一的真理来源。配套还有 spill 存储:超大工具输出落盘,模型只拿定位符,上下文不再被巨量文本撑爆——这就是「省 Token」传言的真正来源。

决策二:Agent 能改装自己

dsh 提供一组自引用工具cordis_define / cordis_run / cordis_stop / cordis_undefine

含义很直接:运行中的 agent 可以现场定义一个新的 Cordis 插件,注入到真实运行时——而新插件注册的工具,立刻对模型可见。

这不是玩具。这套工具背后是 vm 沙箱和定义注册表,一个运行中的包甚至可以注册额外的模型可见工具,直到被 stop / undefine 或进程重启。它默认不进任何发行树(刻意 opt-in,因为「动态包代码会到达真实运行时」),但机制本身是闭环的:

text
用框架 → 在框架里定义框架 → 改自己的工具集 → 继续用

这类元编程闭环,市面上几乎没有第二个框架敢把完整版做成工具暴露给模型。

决策三:沙箱是一张矩阵,不是单个沙箱

dsh 的进程沙箱是一个可替换的 seam(ctx.sandbox),后端按平台自动选:

平台 沙箱后端
Linux bwrap / Landlock(自带 native 的 landlock-run
macOS Seatbelt
Windows ACL 受限令牌(每个会话/工作区一对私有临时目录 + SID)
云端 E2B 远程 Linux 沙箱

强制级别如实上报 full / partial(旧 Landlock ABI、Windows ACL 边界算 partial),要求绝对保证的消费方必须拒绝 partial——不假装安全。而且由于文件系统与进程执行共享同一套 provider 抽象,把 fs / subprocess 指向 E2B,Bash、PTY、LSP 就整体搬进远程沙箱,不需要为每个能力写平台专用 fork。

上手:一条命令跑起来

前置条件只需要一个:Node.js。安装与启动是同一件事:

bash
npx @deepseek-ai/dsh web

首次运行会拉取包,然后启动本地 Web 控制台,浏览器打开 http://127.0.0.1:3080 就是控制台。

想让 agent 真正跑起来,把模型后端指到你想用的端点。dsh 通过环境变量读取配置,核心两个:

bash
export DEEPSEEK_API_KEY="sk-teamo-你的Key"
export DEEPSEEK_BASE_URL="https://api.teamorouter.cn/v1"

把这两行写进 ~/.zshrc~/.bashrc(或启动命令前临时 export),dsh 就会把模型请求发到 TeamoRouter 的 OpenAI 兼容端点——不锁死 DeepSeek 官方 API,国内直连也更稳,还能用一个 key 在 DeepSeek、Claude、GPT、Gemini 之间切换。完整步骤见《DeepSeek Harness 安装教程》和《DeepSeek Harness 接入 TeamoRouter》。

启动后,在 Web UI 里给 agent 一个这样的任务就能看到它干活:

text
查看当前目录,找到 README,用一句话总结它的第一段,写到 /tmp/summary.txt

dsh 会依次调用 bash、文件读写工具,最后汇报结果。这就是「Harness 把模型变成工人」的最直观体验。

泼冷水

这是很多文章不会写的部分,但你要做技术评估就必须知道:

  1. 明确标注 Developer Preview。官方声明「未来将有破坏兼容性的变更」。现在抄它做生产依赖,要做好追版本的心理准备。
  2. 接口会变。版本 0.1.0-rc.5,连 rc 都还没到正式版,依赖具体 API 细节有风险。
  3. 底层 Cordis 是 vendor 引入的,不是 dsh 自研。对 Cordis 的信任要并入你的技术评估。
  4. 54 个 npm 包同步发版的代价是机械 churn——每次 release 有 222 个文件同步改版本号。跟进 main 分支常领先发布版几个小版本。
  5. 「对标 / 取代 Claude Code」是媒体叙事。一个 rc.5 的预览版谈「取代」为时过早,但它证明的架构方向是真实的。

常见疑问

Q:DeepSeek Harness 是模型吗? 不是。它是 agent 框架(harness),默认对接 DeepSeek V4 系列,但通过 DEEPSEEK_BASE_URL 可以指向任何 OpenAI 兼容端点。模型可替换是它「一切皆插件」的直接结果。

Q:dsh 会取代 Claude Code / Codex 吗? 短期不会。Claude Code 的推理深度和工具可靠性仍是标杆;dsh 赢在成本(DeepSeek V4 定价约 $0.14 / $0.28 每百万 token,是旗舰模型的零头)和可定制性(能裁剪能力面、能换 provider)。两者定位不同,更多人会按任务混用。横向对比见《DeepSeek Harness vs Claude Code / Codex / OpenCode》。

Q:现在能用它干活吗? 能。个人开发、学习 agent 架构、便宜跑 agent 已经完全可用。不建议在生产里依赖某个具体 API 细节——版本迭代太快。

Q:接官方 API 好还是接 TeamoRouter 好? 看你的位置。接官方 API 最省事;如果国内直连不稳、想用一个 key 路由多家模型、或想用免费档先跑通,接 TeamoRouter 更合适。

Q:沙箱安全吗? 沙箱是一张矩阵,Linux bwrap / Landlock、macOS Seatbelt、Windows ACL 受限令牌、云端 E2B。但强制级别有 partial 存在,生产环境必须逐个确认自己平台的强制完整性。

想低成本把 dsh 跑起来,到 TeamoRouter 注册拿一个 key,把 DEEPSEEK_BASE_URL 指过去,就能在 dsh 里免费跑 DeepSeek V4 Pro / Flash。

准备好接入了吗?登录控制台 · 购买额度 · 创建 API Key,三步即可开始。
DeepSeek Harness 是什么:一条命令跑起来的开源 Agent 框架 · TeamoRouter