DSH 微内核架构:数字员工的 To B 哲学

Microkernel for the Enterprise — DSH's To-B Philosophy for Digital Employees

昨天给一家客户交付一个 HR 数字员工,交付物出乎对方意料:不是安装包,不是镜像,是一个配置文件

对方技术负责人盯着屏幕看了半天,问了一句:「就这?」

就这。准确说,是一份 cordis.patch.yml——声明启用哪些插件、禁用哪些、端口开在哪、模型配哪个。客户自己改了一份,重启,一个财务数字员工就起来了。代码一行没动。

这让我确信一件事:上一篇讲的「Harness 自由,Contract 稳定」有了它的工程落地——DSH(DeepSeek Harness)的 profile 机制。而这背后是一套更像操作系统哲学的架构选择:微内核

Microkernel for the Enterprise — DSH’s To-B Philosophy for Digital Employees

一、进程级沙箱 = 用户态服务隔离

dsh --profile hr 启动的不是一个「配置不同」的 web,而是一个 完全不同的进程。它通过 Cordis 插件系统实现能力裁剪——40+ 个插件被禁用,只保留 HTTP API + LLM + Shell + dingtalk-hr-plugin。

这很像微内核架构:Cordis 核心只管插件生命周期、事件路由、依赖注入,所有业务能力(UI、tools、skills、subagents、code-runtime)都是独立加载的「用户态服务」。

我核过 DSH 的实现:内置组合包分三层——dsh-base(共享核心)、dsh-web-app(浏览器宿主与 Web 运行时)、dsh-headless(直接叠在 base 上、不含 web-app 的最小运行时)。每个 profile 是 $DSH_HOME/profiles/<name> 目录下的一个组合声明:哪些 bundle 按什么顺序叠加,哪些插件打补丁。组合树在空根之上逐层应用:

dsh web        = base + web-app + 用户 cordis.patch.yml
dsh --profile hr = base + headless + hr 的 cordis.patch.yml
                              └─ 禁用 40+ 插件
                                 只留 HTTP API + LLM + Shell
                                        + dingtalk-hr-plugin
# generated by hugo AI

这和微内核「内核空转、服务外挂」的思路是同一个。

二、同一套代码,两个世界

dsh webdsh --profile hr 共享同一套代码库,但运行时是两套完全隔离的进程:

dsh web        (:3080)  完整 Web UI,开发者调试用    → 像开发环境
dsh HR agent   (:3081)  裁剪后的最小化进程           → 像生产环境
# generated by hugo AI

从开发到上线,中间没有「打包」或「部署」步骤——只是换了一个 profile

这一点值得停下来想一想。传统软件的开发态和生产态是两种制品:本地跑一套,打包、过流水线、再部署成另一套。两套制品之间永远有漂移的空间。而 profile 机制下,开发和生产跑的是 同一个二进制、同一份代码,区别只在启动时加载哪些插件。漂移的空间在架构上被消灭了。

这种进程级隔离与能力裁剪,正是 To B 交付的底层保障。

三、To B 场景的架构优势

1. 高可靠性

进程级隔离意味着一个插件的崩溃不会影响核心。每个 agent 是独立进程,挂了就重启,不影响其他 agent。

这和数字员工生产复盘里那次「健康检查全绿、员工失联 16 分钟」的事故互为镜像:那次暴露的是「监控容器不等于监控工作」;而微内核架构在更底层保证,就算一个员工的「大脑」真的失联,它也只是自己挂掉,不会拖垮隔壁的同事。

2. 低成本长期运行

裁剪掉不需要的能力 = 减少内存占用 = 减少攻击面 = 减少出错的概率。

HR agent 不需要 subagents、不需要 workflow、不需要 code-runtime、不需要 web-search,这些都被裁剪了,运行中的资源消耗降到最低。数字员工是要 7×24 常驻的——一个跑一年的进程,每省一份能力就是省一份事故概率和一笔云账单。

3. 自主优化

DSH 的目标不是「挂了自动重启」,而是 「越用越好」。常驻守护进程持续分析每个 agent 的执行轨迹——调用链、工具使用频率、失败模式、耗时瓶颈——主动发现并落地优化:裁剪低频插件、合并冗余调用、调整 prompt 策略、重配资源配额。

优化结果以 profile/插件形式生效,天然继承微内核的隔离性:一个 agent 的优化不影响其他 agent,回滚也只是换回旧配置。故障不再是终点,而是优化的输入。(注:执行轨迹分析守护进程为当前架构的演进方向)

4. 定制化交付

不同客户(HR、财务、IT)只需要不同的 profile 配置文件,不需要改代码。To B 交付就是给客户一个 cordis.patch.yml

这就是昨天那个交付现场的完整解释:我们交付的不是一个产品,是 一个岗位的配置。换岗位,换配置;换客户,换配置。代码是公共的,配置是私有的——这恰好是上一篇文章说的 Spec/Code 分离,在交付层面的样子。

四、微内核 vs 宏内核

宏内核(传统 Agent)微内核(DSH + Cordis)
能力组织全部能力打包在一个进程插件按需加载
故障影响一个模块崩溃全挂进程级隔离,互不影响
交付形态越大越重的整体包按 profile 裁剪
定制方式改代码换配置文件即可交付

操作系统四十年前的选择,在 Agent 时代重演了一遍:Linux 走宏内核赢了性能,QNX 走微内核赢了汽车和航天——凡是要长期、可靠、安全运行的地方,历史总是选微内核。数字员工要 7×24 常驻在企业生产环境里,这是同一个选择题。

五、一句话总结

DSH 把 Agent 从「一个全能的程序」变成了「一个可定制、可自我进化的最小化运行时」。

在生产场景,少即是多——裁掉的不只是功能,是风险。

你的数字员工跑在什么架构上?欢迎留言讨论。


See also