Sno Station
Sno Station is your agents' workstation: open-source software that turns the AI agents you already run into one squad on your own machine. Two heads are better than one, and they get better with every
免费的 Mac 微信防撤回工具。直接下载,跟着图解和真实视频一步一步操作。
Translation pending
PluginsSwift · PythonGitHub @zengtianliOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Native macOS app for WeChat anti-recall. 保留撤回消息,原生 SwiftUI,免费开源。
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗中文 | English
菜单“配置与更新…”可选择使用系统 iCloud 记住提示样式与自动检查后重打偏好,也可导出、导入配置。微信路径、当前机器是否曾打补丁、登录项与系统权限不迁移;恢复配置不等于授权修改新机器上的微信。菜单“检查更新…”按需读取本发行渠道的新版本。
打开产品主页:直接下载、安装图解、播放演示。不需要 GitHub 账号,安装包和视频直接从产品站获取。
| 当前界面导览 | 点开就能看 |
|---|---|
| 未开启、完整生效、仅防撤回生效 | 播放状态导览 |
仓内导览使用 v1.0.13 生产主界面离屏渲染和虚构状态,不执行真实微信补丁或消息操作,不代表性能,也不演示配置与更新窗口。线上导览版本以产品页实际标注为准;产品页另保留 v1.0.4 与 build 269627 测试副本的历史实录,并明确标注旧版按钮差异。录制与验证说明。
反馈与适配记录请带上微信的完整版本、build 和安装渠道;原版安装包可按 SHA256 校验。字段对应与只读提取方法见 微信版本与安装包校验。
不用手动查构建号,也不用记住补丁命令。WeChatUnrevoke 读取你的微信状态,告诉你能做什么,再把操作交给内嵌的 WeChatTweak 引擎。适合希望保留聊天消息、又想用图形界面检查和管理补丁的 Mac 用户。
| 你想做的事 | 应用怎么帮你 |
|---|---|
| 保留消息,也知道对方撤回过 | 默认「保留提示」:私聊保留消息和撤回提示;群聊保留消息,暂不显示提示。 |
| 安静地保留消息 | 切换「静默」,不显示撤回提示。 |
| 看清是否已生效 | 状态由引擎统一判定,详情分别显示防撤回、更新拦截和签名权限。 |
| 减少更新造成的补丁丢失 | 默认尝试拦截自动更新;满足无需密码、微信已退出、曾完整保护成功等条件时,自动重新打补丁。 |
| 拦不住自动更新的版本 | 防撤回与拦截自动更新各自独立执行:拦不住更新(App Store 版由 App Store 负责更新,或更新器尚未收录)时照常开启防撤回,并写明原因。 |
| 撤销操作或报告问题 | 一键还原补丁字节;失败后保留日志,可复制完整诊断报告。 |
免费开源,无激活码。无需关闭 SIP,无内核扩展,无常驻 root helper。 原生 SwiftUI 前端,内嵌 Swift CLI,没有 Python 运行环境。补丁库可联网更新;引擎规则或界面有变化时仍需更新应用。
历史实测:以下数据属于 v1.0.13 (99),不代表当前公开下载 v1.0.15;新版的内存、CPU、启动速度与安装后占用待测。运行指标的对象是本机安装 GUI 的 LSUIElement 隔离副本,只读检查微信状态并离屏绘制首屏。该装机主程序与原公开 ZIP 的摘要不同,运行指标只描述此装机 GUI;表中下载大小独立取原正式 Release ZIP,不能把两者的安装后占用混用。版本、设备与日期由表下小字列明,原始实测保留在 perf/lightweight.json;下载页另从经过 SHA256 校验的当前发行 ZIP 读取包内展开大小。
| 安装包 | 空闲内存 | 空闲 CPU | 冷启动到首屏就绪 |
|---|---|---|---|
| 2.8 MB(装好后 5.9 MB) | 29.4 MB | 0% | 2.2 s |
原生 SwiftUI 界面,无 Python 运行时;读写微信交给包内的 Swift 命令行引擎。窗口打开时每 60 秒只比对一次微信安装包里 5 个路径的文件指纹(不到 1 毫秒),微信没被更新、打补丁或还原就不启动引擎,另每 30 分钟完整检查一次兜底;关窗即停,无常驻后台服务。发布包剥离调试符号。
v1.0.13 (99) · Mac16,12 / Apple M4 / macOS 27.2 · 当前装机GUI的LSUIElement隔离副本;只读本机微信体检并离屏绘制首屏,不联网、不打补丁、不写偏好。 · 2026-10-11。数字来自所列版本与设备的测量记录;当前版本与测量范围以本页说明为准。内存口径为 phys_footprint;CPU 为 60 秒采样窗内 CPU 时间 ÷ 墙钟;大小按十进制 MB。原始数据见 perf/lightweight.json。
在产品主页直接下载,也可以从 GitHub Release 获取 WeChatUnrevoke-<版本>.zip,解压后将 WeChatUnrevoke.app 拖进「应用程序」。升级前退出旧版;从旧名 Unrevoke 升级时,把旧 app 移到废纸篓,避免出现两个入口。设置沿用原 bundle ID,不需要重新配置。
也可以使用 Homebrew:
brew install --cask zengtianli/tap/wechat-unrevoke
# 已安装:brew update && brew upgrade --cask zengtianli/tap/wechat-unrevoke
发布物采用 ad-hoc 签名,没有 Apple 开发者 ID 签名或公证。确认来源是本仓库后,若 macOS 阻止打开,可按以下方式移除这份 app 的下载隔离标记:
xattr -dr com.apple.quarantine /Applications/WeChatUnrevoke.app
打开 WeChatUnrevoke,保持「保留提示(推荐)」,点击「开启防撤回」。系统要求时输入管理员密码,等待重签名结束。⌘R 可以重新检查状态。
防撤回与拦截自动更新是两个独立功能,一个做不了不影响另一个。App Store 版微信由 App Store 负责更新,没有可拦截的内置更新器;有些版本的更新器暂未收录。这时状态显示「防撤回已生效」,下方写明拦不住更新的原因:App Store 版请在 App Store 设置里关闭自动更新;其他版本在微信更新后按提醒重新开启即可。
若提示 You don’t have permission to save ... wechat.dylib、Permission denied 或 Operation not permitted,说明写文件被拒绝;即使日志已显示 Matched config: build 269631,也仍需处理写入权限。先到 系统设置 → 隐私与安全性 → App 管理,允许 WeChatUnrevoke 修改其他 App;没有条目时用 + 添加当前运行的 WeChatUnrevoke.app。完全退出并重开 WeChatUnrevoke,然后重试。更新 WeChatUnrevoke 之后要重新授权一次:本应用是 ad-hoc 签名,系统的这项授权只认授权时的那一版,更新后列表里的开关可能仍显示打开,写入却照样被拒;此时选中 WeChatUnrevoke 用 − 移除,再用 + 添加当前这份。使用 CLI 时应授权启动命令的终端应用。
管理员密码不能代替 App 管理授权。Apple 的说明中,该权限用于允许修改其他应用。相同报错也可能来自文件所有者、ACL 或锁定状态;授权后仍失败,请附上完整诊断报告,继续排查。v1.0.5 起应用会显示此指引,保留原始日志,并在权限失败后暂停本次运行的后台重试,直到你手动重试或重开应用;失败后仍会检查补丁的真实状态。
展开「详情」,确认 防撤回:已生效、签名权限:完整。仅防撤回模式可能显示 「部分保护已生效」,这是更新未被拦截的状态,并不等于防撤回失败。自行打开微信,用一条真实被撤回的消息验证。
微信更新可能清除补丁,更新后请重新检查。遇到问题,点击「复制诊断报告」,在 Issues 附上 app version、last engine log 和 last write error;发布前删去不想公开的个人路径。
由 zengtianli 维护。觉得有用,可以 Star 本仓库,把下载页分享给同样使用 Mac 微信的朋友。版本适配、可复现问题和文档改进欢迎提交 issue 或 PR。
介绍本项目可直接使用 产品素材包:统一名称、图标、中英简介、真实截图和下载链接。截图展示应用功能,不代表每个微信 build 都已验证。
git clone https://github.com/zengtianli/WeChatTweak
git clone https://github.com/zengtianli/WeChatUnrevoke
cd WeChatUnrevoke
ENGINE_REPO=../WeChatTweak ./build.sh
需要适用的 Xcode 工具链和 python3(用于随仓的构建检查)。使用 xcode-select 或 DEVELOPER_DIR 选择 Xcode,不需要维护者本机的工具目录。build.sh 构建并嵌入 universal 引擎、打包配置、ad-hoc 签名并安装应用;只构建可用 INSTALL_APP=0 ENGINE_REPO=../WeChatTweak ./build.sh,回归检查运行 bash tests/run.sh。双架构发布使用 release.sh,它从构建产物直接打包,不安装也不替换本机已装的应用。bundle ID 保持 io.github.zengtianli.unrevoke,显示名与发行包统一为 WeChatUnrevoke。
维护者发布前先做 GUI 副本验收,更新 Info.plist 版本和 docs/releases/<版本>.md,提交后运行:
python3 scripts/publish.py docs/releases/1.0.5.md
发布入口运行回归测试、构建、打包、推送、草稿上传、下载校验、公开发布、Homebrew 同步及产品主页部署。网站下载版本和校验值读取最新公开 Release;已有同版本 Release 不会覆盖。产品主页经 Lintel 上线(重建站点目录、检查、验收、部署并回读线上),站点目录只带当前版本的安装包,旧版本留在 GitHub Releases。主页未上线时,已公开的 GitHub Release 不会撤销,发布入口以退出码 3 结束并打印续接命令;修复后只运行该命令(~/Dev/.venv/bin/python ~/Apps/lintel/engine/lintel.py site ship --site unrevoke --work ~/Library/Caches/unrevoke-site-ship --json),不要重跑发布入口,也不要直接运行 scripts/deploy-site.sh(未经 Lintel 验收的目录会被它的闸拒绝)。实机验收仍需完成,不自动发送 issue 评论。
基于 sunnyyoung/WeChatTweak,引擎维护于 zengtianli/WeChatTweak。4.x 保留提示思路参考 fzlzjerry/wechat-antirecall。感谢提供兼容性反馈与复现日志的使用者。
代码采用 AGPL-3.0。图标由 Seedream 生成,来源记录见 icon/provenance.json。