偃师 Yanshi
一个无头(headless)图像编辑引擎:只追加的原子日志、由日志折叠求值出的状态、纯 Rust 渲染计算内核、零依赖的 HTTP/WebSocket 服务端,以及一个最小的 Web 查看器。同一份内核在服务端原生编译,在浏览器里编译为 WebAssembly。
设计取向
- 日志即真相。每次编辑写成一条原子,追加进日志;当前状态由日志折叠求值得到。撤销与重做只移动指针,不是"把操作反过来做一遍"。
- 一份内核,两处运行。拖动时的乐观预览与最终落笔是同一份实现,不是两套代码各自近似。
- 确定性。同样的输入得到同样的输出。导出与重放有逐字节比对的测试守着。
- 可搬走。
.yanshi工程包是未压缩 tar,内含原子日志、文档元数据、日志引用到的全部 blob,以及导出时当场渲染的一份 HEAD 预览。任何系统的tar都能列出与解开。
工具面
--profile all 一个词开启全部已实现的组:114 个工具(只开 core 是 46 个)。图层混合模式按渲染层那份清单校验,不认识的名字会被明确拒绝并列出可用值,而不是写进日志之后被静默忽略。
当前状态
- 版本 0.1.0,尚无已发布的发行版。源码从 GitHub 取得,
make release自行打包(带校验和)。 semantic工具组按既定裁定只作预留,未实现。appearance.texture的纸纹是近似水彩纸与画布,可调;但没有专门的"粗纹水彩纸 / 帆布纹理"预设。- 浏览器端内核是构建产物,新克隆的仓库里没有它。缺了它不会报错,查看器会退回服务端渲染;要本地渲染就按 README 构建。
联系
缺陷上报与协作沟通:yanshi@wangda.today。安全漏洞请不要开公开 issue,直接发邮件。
取得源码
git clone https://github.com/gradetwo/yanshi.git
cd yanshi
make check # 格式、静态检查、测试
make release # 打包发行版:两个可执行文件、浏览器端 WASM 内核、介质插件
- 仓库:github.com/gradetwo/yanshi
- 源码下载(zip):main.zip
- 设计文档(权威规范,中文):yanshi-v1.0-draft4.md
- 说明文档:README.zh-CN.md|README.md