{"repo":"StringKe/terminal-farm","free":true,"listed":false,"github":"https://github.com/StringKe/terminal-farm","clone":"git clone https://github.com/StringKe/terminal-farm.git","description":"QQ 经典农场或者微信经典农场自动化挂机工具 — 全屏终端 UI + 多账号 + HTTP API | Bun + TypeScript + Ink","language":"TypeScript","stars":80,"topics":["automation","bot","bun","ink","terminal-ui","typescript","wechat","qq-farm"],"license":null,"category":"workflow-automation","readme_excerpt":"QQFramBot 通过注入 QQ 小程序进程实现的 QQ 农场自动化机器人。在真实客户端内操作，不逆向协议，不伪造客户端。 原理 QQ 农场运行在 QQEXMiniProgram（Electron 37 / Cocos Creator）中。通过 LLDB 将 dylib 注入主进程，dylib 在 V8 主线程启动一个 TCP RPC 服务，Rust bot 连接 RPC 向游戏页面注入 JS 并执行操作。 前置条件 - macOS，SIP 已关闭（ csrutil disable ） - QQ 桌面版已安装，QQ 农场小程序已打开 - Rust toolchain - Xcode Command Line Tools（提供 lldb 、 cc 、 codesign ） 使用 端口号由 qqbot-loader 输出，也写入 /Library/Containers/com.tencent.qqexminiprogram/Data/rpc port.txt 。 项目结构 技术细节 注入链路 ：dylib 的 attribute ((constructor)) 在 dlopen 时执行，通过 uv async send 将回调调度到 V8 主线程。回调用 V8 C++ API（ Script::Compile / Script::Run ）执行 bootstrap JS，bootstrap 通过 process.mainModule.require('fs') 读取 rpc server.js 并用 vm.runInThisContext 执行。 RPC 协议 ：每条消息 = 4 字节大端长度 + JSON。请求 {\"id\":1, \"js\":\"...\"} → 响应 {\"id\":1, \"ok\":true, \"result\":...} 。 游戏访问 ： process.mainModule.require('electron').webContents.fromId(N).executeJavaScript() 将 JS 注入到游戏页面的 V8 context，该 context 有完整的 Cocos Creator API（ cc.director 、 cc.find 、场景节点树）。 已验证的农场结构 ： - FarmMapComp ：4x6 网格 - LandComp ：24 块地（ grid 0 0 grid 3 5 ） - PlantComp ：24 个植物槽， gridX/gridY != -1 表示已种植 与 terminal-farm 的区别 terminal-farm 通过逆向 WebSocket 协议直连服务器，需要处理 WASM 加密、设备指纹伪造、行为上报模拟。协议更新即失效。 本项目在真实 QQ 客户端内操作，所有网络通信由客户端原生处理。不涉及协议逆向、加密解密、反作弊对抗。代价是需要 macOS + SIP 关闭 + QQ 客户端运行。","default_branch":null,"files":null,"tree":[],"storefront":"/r/StringKe","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/StringKe/terminal-farm/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}