LAOGUO

UniteCLI

金箍棒-CLI

License: MIT Status: Developing Header-only · C++11

一套代码,大能跑服务器,小能跑嵌入式。基于压缩基数树的现代 C++ 命令行解析与调度框架,致力于将核心计算与 IO 彻底解耦。

🚧 注意:本项目底层架构设计已完成,代码正在紧张编写中。目前仓库为占坑与设计公示状态,欢迎交流探讨。
💻 兼容性提示:推荐 32 位及以上机器使用;16 位及以下平台需自行适配。

🌟 项目简介

UniteCLI 是一个仅头文件的现代 C++ 命令行框架。它摒弃了传统的键值容器,底层采用精心优化的压缩基数树架构,将命令、选项、命令组统一在一棵树中。

设计中文名“金箍棒”,寓意框架的跨端适应性:既能适应高性能服务器的极致需求,也能在资源受限的嵌入式环境中轻量运行。框架纯内核计算的设计,也使其不仅限于传统的控制台应用,还能作为 AI Agent 的工具库,或 OS 内核加载第三方应用的底层协议探索。

⚡ 核心特性

🚀

高效底座:O(L) 查找与紧凑内存布局

  • 有序 64 位位图 + 阶增式紧凑子节点数组 + POPCNT 快速确定分支 + 压缩节点基数树,精确查找与模糊匹配兼得,且天然有序。
  • 节点指引使用 32 位索引而非指针:无跨架构指针大小差异,无容器扩容悬垂。
  • 中途遇无预期分支立即退出,压缩路径线性扫描极快,内存空洞极小。
  • 提供全平台自适应 POPCNT 层、CTZ 层,压缩路径字符串 SWAR/指令集 SIMD 优化,真正做到长键与短键同为第一公民。
🧠

纯计算内核,计算与 IO 解耦

  • 框架内部零 IO 操作,打破传统 CLI 强绑定终端输出的死结。
  • 控制台、网络、GUI 等 IO 层运行时一键切换,无需重定向开销。
  • 不自行维护主循环:一次 execute() 完成解析与调度;解析结果封装为上下文对象,随取随用。
  • 错误分级清晰:应用级错误交由 IO 输出,框架级错误直接报错断言。
🌳

树形架构:统一管理命令与选项

  • 摒弃子命令概念,引入“命令组”与类文件系统的绝对/相对路径访问。
  • 选项即其命令数据下的子树;从任意别名取回该选项全部数据,稳定 O(L)。
🛠️

工具箱式参数解析

  • 仅校验参数数量,绝不强制类型转换。
  • 常见基本类型转换函数作为可选工具,转换控制权交还更懂业务的开发者。
🛡️

权限隔离与动态挂载

  • 内置本地多对话:启用/禁用状态按位图逐会话复制,权限天然隔离(多用户与 AI Agent 防越界皆宜)。
  • 角色权限模板:注册命令时即可为多个角色配置权限,角色保存为连续位图,每次开启新对话复制一份,权限即装即用。
  • 动态库命令子树挂载至主树钩子,执行函数留在库内,所有权清晰不混乱。
🧊

扁平数据结构,支持冷启动

  • 除执行函数指针外全部扁平,可内存直接复制;冷启动通过 incbin 将二进制数据编译进可执行文件。
  • 模板元编程仅框架级固定次数(<20 次)用于节点类型分派,构建数据零模板开销。

🧬 双库架构:核心库 + 拓展库

核心库 · 官方维护

涵盖以上全部功能:压缩基数树、纯计算零 IO 内核、命令组、权限隔离等,皆在其中。

由官方直接维护,仅头文件、构建数据零模板开销,即引即用。框架完成后将提供详尽文档与使用示例。

拓展库 · 社区共建

可由社区自愿贡献,社区贡献部分由各贡献者自行维护,所有权清晰。

官方默认提供两件:冷启动拓展库(incbin 二进制嵌入)与 ANSI 彩色终端库;每个拓展独立头文件,按需引入。

📥 获取最新源码

核心库仅一个头文件,无需访问 GitHub——直接复制或下载即可。

unitecli.hpp - 暂未开放下载

🎯 潜在适用场景

🤖

AI Agent

作为轻量工具库,节省 Token,利用权限隔离机制防止幻觉越界。

💻

OS 内核原型

动态库挂载机制可探索作为 Shell 加载第三方应用的底层协议。

🖥️

高性能服务器 / 游戏

低延迟纯计算解析,避免阻塞。

🎮

模拟器 / 内置控制台

响应迅速,显著减少输入延迟感。

🔌

嵌入式底层硬件

只要能跑 C++,即可极低开销地运行。

💡 命名寓意

Unite · 统一

统一命令与选项、统一计算与 IO、统一跨端架构。

金箍棒 · 能大能小

一套代码,能大能小。愿基于此框架的开发者,都能像握着金箍棒的齐天大圣一样,游刃有余地应对不同规模的底层场景。