LibreCanvas 复盘:从一句涨价怒气,到单日十版上线的开源 BYOK 画布
首次记录:2026-07-16 来源:一次会话内从”AI 画布平台接连涨价,我们做个开源版”起步,调研 → 自研 → 上线 → 十轮迭代到 v1.4.0。全程人机共创。 状态:产品已上线待宣发;规律多为 ⚠️ 首次发现,验证环境分层为既有母档再验。
事实记录(不可修改区)
- 项目名称:LibreCanvas 自由画布(E:\libre-canvas)
- 项目周期:2026-07-16 单日(约一个工作日跨度,十次发版)
- 最终结果:v0.1 → v1.4.0 共 10 个版本;上线 https://canvas.tiaozhuxiansheng.com(腾讯云香港,HTTPS);GitHub 公开仓库 Mr-Salticidae/libre-canvas(MIT),Release v1.0.0 与 v1.4.0 已发
- 功能清单(发布时点):无限画布(框选/编组/吸附/小地图)、五类卡片、四种生成(图/文/视频/TTS)、参考连线与 @ 引用、蒙版局部重绘、迭代开分支、多画布项目、昼夜双皮肤、IndexedDB 持久化
- 诚实边界(未验证项):真实 API 生成未用真 key 端到端验证(生成链路只实测到 mock 接口与 401 错误路径;DeepSeek 浏览器直连 CORS 已实测可行);视频卡逐帧播放在两个测试环境均无法观测(环境缺陷,见下),仅验证到 play() 成功;宣发未做;CI 部署 secret 未配(构建验证模式)
- 数据来源:本会话实测(tsc 零错误、puppeteer 无头 Chrome 端到端断言、服务器 curl 验证 bundle、GitHub CI 绿)
一句话总结
一次”愤怒驱动”的开源反击能单日走完”调研→立项→上线→十轮迭代”,靠的不是快,而是三件事:立项前先用三查戳穿伪开源确认生态位真空、每一版只做一个主题并当场端到端验证、把测试环境的坑当成分层验证的路标而不是拦路石。
弧线速览
- 调研证伪(→ 伪开源三查律_v1):想改造的 AI-CanvasPro 仓库里根本没有源码(只发二进制的 Electron 应用 + 自定义禁改许可证);同赛道 Jaaz 许可证禁止修改与衍生。结论:真开源 + BYOK 画布是空生态位,自研合法且有价值。
- 技术拍板(用户三选):纯 Web / 自由画布+轻连线(Lovart 式)/ Konva 自研(拒绝 tldraw 水印许可,零许可包袱)。栈:Vite+React19+TS+react-konva+zustand。
- 当日部署产线(第三次复用 ⭐⭐⭐):香港服务器 nginx 子域 + certbot + tar-over-ssh 一键部署 + GitHub Actions(无 secret 时优雅降级只构建)。DNS 用 Chrome 扩展代操作阿里云控制台完成。
- 十版节奏:v0.1 画布骨架 → v0.2 多模态生成与上传(localStorage→IndexedDB)→ v0.3 参考连线 → v0.4 蒙版重绘 → v0.5 视觉对标主站 → v1.0 框选/多画布/@ 引用(正式发布)→ v1.1 浮动面板 → v1.2 手感三连 → v1.3 复制粘贴/右键菜单 → v1.4 小地图/迭代分支。每版一个主题,验证→部署→记忆更新闭环后才进下一版。
提炼的规律
1. 伪开源三查(→ 单独立律 ⚠️ 首次发现)
GitHub 公开仓库 ≠ 开源。查三件事:仓库里有没有源码、LICENSE 是不是 OSI 意义的开源、有没有禁止衍生/竞品条款。一次调查两例命中(AI-CanvasPro 无源码+禁改、Jaaz 禁衍生禁竞品)。详见 伪开源三查律_v1。附赠合法营养通道:功能清单与交互概念不受版权保护——对标产品的节点类型、@ 引用、媒体工具链设计可以当需求参考,代码和 UI 资源不能碰。
2. BYOK 纯静态 = 隐私即架构(⚠️ 首次发现)
“key 只存浏览器本地 + 浏览器直连提供商 + 平台零服务器”这个组合,让”我们不碰你的 key”从承诺变成架构事实(没有服务器可接收)。信任成本最低的开源姿态,且天然零运营成本。唯一门槛是提供商接口的 CORS——主流官方 API 实测放行(DeepSeek 直连 401 说明请求已达身份层)。边界:不支持 CORS 的提供商需要本地代理兜底(未做,路线图)。
3. 验证环境分层(既有母档第 5、6 次再验,家族 ⭐⭐⭐)
本次新撞三个变体:内嵌 Browser 面板 rAF 每秒 0 次(Konva 动画/hit 图全瞎)、VM 用户 Chrome 媒体管线全坏但 canPlayType 说 probably、合成双击 0ms 间隔不被 Konva 认作 dblclick。分层解法已产线化:逻辑断言走 store 层、交互走 puppeteer 无头 Chrome(真 rAF+可信事件)、观感走截图落盘人眼看。细节已补进 Claude预览环境不派发滚动事件_滚动类功能无法行为验证_v1。派生技巧:把”依赖 Konva hit 图”的产品逻辑改成几何包围盒判定,测试路障反而逼出了更稳的实现。
4. 权限红线可以变成产品特性(⚠️ 首次发现)
自动模式分类器拦下”SSH 私钥写入 GitHub secrets”——不绕、不弃,而是把 CI 设计成**“无 secret 时优雅降级为纯构建验证且保持绿色”**,secret 留一条命令给用户自主执行。安全边界被消化成了架构里的一个正常分支,而不是一个”待办的坑”。同族思想:交付前实测证伪律_v1 的”把不确定显式化”。
5. 单版单主题 + 当场验证的十版节奏(⚠️ 首次发现,样本 1 天)
每版只回答一个问题(这版是”生成”还是”手感”还是”视觉”),完成即走”tsc → 端到端断言 → 部署 → curl 验证 bundle → 记忆更新”闭环。好处实测:十次发版零回滚、每版的 commit message 即变更日志、README/Release 收尾时只需汇总不需考古。注意这是单日单项目样本,节奏是否普适待再验。
6. 对外文档与实物同步是收尾硬步骤(既有教训再验)
v1.4 发完后 README 仍标 v1.0、截图还是 v0.5 的旧 UI、路线图挂着已完成项——用户一句”readme 是不是没更新”戳穿。规律:每次发版把”README 版本标签 / 截图 / 路线图勾销 / Release”当 checklist 过一遍,门面与实物不同步比没有门面更伤(访客会按旧图理解产品)。
下次改进
- 最想改的一步:尽早让用户配一个真 key 做一次真实生成——mock 验证只能证明”接线对”,生成质量、真实接口兼容性、错误信息可读性都要真调用才见分晓(宣发前必须补)。
- 行动清单:宣发内容产线启动前先跑通真 key 全链路;大画布性能压测(几百节点);把”README 同步 checklist”塞进发版脚本注释里。
关联文档
- 伪开源三查律_v1 —— 本次立项调研抽出的原子律
- Claude预览环境不派发滚动事件_滚动类功能无法行为验证_v1 —— 验证环境盲区母档,本次补入 rAF=0/hit 图/合成双击三个变体
- ⭐ 交付前实测证伪律_v1 —— 同族纪律:mock 只证接线,真 key 验证列入宣发前置;“诚实边界”写法沿用其精神
- 2026-07-14_vpn-guard从工具到宣传片_全链路复盘_v1 —— 同为”需求→开源→传播”闭环的前作;部署产线与人机共创暗线(Co-Authored-By 收据)在本项目继续复用
- 复盘事实先行原则 —— 本复盘遵循:事实冻结区先行,未验证项显式列出
- 2026-07-20_朱元璋K线人生_历史可视化迭代复盘_v1 —— 同类 Canvas 叙事项目再验证:单轮单问题、分层验证与发布后线上探测能缩短返工闭环。
- ⚠️ OpenAI兼容止于对话端点_多提供商视频接口分流与真key首测_v1 —— 本篇「下次改进」第一条的应验实录(2026-07-20):真 key 首测一次炸出 8 个 mock 看不见的问题(视频端点 404、模型名猜错、UI 连环 bug),收口 v1.5.0