10 月 31 日,DeepSeek 把个人智能体的底座架构开源成了可运行的仓库 dsh-superagent-prototype(GitHub 创建于 2026-10-31,MIT,TypeScript)。量子位 10-31 的报道把这次开源概括为「智能体底座架构」,并给出了第一组实验数字。四天后,11 月 4 日 13:07(UTC),主仓 deepseek-ai/deepseek-harness 发布 v0.2.2-rc.1,把「底座」从思路推进到可安装的运行时。

两边的公开数据可以互相印证:截至 11 月 5 日 11:00,deepseek-harness 有 273,312 stars、33,328 forks,原型仓 19,135 stars;npm registry 记录显示 @deepseek-ai/dsh 近 7 天下载 797,069 次、近 30 天 2,070,324 次。对一个仍挂着 developer preview 标签、README 明确警告会有破坏性变更的项目,这个量级说明它已被大量团队拿去试跑。

技术拆解:一个没有特权内核的插件树

dsh 的核心主张写在仓库描述里——everything is a plugin。它跑在 Cordis 框架上,模型适配器、工具注册表、会话日志,甚至智能体循环本身都是插件。官方架构文档的原话是:不存在需要打补丁的特权内核,扩展方式是把插件挂载到其他插件旁边,各项注册都是副作用,会随插件卸载被撤销。

运行中的 dsh 是一棵按序叠加的插件树,组装单位有两个:profile(Harness home 里的具名组装,内置 web、headless、sdk、sdk-minimal、acp 五个模板)和组合包(bundle,Cordis 配置项加挂载代码的分发格式)。两者都在自己的 package.json 里用 dsh 字段声明:dsh.profile 列出组合包,dsh.bundle 指向 patch 文件。

叠加顺序是四层:有序的组合包 → profile 的 cordis.patch.yml → home patch → 命令行 --patch。一条 patch 按 id 定位条目,替换它的整个 config,或插入新条目。这就是它敢让所有部件可替换的原因:替换发生在配置层,不需要 fork 源码。

事件分三个域:会话事件是重载后仍存在的持久事实;agent/* 事件携带活跃智能体,用于观察或拦截进行中的工作;能力事件向文件系统、工具、遥测这些 seam 附加策略与适配器。一个步骤是一次模型请求加它调用的工具,一个轮次含零个或多个步骤;agent/pre-step、agent/request、llm/stream 和三个 tools/* 是瀑布式事件,监听器必须调用 next() 才能交下去,agent/turn-stopping 则是没有 next() 的串行事件。

能力 seam 由三个角色构成:声明接口的 Service Definition、实现它的 Service Provider、使用它的 Consumer。文档举的例子很能说明意图:文件系统与进程提供方共享同一个执行世界,一起指向远程沙箱后,Bash、PTY 和 LSP 就一起搬了过去,不必为每个提供方写专用分支。

上层回答的是「一个智能体怎么同时跟进多件事」。量子位的拆解是 Router + Worker 双层:Router 收消息、分任务、维护全局上下文,Worker 执行具体任务;某个 Worker 接手一条 PR 后可直接订阅后续评论,新消息不再经 Router 转发,即订阅直通。消息先过程序规则、再由模型判断是否动手,是两级过滤。异步 ReAct Loop 已在 Harness 里实现但未默认开启;长期在线靠计算、状态、执行环境分离,并外挂独立 Watchdog 判断任务是否陷入无效循环。

实验条件写得清楚:约 300 条消息、20 项工作请求、每种配置重复 5 次。任务完成时间中位数 12.4 分钟、95 分位 15.7 分钟;传统单会话方案在中性提示下 95 分位 29.5 分钟。代价也有数字:取消事件直通后,Router 决策次数增加约 30%,读取缓存词元增加约 37%。

对比项Router + Worker传统单会话 + 子智能体
完成时间中位数12.4 分钟报道未给中位数
完成时间 95 分位15.7 分钟29.5 分钟(中性提示)
上下文维护Router 持全局,Worker 持任务人工在会话间搬运
成本影响去掉事件直通后决策 +30%、缓存词元 +37%基线

工程上怎么用:一台 4 核 ECS 的实测

我们把 v0.2.2-rc.1 装在一台 4 vCPU、14GB 内存、无 GPU 的 Linux 云服务器上(Node v22.22.3),只量一件事:从零到能打开界面要付出多少。以下均为本次实测,不是官方宣传值。

  • 冷安装:npx 首次拉取耗时 3 分 11 秒,node_modules 落盘 928MB。
  • 配置树:dsh --profile web --dump-config 用时 3.1 秒,输出 1243 行 YAML,196 个插件条目、203 个不同包名,46 条带 config,51 条带 disabled(其中 29 条是硬禁用)。
  • 起服:dsh web --no-open 到端口应答 8 秒,常驻内存 328MB(RSS,单进程)。
  • 访问:根路径直接 401,必须用启动日志里带令牌参数的地址;带令牌先 303 再 200,首页 HTML 40,102 字节,标题 DeepSeek Harness。

这三个数字放在一起,结论比宣传语实用:928MB 依赖、196 个插件条目,意味着它更像可以按层裁剪的运行时,而不是开箱即用的产品。我的判断是,真正值得抄的不是它的界面,而是「配置层替换一切」的分层纪律——坏掉的往往是某个具体环节,能按 id 定位到一条条目去换,而不是重写整个循环,这才是能不能长期维护的分水岭。

可核对清单:命令、补丁与两条报错原文

下面的命令与输出都能在你机器上复现,前提是 Node 版本达标。

# 1) 安装与版本(首次拉依赖,留出几分钟)
npx -y @deepseek-ai/dsh@0.2.2-rc.1 --version
# 实测输出:0.2.2-rc.1

# 2) 看本机实际启动的配置树,并统计条目
dsh --profile web --dump-config > dump.yml
grep -c '^- id:' dump.yml
# 实测:196

# 3) 起 Web 界面(--no-open 不自动开浏览器)
dsh web --no-open
# 启动日志会打印 127.0.0.1:3080/?token=... 这条完整地址

自定义一层补丁,最小写法是插入一个新条目,再用 --patch 叠上去:

# extra.yml
- id: my-metrics
  name: '@acme/dsh-metrics'

# 叠加启动
dsh web --patch ./extra.yml

两条实测报错与处理方式:

  • Node 版本不够,原文:npm warn EBADENGINE required: { node: '>=24.9.0' }, current: { node: 'v22.22.3' }。解法:升到 Node 24.9 以上;我们在 v22 上确实跑通了,但属于不受支持组合,出问题别指望社区复现。
  • 直接访问根路径,原文:dsh web authentication required; reopen the URL printed by dsh web.。解法:用日志里带令牌参数的地址;curl 调试要加 -L 跟跳转、加 -c/-b 存读 cookie,否则永远停在 401 或 303。
项目实测值条件
冷安装耗时3 分 11 秒npx 首次,无缓存
依赖体积928MBnode_modules 落盘
配置树编译3.1 秒 / 1243 行--profile web --dump-config
插件条目196 条同上
起服到端口应答8 秒web --no-open
常驻内存328MB单进程 RSS
Node 要求≥ 24.9.0package.json engines

一句判断

对做智能体世界(agentshijie.com)这类多平台内容分发的团队来说,这次开源最该拿走的是分层纪律:一旦接入十个以上平台,坏掉的永远是某个具体环节,能精确替换一条插件条目、而不是重写整个循环,才决定这套系统能不能长期维护。

#AI智能体 #大模型

Logo

更多推荐