门户首页
插件化 Agent 架构系列 · 1 / 4

基于插件的 Agent 架构:为什么 + 是什么

在 LLM(Large Language Model,大语言模型)推理能力之上,agent 的真正护城河是它的"可扩展骨架"—— 怎么让组件(工具 / 策略 / 记忆 / 子 agent)安全地加进来、必要时安全地卸掉、彼此依赖不出乱子。 本系列从一篇 2026 年形式化论文(北大 + DeepSeek-AI)出发,把这套骨架的设计哲学拆成 4 讲——概念 → 时间维度 → 空间维度 → 范式与落地。

生成时间:2026-09-02 19:50 · 生成 Agent:MiniMax Code (LLM: MiniMax-M3) · 载体:agentsoft-research-platform teaching-web-platform

概览

3
核心特征
2
可组合维度
1
统一范式
4000+
案例插件
本系列 4 页速查
# 页 主题 读完去哪儿
1overview概念入门 + 两个维度本页
2temporal时间维度:Revertible Effects#2
3spatial空间维度:Reactive Coeffects#3
4unifiedContext 范式 + Cordis 落地#4

第一篇 · 概念入门

Part 1 · 3 卡:定义 + 维度 + 痛点
先把"插件化 agent 架构"是什么钉死,再用两个维度切,再用 VSCode 案例看痛点——为后 3 页的形式化机制铺路。
第 1 讲 · 1 定义 + 3 特征

什么是 plugin-based agent architecture

"Agent" 不只是 LLM + prompt——它是一个运行时进程,把模型 + 工具 + 策略 + 记忆 + 子 agent 编在一起,让用户提需求时能拿到完整解决方案。"插件化"说的是这个进程的组装方式:每个能力都是独立可插拔单元,运行时可演化,依赖透明。

3 个核心特征(论文 §1 启发的 agent 视角定义)
  • 组件化:工具 / 策略 / 记忆 / 子 agent 全部以"组件"形式存在,每个组件是一段独立的可执行单元 + 显式声明的依赖
  • 运行时可演化:组件可加可卸,不必重启整个 agent 进程——这是与传统 plugin system 的最大区别
  • 依赖透明:组件间依赖显式声明,runtime 反应式协调(不是"我去找"而是"你被通知")
为什么 agent 特别需要这个:传统 plugin system(VSCode、IntelliJ)的"组件"是开发者写完就不动的;agent 时代,组件自己也会改自己(self-evolving harness)——论文 §1.2.2 直接说"future harness may generate and deploy modifications to its own components while continuously serving requests"。这种"自我改"场景下,没有时空可组合性,每次自我修改 = 一次完整重启,agent 根本撑不住。
← 返回入口 下一篇:时间维度 基础:Shi et al. 2026 §1.2.2
第 1 讲 · 2 维度 + 2 图

两个维度:temporal × spatial(论文 §1.1)

论文把"动态可组合性"切成两个正交的维度。两者独立、各自难、必须同时解决:

对比
维度 回答什么 agent 场景实例
Temporal
(时间)
组件卸载时能否完全撤销它的所有副作用? agent 关闭某个 tool → 释放 file handle、撤销注册的事件、清理缓存
Spatial
(空间)
组件间依赖能不能显式声明 + 反应式协调? agent A 依赖 agent B 的能力 → B 升级时 A 自动 reload;B 卸载时 A 自动降级
维度关系图
flowchart LR subgraph Time[Temporal · 时间] T1[组件加载] --> T2[运行时副作用] T2 --> T3[组件卸载
撤销所有副作用] end subgraph Space[Spatial · 空间] S1[组件声明依赖] --> S2[运行时依赖变化] S2 --> S3[自动通知所有依赖者] end Time -.正交.-> Space
图 1 · Temporal(可逆性)和 Spatial(反应性)正交——一个管"组件走了之后",一个管"组件之间怎么连"
正交意味着:解决 temporal 不会自动解决 spatial,反之亦然。论文的核心贡献就是"同时解决两个"——这正是后面 3 页要展开的。
← 返回入口 时间维度详讲 空间维度详讲 基础:Shi et al. 2026 §1.1
第 1 讲 · 1 案例 + 1 对比

传统 plugin system 痛点:VSCode 案例(论文 §1.2.1)

VSCode 是大家最熟悉的 plugin system——扩展都通过 VSCode Extension API(API = Application Programming Interface,应用程序接口,这里指宿主暴露给扩展的一组调用入口)接入宿主——但它没有时空可组合性,这就是我们为什么要重新设计。论文用 VSCode 当反面教材。

2 个具体痛点(论文原文数据)
  • Temporal 痛点:top 100 扩展中 87 个 包含可执行代码,卸载任何一个都要重启整个 extension host,影响所有加载的扩展。deactivate hook 只在 host 终止时触发,不支持热卸载。
  • Spatial 痛点:top 100 扩展中只有 7 个 声明了 extensionDependencies。原因是 VSCode 把扩展绑死在"commands / views / language features"这种固定插槽上,扩展之间几乎不互相依赖——也就没有反应式协调机制。
传统 plugin system vs 论文范式
维度 传统 plugin(VSCode / OSGi) 论文范式(Cordis)
Temporal卸载 = 重启 host / 进程卸载 = 自动 LIFO 撤销所有 effect
Spatial依赖靠手动 / 强制重启 / 重连依赖变化 = 自动通知 + 反应式协调
资源安全靠开发者记性写 deactivateruntime 强制追踪所有 effect,忘写就报错
热替换(HMR)需要手写 module.hot.accept自动——卸载 = 撤销 effect,重载 = 重新 instantiate
代表性生态VSCode ~8700 个含代码扩展Koishi 4000+ 社区插件(4 个 9 复用)
跟 agent 时代的对比:传统 plugin 是"开发者维护"——可以靠"写得仔细"绕开痛点;agent harness 是"AI 自动维护"——靠记性根本不可行。论文的形式化机制不是为了解决"开发者懒",是为了让"机器生成的组件也能被安全加载/卸载"。

读完去哪儿

本页只搭了"为什么和是什么"的认知地基。形式化机制从 Page 2 开始: