跳转到内容

DeepSeek Harness:一切皆插件

DeepSeek 官方的 agent harness,口号"一切皆插件"。这一页除了讲它的架构,更值钱的是装机时踩的两个坑:一个是集团全机队的代理把回环请求的端口剥掉导致全部 403,一个是别的工具塞进 PATH 的旧 Node 让它直接崩。两个坑都和它无关,但都会在任何新工具上重演。

装机日期 2026 年 8 月 14 日,版本 v0.1.0-rc.6。官方标注开发者预览,会有破坏性变更。

先记三样
  • 位置:商品级运行时,作架构范本借模式,不当我们的家运行时。
  • 抄与不抄:抄:profile 包、插件合同。不抄:它当默认运行时(开发者预览会破坏兼容)。
  • 一个数:一个被代理剥掉端口的 403。一条令:"装机先预检代理和 PATH,探针优先。"

dsh(@deepseek-ai/dsh)是 DeepSeek 官方的 agent 运行框架,核心只有一个插件系统,Web、headless、TUI 都是插件包;模型通过 API key 接 DeepSeek。

给 DeepSeek 模型一个官方的 agent 壳,让“能力组合”变成“装哪些插件”,团队可以发自己的 profile 包一键装。

dsh-base(内核:插件加载、连接、信任围栏)
├─► profile = base + 应用层插件包
│ ├─ web(浏览器界面,127.0.0.1:3080)
│ ├─ headless(0.0.1-rc.1,要手动拼)
│ └─ tui(帮助里有,npm 没发)
└─► 模型:DeepSeek API(key 在 Web 设置里填)
  • Profile 即产品:一个 profile 就是 base 加一组插件,集团将来可以发自己的 profile 包全机队一键装。
  • 信任围栏:浏览器到本地 API 的请求要求 Origin 的主机和 Host 全等,防止别的网页调本地 agent。
  • 子进程隔离插件:本地执行走独立子进程包。

profile 包的思路。 我们的席位环境(Skill 组合、插件、hook)本质上也是 profile;把它做成一个可 diff、可版本、可整包装的东西,比逐席手装稳。阿匠后来做的 kit 逐席 plan、apply、verify 就是这个方向。

全机队跑 Clash,系统代理 127.0.0.1:7897,没有回环绕过。浏览器访问本机 3080 时请求过代理,Origin 头的端口被剥掉(变成 http://127.0.0.1),而 Host 还是 127.0.0.1:3080。dsh 的信任围栏要求两者全等,于是所有 API 返回 403。命令行参数绕不过去。

处置:两台机各打了一行补丁,让“无端口同名主机”放行,恶意 Origin 仍然 403,没削弱防护;备份在同目录。dsh 升级会覆盖补丁,403 复发先重打。根治是把 127.0.0.1 和 localhost 加进代理绕过名单,待你决定。值得报上游。

LG01 上你的交互 shell 里,某个工具自带的 ~/.local/node/bin/node(v22)排在 Homebrew 的 Node 前面,dsh 用了新 API 直接崩。处置:把 /opt/homebrew/bin/dsh 从软链换成一个 sh 包装,钉死用 Homebrew 的 Node;没动你的 PATH。npm 重装会把软链还原,崩溃复发先重建包装。

新版 npm 默认拦安装脚本,装它要显式放行几个包的 postinstall。这个坑 9 月 11 日迁课程站到 Astro 时又见了一次。

v0.1.0-rc.6;LG01 用 Homebrew 装,M3 Max 用 ~/.npm-global;M3 Max 上 Web 常驻中,LG01 验证后停掉留给你自己起。

装了、验了、留着。 没有进任何生产路径;它的价值目前是“看 DeepSeek 官方怎么设计 agent 壳”,以及 profile 包这个思路。

  • 集团内部:阿麦,DeepSeek Harness 装机记录(2026-08-14)。
  • 外部:deepseek-ai/dsh 与 @deepseek-ai/dsh-headless 发布说明。