CLIX
面向命令行工具的
GUI/TUI 抽象层
让复杂 CLI 工具自动拥有可视化交互界面。
CLIX 将 CLI 帮助文档解析成结构化参数约束,再生成 TUI、GUI、补全、状态文件和未来的 Agent Tool Interface。
clix convert -i samples/ls_help.txt -o ls.json -p auto
tree -L 3 -I '*.cpp' --dirsfirst -C -F /
命令行工具很强,但门槛很高
CLI 工具通常功能强大、可组合、可脚本化,但它们对普通用户并不友好。
用户经常需要面对
- 大量参数
- 长篇 help/manual 文档
- 不同工具之间不一致的参数风格
- 容易写错的命令组合
- 不敢执行的危险操作
CLIX 的目标
不是让命令行消失,而是让命令行工具拥有更友好的交互入口。
CLIX 不是什么?
| 误解 | CLIX 不是 | CLIX 实际上是 |
|---|---|---|
| GUI 套壳 | 不是给某个命令手写一个窗口 | 面向 CLI 文档的通用 GUI/TUI 生成框架 |
| pandoc | 不是转换文本格式 | 解析命令语义,生成参数约束和交互界面 |
| 单命令封装器 | 不是只适配 ls/cat | 支持多种输入格式和 parser 插件 |
| 普通表单生成器 | 不是简单把字段摆出来 | 支持类型、约束、默认值、状态保存和命令插值 |
| AI 概念项目 | 当前不是靠 LLM 硬猜参数 | 先用规则 parser 打通稳定闭环,未来预留 AI/MCP 接口 |
核心不是“做一个界面”,而是把 CLI 工具的参数语义抽象出来,再根据不同场景渲染成交互界面或工具接口。
从命令行文档到可交互界面
CLIX 将命令行工具的帮助文档解析为统一 DSL Schema。
可渲染形态
- TUI Guide 模式
- GUI Form 模式
- Bash Completion
- MAML XML
- 未来的 MCP / Agent Tool Schema
一句话
一份命令约束,多种交互入口。
CLIX 支持的四层能力
Parser
GnuHelpParser ManualParser MamlParser GuiEditorParser Auto Detect
Renderer
TUI Guide GUI Form Bash Completion MAML Render 未来 Agent Tool Schema
输入 / 输出
help txt manual txt MAML XML DSL JSON Render Config State File
状态保持
Save Load Reset Default Values Ctrl+S / Ctrl+R
CLIX 不是单向转换工具,而是围绕 CLI 交互建立了一条从解析、建模、渲染到状态管理的完整链路。
三个子命令覆盖完整工作流
| 命令 | 作用 | 示例 |
|---|---|---|
convert | 文本 / XML → DSL JSON | clix convert -i ls_help.txt -o ls.json -p auto |
render | 选择渲染引擎 | clix render -r gui -i ls.json |
list | 列出可用 parser | clix list |
先解析,再交互,再生成命令。这不是只能看的 demo,而是一套可以实际运行的 CLI 工作流。
架构隔离:Windows GUI 不是项目本体
CLIX 的核心能力被拆分为平台无关层和平台相关层。
Parser Core
- GnuHelpParser
- ManualParser
- MamlParser
- Parser Registry
DSL / Schema
- Command
- Option
- Constraints
- Defaults
Runtime Core
- Loader
- Interpolation
- State
- Command Preview
Platform Layer
- TUI
- Win32 GUI
- Headless Linux
- Future Web / Agent
Linux headless 构建已经验证:Parser、DSL 和核心运行时不依赖 Win32 GUI,GUI 是 renderer,而不是整个项目。
工程化项目结构
CLIX 按照文档规范、核心库、插件系统、渲染器、测试集和构建系统组织。
clix/ ├── docs/ # 架构、DSL、Render、Interpolation 文档 ├── main/ # convert / tui / gui / edit / list 主程序 │ ├── parser/ # Parser 插件系统 │ └── lib/ # Schema / Render / Runner / Clipboard ├── libs/ # JSON / XML / CLI / Log / TUI / GUI 自研库 ├── parser_tests/ # Parser 集成测试 ├── renders/ # Bash Completion / MAML Render ├── reference/ # MAML Schema 与外部参考 ├── flake.nix # Nix devShell └── CMakeLists.txt # CMake 构建系统
docs/
说明项目有设计,而不是边写边糊。
libs/
底层能力被拆成可复用模块。
parser_tests/
解析能力有回归测试。
Windows + Linux 双平台打包
Windows Package
clix-windows-x86_64.zip - clix.exe - samples/ - GUI Form - GUI Editor - PowerShell / Windows Terminal 演示
Linux Package
clix-linux-x86_64.tar.gz - clix - samples/ - Headless mode - TUI / convert / list
Windows 版本展示原生 GUI 和编辑器能力;Linux 版本展示 headless、TUI、parser、Docker sandbox 和 Web terminal 能力。
真实样本测试,而非手工特判
CLIX 不只是适配几个演示样例,而是通过 parser 集成测试和真实 MAML 文件测试验证泛化能力。
测试体系让 CLIX 从“能跑 demo”进一步走向“可维护工程”。
CLIX 不是终点,而是过渡层
CLIX 不一定是“更好的最终入口”,而是帮助用户从完全不熟悉 CLI,逐步过渡到熟练使用 CLI / completion / 脚本的工具。
从陌生到熟练的学习坡道
类比
直接让新手上 CLI + completion,就像 GUI 软件一打开就要求用户背快捷键。
CLIX 提供的是从“看得懂”到“写得出”的学习坡道。
Powerlevel10k 给我们的启发:好的终端工具也需要引导
好的工具不是替代熟练操作,而是帮助用户抵达熟练操作。
Powerlevel10k
- 不是让用户直接改复杂配置文件
- 而是通过一步步选择生成最终配置
CLIX
- 不是让用户直接记复杂命令参数
- 而是通过 GUI/TUI 引导生成最终命令
Completion 很强,但不是新手入口
Bash Completion 的问题
- 它告诉你“有哪些参数”,但不一定解释“为什么用”
- 它假设用户已经知道命令结构
- 它不适合复杂参数组合决策
- 它不天然保存一次完整配置状态
- 它对非开发者仍然不够友好
CLIX 的补充
- 参数解释
- 可视化填写
- 命令预览
- Save / Load / Reset
- 从探索到熟练
Completion 是熟练用户的加速器,CLIX 是新手到熟练用户的过渡桥。
LLM 会写命令,为什么还需要 CLIX?
LLM 可以生成命令,但它不天然保证参数真实存在、组合合法、版本支持、执行安全和过程可复现。
| LLM 直接写命令 | CLIX 辅助 Agent |
|---|---|
| 凭上下文预测参数 | 从 help/manual/MAML 提取真实参数 |
| 可能编造 flag | DSL 约束参数类型和取值 |
| 一次性输出命令 | 支持状态保存和复现 |
| 执行边界不清晰 | 可预览、确认、禁用 runner |
| 消耗大量上下文 | 使用结构化 schema 降低上下文成本 |
CLIX 不是被 Agent 替代,而是让 Agent 更可靠地使用 CLI 工具。
对 LLM 也是一样:只暴露需要的接口
LLM 可以直接写命令,但更好的方式是只给它暴露结构化、受约束、可验证的工具接口。
直接让 LLM 操作 CLI
- 可能编造参数
- 可能误用危险命令
- 需要塞大量 help 文档
- 难以控制执行边界
通过 CLIX
- Parser 提取真实参数
- DSL 描述类型、约束、默认值
- Renderer 生成 GUI / TUI / Completion / Agent Tool Interface
- Runner 可预览、确认、禁用或沙箱执行
趋势
一个重要方向是:LLM 动态生成用户友好界面。
CLIX 顺应这个方向,但不要求重写现有 API,而是直接利用已经规范化的 CLI 文档和命令接口。
收束
CLIX 不是要消灭 CLI,也不是把用户永远留在 GUI。它更像一个训练轮:让用户从看得懂参数、敢于生成命令,逐步过渡到熟练使用 CLI、completion、脚本和 Agent 工具接口。
从人类界面到 Agent 工具接口
教学场景
帮助新手理解 Linux、PowerShell、Git 等命令,不需要一开始就记忆所有参数。
科研与工程工具
把复杂参数的命令行程序转化为表单,降低误操作成本。
企业内部脚本
把内部脚本、运维命令、自动化工具低代码化、界面化。
Web Terminal / Sandbox
在浏览器中提供受控运行环境,适合比赛展示、教学平台和在线文档。
Agent / MCP
未来可以把 CLI 工具解析为 Agent 可调用的结构化工具接口。
长期目标
成为 CLI 工具的人机交互与 Agent 调用适配层。
CLIX 的差异化:通用生成,而非单点封装
| 方案 | 优点 | 局限 |
|---|---|---|
| 手写 GUI | 体验最好 | 每个工具都要单独开发 |
| Shell Completion | 开发者友好 | 普通用户仍需懂 CLI |
| Web 表单封装 | 部署方便 | 通常绑定单一命令或场景 |
| LLM 直接生成命令 | 灵活自然 | 容易幻觉,缺少约束和状态 |
| CLIX | 解析真实 CLI 文档,生成 GUI/TUI/Schema | 复杂格式仍需继续增强 |
CLIX 的价值在于把 CLI 工具的交互界面生成过程通用化、结构化、工程化。
从 CLI Transformer 到 Tool Interface Layer
短期
- 完善 BSD / Windows slash 风格参数支持
- 增强 GUI 布局编辑器
- 完善 Alias 系统
- 增强路径输入体验
中期
- 接入更多 renderer
- 生成 Web Form / Dashboard
- 完善 Linux sandbox playground
- 改进 release 与安装体验
长期
- LLM 辅助解析复杂 manual
- MCP 协议支持
- Agent Tool Schema 生成
- 常用命令 Schema 生态
CLIX 的终点不是某一个 GUI,而是让 CLI 工具成为可解析、可组合、可交互、可调用的结构化能力。
CLIX
把命令行工具抽象成平台无关的结构化能力。
对普通用户
CLIX 把复杂命令转化为可交互 GUI/TUI。
对开发者
CLIX 提供 parser、schema、renderer、state 的工程化框架。
对 Agent
CLIX 让命令行工具变成结构化、可验证、可控执行的工具接口。
CLI is powerful. CLIX makes it approachable.