7天6462★、HN冲到第8:Rust版Photoshop一夜刷屏,“Adobe套件被偷家“的剧情真的来了
7天6462★、HN冲到第8Rust版Photoshop一夜刷屏Adobe套件被偷家的剧情真的来了【免费下载链接】photocraftAn open-source, clean-room reimplementation of Adobe Photoshop in pure Rust项目地址: https://gitcode.com/gh_mirrors/pho/photocraft2026年10月上旬GitHub上一枚名为 PhotoCraft 的星标以近乎失控的速度攀升上线7天收获超过6400颗 star冲上 Hacker News 首页第8位中文互联网则以一句Photoshop 被 Rust 偷家了把这场热度推向了高潮。但热度只是表象——真正值得深挖的是这个项目在架构、工程纪律和产品定位上的硬功夫一个纯 Rust、无一行 JavaScript、无 Electron 壳子的原生图像编辑器如何用 24 个分层 crate、一套 500 命令的命令引擎在开源世界复刻 Photoshop 的菜单、快捷键、PSD 文件语义甚至把整个引擎编译成 WebAssembly 塞进浏览器。本文基于仓库源码与官方文档拆解 PhotoCraft 的增速逻辑、clean-room 复刻的真实边界以及偷家叙事背后哪些是真的、哪些还是愿景。HN双源共振星标增速为什么能排全池第一开源项目的爆发通常遵循外网技术圈首发 中文社区二次传播的双源共振节奏PhotoCraft 的 6462 星与 HN 第 8 位正是这条路径的产物。引爆点是看得见的场景而不是口号。与多数 Rust 项目主打内存安全的抽象叙事不同PhotoCraft 的 README 第一屏就是真实可运行的效果docs/images/photocraft-demo.jpg 展示的是在浮世绘《神奈川冲浪里》上叠图层样式、曲线调整层与实时直方图的真实截图。README 里明确写着Every screenshot here is the real app at work且所有截图都是通过控制通道离屏渲染出来的——这等于把我们真能用变成了可验证的事实而非 PPT。HN 用户对用 Rust 从零写 Photoshop这种硬核工程叙事天然有高点击偏好而截图和 demo 又满足了看到即信的传播门槛两个条件叠加星标增速冲上全池第一并不意外。第二个变量是项目恰好出现在一个真空期。传统图像编辑器领域多年没有出现真正意义上的新原生玩家GIMP 在 3.2 才刚落地非破坏性图层类型其架构掣肘在 docs/architecture.md 中被作者专门复盘——GIMP 把 8-bit 像素、RGB 色彩模型、图层即像素缓冲写死进核心导致 16/32 位支持要等 GEGL 移植数年、非破坏编辑要等 2025 年的 3.0。PhotoCraft 从第一天起就把位深、色彩模型、图层内容全部设计成运行时数据这份前车之鉴的分析贴在架构文档里恰好击中了 HN 上大量对 GIMP 迁移史有记忆的老用户让纯 Rust 从零重写的叙事有了技术可信度也放大了星标的情绪传播系数。PhotoCraft 到底是什么clean-room 复刻的边界抛开热度PhotoCraft 的定位非常明确一个基于 Adobe 公开规范与行为观察、从零实现的 Photoshop 兼容编辑器。它的复刻边界由三重设计划定。第一重边界分层的纯 Rust 工作区整个仓库是一个 Cargo 工作区由 24 个功能 crate 和 3 个应用组成book/src/architecture/crates.mdL0 基础层geom、cms纯 Rust ICC 色彩管理、color27 种混合模式、raster写时复制瓦片以及独立的psd、codecs格式 crateL1–L4doc纯数据文档模型、ops/paint/algo/text/vector算法层、composeCPU 参考合成器与gpuwgpu 合成器、io导入导出L5–L6engine会话与命令注册表ui-eguiegui 壳与automationMCP/无头自动化。分层不是纸面约定而是由cargo xtask layers在构建期强制执行的下层 crate 不得依赖上层ui-egui以下任何代码不得引入 egui/eframe/winitpsd、codecs、cms甚至不依赖工作区内任何其他 crate。这种依赖方向即架构的纪律让换 UI 不动引擎引擎编译到 wasm成为可能——apps/photocraft-web/src/main.rs 里浏览器版跑的就是与桌面版同一个PhotocraftApp只是把文件对话框换成了浏览器文件选择器。第二重边界一切皆命令AGENTS.md 的第一条铁律是Everything is a command任何用户可见行为都必须是一个引擎命令带稳定的 id、label、菜单路径、快捷键与 JSON 参数文档。UI、CLI、JSON 控制通道、MCP 全部通过命令 id 分发crates/engine/src/commands.rs 的CommandSpec定义了 id/label/menu/shortcut/params/enabled/run 六元组。这条规则的直接收益是同一套能力四端复用桌面端能点的脚本和 AI Agent 也能做。README 里给出了最直观的用例——一条命令打开 PSD、加智能锐化、叠曲线调整层、导出 PNGphotocraft-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自动化还不止 CLIbook/src/automation/overview.md 记录了三种入口——一次性任务的convert/inspect/run/batch、保持长会话的servestdio 或回环 TCP、以及面向 AI 的mcp。桌面端还能以photocraft --control port启动一个绑定127.0.0.1、首帧必须携带 256 位 Bearer token 的 NDJSON 控制服务器支持指针输入与离屏截图。安全模型同样写进了文档book/src/automation/security-model.md 列出了读写根目录白名单、256 步批处理上限、1 MiB 请求行/8 MiB 应答上限等具体数值而不是空谈安全。第三重边界格式兼容靠语料库说话PhotoCraft 的 PSD 兼容性不是靠嘴而是靠可复算的语料库门槛crates/io/tests/corpus.rs 中的FLOOR常量是 CI 强制底线只许上调不许下调psd-tools 语料309 个文件渲染 oracle 不低于 229/309重存往返不低于307/309自有 Photoshop 手写 oracle256 个文件oracle 不低于 133/256往返不低于 258/256未建模的原始块、描述符、附加数据会被原样保留而不是丢弃。菜单覆盖方面docs/parity.md 显示 627/627 个 Photoshop 菜单项已全部接线到命令100%但项目自己对这一数字的态度非常清醒菜单接线只度量有没有入口不度量行为是否正确。这正是 docs/roadmap.md 中那份 2026-10-05 诚实评估的意义——功能表面积约 60–70%专业人士能否换过来做日常活仅 25–35%AI/生成式能力为零约 20 个工具缺失与真正的 1:1 奇偶校验还差很多个月。0.2.0 发布两天后合并了约 96 个 PR但公开首用就暴露了文本选区偏移、214 个快捷键失效等在 parity.md 里都算活着的问题。偷家叙事的真实成分恰恰藏在这些数字里。引擎命令层、PSD 往返、GPU 合成器CPU/GPU 奇偶校验 ≤1/255、以及 Cargo.toml 中为 WebAssembly 专门调优的wasm-releaseprofilefat LTO 像素处理 crate 保持 opt-level 3把 wasm 从 26.3 MiB 压到 18.8 MiB——这些是真功夫而替代 Photoshop 做专业日常则明确被项目自己标注为尚未达成。中文社区与海外舆论的偷家叙事如何发酵偷家这个梗能火是因为它同时踩中了三个情绪点订阅制的怨气、闭源的不满、以及 Rust 社区的技术自豪感。海外舆论的底色是HN 技术认同。PhotoCraft 在 HN 的排名靠的是工程叙事——纯 Rust、无 unsafe工作区级unsafe_code forbid唯一例外是封装的数位板输入 cratephotocraft-tablet、1700 测试、cargo-fuzz 模糊测试、以及Never crash工程文化AGENTS.md 要求非测试代码绝不 panic命令对对抗性输入必须返回Err而非崩溃panic_hunt测试对每个命令做对抗性参数模糊。这些是 HN 读者真正愿意点 star 的理由也与中文社区转发时强调的Rust 从零重写形成了共振。中文社区的传播则叠加了Adobe 订阅价格这一现实痛点。不用订阅也能离线运行Adobe 套件被偷家这类标题能在今日头条、搜狐、新浪等平台获得流量本质上是因为 PhotoCraft 恰好长在了 Photoshop 用户对 Creative Cloud 订阅制的长期不满上。项目 README 中Open source, offline, and yours的措辞以及其所属的 ArtCraft 开源工具套件VectorCraft、FilmCraft、LightCraft、PdfCraft 等 8 个应用共享同一套 clean-room 约定被中文媒体报道时自然贴上了开源版 Adobe 全家桶的标签。但叙事与事实之间存在一个必须澄清的落差偷家目前是情绪叙事而非产品现实。PhotoCraft 自己给出的参考系是菜单接线 100%功能表面积 60–70%专业可用性 25–35%AI/生成式能力 0且明确标注早期 alpha。它能打动人的是它在架构层面提前解决的那些 Photoshop 时代遗留的结构性问题——位深与色彩模型是运行时数据、图层是合成图而非像素缓冲、一切行为皆命令、格式兼容由语料库门槛兜底。这些设计意味着距离 Photoshop 还有多远不是一个玄学问题而是一组公开、可复算、定期更新的度量指标docs/scorecard.md 甚至把67 个无效偏好设置150 层文档触发 GPU 合成器崩溃这类尴尬事实原样贴出来。结语7 天 6462 星、HN 第 8 位证明了用 Rust 从零复刻 Photoshop这个选题在技术社区内的号召力但 PhotoCraft 真正稀缺的是它把复刻变成了一套工程方法论分层 crate 的构建期强约束、命令注册表统一一切入口、语料库门槛定义兼容性底线、以及一份会主动公布短板与失败项的诚实路线图。它离偷走 Adobe 的家还有相当距离——AI 能力、缺失工具、专业工作流深度都是硬骨头但它已经证明了一件事下一代图像编辑器的地基不必再是 1990 年代遗留下来的 C 单体架构。至于偷家的剧情什么时候真的上演答案不在星标数里而在 docs/roadmap.md 那份每两周更新一次的诚实评估里。【免费下载链接】photocraftAn open-source, clean-room reimplementation of Adobe Photoshop in pure Rust项目地址: https://gitcode.com/gh_mirrors/pho/photocraft创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Cursor 无限续杯新思路:用 TaoToken 统一 Key 打通 cursor-free-vip 下载与使用

Cursor 无限续杯新思路:用 TaoToken 统一 Key 打通 cursor-free-vip 下载与使用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 0:35:17 阅读更多 →
Infernux 着色模型与 GLSL 实战:打造 PBR、卡通与自定义光照

Infernux 着色模型与 GLSL 实战:打造 PBR、卡通与自定义光照

游戏开发图形学3D渲染 【免费下载链接】Infernux Building a Neural Network-Native Engine (3N). Python authoring, C runtime, Vulkan/WebGPU. Windows, Linux, Android and Web. 项目地址: https://gitcode.com/gh_mirrors/in/Infernux 点击查看 免费下载 Infe…

2026/10/12 0:35:17 阅读更多 →
陈德炼:做 B2B 垂直 AI,第一性任务是变成客户的同类|TaoToken 统一 Key 打通 LLM 与 RPA 落地

陈德炼:做 B2B 垂直 AI,第一性任务是变成客户的同类|TaoToken 统一 Key 打通 LLM 与 RPA 落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 0:35:17 阅读更多 →

最新新闻

docker-alpine 的 rootfs 构建器(builder)全解析:mkimage-alpine.bash 选项与最小化镜像构建实战

docker-alpine 的 rootfs 构建器(builder)全解析:mkimage-alpine.bash 选项与最小化镜像构建实战

云原生运维 【免费下载链接】docker-alpine Alpine Linux Docker image. Win at minimalism! 项目地址: https://gitcode.com/gh_mirrors/do/docker-alpine 点击查看 免费下载 本篇技术指南围绕 docker-alpine 仓库中的 builder/README.md 展开,深入讲解…

2026/10/12 2:04:08 阅读更多 →
Nuclio Azure Event Hubs 触发器(eventhub trigger)实战指南:配置、认证与分区消费原理

Nuclio Azure Event Hubs 触发器(eventhub trigger)实战指南:配置、认证与分区消费原理

云原生后端微服务 【免费下载链接】nuclio High-Performance Serverless event and data processing platform 项目地址: https://gitcode.com/gh_mirrors/nu/nuclio 点击查看 免费下载 Nuclio 通过 eventhub 类型的触发器为函数提供从 Microsoft Azure Event Hubs…

2026/10/12 2:04:08 阅读更多 →
后EVM时代破局:从并行执行到模块化架构的性能安全博弈

后EVM时代破局:从并行执行到模块化架构的性能安全博弈

1. 打破“EVM最优解”的技术惯性:从共识层到执行层的再审视链上生态发展到现在,很少有一个话题能像“EVM之后往哪走”这样,让基础设施团队、应用开发者和安全审计机构同时感到焦虑。EVM作为智能合约的事实标准,支撑了绝大多数DeFi…

2026/10/12 2:04:08 阅读更多 →
Claude Code 接入 Google Search MCP 实现联网搜索

Claude Code 接入 Google Search MCP 实现联网搜索

最近在做项目时发现一个很现实的问题:Claude Code 在终端里确实很能打,但它是拿不到外部信息的。遇到一个新发布的库、一个报错里出现的陌生函数、或者不确定某个 API 当前版本是否还支持,就只能靠模型自己猜。于是我给 Claude Code 接上了 A…

2026/10/12 2:04:08 阅读更多 →
Claude Code接入MCP搜索:配置实战与踩坑指南

Claude Code接入MCP搜索:配置实战与踩坑指南

1. 项目背景与前置准备1.1 为什么要给 Claude Code 接一个“搜索外挂”用过 Claude Code 的朋友应该都有同感:它在代码生成、文件操作、多文件重构这些任务上确实能打,但一碰到“实时信息”就立刻露馅。比如问它某个框架的最新版本号、某个依赖当前几个月…

2026/10/12 2:04:08 阅读更多 →
JanusGraph 核心能力与存储后端选型:从超大规模图处理到 CAP 权衡

JanusGraph 核心能力与存储后端选型:从超大规模图处理到 CAP 权衡

图数据库分布式数据库后端 【免费下载链接】janusgraph JanusGraph: an open-source, distributed graph database 项目地址: https://gitcode.com/gh_mirrors/ja/janusgraph 点击查看 免费下载 导读:本文围绕 JanusGraph 官方文档《The Benefits of Ja…

2026/10/12 2:03:07 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →