飞书多开克隆
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_0db36cac/feishu-clone。
技能介绍
要解决的问题
飞书和 Lark 都是 Chromium 应用,进程单例锁写死在 ~/Library/Application Support/LarkShell/。就算你加 --user-data-dir 指向别处,应用也不会移动这把锁——第二个副本会去抢同一个锁,被正在运行的那个弹开。结果就是:一台 Mac 同时只能登一个账号,想换到另一个组织或账号必须整个退出重登,会话、未读、草稿全部丢失。
它怎么工作
脚本直接改二进制,而不是传启动参数:
- 字节补丁:在所有含
LarkShell的 Mach-O 里,把这个 9 字节目录名替换成LarkClone(长度相等,偏移零位移)。克隆实例随后算出自己独立的数据树,数据、登录态、单例锁彻底分开。 - 自更新拔牙:把
darwin_updater换成exit 0桩,并对 update/download 目录加chflags uchg。两层一起上,因为单独一层都能被绕过——官方更新会把补丁悄悄改回去,克隆又变回抢锁的对手。 - 自签名:先签 dylibs/helpers/frameworks,再签外层
.app(codesign --deep不会给嵌套 helper 重新封签,应用会拒绝启动),最后用--strict --deep校验。 - 图标区分:对
app.icns里的 PNG 做色相旋转,Dock 上两个图标一眼可辨。 - 自动探测源:依次检查
/Applications/Lark.app、/Applications/飞书.app、~/Applications/Lark.app、~/Applications/飞书.app,首个命中即用。agent 不需要判断当前是飞书还是 Lark,脚本自己知道。
一次执行约 4 分钟,大头是 cp -R 和 ad-hoc 重签。跑完打印 DONE.,手动启动克隆、登第二个账号即可。
边界与注意
- 克隆是冻结快照。它不跟随官方迭代,早晚会落后于服务端要求的最低客户端版本,表现为一段时间后突然「登录失败」。解法是拿新版源应用重跑脚本重建。
- 补丁必须全部命中。脚本对残留旧字符串做硬断言,发现还有文件带
LarkShell就直接 FATAL,绝不静默产出坏克隆。若未来版本改了数据目录名,用OLDDIR=/NEWDIR=传入新名字,两者长度必须相等,否则补丁落不了位。 - Xcode Command Line Tools 可选。没装则图标不重着色,纯观感问题,功能不受影响。
- 架构:Apple Silicon 已验证,Intel 理论可行但未测试。不依赖 brew/npm/node/python,不需要 root、不关 SIP、不跟 Gatekeeper 纠缠。
- 清理:
~/Library/Application Support/LarkClone/可rm -rf重置克隆状态,脚本从不碰真实的LarkShell/。
使用场景
- 客户项目与内部协作账号并行:在同一台 Mac 登录两个飞书实例,分别处理群消息和云文档。
- 个人与工作账号分离:希望 Dock 保留两个图标,一眼区分当前打开的是哪个账号。
- 长期登录外包项目账号:依赖克隆实例不自动更新,避免补丁被覆盖后丢失第二会话。
- 跨组织调试内部工具:同时打开飞书与 Lark,验证不同登录态和版本下的页面表现。
适合人员
- 需要同时登录两个飞书账号的 macOS 工程师,不想频繁退出重登影响调试。
- 负责甲方项目与内部团队协作的运营人员,需要分开处理两套群消息和文档。
- 研究 Chromium 单例锁与 Mach-O 补丁的桌面应用开发者。
- 想区分个人和工作飞书的 macOS 用户,希望 Dock 上有两个明显不同的图标。