博客 · 概念
为什么它叫 harness
2026 年 8 月 14 日 · dshbase
DeepSeek 没把它叫 DeepSeek Code,也没叫 DeepSeek Build。它叫 harness——这个命名就是全部论点。多数人忽略了它。这个名字是一个精确的技术声明,不是营销话术。
Agent = 模型 + 框架
每个 AI 编程 agent 本质上是两个东西拼在一起。模型是大脑——决定做什么的推理引擎。框架(harness)是其余的一切——把大脑连接到文件、终端、工具和外部世界的代码。
Claude Code、Codex 和 DSH 都是 harness。区别在于每个怎么对待 harness 这一层:
- Claude Code 把 harness 保持私有——你通过 MCP 服务器扩展,但永远看不到、改不了核心。
- Codex 类似——闭源 harness + 扩展 API。
- DSH 把 harness 本身做成产品——开源,而且每一部分都是可替换的插件。
Cordis 内核:一个自我组装的 agent
DSH 构建在 Cordis 上,一个极简插件内核,只做一件事:管理插件的加载、卸载和依赖解析。其余一切——模型、工具、沙箱、会话存储、UI,甚至 agent 循环本身——都是内核之上的插件。
Cordis 的两个特性让 DSH 从根本上不同于普通应用:
- 时间可组合性——插件卸载时,副作用完全撤销。你能移除一个能力,系统回到添加它之前的状态。
- 空间可组合性——一个插件变化时,依赖它的插件自动重新解析。加或换一个工具,所有使用它的地方无需重启就生效。
这在实践里长什么样
我们在 dsh 0.1.0-rc.6 上直接验证过这个行为。跑 dsh plugin add dsh-memory 会安装包、写进 profile 的 package.json,然后——下次启动——插件已经在配置树里了。不用重新构建,不用重启折腾,不用手动接线。内核自己发现并加载它。
我们也踩到了另一面:一个没有 dsh.bundle 清单的插件会静默地作为普通依赖装进去——永远不激活。harness 的好坏取决于 manifest 契约。这种细节只有真正跑过才知道,所以我们把它记录在插件目录和排错指南里。
自我进化,不只是扩展
结果是:一个 agent 能在运行中安装和移除自己的能力。给它一个任务,它能加一个插件来解决,然后再卸载。这是一种自我进化——和 DSH 其他文章讲的自我进化循环、轨迹追踪是同一个想法。
这就是为什么它叫 harness 而不是产品。它是 agent 的基础设施:一个极简内核 + 约 100 个官方插件,明确邀请社区来构建其余部分。这个名字告诉你它的野心——这不是一个你「使用」的应用,而是你拥有的脚手架。
FAQ
「harness」和「框架」是一回事吗?接近,但 harness 更强调运行时接线(文件、终端、工具),比泛泛的 framework 更具体。DSH 交付的是一个完整可运行的 agent,不只是库。
用 DSH 需要懂 Cordis 吗?不需要。你可以当普通 agent 用。只有写插件或替换核心部件时才需要关心 Cordis。