Spak 采用四层分层架构设计,各层职责清晰,下层为上层提供服务。
基于 Cobra 框架提供 CLI 命令,Chi 框架提供 HTTP REST API,gorilla/websocket 提供 WebSocket 实时通信。
管理插件的加载、依赖解析和生命周期。核心模块包括 Loader、DepResolver、Python 运行时和事件总线。
提供 Ed25519 签名验证、AES-256-GCM 加密解密、审计日志等安全能力。
定义 .pak 插件包的标准格式,包括 Magic、Manifest、公钥、签名和加密载荷的结构。
| 模块 | 路径 | 职责 |
|---|---|---|
| CLI | internal/cli/ | 用户交互命令 |
| Engine | engine/ | 加密原语和包格式 |
| Runtime | internal/runtime/ | 插件加载和生命周期 |
| Package | internal/pkg/ | .pak 打包和验证 |
| Security | internal/security/ | 密钥和审计日志 |
| API | internal/api/ | HTTP/WebSocket 服务 |
| Config | internal/config/ | 用户配置管理 |
| i18n | internal/i18n/ | 国际化支持 |
源码目录 (manifest.json + main.py)
→ spak pkg pack
→ 解析 manifest
→ AES-256-GCM 加密 Python 源码
→ Ed25519 签名
→ 写入 .pak 文件
spak serve
→ Loader.Scan()
→ DepResolver 扫描 plugins/ 目录
→ 解析每个 .pak 的头部 manifest
→ 拓扑排序(依赖优先)
→ 依次解密载荷
→ Python 运行时执行
依赖解析支持循环依赖检测和缺失依赖告警。