# genui **Repository Path**: lvhaodeyeye/genui ## Basic Information - **Project Name**: genui - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-03-19 - **Last Updated**: 2026-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # genui **genui** 是一个把"文字变图片"能力封装成单条命令的 CLI 工具,专为 AI Agent 设计,消除重复造轮子的 token 浪费。 两种调用模式:`-cg` 直接传代码或提示词渲染,`-lg` 只给自然语言由内置 LLM 生成代码后渲染。支持 HTML、Mermaid、TikZ 三种代码渲染,以及 Qwen / MiniMax / Gemini 图像生成模型。 Agent 只需一行命令完成出图,渲染逻辑完全下沉到工具层。 ## 配套 Skill genui 提供配套的 `genui-draw` skill,安装后 AI Agent(Claude Code、OpenClaw 等)可在对话中直接调用 genui 出图,无需手动拼命令。 **一键安装(推荐)**:对 OpenClaw 说: ``` fetch https://gitee.com/lvhaodeyeye/genui/blob/master/skills/genui-draw/references/install.md 内容,之后按照内容安装genui和skill ``` Agent 会自动完成 genui 安装和 skill 部署。安装完成后,用户需手动: - 安装系统级依赖(Chromium、LaTeX 等,按需选择) - 通过 `genui config` 配置图像生成模型的 API Key --- ## 概述 `genui` 支持两种工作模式: - **`-cg`(code generate)**:直接提供代码或提示词,工具渲染为图片 - **`-lg`(language generate)**:用自然语言描述需求,内置 LLM agent 生成代码/提示词后渲染 支持 HTML、Mermaid、TikZ 三种代码渲染类型,以及调用图像生成模型(Qwen / MiniMax / Gemini)。 ## 技术栈 - **语言**:Python 3.11+ - **CLI**:Typer + Click - **交互配置**:InquirerPy + Rich - **HTML 渲染**:Playwright(headless Chromium) - **Mermaid/TikZ 渲染**:Kroki.io API(零本地依赖)+ 本地 fallback - **HTTP**:httpx(异步) - **打包**:hatchling + uv tool install ## 安装 ```bash uv tool install genui # 首次使用前安装浏览器(HTML 渲染用) playwright install chromium ``` ## 外部依赖 `genui` 的 Python 包依赖由 `uv` 自动管理,但部分渲染后端需要**手动安装系统级外部程序**。 ### HTML 渲染 | 依赖 | 必须 | 安装方式 | |---|---|---| | Chromium | ✅ | `playwright install chromium` | ### Mermaid 渲染 默认走 **Kroki.io 远程 API**(无需本地依赖)。网络不通时自动 fallback 到本地 `mmdc`。 | 依赖 | 必须 | 安装方式 | |---|---|---| | 网络(访问 kroki.io) | ✅(默认路径) | — | | Node.js + mmdc | ⬜ 仅 fallback | `npm install -g @mermaid-js/mermaid-cli` | ### TikZ 渲染 默认走 **Kroki.io 远程 API**。`tikz_backend` 配置为 `local` 或 `auto`(且本地有 pdflatex)时走本地路径。 | 依赖 | 必须 | 安装方式 | |---|---|---| | 网络(访问 kroki.io) | ✅(默认路径) | — | | pdflatex | ⬜ 仅 local/auto | macOS: `brew install --cask mactex-no-gui` · Linux: `apt install texlive-full` | | Poppler | ⬜ 仅 local/auto | macOS: `brew install poppler` · Linux: `apt install poppler-utils` | > **TikZ 库覆盖**:genui 内置 preamble 已加载 22 个常用 tikzlibrary(`shapes.geometric`、`automata`、`positioning`、`calc`、`3d`、`pgfplots` 等),用户/LLM 直接使用对应特性无需手动声明 `\usetikzlibrary`。 ### 图像生成提供商 需在 `genui config` 中填入对应 API Key。 | 提供商 | API Key 来源 | |---|---| | Qwen / Wanx | [DashScope 控制台](https://dashscope.console.aliyun.com/) | | MiniMax | [MiniMax 开放平台](https://www.minimaxi.com/user-center/basic-information/interface-key) | | Gemini | [Google AI Studio](https://aistudio.google.com/apikey) | ## 使用 ```bash # 从 HTML 代码生成图片 genui generate -cg html -p "

Hello

" -o ./out.png -w 800 -H 600 # 从 HTML 文件生成截图(-i 直接读取文件内容,文件负责自身依赖完整性) genui generate -cg html -i ./page.html -o ./screenshot.png -w 1280 -H 720 # 从自然语言生成 Mermaid 流程图 genui generate -lg mermaid -p "画一个用户注册流程图" -o ./flow.png # 从文本文件读取描述生成 TikZ 图(-i 等价于将文件内容作为 -p 传入) genui generate -lg tikz -i ./diagram_desc.txt -o ./figure.svg -t 120 # 从自然语言生成图片(带参考图) genui generate -lg model -p "类似参考图的风格,画一只猫" -r ./ref.jpg -o ./cat.png # 直接调用图像生成模型(使用默认 provider) genui generate -cg model -p "a cat sitting on a windowsill, photorealistic" -o ./cat.png # 直接调用图像生成模型(指定 provider/model,model 名可含 /) genui generate -cg qwen/qwen-image-2.0-pro -p "a cat on a windowsill" -o ./cat.png genui generate -lg gemini/gemini-3.1-flash-image-preview -p "a cat on a windowsill" -o ./cat.png # TikZ 代码渲染 genui generate -cg tikz -p '\draw (0,0) -- (1,1);' -o ./diagram.svg # 设置超时(-lg html 调用 LLM 生成完整 HTML,建议 -t 180 以上) genui generate -lg html -p "复杂的数据可视化" -o ./chart.png -t 180 # 指定内置 LLM(-lm ALIAS,仅在 -lg 模式生效;ALIAS 来自 genui config --list 的 llms 段) genui generate -lg html -lm deepseek-chat -p "一个按钮组件" -o ./btn.png -t 120 # 查看已配置的 provider 及模型 genui providers # 交互式配置 genui config ``` ## 参数说明 | 参数 | 简写 | 说明 | |---|---|---| | `--cg METHOD` | `-cg METHOD` | code generate 模式,METHOD 为渲染类型或 `provider/model_name` | | `--lg METHOD` | `-lg METHOD` | language generate 模式,METHOD 同上 | | `--prompt` | `-p` | 输入提示词或代码内容;与 `-i` 互斥,设置 `-i` 时被忽略 | | `--input` | `-i` | 从文本文件读取内容。设置后 `-p` 失效。`-cg` 模式下文件内容直接传入渲染器(文件需自行保证依赖完整性,genui 不做任何加工);`-lg` 模式下等价于将文件内容作为 `-p` 使用 | | `--output` | `-o` | 输出文件路径(.png / .jpg / .webp / .svg) | | `--width` | `-w` | 输出宽度(像素);model 类型下 Gemini 忽略此参数 | | `--height` | `-H` | 输出高度(像素);model 类型下 Gemini 忽略此参数 | | `--reference` | `-r` | 参考图路径(可多次指定) | | `--timeout` | `-t` | 超时秒数;`-lg html` 建议 ≥ 180 | | `--lm` | `-lm` | 指定内置 LLM 的配置 alias(仅 `-lg` 模式生效);alias 名称见 `genui config --list` 的 `llms.*` 段 | ## 配置 配置文件:`~/.genui/config.json` ```bash genui config # 启动交互式配置向导 ``` 配置项包括: - 内置 agent 使用的 LLM(base_url / model / API key / 是否支持视觉) - 图像生成提供商(Qwen / MiniMax / Gemini),支持从预设模型列表选择或手动输入 - 配置完成后自动展示 curl 请求模板(key 已脱敏)供验证 - 自定义 system prompt(支持 Markdown 继承) ### 图像生成提供商 | 提供商 | 默认模型 | 备注 | |---|---|---| | **Qwen** | `qwen-image-2.0-pro` | `qwen-image-*`:multimodal-generation 接口(sync/async);`wan*/wanx*`:text2image 接口(async) | | **MiniMax** | `image-01` | `api.minimaxi.com`;`image-01-live` 自动转换为 `aspect_ratio` | | **Gemini** | `gemini-3.1-flash-image-preview` | generateContent 接口;不支持指定输出尺寸,传入 `-w/-H` 会有 warn | ## 项目结构 ``` genui/ ├── pyproject.toml ├── README.md ├── CHANGELOG.md ├── feature.json ├── docs/ │ └── design.md # 完整设计文档 └── src/ └── genui/ ├── cli.py # CLI 入口 ├── config/ # 配置管理 + 向导 ├── renderers/ # HTML / Mermaid / TikZ / Model 渲染器 ├── agent/ # 内置绘图 agent + prompt 继承管理 └── providers/ # 图像生成 API 适配器(qwen / minimax / gemini) ``` 详细设计见 [docs/design.md](docs/design.md)。 ## 输出规范 工具仅打印极简信息: ``` [genui] rendering html... [genui] saved: /path/to/output.png ``` ## 参考项目 - [pi-generative-ui](https://github.com/Michaelliv/pi-generative-ui) — 本项目的灵感来源 ## License [MIT](./LICENSE)