辣椒聊自动化工具 · 交付包
版本 1.0.5 / 打包日期 2026-11-01
==================================================

一、环境要求
- Windows 10 / 11
- Node.js 18+（面板、一键脚本、解包都用它；也可以在 config.json 里写 nodePath）
  没装 Node 时脚本按顺序找：config.nodePath → PATH → 用户目录下的 .dsh runtime → Program Files\nodejs
- PowerShell 5.1 或 7
- 客户端 1.0.3（Electron 37.10.3），其他版本需要重取偏移

二、三步跑起来（新机器）
1) 下载客户端：https://www.lajiaoliao.com/#download
   装完不用管安装路径，脚本会自动找（注册表 / Program Files / LocalAppData / 运行中的进程）。
2) 双击「下载并运行.cmd」
   客户端没装：打开官网下载页，然后每 5 秒扫一次安装结果，最多等 10 分钟，装好自动继续。
   客户端已装：带调试端口启动 → 注入探针 → 按 config.json 应用功能 → 起控制台 → 开浏览器。
3) 首次要登录。没登录时脚本停在「还没有账号视图」，登录后重跑一次即可。

三、图形控制台
- 端口 18090，只绑 127.0.0.1；地址带 ?t=<随机token>，无 token 一律 403
- token 每次启动面板都会变，看控制台窗口打印
- 顶部「应用配置」= 按 config.json 全量重放所有开关
- 客户端重启后页面内定时器会清空，需要再点一次「应用配置」或重跑一键

四、功能与开关（config.json）
- accept    自动同意好友（intervalMs 轮询）
- claim     自动抢红包（一条事件多个红包串行领，已领去重）
- blockRevoke 防撤回（只拦 UI，服务端仍记录）
- reply     自动回复：规则、精确匹配、冷却、每小时上限、群白名单
- post      定时发朋友圈（每天 5 条配额，删除不返还）
- addFriend 批量加好友（目标列表 + 间隔）
- clientPath 留空即自动探测；downloadUrl 是「没装客户端」时打开的地址

五、群能力（探针 window.__ljt，1.0.5 新增，全部实测过）
- groupList()                 群列表 + 权限位：lookMemberInfo / applyMemberFriend / needVerification
- memberPool(gids, limit)     群成员 ID 池（去重、排除自己）。lookMemberInfo=0 只挡客户端 UI，
                              SDK 照样能读到 userID / 昵称 / 头像 / 角色
- broadcast(text, gids)       群发文本；全员禁言的群返回 MutedGroup(1403)，记录后继续下一个
- sendImage(file, recv, gid)  发图；recv 与 gid 二选一
- sendImageToGroups(file,gids) 同一张图群发
- precheckAdd(uid)            加好友前预检：allowAddFriend / isFriend

发图的关键约束（踩了很久）：
  createImageMessageByURL 的 sourcePath 必须传 fileMap 的 key（uuid/文件名），不能传磁盘路径。
  传磁盘路径会让 wasm 回读文件、触发重入，报
  "unknown javascript exception @ exec.execWithTimeout"；
  createImageMessageFromFullPath 则静默返回空数组。fileMapSet 必须 await。

六、目录说明（平铺）
ljt-probe.js        渲染进程探针
ljt-cdp-bot.mjs     CDP 命令行工具
ljt-panel.mjs       本地控制台后端
ljt-hook.js         主进程 hook（CDP 9222 / 控制口 18080）
inject.mjs          字节级注入
asar-extract.mjs    零依赖 asar 解包
安装常驻.ps1        安装到副本目录（默认 C:\LJT）
卸载常驻.ps1        回滚到原版
ljt-oneclick.ps1    一键启动 / 注入 / 应用配置 / 起面板
下载并运行.cmd      双击入口（含等待安装）
一键外挂.cmd        双击入口（命令行模式，不等待安装）
控制台.cmd          只起面板
config.json         功能开关
辣椒聊-外挂方案.md  完整逆向记录与实测数据
MEMORY.md           交接记忆（踩坑与当前状态）
*.mp4 / *.png / *.html   演示视频、海报与可重录的界面源码

七、注意事项
- 只改副本目录，不动 Program Files 原版；卸载脚本可完全回滚
- 安装/卸载脚本带删除护栏：拒绝盘根、Program Files、过浅路径、目标等于源
- 客户端更新前先卸载常驻，更新后重装，否则会锁旧版本
- 面板只绑 127.0.0.1；CDP 9222 无鉴权，用完关客户端
- hook 的 debug 来源白名单只放 http://127.0.0.1:18090，不再用通配 *
- 控制口 18080 校验 Host / Origin / Content-Type；设 LJT_HOOK_TOKEN 后还要带 ?t=
- 朋友圈 5 条/天；加好友有每日上限；群回复默认关，开之前先配白名单
- 本工具只在本机运行，不上传账号数据

八、常见问题
- 客户端秒退：环境里可能有 ELECTRON_RUN_AS_NODE=1，一键脚本已自动删除该变量
- 面板打不开：确认「控制台.cmd」窗口还在；地址必须带 ?t=token
- 面板显示未连接：客户端不是从一键/常驻启动的，没有开调试端口
- 点了没反应：先看提示是不是「还没有账号视图（未登录）」，登录后重跑
- 找不到 node：装 Node.js 18+，或把路径写进 config.json 的 nodePath
- 群发报 MutedGroup：该群全员禁言，换群或等管理员解禁
- 发图报 execWithTimeout：检查是不是把磁盘路径传给了 sourcePath，要用 fileMap key
- 出现主进程报错框：用最新安装脚本重装（旧版本 hook 位置错误，已修复）
