概念理解

Vendor,直译供应商 "vendor"指将第三方库的源代码直接‌内嵌‌到项目目录中,而非通过依赖管理器动态下载
复制到此 monorepo 中,而不是通过 npm 依赖,

参考 Meta-Framework of Spatiotemporal Composability
https://github.com/cordiverse/cordis
怎么造的、它是什么架构

插件

插件式架构就
allows the plugin architecture to be used anywhere, for anything.
一个固定的核心演化 + 一圈扩展点
没有核心-只有组合

插件的

消息总线 / 事件驱动模式
插件的生命周期管理
-- 服务 依赖驱动的热重载

插件生成 插件依赖 插件加载 插件间通信 插件卸载
插件实例,包含其生命周期状态、经过校验的配置以及已注册的作用
插件加载见注册表
通常假设服务一旦注册就永久存在。
而Cordis假设服务可以随时出现和消失,被依赖的服务发生热替换,Cordis可以自动重启依赖它的插件
配置即代码:通过 cordis.yml 等配置文件就能定义和组装插件树,并支持配置的热更新(HMR)

核心概念

大模型插件-是一种软件组件,它们设计用于增强和扩展基础大模型的功能
插件 (Plugin) Service是上下文服务的基类 上下文 (Context)
服务依赖 (Service Dependency)
类型化事件 (Typed Events)
可逆副作用 (Reversible Effects) 监听者观察、包装、并行扇出或按序执行
Context
├── 当前环境状态
├── effect inverse accumulator
└── coeffect / dependency context
时间 ctx.effect(callback)
每做一个 effect,同时返回这个 effect 的 inverse。

空间 由依赖满足关系驱动。 Cordis 保存一个 dependency context
原来不满足 → 现在满足:activating
原来满足 → 现在不满足:deactivating
其他情况:neutral
UNLOADING 状态

Cordis 的插件生命周期由一个名为 Fiber 的状态机管理
PENDING → LOADING → ACTIVE → UNLOADING → DISPOSED
↘ FAILED

清理函数(disposer)
不可以撤销的
emission。处理这种 effect 只能采用两种更传统的方法:要么在确认状态 commit 以后才发送,要么提供 compensation,例如退款、删除文件
Cordis:管理“守规矩组件”的能力和生命周期
Sandbox:限制“不守规矩代码”能不能绕过规则

Plugin Service
Context ctx.(如 ctx.tools)
Service Dependency inject 声明自己依赖哪些服务。Cordis会自动解析依赖关系
Typed Events 插件间通信的方式,支持 emit(广播)、waterfall(瀑布流,类似中间件)、parallel(并行)和 serial(串行)
Reversible Effects

01.插件生成-组成
service 具体实现 可选 inject 和 apply(ctx) 字段的函数,
也可以是一个 Service 子类
Context 上下文是服务的容器 生命周期由 Cordis 挂载到当前上下文
02.service 通过 TypeScript 声明合并注册事件名 Events @mode 标签记录模式 扩展点
emit、waterfall、parallel 或 serial
协作式监听器 策略监听器

03.ctx.effect() 或 ctx.on() 安装,reload 和 teardown 时会按预期撤销
disposer(资源释放函数

04.会话日志 是模型所见上下文的来源。deriveMessages() 从中投影出模型历史

可逆副作用+ 响应式协效应

插件的注册是可逆的副作用,而不是永久修改
基于服务 (Service) 的依赖注入和生命周期管理。

harness

TypeScript/Node.js 框架
Cordis + dash + plugin 可组合性==从单机工具--可组合框架--- 无特权内核+可逆副作用
01.Cordis
Cordis 树贡献内容的部分核心包
core/system-prompt 提示词片段与工具 schema 的组装
02.运行中的 dsh 是一棵插件树,
由启动时按序叠加的各层组合而成
cordis.patch.yml。web 和 headless 作为模板随发行版交付

Profile Bundle Patch Seam
Cordies以及其基础库

核心主干服务、可替换的能力 seam,也可以是组合包/组合点
步骤是一次模型请求加上它调用的工具。
一个轮次包含零个或多个步骤
能力 seam 能力 Seams
三种角色:
声明接口的 Service Definition、
实现它的 Service Provider,
以及使用它的 Consumer

和duckdb的插件系统

duckdb + 插件系统
Model +harness(harness 是由插件组合构成)--模型类似于duckdb主内容的演化

插件化方向
pluggy 钩子模式 @hookspec / @hookimpl 装饰器、PluginManager
DuckDB 的扩展被编译成独立的动态链接库(.so 或 .dll),主程序通过 dlopen 系统调用在运行时动态加载
VSCode 构建了一个庞大而安全的插件生态,其设计核心是 组件容器/依赖注入(Container/DI)模式
VSCode 主进程会为插件启动一个或多个独立的 扩展主机(Extension Host) 进程
Logstash 插件注册表模式(Plugin Registry)
hermes agent 插件系统 采用动态导入+模块级注册的插件架构
FastAPI的思路是依赖注入,不需要创建插件
DuckDB 扩展插件
.duckdb的插件机制: 插件机制是个好东西,在系统在第一天设计的时候就做好抽象,怎么可以更好的把其他人的功能一起协作起来 易扩展--易沟通
ROS 2 使用插件机制(基于 pluginlib)来加载不同的 rmw 实现。用户可以通过配置文件或环境变量(如 RMW_IMPLEMENTATION)选择具体的 DDS 实现。
插件机制是一种将程序的功能模块化,通过加载插件来扩展程序功能的方法
插件机制仍需要考虑的一些问题如错误处理,数据类型,版本控制,与框架代码以及应用代码的分离等等

大模型插件--外挂 大模型插件是一种软件组件,它们设计用于增强和扩展基础大模型的功能。如网络搜索、视觉生成、语音合成等 首先接收输入

插件生成 插件扫描 插件生态
在Python的插件开发领域,Pluggy 是一个强大而灵活的工具 python 程序都可以借助 pluggy 让自己支持” 插件 “功能。pluggy 钩子模式 @hookspec / @hookimpl 装饰器、PluginManager

离线安装

01.版本node 用22的版本,24 的版本给的解决方案不太有效
https://repo.huaweicloud.com/nodejs/v22.23.2/node-v22.23.2-headers.tar.gz

02.node-gyp 会在安装时被触发,从网络下载与当前 Node.js 版本匹配的头文件(如 node-v20.11.1-headers.tar.gz
npm_config_tarball
解压并使用 --nodedir 参数

3.--allow-script 是一个明确的“许可”开关,用来允许安装过程中执行第三方包的脚本
在 package.json 中预设:你可以在项目的 package.json 文件中,通过 allowScripts 字

4.一些镜像

解决思路

之前不通--问IT
现在不通,问agent

posted on 2026-08-14 16:57  辰令  阅读(15)  评论(0)    收藏  举报