博客

DeepSeek Harness vs OpenCode:两个开源 Agent 怎么选(单挑对比)

快速回答

deepseek harness vs opencode 是两套完全不同的开源哲学在打架:dsh 把「一切皆插件」做到了极致,OpenCode 把「极简」做到了极致。选哪个,取决于你想要一个可以改装的框架,还是一个开箱即用的终端 agent。

  • DeepSeek Harness(dsh):DeepSeek 开源的 agent harness(《DeepSeek Harness 是什么》),一切皆插件,54 个 npm 包,模型适配器 / 工具注册表 / 会话日志 / agent loop 全部可从配置替换,运行中的 agent 甚至能现场定义新插件改装自己。
  • OpenCode:开源、Rust 编写、终端优先的多模型 coding agent,一个 opencode.json 配置 provider 就能接任意模型,装上即用。
  • 成本:两者都模型无关,接 DeepSeek V4 都是约 $0.14 / $0.28(百万 token 输入/输出)起步,一个 TeamoRouter key 能同时喂饱两个。

一句话结论:想深度定制、把 agent 当框架来造,选 dsh;想要极简即用、完全掌控一个轻量工具,选 OpenCode。 详细横评见《DeepSeek Harness vs Claude Code / Codex / OpenCode》,本文只做 dsh 与 OpenCode 的单挑。

一张表看清差异

维度 DeepSeek Harness(dsh) OpenCode
定位 开源 agent 框架(harness) 开源终端 agent
架构哲学 一切皆插件(Cordis) 极简模块化
实现 TypeScript(~59.1 万行) Rust
默认模型 DeepSeek V4 系列 任意(多模型)
安装 npx @deepseek-ai/dsh web 一条命令全局安装
配置 环境变量 + 插件 opencode.json 指定 provider
定制能力 极高(换任何 seam) 高(provider / 工具可配)
生态 54 包工具 + Python SDK + ACP 多模型 provider、活跃社区
上手难度 中(面向框架开发者) 低(装上即用)
成本 DeepSeek V4 约 $0.14/$0.28 起 随模型,接 V4 同样 $0.14/$0.28
状态 开发者预览(接口会变) 稳定可用

架构哲学:一切皆插件 vs 极简模块化

这是二者最根本的分歧。

dsh:没有特权内核,agent 能改装自己

dsh 的底层是 vendor 自 Cordis 的插件框架。它最反直觉的设计是:不存在需要打补丁的特权内核——文件系统、shell、模型适配器、会话日志、甚至 agent loop 本身,都是插件,卸载即撤销副作用,任何服务都可以从配置整体替换。

更劲爆的是它那套自引用工具集:cordis_define / cordis_run / cordis_stop / cordis_undefine。含义是运行中的 agent 可以现场定义一个新的 Cordis 插件、注入真实运行时,而新插件注册的工具立刻对模型可见。用框架 -> 在框架里定义框架 -> 改自己的工具集 -> 继续用。这种元编程闭环,市面上几乎找不到第二家敢把它完整做成工具暴露给模型。

配合它的「会话日志是唯一事实来源」运行时不变式,fork / 恢复 / 上下文压缩 / 回放全部是日志的派生品——模型看到的一切都从日志重建。这也是「dsh 省 token」说法的技术来源。

OpenCode:极简模块化,装上即用

OpenCode 走的是一条完全相反的路:不做复杂的 harness 层,把「一个终端里的 agent」这件事做干净。Rust 编写,终端优先,多模型支持,配置就是一个 opencode.json 文件——指定 provider、填 base URL 和 key,重启就能在模型列表里切换。

它也能定制(自定义 provider、按需加工具),但定制的方式是「配置」而不是「写插件挂到运行时」。对多数人来说这反而是优点:没有需要理解的框架抽象,装完就是工具本身。

一句话总结:dsh 卖的是「框架可以被改写」,OpenCode 卖的是「工具足够简单」。

上手难度与安装

OpenCode 更易上手。 一条命令全局安装,跑起来后在终端里直接输入自然语言指令,agent 读仓库、改文件、执行命令。想接自己的模型,编辑 opencode.json 加一个 OpenAI 兼容 provider 就行,几乎没有学习曲线。

dsh 门槛略高。 安装本身不复杂:

bash
npx @deepseek-ai/dsh web

一条命令启动 Web UI,默认地址 http://127.0.0.1:3080。但要真正发挥它「一切皆插件」的威力,你需要理解 Cordis 的插件模型、inject 依赖声明、事件分发模式——这是面向想自己搭 agent 的开发者的设计。如果只是「开箱用」,dsh 的框架抽象反而是额外负担。

定制能力

  • dsh:换任何 seam。 想只给 agent 终端 + 文件操作、不给网络?可以。想把 Bash / PTY / LSP 整体搬进远程沙箱?改一个 provider 声明就行。想给你的 agent 加一个调用内部系统 API 的工具?挂一个插件。甚至想换掉整个 agent loop 的行为?日志、上下文、工具注册表都可从配置替换。定制深度是 OpenCode 追不上的。
  • OpenCode:配置级定制。 换 provider、加模型、调 agent 行为都在 opencode.json 里完成。对绝大多数场景足够,但做不到「运行时注入插件改装自己」这种层级的扩展。

生态

dsh 背靠 DeepSeek 的工程投入:开源 1 个多小时破 2 万星,首日 2.8 万–3.1 万星;12,293 次提交、54 个 npm 包、约 59.1 万行 TypeScript、1,386 份 agent 开发笔记。工具目录覆盖 bash / run_code / terminal_*(PTY)/ edit / read / write / glob / grep(打包 ripgrep)/ subagent / goal / todo / schedule / job / skill / lsp / web_fetch / session_search / ask_user 等,另有 Python SDK(deepseek_harness)和 ACP / JSON-RPC 接口,不锁死自己的 UI。

OpenCode 生态的核心是「多模型」:一个工具接任意 provider,社区活跃,配置即插即用。它不提供 dsh 那样庞大的插件目录,但胜在简单、没有 vendor 依赖。

成本

两者都模型无关,所以成本跟着模型走。接 DeepSeek V4 Flash($0.14/$0.28 每百万 token),在 dsh 和 OpenCode 里跑同样便宜;接旗舰 Claude / GPT,两边一样贵。

差别在于「默认值」和「优化方向」:

  • dsh 把 DeepSeek V4 当一等公民,整个架构围绕 token 经济设计(会话日志单源、spill 存储把大工具输出落盘只给定位符),战略赌注就是「agent 框架要便宜到真的跑得起规模」。
  • OpenCode 不偏向任何模型,成本完全由你选的 provider 决定。

对「agent 全天跑」的团队,dsh + DeepSeek V4 Flash 通常是最便宜的组合;OpenCode 接同一个 V4 也能做到同等价格。

怎么选:按人群对号入座

  • 想深度定制、搭自己的 agent 框架:选 dsh。你能裁剪能力面、换 provider、写插件、甚至让 agent 自我改装,代价是学习曲线和开发者预览状态。
  • 想要极简即用、完全掌控一个轻量工具:选 OpenCode。装上即用,配置清晰,不引入框架抽象。
  • 成本敏感、agent 高频调用:两者都行,接 DeepSeek V4 Flash 即可;dsh 在 token 经济上更激进。
  • 在乎长期稳定性:OpenCode 更稳;dsh 明确标注开发者预览,接口会变,不建议在它上面做生产依赖。

一个 key 同时接两个

两者都用 OpenAI 兼容协议,所以 TeamoRouter 的一个 key 就能同时喂饱它们,统一计费、不用分别注册充值:

bash
# dsh:环境变量
export DEEPSEEK_BASE_URL="https://api.teamorouter.cn/v1"
export DEEPSEEK_API_KEY="sk-teamo-你的Key"

# OpenCode:opencode.json 指定 provider
# {
#   "provider": {
#     "teamorouter": {
#       "options": {
#         "baseURL": "https://api.teamorouter.cn/v1",
#         "apiKey": "sk-teamo-你的Key"
#       },
#       "models": {
#         "deepseek-v4-flash": { "name": "DeepSeek V4 Flash" },
#         "deepseek-v4-pro": { "name": "DeepSeek V4 Pro" }
#       }
#     }
#   }
# }

这样你可以在 OpenCode 里做日常快活,把重活、需要深度定制的任务交给 dsh,共用同一个 sk-teamo- key、同一张账单。dsh 接入详解见《DeepSeek Harness 接入 TeamoRouter》,OpenCode 独立介绍见《OpenCode 是什么》。

常见疑问

Q:dsh 和 OpenCode 是竞品吗? 定位重叠但不冲突。OpenCode 是「极简终端 agent」,dsh 是「一切皆插件的 agent 框架」。你可以在 OpenCode 上过日子,也可以把 dsh 当框架自己造 agent;也可以两个都装,按任务挑。

Q:OpenCode 能像 dsh 那样定制吗? 配置级可以(provider、模型、工具),运行时注入插件那种深度不行。想要「agent 现场改装自己」这类能力,只有 dsh。

Q:dsh 现在是生产就绪吗? 还是开发者预览,接口会变。个人开发、学习 agent 架构、便宜跑 agent 完全可用,但不建议在它上面做依赖具体 API 细节的生产。

Q:两个都接 DeepSeek V4,谁更省 token? dsh 的会话日志单源 + spill 落盘设计在长会话、大工具输出场景更省;OpenCode 不做这类优化。价格相同($0.14/$0.28)的前提下,省 token 看任务形态。

想低成本横评这两个开源 agent,到 TeamoRouter 拿一个 key,把 dsh 和 OpenCode 都接上,边用边比。

准备好接入了吗?登录控制台 · 购买额度 · 创建 API Key,三步即可开始。
DeepSeek Harness vs OpenCode:两个开源 Agent 怎么选(单挑对比) · TeamoRouter