最近在折腾微信的贴图文章,不会搞摄影,既然在学AI,那就搞一个工具用AI生成图片来作为文章的素材,目前来看似乎没啥阅读量,就图一乐。
网上有很多在线的图片生成工具,但是由于免费的原因生成的图片普遍像素不高,不够清晰。
我用阿里的万相2.7(wan2.7-image-pro)模型接口,可以生成2K的图片,虽然可以登录阿里后台使用,但总觉得不够方便。
那就学以致用,自己开发一AI生图个工具来用用。
1. 技术选型
我希望就是一个小工具,别给我像 electron 一样上来就打包一个浏览器进去,进来就是200M起步。
所以我就盯上了Tauri2, 反正让AI写,Rust精不精通无所谓
最终技术选型如下:
前端:Vue3 + TailwindCSS
桌面框架:轻量跨平台 Tauri2
后端: Tauri原生支持 Rust
数据库:Sqlite
AI模型:阿里万相2.7
AI编码:openspec + deepSeek-v4-pro
2. 功能介绍
工具虽小,功能还挺全:
参考图输入: —— 上传一张图,AI在此基础上生成新图
提示词编辑 —— 自由描述想要的画面
图片比例调节 —— 横图、竖图、方图随心切
提示词模板管理 —— 好用的prompt存下来,一键复用
历史图片浏览 —— 生成过的图随时找回

(图片生成逻辑图)

(主界面)

(生成图片效果)

(提示词模板)

(历史)
3. 授权
小工具做好以后,用了几天,感觉还不错,生成图片的质量也是相当的精致。几个同事看了让发给他们试试。
可问题来了,发给大家用API-KEY咋办?每人自己去申请也挺麻烦的,我的KEY到是可以内置在软件里。但回头再一想,万一软件扩散开咋办,接口一次两毛钱也不便宜。
就算发现扩散了,到时更换KEY还要给大家再重新发一版,也挺麻烦的。
想到一个办法,做硬件绑定授权。每台电脑生成一个唯一的机器码,我这边签发对应的授权码。这样既能控制使用范围,还有效控制了大模型的使用量。
说干就干。

(授权逻辑图)

(主界面增加授权入口)

(授权管理)
限制了每日使用次数和到期时间,再给标个星级用户刷一波情绪价值。
4. 开发过程
前面说过虽然选了Tauri2, 但其实后端的RUST语言我也不是特别熟,所以这个小工具是我全程用AI编写出来的。
工具用的openspec, 模型用的 deepseek-v4-pro.
每一个需求的开发就是一个小循环:
/openspec-explore 通过反复对话的方式把需求澄清清楚
/openspec-apply 执行代码编写 和 单元测试
/openspec-verify 核对需求和实现是否有偏差
/openspec-sync-change 核对没问题后就将变更的规格合并到主规格中
/openspec-archive-change 归档该需求
然后就开始做下一个需求了。
我这里集成到trae里命令是/openspec-expose, 你要是用别的工具对于的命可能是/opsx:expose。

(spec规格文档)
这个小工具上班时候有空带着做的,前后花了4天吧,但实际投入的时间估计一天不到。

(最后打包大小8M左右)
后端结构:
src-tauri/src/├── main.rs # 入口:隐藏 Windows console,调用 lib::run()├── lib.rs # 核心:初始化 DB、配置、注册 Tauri Commands├── config.rs # 配置加载(内置 + 外部覆盖)├── db.rs # 数据库初始化 + 迁移├── bailian.rs # 阿里百炼 API 封装(请求构造 / 响应解析 / 图片下载)├── models/│ ├── mod.rs # 模块导出│ ├── image.rs # ImageRecord / ImageRecordDb(DB → 业务层转换)│ ├── text.rs
前端结构:
ImageView├── ImageUploader — 参考图上传/预览/删除├── PromptInput — 提示词输入 + 比例选择 + 生成按钮├── ImageResult — 生成结果展示 + 下载/删除├── Drawer (TemplatePanel) — 侧边抽屉:模板管理├── Drawer (ImageHistory) — 侧边抽屉:历史记录 + 缩略图└── ImagePreviewModal — 全屏图片预览
就这些。
夜雨聆风