「一切皆插件」到底怎么落地?拆解 DeepSeek Harness 的 Cordis 架构 「一切皆插件」到底怎么落地拆解 DeepSeek Harness 的 Cordis 架构上一篇我们把 DeepSeek Harness 跑了起来知道它「一切皆插件」、四大模式、四种入口。但口号归口号工程上到底怎么实现「连 Agent Loop 本身都是插件」这一篇深入源码结构拆解它的地基——Cordis 插件元框架以及那些真正跟别人不一样的设计可逆副作用、服务与事件、工具注册的遮蔽算法。一、地基Cordis 是什么为什么用它「Everything is a plugin」的基础是Cordis——一个开源的「Meta-Framework for Modern JavaScript Applications」。先纠正一个常见误解Cordis不是DeepSeek 为了 Agent 专门发明的。它是一个通用的插件框架处理三件事依赖注入Dependency Injection作用域服务Scoped Services生命周期清理Lifecycle Cleanup它跟 Agent、跟 LLM 没有任何直接关系在 DeepSeek Harness 出现之前就已经存在。最典型的使用者是Koishi——一个跨平台聊天机器人框架QQ / Discord / Telegram / 微信都接。为什么聊天机器人框架的经验能搬到 Agent 上因为两个场景在结构上几乎一模一样聊天机器人 几十个插件拼在一起热插拔随时改配置Agent 模型、工具、技能、沙箱、循环……几十个能力拼在一起也要热插拔、随时改配置唯一的区别是Koishi 没有 LLM而 Harness 加了一层 LLM。DeepSeek 团队看中了 Cordis 这套经过 Koishi 验证的「插件组织能力」于是把 Cordis 的源码vendor 进自己的仓库改了 scope 叫deepseek-ai/cordis把自己写的每一个包都设成对它的 peer dependency。这比「使用一个第三方库」更进一步——整个产品都构建在 Cordis 之上而不是把它当做一个依赖引用一下。二、核心包与ctx键每个能力都是一个服务在 Cordis 的模型里插件向一个共享的上下文context简称ctx贡献服务service。要理解 Harness先认识它的核心包和对应的ctx键包职责ctx键core/session仅追加的SessionEvent日志 内存存储ctx.sessionscore/system-prompt提示词片段与工具 schema 的组装ctx.systemPromptcore/tools作用域化的工具注册表 带把关的执行流水线ctx.toolscore/agentAgent接口、活跃 agent 注册表、agent/*事件ctx.agentscore/agent-loop实现Agent接口的默认驱动器ctx.agentLoopcore/scope按 agent 划分作用域的注册原语库无 ctx 键llm/llm消息与流式词汇表以及适配器 seamctx.llm看到没有连core/agent-loop智能体循环本身都是一个服务、一个插件。这就是「Everything is a Plugin」最硬核的体现——如果你不满意默认的 Agent Loop 怎么写注册一个自己的ctx.agentLoop实现即可上层调用方不用改一行代码。三、服务与事件插件之间怎么协作Cordis 的协作模型是「服务 事件」双轨服务Service插件向ctx贡献一个可被其他插件调用的对象比如ctx.llm、ctx.tools。这是「调用」的通道。事件Event插件可以监听并拦截类型化的事件比如tools/*事件、agent/turn-stopping事件。这是「拦截与扩展」的通道。这带来一个巨大优势替换一个能力不需要改动任何调用方。举一个真实的「设计验证双胞胎」例子Harness 定义了一份llm服务接口packages/llm/llm只规定「怎么发一次流式调用、怎么处理重试」不关心具体是哪家模型。系统里同时挂着两个实现这份接口的插件dsh-llm-deepseek专门适配 DeepSeek 自家模型dsh-llm-pi-ai内部包了一个第三方 npm 库earendil-works/pi-ai做多家模型厂商的协议转换官方近 40 家可选模型厂商大部分由这个插件支持。这两个插件互不知道对方存在。装哪个、换哪个上层 Agent Loop 的调用方式不用改一行——因为它调的是接口本身而不是某个具体实现。官方把这种搭配叫「设计验证双胞胎」两套完全独立的实现都能满足同一份接口定义从侧面证明这份接口写得足够通用。这也是判断一个插件化架构是否「真插件化」的试金石——如果你的接口只能被一种实现满足那它就不是真正的抽象。四、可逆副作用Cordis 最反直觉的设计哲学Cordis 有一篇 88 页的设计论文叫《A Programming Paradigm for Spatiotemporal Composability》。论文里最核心的一个词是可逆副作用reversible side effects。传统插件系统里一个插件被卸载时往往留下一堆「没收拾干净」的副作用注册的定时器还在跑、挂载的事件监听还在、写入的全局状态还在。这些残留会让「热插拔」变成一句空话。Cordis 的做法是插件向上下文贡献的一切都要是可逆的。加载插件时它声明自己贡献了什么卸载插件时框架按相反顺序自动清理这些贡献——停掉定时器、移除监听、撤销状态。这有什么用对 Agent 来说这个意义是决定性的Agent 可能在运行中途动态挂载/卸载插件创造模式就是这样一个长时间运行的 Agent 服务可以在不重启的情况下替换自己的某个组件论文里那句「未来的 harness 会在持续服务请求的同时生成并部署对自己组件的修改」在 Cordis 上已经开始兑现。对比一下你在用 Claude Code 或 Codex 时能想象它运行到一半把「文件系统」这个能力热替换掉而不重启吗在 Harness 上这从架构层面就是支持的。五、工具注册的「遮蔽算法」同名工具怎么共存多个插件可能都想注册同名工具比如两个插件都叫bash。Cordis/DSH 用作用域 遮蔽来解决工具在ctx.tools上注册时会带上一个作用域scope同一作用域内后注册的会遮蔽先注册的同名工具不同作用域比如不同 agent 预设、不同 realm之间互相隔离。这样一个「标准模式」的 Agent 和「极简模式」的 Agent 可以同时存在各自看到各自的工具集合互不污染。子智能体subagent继承父作用域的工具但可以覆写或遮蔽其中的某些项。这也是为什么「极简模式」真的能极简到只有两个工具——不是靠删代码而是靠组装时只挂两个工具插件。六、Profile、Bundle 与三层组装理解 Harness 的装配需要认识三个概念1. Profile具名组装Profile 是存放在 Harness home 中的具名组装。它列出自己叠放的组合包bundle存放自己安装的树外插件并保存用户自己的cordis.patch.yml。web和headless是随发行版交付的两个模板 profile。2. Bundle分层dsh-base每个 profile 的第一层——模型适配器、工具、持久化、沙箱与审批策略、设置、凭据、遥测dsh-web-app在 base 上增加浏览器应用dsh-headless增加一次性运行器且完全不带服务器。3. cordis.patch.yml用户补丁用户可以在不碰源码的情况下通过 patch 文件选择、替换、扩展任一能力。这就是官方反复强调的「无需改动源码即可在配置层选择、替换或扩展」。三层组装的关系可以理解为base 是地基bundle 是楼层patch 是你的个性化装修。七、自指工具让 Agent 检查并改造自己DeepSeek Harness 还提供了一组自指self-referentialCordis 工具。它们不会进入标准、PTC 或极简模式而是通过 Web UI 中的「创造模式」作为明确的高级入口提供。选择创造模式后Agent 可以检查当前运行时的插件树有哪些插件、依赖关系如何动态挂载或卸载临时插件据此组合、创作新的模式。这组工具的工程意义远大于「好玩」。它意味着 Agent 的运行时结构本身成为了 Agent 可操作的数据。当 Agent 能读、能改自己的插件组合时那个「自进化 Agent」的构想就从哲学讨论变成了一个可实现的工程目标。八、小结真正的可组合性不是「模块化」很多框架也号称「模块化」但它们的模块是编译期静态绑定的——换个模块要重新编译、重新部署。DeepSeek Harness 的「一切皆插件」是运行期动态可逆的能力 服务可替换 事件可拦截 可逆副作用可卸载Agent Loop 本身也是插件界面是插件、会话记录是插件、循环是插件连 Web UI 都能在持续服务的同时被换掉这正是梁文锋式哲学——「把定义权交还给开发者」——在工程层最彻底的落地。下一篇我会把 Harness 拉出来和 Claude Code、Codex、Pi-Agent 做一次横向对比看它在「自由」与「易用」之间到底牺牲了什么、又赢得了什么。九、补充用一个插件视角读一遍源码目录光讲概念容易飘这一节带你用「插件」的视角把 Harness 源码目录当成地图走一遍。克隆仓库后你会看到几个关键区域packages/—— 能力积木的仓库这是整个项目的心脏230 个 workspace 成员大部分住在这里。按前缀可以快速分类前缀内容对应ctx能力core/*会话、工具、Agent、循环、系统提示词sessionstoolsagentsagentLoopsystemPromptllm/*模型调用词汇表与适配器接口llmdsh-tool-*每个工具一个包bash、编辑器、终端等注册进ctx.toolsdsh-llm-*模型提供方适配器注册进ctx.llmdsh-ui-*/apps/*Web UI、Headless 运行器界面层插件读源码的建议顺序先看core/session数据从哪来→ 再看core/tools能力怎么注册→ 最后看core/agent-loop一切怎么转起来。这三个包读完你对「插件化 Agent」的理解会超过 90% 只看过宣传稿的人。examples/—— 官方教学样本里面放着最小可跑的示例配置包括jsonrpc-agent极简模式复现基准用。想验证某个概念先跑示例再改。python/—— SDK 与评测脚本Python SDK 的源码和基准复现脚本都在这。做生产集成的人应该从这里入手而不是从 TypeScript 内核入手。vendor/—— Cordis 本体注意Cordis 是被 vendor 进来的改了 scope 叫deepseek-ai/cordis。这意味着 DeepSeek 对插件地基有完全的修改权——遇到框架级问题他们可以直接改底层而不是等上游发版。这是「一切皆插件」能走得这么极端的工程保障。一个值得记住的心智模型把 Harness 想象成一台可编程机床core/*是机床的控制系统可刷固件dsh-tool-*是可换的刀具可热插拔dsh-llm-*是可换的动力源电机随便换品牌profile/bundle 是加工程序同一台机床跑不同产品Cordis 是机床的总线协议保证所有部件即插即用、拔了不留痕。成品 AgentClaude Code / Codex是「封装好的机床」你只能按说明书操作Harness 是把控制系统、刀具、图纸全给你的裸机床。会用的人效率碾压不会用的人会被零件淹没——这就是下一篇横评的基调。标签#DeepSeek #Cordis #插件架构 #AI Agent #开源框架

相关新闻

最新新闻

一个脚本搞定 Windows 与 Office 激活:KMS_VL_ALL_AIO 完整上手指南

一个脚本搞定 Windows 与 Office 激活:KMS_VL_ALL_AIO 完整上手指南

一个脚本搞定 Windows 与 Office 激活:KMS_VL_ALL_AIO 完整上手指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 刚重装完系统,右下角飘着"需要激活 Windows&quo…

2026/8/20 12:56:23
构建自动化GitHub热点追踪系统:从API调用到定时推送的完整实践

构建自动化GitHub热点追踪系统:从API调用到定时推送的完整实践

这次我们来看一个技术人每天都会关注,但可能从未系统梳理过的主题:如何高效追踪 GitHub 每日热点。这不是一个具体的开源项目,而是一套方法论和工具链的整合。对于开发者、技术决策者或开源爱好者来说,能否快速、准确地捕捉到 Git…

2026/8/20 12:56:23
零成本音乐解锁指南:NCM、QMC、KGM 加密文件几分钟变回能放的歌

零成本音乐解锁指南:NCM、QMC、KGM 加密文件几分钟变回能放的歌

零成本音乐解锁指南:NCM、QMC、KGM 加密文件几分钟变回能放的歌 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地…

2026/8/20 12:56:23
如何用 Chinese-ERJ LaTeX 模板在5分钟内完成《经济研究》论文排版(完整攻略)

如何用 Chinese-ERJ LaTeX 模板在5分钟内完成《经济研究》论文排版(完整攻略)

如何用 Chinese-ERJ LaTeX 模板在5分钟内完成《经济研究》论文排版(完整攻略) 【免费下载链接】Chinese-ERJ 《经济研究》杂志 LaTeX 论文模板 - LaTeX Template for Economic Research Journal 项目地址: https://gitcode.com/gh_mirrors/ch/Chinese-…

2026/8/20 12:56:23
MathType安装配置全攻略:解决Office集成与加载项问题

MathType安装配置全攻略:解决Office集成与加载项问题

1. 先搞清楚 MathType 到底能帮你解决什么,以及新版值不值得下如果你经常需要在 Word、PPT 或者一些网页编辑器里输入复杂的数学公式、化学方程式,还在用系统自带的公式编辑器一点点拼凑,那 MathType 这个工具你肯定不陌生。它本质上是一个强…

2026/8/20 12:56:23
AI智能体一致性测试:从统计方法到工程实践

AI智能体一致性测试:从统计方法到工程实践

1. 从“灵光一现”到“稳定可靠”:为什么AI智能体的“一致性”是个大问题最近和几个做AI智能体(AI Agent)的朋友聊天,大家不约而同地都在吐槽同一个问题:自己精心调教的智能体,在演示时表现惊艳&#xff0c…

2026/8/20 12:51:22