
2026 年 8 月 13 日深夜,DeepSeek 两小时三连:V4 Pro 转正、API 涨价预告,然后是让社区炸锅的 DeepSeek Harness 开源——首日 GitHub Star 破 3 万,一周破 16 万。它不是新模型,是一套把「模型+工具+工作区+权限+会话记忆+任务循环」串起来的 Agent 运行时,官方公式就一行:Model + Harness = Agent。
大脑没有身体,什么都干不了
大模型能告诉你「应该怎么做」,但读文件、敲命令、管记忆、拆任务、纠错重试,都得有人替它干。Harness 就是这具身体。DeepSeek Harness(命令行工具名 dsh)特别的地方在于:身体的每一个零件都可插拔。模型适配器、工具注册表、技能、会话日志、沙箱、Agent 主循环、调度器、Web UI,全部以插件形式存在,MIT 协议,当前开发者预览版 v0.1.0-rc.8。
类比一下:普通 Agent 框架像品牌连锁餐厅,菜单装修全是品牌方定死的;它像共享厨房——自带任何厨师(任意模型)、自带食材(任意插件)、自己定流程(自定义 Agent Loop),没有一面墙是焊死的。
底层是 Cordis 插件元框架(设计见论文《A Programming Paradigm for Spatiotemporal Composability》),只管三件事:插件生命周期、依赖注入、事件总线。插件卸载时注册反向撤销、不留孤儿状态,所以支持运行时热插拔。官方仓库自带 159 个插件包,用户插件与官方插件地位完全平等——你可以在不碰其他部分的情况下替换推理循环。

最小插件长什么样
一个能用的工具插件,四个契约不能省:
import type { Context } from '@deepseek-ai/cordis'
import { defineTool } from '@deepseek-ai/dsh-tools'
export const name = 'text-stats'
export const inject = ['tools']
export function apply(ctx: Context) {
ctx.tools.register(
defineTool({
name: 'text_stats',
description: 'Count characters and lines, then estimate token usage.',
parameters: {
text: { type: 'string', required: true, description: 'The text to inspect.' },
charsPerToken: { type: 'number', description: 'Positive estimation ratio; defaults to 4.' },
},
output: { schema: { type: 'string' } },
async execute(args) {
const ratio = args.charsPerToken ?? 4
const characters = [...args.text].length
const lines = args.text.length === 0 ? 0 : args.text.split(/\r?\n/u).length
return JSON.stringify({ characters, lines, estimatedTokens: Math.ceil(characters / ratio) })
},
})
)
}
四个契约:inject 保证依赖服务就绪后才执行 apply;parameters 在 execute 前完成类型与必填校验;返回值必须符合 output.schema,基础设施故障抛异常;注册与插件 Fiber 绑定,卸载或热更新时工具自动注销。调试启动用 pnpm dsh web --patch ./my-plugin/cordis.yml,在 Web UI 里让模型必须调用 text_stats,调用记录里出现它且返回完整 JSON,注册链路才算通。
四种运行模式
dsh web --mode standard:完整编码 Agent,文件编辑、Shell、搜索、技能、规划、子代理、工作流,日常默认。
--mode code:通过 Code Mode SDK 把工具暴露给模型,让它在一个 TypeScript 程序里组合多步操作,适合精细控制调用序列的任务。
--mode minimal:只留持久化 Bash 和 str_replace_editor 两个工具,专门给模型做基准测试——工具越少,模型能力差异越藏不住,跑对比评测用这个最干净。
--mode creator:创建自定义 Agent 预设,支持在内存中测试 Cordis 插件。
从安装到内网落地
环境要求 Node.js 18+(推荐 22.19+)。最快的启动方式:
npx @deepseek-ai/dsh web
默认监听 http://127.0.0.1:3080。SSH 远程启动不会自动开浏览器,--no-open 禁止自动打开,--port 8080 改端口。
模型切换不改一行业务代码,配置文件搞定:
models:
default: deepseek-v4-pro
providers:
deepseek:
baseUrl: https://api.deepseek.com
apiKey: ${DEEPSEEK_API_KEY}
internal:
baseUrl: http://192.168.1.100:8080/v1
apiKey: ${INTERNAL_MODEL_KEY}
企业内网部署的关键配置三件套:模型端点指向内部网关、私有工具插件(GitLab MR 审查、审计日志投递)、沙箱策略收紧:
sandbox:
mode: read-only
allowedPaths:
- /workspace/repos
- /tmp/dsh-work
数据不出域、操作全审计,这套组合拳才过得去企业安全合规那一关。

迭代节奏里的信号
仓库 2026 年 6 月 10 日首次提交,64 天 12293 次提交、683 篇设计笔记,连被否决的 11 条方案都摊在仓库里。选 Cordis 当元框架后干脆把源码拷进自己仓库改了 18 处,启动清单只有 129 行。8 月 17 日 RC.7 把 Codex 和 Claude Code 的子代理任务接进 Job Panel 统一管理;8 月 19 日 RC.8 原生看图上线,Claude Code 和 Codex 变成可按需安装的 Profile Bundle——竞对的产品,变成了自己的零件。野心写在明面上:当 Agent 时代的调度层,让所有模型、所有 Agent 工具都跑在自己的运行时之上。
上生产前,把这几条风险过一遍
rc 版没有 LTS,官方明说会有破坏性变更,API 可能一个版本一断,升级要安排在发布窗口而不是随手 npm update。Node 版本低了会直接 ERR! 拒装(engines 字段硬校验),用 nvm 切到 22 再装。可观测性虽然有 dsh trajectory list/show/replay/fork 全套命令,但审计合规要自己写插件接内部日志系统,官方不带现成的。最后,预览期文档滞后于代码,遇到行为和文档对不上,直接翻仓库源码和设计笔记比等文档更新快。

一句话定位:想要一个模型可换、插件可插、能装进内网的 Agent 运行时,它目前是选项里完成度最高的之一;想要开箱即稳的生产级产品,等它出正式版再说。

评论0