DeepSeek Harness(dsh)官方 Agent 安装与使用指南

DeepSeek 官方开源的 agent harness,一条命令在本机跑起图形界面。模型可换,能力全部由插件组成,MIT 许可。

本站其他指南讲的是把第三方 Agent 接到 DeepSeek。DeepSeek Harness 属于另一类:它是 DeepSeek 自己的 Agent 运行时,2026 年 8 月 13 日随 V4-Pro 一同开源,两天内 GitHub star 超过 10 万。

本指南由 deepseekagent.io 维护,内容基于 0.1.0-rc.6 实测,数据统计到 2026 年 8 月 15 日。

Agent = Model + Harness

官方对 harness 的定位:

模型是 Agent 的灵魂;harness 让它读懂环境、使用工具、把任务真正跑完。

模型只输出文字,它自己打不开文件、跑不了命令,也记不住上一轮对话。harness 是模型外面那一层:工作区、工具、权限、会话记忆,以及驱动任务继续执行的循环。

Claude Code、Codex 也是 harness,但它们是成品。dsh 的区别在于模型适配、工具注册表、会话日志乃至 agent 循环本身都是可替换的插件,文档称之为「没有需要打补丁的特权内核」。

适用场景

你的情况建议
想用 DeepSeek 官方出品的编程 Agent直接用 dsh,它默认以 DeepSeek 为第一优先
想自己掌控 Agent 运行时,而不是用封闭产品首选 dsh,这是它的核心设计目标
需要干净稳定的工具面做模型评测用 Minimal 模式,只暴露两个工具
想给团队搭内部 Agent 平台可行,用插件和 profile 组合出需要的形态
只想让 Claude Code 用上更便宜的模型不必用 dsh,参考 CC SwitchClaude Code 教程
需要立即上生产、要求 API 稳定暂缓,当前是开发者预览,官方声明会有破坏兼容的变更

准备工作

1. Node.js 版本要对

dsh 要求 ^22.19 || >=24,奇数版本不在支持范围内,Node 23 会直接启动失败。先确认当前版本:

node -v

版本不符时安装 Node 24(macOS Homebrew):

brew install node@24
brew link --overwrite --force node@24

2. 准备 DeepSeek API Key

  1. 打开 DeepSeek 开放平台
  2. 登录后创建 API Key,复制保存(只显示一次)
  3. 确保账户有余额或可用额度

第一步:一条命令启动

在你想让 Agent 工作的项目目录里执行:

cd 你的项目目录
npx @deepseek-ai/dsh web

终端会打印访问地址,在浏览器打开:

dsh web: http://127.0.0.1:3080

首次运行会在 ~/.dsh 下自动初始化配置(profile、凭证、设置都在这里)。

它只服务本机。传 --host 0.0.0.0 会被 CLI 拒绝并退出,官方没有把它设计成对外托管的服务,无法用这种方式共享给同事。

第二步:配置模型

打开 Settings → Models,在 DeepSeek 卡片里填入 API Key 并保存,改完立即生效,无需重启服务。

Key 是只写的:保存后页面只能拿到一个脱敏描述符,真实密钥存放在 ~/.dsh/.credentials.yaml,设置文件里只保留一个引用。

默认可选的模型:

模型说明
deepseek-v4-pro旗舰,面向 Agent 任务优化
deepseek-v4-flash更快、更省,适合日常任务

两者默认都按 100 万上下文、单次输出上限 256k、推理档位 high 配置。

dsh 不绑定 DeepSeek。Add provider 里内置了 Anthropic、OpenAI、Bedrock、Azure、Vertex 等目录;Add a custom provider 可以接自己的网关或自建服务,填写小写 Provider ID、Base URL、协议、Key 和至少一个模型即可,也可以用 Fetch available models 自动拉取模型列表。

手填的模型默认按纯文本处理,发送图片会在请求前被拒绝。视觉模型需要在 ~/.dsh/settings.yaml 里补一行 input: [text, image]

第三步:选工作区,跑第一个任务

Choose workspace,把启动 dsh 的项目目录加进来并选中。未选择工作区时输入框不可用。

然后开一个会话,试一句:

总结一下这个仓库,指出它的主要模块。

它可以读写文件、执行命令、派发子 Agent、维护计划清单。按当前权限策略需要审批的操作,界面会先弹窗确认。

四种运行模式

每种模式对应一棵不同的插件树,可用工具随之变化:

模式能力什么时候用
Standard完整编程 Agent:文件编辑、shell、文件与网页搜索、skills、计划、目标、子 Agent、工作流日常写代码,默认模式
Code modeStandard 全部能力,但工具通过 Code Mode SDK 暴露,模型写一段 TypeScript 把多步操作编排进一次调用多步操作密集,希望减少往返轮次
Minimal只有两个工具:持久 bashstr_replace_editor模型评测,需要极简可控的环境
CreatorStandard 全部能力 + 运行时自省、内存里试插件、preset 编写指导自己定制 Agent 形态

举例说明 Code mode 的作用:原本需要五轮工具调用的序列,模型写成一段程序,一次执行完成。

与 Claude Code / Codex 的差异

Claude Code / CodexDeepSeek Harness
形态成品 Agent造 Agent 的框架,附带可用界面
界面终端为主本地 Web UI 为主,也有无界面模式
扩展hooks / MCPCordis 插件,连 agent 循环都能换
模型自家为主多厂商,DeepSeek 优先
源码闭源或半开MIT 全开
成熟度生产可用开发者预览,会有破坏兼容的变更

它对同类工具的兼容做得比较彻底:内置 Claude Code 和 Codex 的 hooks 桥,可以直接复用现成的 hooks.json;也能把任务委托给本机已安装的 Claude Code / Codex(默认关闭)。此外它会读取 AGENTS.mdCLAUDE.md,并作为客户端支持 MCP。

「一切皆插件」的两层含义

两个设计决定了它的扩展空间。

1. 每个能力都可以在配置里替换

运行中的 dsh 是启动时按顺序叠加出来的插件树:bundle 补丁、profile 补丁、机器级补丁、命令行覆盖。查看本机实际启动的配置:

npx @deepseek-ai/dsh web --dump-config

打印出来的任何一项都可以用自己的补丁覆盖。

2. 每次运行都可追溯

模型看见的一切都写进只增不改的会话日志:系统提示、推理过程、工具调用与结果、子 Agent 调度、每一次上下文注入。界面里的 Trajectory(轨迹) 视图可以按来源逐条查看。续跑、分叉、搜索、回放都基于同一条事件流。

官方把这条写成硬性约束:模型可见等于已记录,任何进入模型请求的内容都必须能从日志重建。

无头模式与 SDK

不需要界面时,可以一次性执行任务、打印结果并退出:

npx @deepseek-ai/dsh --profile headless "把失败的测试修好"

另外还提供 Python SDK(pip install deepseek-harness-sdk,自带 Node 运行时,目标机器不用装 Node)、JSON-RPC SDK 和 ACP 服务端,便于嵌入自己的程序。

常见问题

启动报错提示 Node 版本不对?

dsh 要求 ^22.19 || >=24。Node 23 这类奇数版本不在支持范围内,且已停止维护,安装 Node 24 即可。

3080 端口被占用怎么办?

web 后面的参数会交给 Web 应用,用 npx @deepseek-ai/dsh web --port 8080 换端口。

能让局域网里的同事访问吗?

不能。CLI 会拒绝 --host 0.0.0.0 并报用法错误,它被设计成只服务本机。

输入框是灰色的,无法输入?

还没选工作区,点 Choose workspace 添加并选中目录。如果模型下拉显示 Select model,说明默认模型指向了已删除的供应商,重新选一个即可。

MISSING_CREDENTIALUNKNOWN_MODEL

前者是没存 Key(去 Models 页面填,或设置好被引用的环境变量);后者是选了没配置的模型,去自定义供应商里把模型 ID 补上。

配置和会话存在哪?

都在 ~/.dshprofiles/ 是 profile 目录,.credentials.yaml 存密钥,settings.yaml 存设置,cordis.patch.yml 是你自己的补丁层。

Windows 能用吗?

Web UI 可以跑,但持久终端(PTY)依赖 POSIX 环境,官方打包的自带运行时也只发 Linux 和 macOS。Windows 上部分能力受限。

现在能用在正式项目上吗?

建议谨慎。它是开发者预览,README 明确警告会有破坏兼容的变更;会话格式不提供兼容承诺,升级后旧的会话记录可能无法读取。适合评估和内部试验,不适合作为唯一的生产工具。

我能给它提 PR 吗?

暂时不接收外部 PR。官方建议在 GitHub Discussions 反馈,或者自己写插件,并给仓库打上 dsh-plugin 标签便于被检索。官方也说明:主仓库里的包并不比社区的包更重要。

相关链接