DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DSH 的 Cordis 插件模型 — DSH Plugin Hub Docs
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
全部文档

开始使用

用环境预设分发精心打磨的 Agent Harness写你的第一个 DSH 插件

架构与原理

DSH 的 Cordis 插件模型从 Service 到完整的 Agent 能力Bundle、Profile 与 Patch 如何组合 DSH为什么 DSH + Cordis 如此特别

构建与发布

插件 HMR 不工作发布后搜不到插件

故障排查

插件安装失败排查DSH 版本不兼容处理 ERR_PNPM_IGNORED_BUILDSCordis 启动失败排查环境预设找不到或无法解析DSH Web UI 空白页排查localhost:3080 无法访问
Plugin Hub/文档中心/架构与原理

架构与原理

DSH 的 Cordis 插件模型

从 Context、Service、inject 和可逆 effect 理解 DSH 为什么能把整个 Agent Harness 组装成一棵插件树。

由 Plugin Hub 社区维护5 个章节
你将了解

从 Context、Service、inject 和可逆 effect 理解 DSH 为什么能把整个 Agent Harness 组装成一棵插件树。

Plugin 是运行时单元,不等同于 npm 包

在 Cordis 中,Plugin 是被挂载到 Context 上、拥有独立生命周期的运行时单元。一个 npm 包可以导出一个或多个 Plugin,也可以只是承载 Bundle 的 patch;把包、Plugin 和分发单元区分开,才能正确理解 DSH。

Plugin 可以是带 apply(ctx) 的函数,也可以是继承 Service 的类。Cordis 为每次挂载创建一个 fiber,跟踪配置、依赖、状态和清理动作。DSH 因此不需要让功能永久粘在一个全局进程上。

Context 是服务解析器

Context 保存当前作用域可见的服务。Plugin 通过稳定的 ctx key 找到能力,例如 ctx.tools、ctx.llm、ctx.sessions 和 ctx.agents,而不是直接依赖某个具体实现。

Service 在 Context 上提供命名 API,使用者只依赖这个名字和接口。更换模型适配器、文件系统后端或 subagent provider 时,Consumer 无需随实现一起改写。

ts
export class AgentLoop extends Service {
  static inject = ["agents", "sessions", "llm", "tools", "systemPrompt"];

  constructor(ctx: Context, config: Config) {
    super(ctx, "agentLoop");
    // The loop consumes services through ctx instead of importing providers.
  }
}

inject 表达依赖,而不是手工排序

Plugin 用 inject 声明所需服务。依赖尚未出现时,fiber 保持 pending;服务就绪后才激活。服务消失或实现改变时,Cordis 可以沿生命周期重新协调依赖。

因此 cordis.patch.yml 中 row 的视觉顺序主要服务于阅读和组合,并不等于靠数组顺序启动。真正的运行时加载关系来自服务可用性和显式依赖。

每个注册都是可逆 effect

工具、prompt section、provider、事件监听器和后台资源都通过 ctx.effect()、ctx.on() 或返回 disposer 的注册 API 进入运行时。它们归属于发起注册的 fiber。

Plugin 卸载时,Cordis 按相反顺序等待并执行 disposer。这个所有权模型让热更新、配置重载、测试隔离和应用关闭使用同一套清理语义,而不是让每个模块发明自己的 teardown。

ts
ctx.tools.register(tool);
ctx.on("tools/result", observeResult);

ctx.effect(() => {
  const stop = startWorker();
  return () => stop();
});

Everything is a plugin 的真正含义

DSH 不只把外围工具做成 Plugin。模型 adapter、工具 registry、session log、system prompt、agent registry,甚至默认 agent loop 都在同一棵 Cordis 树中。

这意味着扩展通常是在现有 Plugin 旁边挂载新行为,或替换某个 service provider,而不是修改一个不可替代的中心内核。配置描述的是应用架构本身。

继续阅读

继续阅读

架构与原理从 Service 到完整的 Agent 能力了解 DSH 如何用 Service Definition、Provider、Consumer、事件和作用域,把一个功能做成可替换的完整能力。架构与原理Bundle、Profile 与 Patch 如何组合 DSH沿着 Plugin、Bundle、Profile 到最终 Cordis 树,理解 DSH 的安装、覆盖顺序、热重载和可检查性。架构与原理为什么 DSH + Cordis 如此特别把可替换运行时、确定性组合和低门槛分发连成一个系统,理解这套方案真正的产品差异。

本页内容

概览Plugin 是运行时单元,不等同于 npm 包Context 是服务解析器inject 表达依赖,而不是手工排序每个注册都是可逆 effectEverything is a plugin 的真正含义