郭立 (leeguoo)

# 上班摸鱼聊微信,把它搬进终端、还伪装成 dev 工具——以及背后的原理

开放工位上荧光绿的微信图标 + 满屏聊天气泡太显眼。三招让屏幕上看不出在聊微信:终端里收发(读解密 DB + 后台发送)、把微信 App 伪装成开发工具(换 Info.plist/图标 + 重签外壳)、老板键一键隐藏(全局热键 + hide 进程)。每招都讲清怎么做到的。

2026年6月30日 · 文章 · 公开

本页目录

开放工位有个老问题:趁摸鱼回个微信,可那个荧光绿图标 + 满屏聊天气泡,隔着三米都认得出。老板从背后走过,一眼就知道你没在干活。

wechat-use 这个把 macOS 微信变成本地命令行工具的项目,顺手能解决这个尴尬。三招下来,屏幕上再也看不出在聊微信。下面每招都连着讲清楚是怎么做到的。

摸鱼三件套

第一招:把聊天搬进终端

wechat-use chat 在终端里开一个聊天界面,长得跟 Claude Code 那种 TUI 一样:左边会话列表,右边消息流,底下输入框,打字回车就发。

$ bash
wechat-use chat              # 进会话列表,上下选
wechat-use chat 张三          # 直接进跟某人的对话

怎么做到的

这个 TUI(用 Rust 的 ratatui 画的)本身不碰微信界面,它接的是底层三条数据流:

  • 历史消息:微信的聊天记录存在本地的 SQLCipher 加密库里。拿到账号的解密 key 之后,直接读解密后的库,会话列表、历史、搜索全是 SQL 查出来的,跟微信客户端开不开没关系。
  • 新消息:一个常驻后台进程(daemon)盯着这些库文件的变化(FSEvents),库一被写入就把新行解出来推给 TUI,所以你在终端里能实时看到来信。
  • 发送:输入框回车后,消息是后台发出去的——不弹微信窗口、不抢你的鼠标键盘。这条后台发送链本身怎么做到不附着微信、又不搞坏数据库,我单独写过一篇:从「挂调试器」到「零附着」。收到的图片在 TUI 里先显示成 [图片],敲 /img 才用系统默认看图器打开。

效果是:同事路过,看到的是一个黑底窗口、一堆等宽字、一个像在跑命令的人。屏幕上压根没有微信那个样子,自然没人觉得你在聊微信。

第二招:把微信 App 本身伪装掉

终端那关过了,还有破绽:Dock 里的绿图标、Cmd-Tab 切应用蹦出来的「微信」、活动监视器里赫然写着 WeChat。瞄一眼就穿帮。

$ bash
wechat-use disguise list      # 看有哪些伪装皮
wechat-use disguise apply console   # 微信变成 Console、图标也换成终端
wechat-use disguise status
wechat-use disguise restore   # 一键变回原来的绿色微信

怎么做到的

macOS 上一个 App 的「身份」其实就来自它 .app 包里的几样东西:Info.plist 里的 CFBundleName / CFBundleDisplayName(Dock 和 Cmd-Tab 显示的名字)、Resources 里的 .icns 图标文件。把这几样换掉,系统看到的就是另一个 App。

但有个绕不过的环节:改了 .app 包里的任何文件,原来的代码签名就失效了。签名一坏,Gatekeeper 会拦、之前授过的辅助功能 / 屏幕录制等 TCC 权限也会失认。所以换完图标和名字,必须对这个 .app 重新做一次 ad-hoc 签名,系统才认。

这里有个关键边界,也是踩过的坑:重签只动 .app 外壳,绝不碰里面那个负责发消息的核心库。原因是发送依赖按文件哈希(SHA-256)精确匹配这个库的版本来加载对应的适配数据;一旦改了它的字节,哈希变了,就匹配不上,发消息直接失效。最早图省事顺手连库里的配色也改了,结果 send 当场报废,就是这么炸的。所以 disguise 的设计是:外壳随便伪装,内核一个字节不动。

第三招:老板真凑过来了,一键隐藏

前两招防的是「瞄一眼」。要是老板直接走到桌前,得有个瞬间隐藏的硬开关。

$ bash
wechat-use disguise bosskey on    # 装上全局快捷键

之后按 ⌃⌥Space(Control + Option + 空格),微信瞬间藏掉;老板走了再按一下,原样回来。

怎么做到的

老板键挂的是一个 macOS 系统级全局热键:一个常驻的小后台程序(LaunchAgent)向系统注册 ⌃⌥Space 这个组合键,不管你当前焦点在哪个 App,按下都会被它截获。触发时它对微信进程发一个隐藏动作(等价于把这个 App 隐藏起来),再按一次再恢复。因为是系统级注册,所以你正在终端、浏览器、IDE 里都一样灵。

怎么用 / 怎么还原

这套都在 wechat-use v1.17.0 里(GitHub),装好跑 wechat-use init 抽完 key 就能用。chat 是只读 + 后台发送,disguise 只改 App 外壳、不碰聊天数据,disguise restore 随时一键变回绿色微信。

技术上没什么黑魔法:读解密的本地库、换 .app 的图标和名字再重签、注册一个全局热键。三样拼起来,就是一套屏幕上不露馅的微信。至于上不上班摸鱼,那是另一回事——真要摸,至少别被那抹荧光绿出卖。

下一篇 →
让微信在后台替你发消息,我曾经把它的数据库搞坏 —— 从「挂调试器」到「零附着」

评论

评论发布后会立即公开,如触发规则可能被审核下架。

最多 1000 字。