「一切皆插件」到底指什么?Cordis 概念拆解
⚠️ 开发者预览版,概念可能随版本演进。以官方架构文档
docs/architecture.md为准。
DeepSeek Harness 最常被提到的一句话是:「一切皆插件」(Everything is a Plugin)。这不是口号,是架构本身。
底层是一个叫 Cordis 的开源插件元框架(配套论文《A Programming Paradigm for Spatiotemporal Composability》,北大 × DeepSeek 联合署名)。Cordis 只负责一件事:插件的加载、卸载和依赖管理。Harness 的所有具体能力——模型、工具、记忆、UI、沙箱、循环——都是挂在它上面的「插件」。
三个关键概念
1. Profile 与 Bundle(配置层)
一个跑起来的 dsh 实例,是由「有序层」在启动时组合出的插件树。
- Profile:预设组合,官方示例有
web和headless。 - Bundle:配置行的分发格式(如
dsh-base贡献模型适配器、工具、持久化、沙箱、审批策略)。 - 改行为不用 fork 代码——写个 patch 文件覆盖某一行配置即可。
2. 会话日志(Session Log)
追加式的事件日志,是「模型看到什么」的唯一真相源。架构文档把它叫一条不变量:model-visible means logged——任何进入模型请求的内容,都必须能从日志还原。分叉、续跑、转录、遥测都从这条流派生。
3. 能力缝(Seam)
可替换的能力,有三个角色:服务定义、提供方、消费方。
因为文件系统和子进程共享同一个执行世界,把它们指向远程沙箱,Bash / PTY / LSP 工具就跟着走;子代理提供方同样走这套接口——从新起一个子 agent,到把一轮委托给别的产品。
扩展面有多宽?
官方架构文档说得很直白:
- 加模型提供方 → 在
ctx.llm注册适配器 - 加模型可见能力 → 在
ctx.tools注册 - 限制子进程 → 用
ctx.sandbox后端 - 拦截任何请求/工具调用 → 监听 agent 或 tools 的事件瀑布
- 连「会话标题」都是可注册的提供方
没有需要打补丁的特权核心:扩展 dsh 的方式,就是在别的插件旁边再挂一个插件。
为什么重要
对国内团队来说,「插件化」意味着:安全策略、私有模型、内部工具,都能沉淀成可复用模块,而不是改源码。这正是它相对「绑定自家模型的商业工具」最大的不同。
本站为第三方独立科普站,与 DeepSeek 无官方关联。概念以官方架构文档为准。