起因
说来好笑。我这个人懒,懒到不想重复劳动。但要命的是,我又对很多东西不满意——觉得这个框架太笨重,那个工具不安全,这个生态太封闭……
然后就变成了:因为懒,所以想一劳永逸。因为不满意,所以自己动手。
NebulaShell 就是这么来的。
它到底是什么
一句话概括:一个以安全为基石、以插件为灵魂的运行时框架。
说人话就是:我搭了一个架子,核心只做两件事——加载插件、调度插件。其他所有功能都是插件。
想要 Web 功能?装个 HTTP API 插件。想要聊天机器人?装个对应插件。想要跟 Node.js 通信?有适配器插件。
你觉得它该有什么,它就「可以」有什么——只要你愿意写(或者有人写)。
为什么说「安全为基石」
我见过太多「先跑起来再说」的项目了。跑着跑着就漏了——漏数据、漏权限、漏底裤。
NebulaShell 不太一样。它的插件分发格式(.nbpf)做了三层签名 + 两层加密:
- Ed25519 签名校验发布者身份
- RSA-4096-PSS 保证内容完整性
- HMAC-SHA256 校验每个模块
- AES-256-GCM 加密敏感元数据
一个插件从下载到加载,要过五关斩六将。这不是为了炫技——而是因为一旦放开插件生态,安全性就是底线。
插件化到什么程度
这么说吧:就连插件管理器本身,也是一个插件。
热插拔、依赖注入、熔断降级、权限控制……这些不是额外功能,而是核心机制。插件可以互相调用,可以用 use() 获取其他插件的实例,可以设定加载优先级。
我甚至做了个 NIR(Nebula Intermediate Representation)——一种中间表示,让插件可以「一次编译,到处运行」。就是懒嘛,不想为不同平台分别打包。
技术栈
- 语言:Python 3.10+
- CLI:Click
- 加密:Cryptography(AES-256-GCM / Ed25519 / RSA-4096-PSS / HMAC-SHA256)
- WebSocket:websockets
- 部署:Docker(docker-compose)
核心依赖只有 5 个库。轻量,是我的美学。
目前的状态
已经发布了 v1.2.0,内置了 26+ 个插件,覆盖 Web API、系统管理、安全防护、通信协议、工具增强五大类。
有 Web 管理界面,有 CLI 工具链,有 Docker 一键部署。
甚至还有一个——隐藏的成就系统。在 CLI 里输入 !!help 试试?算是我偷偷塞进去的彩蛋吧。
写在最后
这个项目从最开始的一个念头,到现在已经长成了一个自己都没想到的样子。它还不够成熟,bug 肯定有,设计上也有需要打磨的地方。
但说实话——看着它一天天变好,还挺有成就感的。
如果你感兴趣,欢迎来看看:
或者直接拉代码:
git clone https://github.com/starlight-apk/NebulaShell.git懒人改变世界——因为懒得走,所以发明了车。
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时






