深色
风格
视觉表达
S 循环切换
经典
稳定的技术默认风格
信号流
突出动态流向
蓝图
工程评审
编辑风格
适合发布与上线说明
动态
演示
导出
导出图表
便携、整洁的输出
E
分享
分享卡片
1200×630 PNG
路径分享卡片
1200×630 PNG
可达范围分享卡片
1200×630 PNG
复制分享卡片
复制 PNG 到剪贴板
复制图表
复制 PNG 到剪贴板
图像
PNG
无损图像
JPEG
紧凑图像
WebP
现代图像格式
矢量与动效
SVG
可编辑矢量图
WebM
6 秒动效
扩展运行时隔离 —— 独立类加载 · 事务化启用 · 命名空间工具
←
引导视图
探索此系统
沿精选路径逐步查看,而不改变源图表。
节点
下一步
→
▶
播放故事
#
复制此刻
显示全部
扩展运行时隔离 —— 独立类加载 · 事务化启用 · 命名空间工具
由 Archify 生成的架构图。
扩展 JAR · META-INF/services 声明 · 架构组件
扩展 JAR
META-INF/services 声明
IsolatedExtensionLoader · 每扩展一个 URLClassLoader · 架构组件
IsolatedExtensionLoader
每扩展一个 URLClassLoader
ExtensionRegistry · 事务化 apply → 换入运行态 · 架构组件
ExtensionRegistry
事务化 apply → 换入运行态
失败回滚 · onStop + 关闭该类加载器 · 架构组件
失败回滚
onStop + 关闭该类加载器
SPI 契约共享 · Ai4jExtension 走父加载器 · 架构组件
SPI 契约共享
Ai4jExtension 走父加载器
DefaultExtensionContext · tools/commands/skills 暂存注册 · 架构组件
DefaultExtensionContext
tools/commands/skills 暂存注册
命名空间工具 · plugin__<id>__<tool> · 架构组件
命名空间工具
plugin__<id>__<tool>
disable() 释放 · 逆序 onStop + close · 架构组件
disable() 释放
逆序 onStop + close
① 逐 JAR 建加载器
② discover + apply
③ SPI 类型父委托
④ 失败即回滚
⑤ 注册写暂存态
⑥ 工具名命名空间化
⑦ 逆序释放
就绪
章节 01 / 01
引导章节
图表指南
探索此系统
×
正在检查已编译语义
01
查找任意节点
搜索标签、职责、类型和稳定 ID。
/
02
追踪路径
查看两个语义节点如何按编写方向连接。
R
03
查看完整系统
打开带实时视口和稳定节点的语义雷达。
M
04
比较语义类型
统计角色、显示流量并比较直接编写的连接。
L
05
播放引导故事
浏览已编写的章节和真实关系。
P
06
进入演示模式
让实时图表占满视口,同时不改变导出。
F
E
导出
T
主题
S
风格
0
重置
+
放大
-
缩小
Esc
关闭
查找节点
×
⌕
/
没有匹配的节点
语义护照
已验证来源
编写可达范围
上游
0
下游
0
×
复制链接
关系
路径探测
选择起点节点
查找起点
复制链接
清除
在图表中选择两个语义节点
←
▶
旅程
→
总览
先选择来源,再选择目标;方向很重要。
语义透镜
比较系统角色
×
最多选择两种语义类型。选择一种可显示其真实流量;选择两种只比较直接编写的关系。
选择一种类型以检查其节点和相连关系。
复制链接
清除
语义雷达
正在构建总览
打开雷达
×
点击节点
拖动平移
语义雷达需要更多地图可见空间。
路径
地图
透镜
阅读
100%
隔离边界
• 每扩展 JAR 一个 URLClassLoader,实现类互不污染
• SPI 契约类型由父加载器共享,instanceof 语义一致
• 隔离解决依赖冲突——不是安全沙箱,不可信代码需进程边界
事务语义
• apply() 的注册先落暂存态,全部成功才换入运行快照
• 任一扩展 apply 失败:回滚已注册项 + onStop + 关闭其加载器
• 清理钩子抛错不掩盖原始 apply 失败原因
命名空间与生命周期
• 扩展工具统一 plugin__<id>__<tool>,杜绝跨插件撞名
• expose 仍接受裸名——解析器按后缀唯一匹配,歧义报错
• disable 逆序执行 onStop 并逆序关闭 classloader/资源