PhotoCraft:用纯 Rust 从头重写 Photoshop,两周冲到 2000+ 星

PhotoCraft:用纯 Rust 从头重写 Photoshop,两周冲到 2000+ 星

用 Rust 重写一款经典软件,是这两年开源圈最热的一种玩法。但大多数项目停留在「能打开文件、能看个大概」的阶段。PhotoCraft 是个例外:它把目标直接钉在了 Adobe Photoshop 上——图层、蒙版、调整层、图层样式、文字、矢量、笔刷,以及真正的 PSD 文件读写,全部用一个纯 Rust 写的原生应用来实现。项目 2026 年 9 月 30 日建仓,不到一周就冲到 2000+ 星,采用 MIT / Apache-2.0 双协议。

它最有意思的地方在于两个关键词:clean-room(净室实现)和 agent-ready(为智能体而生)。前者意味着它没有碰任何 Adobe 的专有代码、着色器或素材,全部依据公开规范和可观察行为重写;后者意味着它的每一个菜单项、工具和对话框,背后都是一个命令——人和 AI 走的是同一套引擎。项目地址:github.com/storytold/photocraft。

原生、快,而且真的会 PS

如果你用过 Photoshop,上手 PhotoCraft 几乎没有学习成本——从 ⌘J 到 ⇧⌘D,菜单、快捷键、面板和工具都摆在手部肌肉记忆期待的位置。它不是套了个网页壳:底层是跑在 wgpu 上的 GPU 合成器,后端可选 Metal、Vulkan、DX12 或 WebGPU,配合写时复制(copy-on-write)的瓦片内存和多线程滤镜,没有 Electron,没有 WebView。

功能面上,它把 Photoshop 的核心工作流覆盖得相当完整:

  • 16 种调整层,包括支持分通道编辑的曲线、带实时直方图的色阶、黑白、通道混合器、渐变映射、照片滤镜、可选颜色、颜色查找(.cube / .3dl / .look),而且它们同样能直接作用于像素。
  • 图层样式:投影、内阴影、外发光/内发光、斜面和浮雕、缎面、描边,以及颜色/渐变/图案叠加,可以加在任何图层上(包括文字图层),支持图层间复制粘贴样式,也能直接从 PSD 里读取。
  • 文字、矢量、笔刷、滤镜、自由变换、历史记录面板,以及动作录制回放和 ⌘K 命令面板。
  • 格式:PSD、PSB,加上 PNG、JPEG、TIFF、WebP、GIF、BMP、TGA、ICO、QOI、PNM、OpenEXR、Radiance HDR 和 AVIF,读写对称,支持 8 / 16 / 32 位,另有原生 .pcraft 格式。

PSD 支持:不将就

能不能「真正」处理 PSD,是这类工具的分水岭。PhotoCraft 的 PSD 能力是一个独立的 crate,从 Adobe 公开规范写起,并直接拿真实文件做测试。据官方说明,打开并重新保存后,渲染结果在 psd-tools 测试集的 309 个文件里保住了 307 个,在它自己混合 ag-psd / psd-tools 的 170 个里保住了 169 个;对于尚未建模的部分(原始块、描述符、附加数据),它会原样带过去而不是丢弃。它还有一个「合成预言机」——把自家渲染结果和 Photoshop 自己的合并图像逐像素比对,覆盖渐变插值、图层效果、形状描边、剪切和填充不透明度。

大文件也不怂:PSB、16 位 / 32 位文件,以及 CMYK 和 Lab 文档都能原生打开。

为智能体而生:一个命令引擎,四种入口

这可能是 PhotoCraft 最贴合当下趋势的设计。它的菜单、工具、对话框,全部由一个注册表里 500+ 条命令驱动,而 UI、CLI、JSON 控制通道和 MCP 服务器调用的都是同一批命令。也就是说——凡是你能点出来的,脚本或 AI 智能体也能做。

官方 README 给了几个很直观的例子:

# 无头模式:打开、编辑、保存
photocraft-cli run wave.psd \
  --cmd filter.sharpen.smartSharpen     --params '{"amount":80}' \
  --cmd layer.newAdjustmentLayer.curves --params '{"points":[[0,0],[64,48],[192,212],[255,255]]}' \
  --out wave-final.png

# 把一组动作批量套用到整个文件夹
photocraft-cli batch --actions grade.json --in ./raw --out ./graded

# 让智能体通过 MCP 驱动它
photocraft-cli mcp

桌面版还提供一个仅限本地回环、需要认证的控制通道(photocraft --control),可以用来检查界面状态、用指针事件驱动工具、以及离屏截图——README 里所有截图都是这么渲染出来的。

底下是怎么搭的

  • 引擎优先:纯数据文档模型 + 命令引擎,上面只叠了一层薄薄的 egui 界面;24 个 crate 的分层在编译期强制约束。
  • 两个合成器互相校验:CPU 合成器作为参考预言机,wgpu 合成器负责把画布推上 GPU,两者互为对照测试。
  • 写时复制瓦片:256² 稀疏瓦片让撤销变得廉价、大画布变得轻量,效果图按图层状态缓存。
  • 跑在浏览器里:整个引擎和界面能编译成 WebAssembly。
  • 测过:1700+ 个测试,涵盖 PSD 往返、合成器预言机和多深度校验。

坦白说,它还不是「替代品」

值得称道的是,作者在 README 里专门写了一段「诚实评估」,直接点明:PhotoCraft 目前处于早期 alpha,虽然 Photoshop 的大部分功能面都能找到某种形式的实现,但它还不是能用于日常专业工作的 Photoshop 替代品。最大的缺口是 AI / 生成式功能、约二十个尚未实现的工具、排版和专业工作流的深度,以及插件兼容性。用作者的话说——每一个 Photoshop 菜单项都挂上了命令(见 docs/parity.md),但这衡量的是「接线」,不是「行为」。

不过对于一款刚建仓两周、还在 alpha 的开源项目来说,能做到「真实 PSD 往返 + 500+ 命令 + 1700 测试 + 编译到 WASM」,已经远比「又一个 Rust 练手项目」扎实。它属于更大的 ArtCraft 计划——同一团队还在用同样的净室思路做矢量(VectorCraft)、视频(FilmCraft)、照片库(LightCraft)、PDF(PrintCraft)等一系列创作工具。

怎么试用

git clone https://github.com/storytold/photocraft
cd photocraft
cargo run --release -p photocraft -- image.psd   # 桌面应用
cargo test --workspace                           # 测试套件

macOS、Windows、Linux、FreeBSD 和 Web 版的安装包都挂在每个 GitHub Release 上;Linux 下可选 AppImage、.deb、.rpm、tarball 或 Flatpak。

小结

PhotoCraft 把「用 Rust 重写 Photoshop」这件事,从一句口号做成了一个认真对待工程细节的项目:净室实现规避了法律风险,双合成器保证渲染质量,命令引擎让同一套能力既给人用也给智能体用。它离成熟还很远,但作为一款值得长期观察的开源图像编辑器,起点已经相当高。适合想研究 Rust 大型 GUI / 图形管线架构的人,也适合把「agent 驱动的设计工具」当成未来方向的人。

项目地址:github.com/storytold/photocraft,官网:getartcraft.com/apps/photocraft,社群:discord.gg/artcraft。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享