模型、工具、技能、会话、沙箱、存储、循环、调度、UI——在 DeepSeek Harness(dsh)里,这些全部是插件,没有一个是"核心"。这篇讲清楚这句话到底意味着什么、背后的理论是什么,以及它和当下主流 agent(Claude Code / Codex / AtomCode / openJiuwen 生态)实现的本质区别。
—— 猫哥,DeepSeek Harness 插件开发者。更多折腾记录见我的博客:blog.csdn.net/qq8864

一、先破一个常见误解
“一切皆插件"不是说"dsh 有很多插件可以装”。它是说:dsh 的运行时结构本身,就是由插件组合出来的。
主流 agent 的架构是:
核心(agent 循环、上下文管理、执行器)—— 你动不了
└── 外挂扩展:MCP 工具、skills、hooks、plugins(只能加,不能改)
dsh 的架构是:
一层 Cordis 运行时(ctx:上下文、事件、生命周期)
├── 模型适配器 ← 插件
├── 工具注册表 ← 插件
├── 会话/存储 ← 插件
├── 沙箱/权限 ← 插件
├── agent 循环 ← 插件
├── 调度/任务 ← 插件
├── UI(web/tui)← 插件
└── 你写的任何新东西 ← 插件
没有"核心"。base bundle 也只是第一个插件组合。想换 agent 循环?换插件。想换存储?换插件。想要终端界面?装个 TUI 插件。这就是"安卓 vs iPhone"的架构含义。

二、理论底座:Cordis 论文
这不是工程口号,有形式化支撑。Cordis 论文《A Programming Paradigm for Spatiotemporal Composability》(1107★)定义了两个正交维度:
1. 时间可组合性 = 可逆效应(revertible effects) 组件卸载时,运行时完整回滚它的所有副作用。每个上下文变换都携带逆变换,由运行时跟踪。 → dsh 里:插件通过 ctx 注册的一切(工具、事件监听、服务、定时器),dispose 时自动撤销。插件的 ctx.effect(() => cleanup) 就是这个机制;HMR 热替换(改配置/代码不重启就换插件)的安全保证也来自它。
2. 空间可组合性 = 反应式余效应(reactive coeffects) 上下文一旦变化,主动通知符合余效应规格的组件。 → dsh 里:inject: ['sessions'] 声明依赖(就绪才加载、消失自动卸载);session/event 事件流(导出/通知/报表插件全靠它)。
论文把两者统一成"上下文类型",并给出动态组合演算的元理论——插件的可替换、可回滚、可重组是有证明的。
三、逐项看:每个能力对应什么插件机制
以实际做过的插件为佐证(非纸上谈兵):
| 模型 | ctx.llm.registerAdapter(names, adapter) | headless 自动路由 deepseek-official/deepseek-v4-flash;支持任意 OpenAI 兼容端点 |
| 工具 | ctx.tools.register(defineTool({name, parameters, execute})) | dsh-article-publish 的 publish_article(CSDN 网关签名发布)、fetch_news |
| 技能(Skills) | 官方内置 dsh-code-review、dsh-doc-standards 等;会话内自动注入 skill 目录 | 会话导出的注入过滤就处理过 skill 目录消息 |
| 会话 | 事件溯源服务 ctx.sessions:session/event 订阅、session.events 只读日志 | dsh-session-export 监听 turn/end 导出完整对话 |
| 沙箱/权限 | dsh-sandbox-local 等插件;workspace 围栏 | 安装时踩过 koffi 沙箱坑 |
| 存储 | dsh-session-persistence-jsonl(zstd 事件日志) | 直接解压研究过 ~/.dsh/sessions/*.jsonl.zstd |
| 循环(agent loop) | dsh-agent-loop:turn/step 驱动、并行调度 | 工具执行流水线(schema 校验→冻结→调度器 prepare) |
| 调度/任务 | Fiber 生命周期状态机 + ctx.jobs.start()(长任务) | dispose flush(headless 退出前兜底导出/通知) |
| UI | dsh-web-app(web)、社区 dsh-TUI(终端) | 装了 dsh-TUI;web/headless/tui 三表面同一内核 |
关键点:这些插件用同一套机制(ctx、事件、生命周期、schema)互相组合——工具插件可以订阅事件,UI 插件可以调用服务,存储插件可以被任何会话消费者替换。没有"二等公民"。
四、与主流 agent 的对比
| 开源 | ❌ 闭源产品 | ✅ 开源(TS 启动器 + Rust 二进制,2025 发布);云端 web 版闭源 | ✅ MIT | ✅ Apache-2.0 | ✅ MIT |
| 实现 | 闭源 | Rust 核心 + TS 薄壳 | Rust 分层(kernel/capabilities/coding/tui/daemon) | Python 为主,多语言(agent-protocol 为 C++ SDK,agent-core 有 Java 版) | TypeScript + Cordis |
| 模型 | Anthropic 绑定 | OpenAI 绑定 | 任意 OpenAI 兼容 | 华为 MaaS / OpenAI 兼容 / 本地 | 任意 OpenAI 兼容 + 自家 |
| 扩展单元 | MCP / skills / hooks / subagents | MCP / hooks / skills | skills / MCP / memory | Tool 生态(agent-tools)+ Skill Hub + Agent SDK + 可视化工作流 | 插件(运行时级) |
| 可组合粒度 | 外挂层(加能力) | 外挂层(加能力) | 能力模块化,运行时固定 | 能力/智能体/工作流层,运行时是框架 | 运行时层(连循环/存储/沙箱/UI 都可换) |
| 特色 | 生态最大、打磨深 | 模型强、云/本地双形态 | 纯 Rust 性能、100% AI 生成 | 分布式 swarm、Skill 自进化、DeepSearch、可视化编排 | 可逆效应理论、全插件化、自进化潜力 |

各家"可组合"的哲学差异
- Claude Code:外挂哲学。核心(agent 循环、上下文、执行器)闭源不可动,扩展只能通过 MCP/skills/hooks/subagents 挂在外面。优点:稳定、可控、生态最大;缺点:永远改不了主干。
- Codex(CLI):开源的外挂哲学。Rust 核心 + TS 启动器,代码开放可看,但架构仍是"单体核心 + 外挂扩展"(MCP/hooks/skills 挂在核心外面),agent loop 本身不可通过插件替换。开源≠可组合,这是与 dsh 的关键区别。
- AtomCode:开源分层单体。kernel(中立循环)/ capabilities(providers/tools/MCP/skills/sessions/memory)/ coding / TUI / daemon 分层清晰;但 CodingRuntime 是"单一运行时所有者"——扩展仍是在固定循环上加能力,不是替换循环本身。
- openJiuwen 生态:平台化能力编排。17 个仓库组成完整平台:agent-core(Agent SDK,含 Java 版)、agent-runtime(分布式运行与部署)、agent-dx(分布式执行)、agent-tools(Tool 生态)、agent-memory(长期记忆)、agent-protocol(MCP/A2A 协议 C++ SDK)、agent-studio(零码/低码可视化工作流编排、模型/知识库/插件资源管理)、skillhub(Skill 托管分发,兼容 ClawHub)、jiuwenswarm(多智能体协作)、deepsearch(深度搜索)、relay(多智能体协作平台)等。它的组合发生在能力/智能体/工作流层——用 SDK 开发 agent、用 studio 编排工作流、用 tool/skill 生态扩展能力,但底层运行时(agent-runtime)和核心是基础设施框架,不是可拔插替换的组件。Skill 自进化优化的是 Skill 定义,不改变运行时结构。
- dsh:运行时级插件。可组合性发生在最底层——连 agent 循环、存储、沙箱、UI 都是可拔插组件,且回滚/重组有元理论保证。这就是"安卓":想魔改哪一层都行,模型甚至可以在任务中自己写插件自己装上。
五、为什么这值得关注
诚实的另一面:dsh 是 developer preview(破坏性变更频繁)、TS 运行时性能不如 Rust 单体(Codex/AtomCode)、生态成熟度远不如 Claude Code;AtomCode 的性能与简洁、openJiuwen 的多智能体编排与 Skill 生态、Codex 的模型与打磨,各有独到之处。78.8k★ 关注 dsh 的人,赌的是架构方向:一个 agent 可以自己改造自己运行时的开放平台。
关于作者
本文作者 猫哥,DeepSeek Harness 插件开发者,日常折腾 AI Agent、开源与效率工具。写过并开源了四个 dsh 插件:
- dsh-session-export——会话导出与复盘
- dsh-notify——任务完成通知(Server酱/钉钉/飞书/Webhook)
- dsh-session-report——成本与耗时报表
- dsh-article-publish——三平台文章发布
更多 AI/开发折腾记录,欢迎来我的博客坐坐:https://blog.csdn.net/qq8864。觉得有用的话点个关注、留个言,后续还会持续输出 dsh 插件生态的实战内容。
参考:Cordis paper | deepseek-harness | AtomCode | openJiuwen(jiuwenswarm 等 17 仓) | Codex CLI(TS 启动器 + Rust 二进制)
网硕互联帮助中心

评论前必须登录!
注册