超好用的截图工具
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Snow Shot 是一款面向桌面端深度打磨的高性能截图、标注、贴图与 AI 生产力工作台。项目基于 Tauri v2 + Rust + React 19 构建,坚持本地优先(Local-First)与隐私自治原则。
本项目作为深度增强演进分支(Fork 自 mg-chao/snow-shot),不仅全面重构了符合人类心智与操作习惯的卡片化交互界面,深度整合了本地大模型(Ollama / vLLM / Qwen)的智能识别与极速翻译能力,更针对 Windows 7×24 小时长期后台驻留、长截图稳定性、跨进程大图传输性能以及多架构全自动 OTA 升级机制进行了系统性的工业级硬化。
为满足复杂生产环境(包括完全离线/政企内网环境、本地私有化大模型联动、长期后台免维护运行等高可靠场景),本项目在原版基础上进行了全方位的架构重构与能力升级:
| 功能维度 | 原官方版本 (Upstream) | 本项目增强版 (llw2011/snow-shot) |
|---|---|---|
| 界面交互 (UI/UX) | 传统单列长表单排版,主功能层级深;二级对话/工具页面无显式返回导航 | 全新卡片化工作台(Workbench),功能区块化、快捷键状态一目了然;设置中心多级结构化重构;对话与工具页面标配统一返回导航(返回按钮、Esc 快捷键、窗口控制及拖拽区域) |
| 本地大模型支持 | 仅支持固定配置;模型名称须手动精准输入,无预检机制 | 智能模型探针(Model Probe):自动抓取 /v1/models 本地/远程模型列表;内置连通性测试与延迟测速;请求去抖中断与本地 LRU 缓存 |
| Windows 驻留稳定性 | 锁屏/睡眠/待机唤醒或 RDP 断开后,快捷键易失效或 WebView 假死 | Rust 原生持有全局快捷键(不依赖 JS 桥接);会话与渲染器自愈守护(WTS/电源事件唤醒后自动探活与重建) |
| 大图内存与 IPC 通信 | 高清/多屏截图通过 Base64/常规 IPC 传输,偶发内存暴涨或 IPC 阻塞 | WebView2 共享内存缓冲区(Shared Buffer):零拷贝/低拷贝内存直通;严格限定超时回收与清理兜底 |
| 离线与政企环境适配 | 强依赖系统已安装的 WebView2 运行时,无网/老旧环境无法启动 | 提供内置 WebView2 固定运行时版本(Fixed Runtime),无需联网下载依赖,开箱即用;提供完整离线资源包 |
| 多端发布与 OTA 更新 | 基础发布脚本,多平台构建与更新存在碎片化和 CDN 缓存陷阱 | 工业级五平台并行 CI/CD 矩阵;两阶段集中签名(Minisign)与 checksums.json;自动验签与 CDN 收敛检测 |
| 主题与视觉质感 | 基础浅色/深色模式,部分透明圆角窗口存在黑边与文字发虚 | 多套专属调优主题(雪原 Snowfield、极简黑白 Monochrome 等);透明抗锯齿裁剪优化;字体渲染清晰度提升 |
AbortController 及时终止已作废的旧请求,并配合本地 LRU 缓存,极大降低本地 GPU 负担。Esc 快速退回、统一的拖拽区域与窗口控制按钮,符合桌面软件操作直觉。checksums.json),并使用 Minisign 密钥签名。flowchart TD
subgraph UI["前端交互与展示层 (React 19 + Rsbuild + Ant Design 5)"]
WB["工作台首页 (Home Workbench)"]
Canvas["截图标注画板 (Excalidraw Editor)"]
PinWin["智能贴图窗口 (Fixed Content)"]
ChatTool["AI 对话与翻译工具 (Chat & Translate)"]
Sett["分层设置中心 (Layered Settings)"]
Router["TanStack Router (Layout / NoLayout 双轨架构)"]
end
subgraph IPC["Tauri v2 桥接与跨进程通信层"]
Commands["Tauri Commands (Rust 强类型调用)"]
Events["Tauri Event Hub (双向异步事件总线)"]
SharedBuf["WebView2 共享内存缓冲区 (Shared Buffer)"]
end
subgraph Native["Rust 原生核心服务层 (Core & App Services)"]
OSCap["系统级屏幕捕获 (Windows WGC / HDR / macOS ScreenCapture)"]
Hotkeys["全局快捷键管理 (Rust 原生直接持有 / 自动探活)"]
SessionMgr["Windows 会话自愈守护 (WTS / 电源 / 屏幕事件监听)"]
ScrollStitch["滚动截图图像特征匹配与拼接算法引擎"]
FileCache["配置与本地数据持久化 (Portable / AppData)"]
PluginMgr["本地插件沙箱与 SHA-256 完整性校验"]
end
subgraph AI["智能引擎与外部计算生态"]
LocalLLM["本地大模型 (Ollama / vLLM / Qwen 本地服务)"]
RemoteAI["OpenAI 兼容云端接口"]
RapidOCR["本地 RapidOCR 引擎 (ONNX Runtime 本地推理)"]
FFmpegPlugin["本地 FFmpeg 录屏引擎"]
end
UI --> IPC
IPC --> Native
Native --> AI
传统 Electron 或 Tauri 应用常因长时间后台静默导致 WebView 被系统挂起或丢帧。本项目采用 Rust 原生守护与探活自愈机制:
flowchart TD
subgraph Triggers["唤起与系统事件"]
K1["全局快捷键触发"]
K2["托盘菜单点击 / 单实例次进程拉起"]
K3["系统事件:锁屏解锁 / 睡眠唤醒 / RDP 重新连接"]
end
subgraph RustDaemon["Rust 原生守护层 (Session Guard)"]
P1{"主 WebView 状态探活 (Probe)"}
R1["无缝重建 / 重新加载 WebView2 运行环境"]
D1["定向派发原生动作 (execute-native-action)"]
end
subgraph WebviewRenderer["前端交互执行层"]
H1["全局事件捕获器 (GlobalEventHandler)"]
Act["呼出截图选区 / 贴图置顶 / 打开翻译 / 启动录屏"]
end
K1 --> P1
K2 --> P1
K3 --> R1
P1 --"响应超时或 WebView 挂起"--> R1
R1 --> P1
P1 --"探活通过"--> D1
D1 --> H1
H1 --> Act
flowchart LR
subgraph Phase1["阶段一:校验与前置准备 (Prepare)"]
P["Prepare 任务<br/>不可变 Tag / 版本 / 签名配置校验"]
end
subgraph Phase2["阶段二:5 平台独立并行构建 (Build)"]
B1["Windows 标准版<br/>(Evergreen)"]
B2["Windows 固定运行时版<br/>(Fixed WebView2)"]
B3["Windows 离线版<br/>(Offline Assets)"]
B4["macOS Apple Silicon<br/>(aarch64)"]
B5["macOS Intel<br/>(x86_64)"]
end
subgraph Phase3["阶段三:集中签名与发布 (Publish)"]
Collect["跨平台产物汇聚与 checksums.json 生成"]
Sign["Minisign 集中数字签名"]
Manifest["自动生成 latest.json 更新清单"]
Release["正式发布 GitHub Release"]
CDN["CDN 节点缓存收敛自动化验证"]
end
Phase1 --> Phase2
B1 --> Collect
B2 --> Collect
B3 --> Collect
B4 --> Collect
B5 --> Collect
Collect --> Sign
Sign --> Manifest
Manifest --> Release
Release --> CDN
请前往 GitHub Releases 页面获取适合您操作系统环境的安装包:
| 发行包类型 | 适用环境 / 场景推荐 | 文件命名格式 |
|---|---|---|
| Windows 标准安装版 | 绝大多数日常 Windows 10/11 用户,系统自带 WebView2 环境 | snow-shot_<ver>_x64-setup.exe |
| Windows 便携免安装版 | 存放于 U 盘或移动存储中,配置和数据完全保存在当前目录(绿色便携) | 解压便携包,同级创建 __portable 目录即可 |
| Windows 固定运行时版 (Fixed) | 政企内网、隔离网络或未安装/无法更新 WebView2 的机器(内置独立 WebView2) | snow-shot_<ver>_x64-fixed-setup.exe |
| Windows 纯离线版 (Offline) | 无法连接公网下载任何插件/依赖的严苛内网环境 | snow-shot_<ver>_x64-offline-setup.exe |
| macOS Apple Silicon 版 | 搭载 M1/M2/M3/M4 系列芯片的苹果电脑(原生 aarch64) | snow-shot_<ver>_aarch64.dmg |
| macOS Intel 版 | 搭载 Intel 处理器的传统苹果电脑(x86_64) | snow-shot_<ver>_x64.dmg |
[!NOTE] 发布的 OTA 自动更新通过 Tauri 内置 Minisign 进行数字签名与防篡改验证。由于个人开源项目未购买商业代码签名证书,初次安装可能出现系统安全提示(如 Windows SmartScreen),选择“仍要运行”即可。
rustup update 升级到最新稳定版)画板编辑器使用与仓库同级的 mg-chao/excalidraw(分支 custom/master):
# 1. 在同一父级目录下克隆主仓库与 Excalidraw 依赖
git clone https://github.com/llw2011/snow-shot.git snow-shot
git clone --branch custom/master https://github.com/mg-chao/excalidraw.git excalidraw
# 2. 编译 Excalidraw 画板依赖包
cd excalidraw
yarn install --frozen-lockfile
# 3. 安装 Snow Shot 依赖并进入开发模式
cd ../snow-shot
pnpm install --frozen-lockfile
pnpm update:excalidraw
# 4. 启动开发模式
pnpm dev # 启动前端 Rsbuild 独立调试服务
pnpm dev:tauri # 启动 Tauri 原生桌面端混合调试
pnpm build # 编译生产环境前端静态资产
pnpm build:tauri # 构建默认公开发行版安装包 (Tauri Bundle)
pnpm build:tauri:custom # 构建包含自定义网络服务能力的定制安装包
pnpm test:release # 执行发布前完整一致性与配置校验测试
LICENSE-CommercialLICENSE-NonCommercial