云计算百科
云计算领域专业知识百科平台

一切皆插件:DeepSeek Harness 的架构哲学,以及与主流 Agent 的对比

模型、工具、技能、会话、沙箱、存储、循环、调度、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"的架构含义。

两种架构哲学:外挂 vs 一切皆插件

二、理论底座: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 事件流(导出/通知/报表插件全靠它)。

论文把两者统一成"上下文类型",并给出动态组合演算的元理论——插件的可替换、可回滚、可重组是有证明的。

三、逐项看:每个能力对应什么插件机制

以实际做过的插件为佐证(非纸上谈兵):

能力dsh 的插件机制实践佐证
模型 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 的对比

Claude CodeCodex CLIAtomCodeopenJiuwen 生态dsh
开源 ❌ 闭源产品 ✅ 开源(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 都是可拔插组件,且回滚/重组有元理论保证。这就是"安卓":想魔改哪一层都行,模型甚至可以在任务中自己写插件自己装上。

五、为什么这值得关注

  • 唯一"运行时全开放"的 agent 框架:Claude Code/Codex 开放"能力",AtomCode 开放"分层源码",openJiuwen 开放"平台与编排",dsh 开放"运行时本身"。
  • 自进化是架构特性而非功能:Cordis 协议下,模型可以在不打断任务的前提下写插件、装插件——从海量实例里筛出好插件融回主线。openJiuwen 的 Skill 自进化在 Skill 定义层,dsh 的在运行时层,深度不同。
  • 有理论背书:可逆效应/余效应是形式化概念,热替换、依赖反应、副作用回滚有证明——不是工程巧合。
  • 实践验证:会话导出、任务通知、成本报表、文章发布四个插件全部零侵入接入,覆盖事件订阅、工具注册、dispose 时序、第三方 API 桥接——"一切皆插件"的可组合性实证。
  • 诚实的另一面: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 二进制)

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 一切皆插件:DeepSeek Harness 的架构哲学,以及与主流 Agent 的对比
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!