Files
workphone-sdk/开发文档/功能迭代记录.md
2026-07-29 23:27:43 +08:00

123 KiB
Raw Blame History

工作手机功能迭代记录

2026-07-29建立工作手机专有名词解释文档

  • 新建 开发文档/2、架构/01-总览/专有名词解释.md
  • 覆盖产品系统、设备通信、Hook/Frida、接口回执、风控验收、数据库文件六类术语。
  • 统一 SDK、Hook、RPC、Agent、trace_id、readback、RiskSentinel 等词的写法和判定口径。

2026-07-29微信风控统一统计台账

  • 新建 开发文档/2、架构/05-规范/微信风控统计与执行台账.md,作为微信风控唯一统计入口。
  • 汇总服务端 _anti_ban_guardrate_limiterbatch_pacing、Android RiskSentinel、Hook三份镜像和业务回读证据。
  • 固化风险事件码、每日统计字段、代码检查清单、停批决策和待办IDRISK-001~005

本文件记录本项目新增的功能拆解、开发流程和架构调整;历史细节仍以 开发文档/10、项目管理/开发进度总表.md 与需求真源为准。

2026-07-29微信批量操作随机间隔与停批门禁

  • 新增统一服务sdk/app/services/batch_pacing.py,采用基础间隔±小范围随机抖动。
  • 批量消息、群发、批量加好友、群成员加好友、批量改备注、批量收款统一增加 interval/jitter/stop_on_risk
  • 等待只发生在真实写入成功后dry-run不等待账号限制、频控、静默降权等 风险信号触发后立即停止后续项目。
  • massSend手机本机Frida RPC已支持逐目标随机间隔并同步三份Hook镜像。
  • 新增test_wechat_batch_pacing_contract.py,覆盖随机范围、最小间隔、风险识别、 六类请求模型及Hook执行门禁。

2026-07-25工作手机APK安装资源整理中文根目录

  • 新建中文目录:/工作手机/工作手机安装资源包
  • 汇总 APKapk/ 放入 v5.0.10 最新版 + 历史版本(v5.0.1 / v5.0.2 / v5.0.8 / v5.0.9)。
  • 汇总相关工具:工具/ 放入安装、启动、部署、配置相关脚本及配置文件,便于同一入口管理。
  • 新增索引文件:
    • 工作手机安装资源包/README_安装资源包.md
    • 工作手机安装资源包/索引/安装目录索引.md
    • 工作手机安装资源包/索引/文件清单.txt
    • 工作手机安装资源包/工具/安装目录说明.md
    • 工作手机安装资源包/apk/checksums.sha256
  • 文件清点:
    • 最新APKworkphone-agent-v5.0.10-release.apk
    • 校验文件:checksums.sha256
  • 说明:本次整理仅做目录与资料归集,未改变安装脚本执行逻辑。

2026-07-25工作手机前端设备页状态去重

  • DevicePage 补充显示 IMEI / 设备标识,优先读取 binding.encryptedImei,并在无值时回退 imeiMasked / serialNumber / id
  • 新增“功能状态”分组集中呈现微信运行、SDK 连接、注入引擎、平台连接;动作入口集中在该区。
  • 高级连接与维护 区去掉与“功能状态”重复的“平台连接/SDK连接/注入引擎”入口,避免重复操作。
  • 目标文件:sdk/android-ui/src/pages/DevicePage.tsx
  • 验证:
    • Vite 编译通过(npm --prefix sdk/android-ui run build

2026-07-25设备扫码绑定二维码支持本机/局域网服务器可选

  • sdk/app/static/hub.html
    • 在“手机设备”二维码绑定弹窗中新增绑定目标服务器选择与输入框,支持局域网 IP/端口(如 ws://192.168.x.x:8899/ws/device)与公网地址自由切换。
    • openBindQRCode / generateBindQR / applyBindServerChoice / getBindServerInput 统一从弹窗读取服务器并写入二维码负载,二维码下方清楚展示当前回连地址。
    • 新增 normalizeBindServer / availableBindServers / bindingServer 逻辑,自动补全/归一化地址并带入局域网扫描与 server-info 候选。
    • 新增本地持久化(localStoragewp_bind_server_v1:扫码上一次选的服务器会记住,不再每次默认回退公网。
    • scanLanDevices / loadServerInfo 在发现本机服务时优先更新绑定基准,优先展示与扫码一致的目标服务器。
  • 验证:
    • 前端 JS 语法通过(node -e "new Function(...)”
    • 待你线上机型点击“+扫码绑定”后实机扫码验证(选择同/不同服务器是否成功落链)。

2026-07-24工作手机全链路切 WS-First禁 ADB 回退)

  • 已确认当前 /api/v3/connection/statusws_first=trueonline_ws_count=1adb_count=0,执行入口改为服务器 WebSocket 优先。
  • 已在 sdk/.env 设置:
    • WORKPHONE_WS_FIRST=1
    • WECHAT_WS_HOOK_ONLY=1
    • WORKPHONE_HOST_ADB_PROBE=0
    • WECHAT_BACKEND_ONLY=1 以锁定“微信能力与统一分发不走 ADB 回退”执行口径。
  • 说明:当前服务为本机 Uvicorn 进程(非 Docker 容器)直接监听 :8899,如有重启部署请同步加载以上环境值并以服务器链路复测 message/sendconnection/statushook/probe

2026-07-24Type-C 注入引擎启动复苏

  • sdk/agent/start_agent.sh 增加 frida 自动检测与自启逻辑:检测端口、尝试 termux_frida_up_onphone.sh --no-agent --port,回退直接拉起 frida-server。

  • sdk/agent/install.sh 前台启动与 watchdog 默认改走 start_agent.sh,保证启动即执行注入预检流程。

  • sdk/agent/package.sh 打包项新增 start_agent.shwait_and_start.shtermux_frida_up_onphone.sh(离线部署可用)。

  • 同步 sdk/app/agent 对应文件,减少路径切换误触发。

  • 自检通过:sdk/agent/package.sh 可正常打包,包内含新增脚本。

2026-07-23奥创S2全量备份续跑与NAS归档

  • 明确完整关系链:租户/公司 → 部门 → 设备 → 微信号 → 好友 → 好友聊天/群聊 → 媒体 → 财务。
  • 审计历史导出371个微信号、2个微信号好友下载完成、5701个好友、聊天记录0、媒体0。
  • 修复 s2_full_data_export.py:限流指数等待、失败不误标完成、好友/消息分页断点、去重、媒体 SHA-256、孤儿关系检查、完整性报告。
  • 历史导出包675个文件、约41MB已同步到公司NAS /volume1/docker/workphone-sdk/data/s2_archive/20260608_111600/
  • NAS逐文件 SHA-256 校验通过;修复后的导出器已部署至: /volume1/docker/workphone-sdk/data/s2_archive/tools/s2_full_data_export.py
  • 当前完整性报告:integrity_report.jsoncomplete=false待使用有效S2登录凭据续跑全部好友、聊天、图片/文件媒体、群聊和财务。
  • NAS监管tools/monitor_full_backup.sh 每300秒检查下载进程、断点状态、归档大小和磁盘空间任务退出时自动拉起 run_all.sh,日志位于 monitor.log

2026-07-23微信 Frida 命令行批量加友幂等修复

  • 修复 addFriend 对现有好友仍调用空广播的问题:先查询 rcontact,返回 already_friend=trueverified=true
  • 优化 POST /api/v3/friend/add:目标规范化、source_type 参数、微信强制 Hook、验证状态与通道完整透传。
  • 完成微信8.0.69陌生人真实加友链路:ea3.q1 搜索手机号 → 解析 username/ticket → com.tencent.mm.pluginsdk.model.g3 提交验证 → u0.onSceneEnd 回收服务器错误码。
  • 错误响应新增 error_messageretry_after_secondswechat_err_typewechat_err_code,并归档 13779954946_错误回执报告.md
  • 增加 rcontact 备注手机号幂等匹配:13779954946 最终解析到 wxid_xbhui4yjlw9a22,正式 API 返回 success=true / verified=true / already_friend=true
  • 同步 Hook 三份运行副本,并增加静态契约回归测试。
  • 红米真机通过 Frida RPC 批量验收10个本地微信号10/10 数据库核验成功ADB 业务动作 0。
  • 卡若AI、机擎、阿机及微信 Frida 专项 Skill 已固化“无界面命令行 + Hook 三联证据”规则。
  • 证据:开发文档/10、项目管理/02-测试报告/20260723_微信Frida批量加友/

2026-07-23应用控制分组与微信功能折叠

目标

将设备详情中的应用控制从“所有功能同时展开”调整为“应用独立入口 + 分类折叠”降低微信、Soul、小红书、抖音、闲鱼之间的视觉和操作干扰。

实现范围

  • 文件:sdk/app/static/hub.html
  • 应用入口微信、Soul、小红书、抖音、闲鱼独立卡片点击切换。
  • 微信分组基础操作、微信数据、测试与诊断、消息操作、AI 指令。
  • 其他应用:独立基础操作区,保留打开、截屏、主页、返回。
  • 测试结果继续使用右侧执行结果和操作日志,不新增假接口。
  • 保留原有 doActionwxQuickRunwxCall 和 API 路由,未调整服务端契约。

验收

  • HTML JavaScript node --check 通过。
  • git diff --check 通过。
  • 本机 Hub http://127.0.0.1:8899/hub 返回 HTTP 200并包含新应用分组标记。
  • 服务端 /health 返回健康,当前 ADB 设备可见。
  • Type-C 真机逐项点击微信基础操作、数据读取和测试诊断按钮,待后续真机回归留痕。

2026-07-23Type-C 微信 WS 回连与 503 处理

根因

  • Type-C 上的 com.system.cloudservice 使用 127.0.0.1:8899 连接 SDK。
  • USB 反向端口未建立时,手机 APK 与本机 SDK 之间没有 WS微信资料、版本和 Hook 相关调用返回 503。

处理

  • 建立 ADB reversetcp:8899 → tcp:8899
  • 重启 com.system.cloudservice,设备 xgfe65eimrrofyws 已重新注册。
  • 当前 WS 在线 1 台、ADB 在线 1 台,微信运行中,微信版本 8.0.69wxid 已回读。
  • 页面将外层 200、内层 400/503 统一识别为失败,并显示通道处理建议,不再显示“成功”。
  • 微信页面新增动态功能目录,覆盖消息、好友、群聊、朋友圈、标签、个人、账号安全、支付和更多功能。

当前真机回归

  • /api/v3/profile/get 返回真实 wxid、微信版本和运行状态。
  • /api/v3/connection/status 返回 WS 1、ADB 1。
  • /api/v3/contacts 通过 WS 返回真实通道结果;当前无 Root/无障碍数据时为空列表,界面保留真实结果。
  • Hub HTTP 200微信常用功能、功能目录、测试诊断均已加载。
  • 开启手机无障碍联系人数据权限后,继续回归联系人、好友详情、朋友圈和账号状态。

2026-07-20项目功能拆解与机擎AI Agent纳入

目标

把工作手机项目按真实代码边界拆成可独立推进的功能对话保留历史对话并让机擎AI Agent成为设备端智能执行与任务编排的核心角色。

开发流程

  1. 读取卡若AI入口、BOOTSTRAP、AGENTS和长期记忆。
  2. 读取工作手机 README、需求真源、开发进度、架构、接口、后端、部署、测试和历史 Mongo 对话汇总。
  3. 通过卡若AI路由定位“五行项目对话拆解总控”和“Codex智能体开发入口”。
  4. 依据真实代码目录划分 SDK 服务端、设备端 Agent、Android 壳、管理端、Hook、BFF、部署和验收边界。
  5. 形成 12 个模块对话、角色绑定、任务台账和统一验收规则。
  6. 只新增文档,不删除或覆盖历史对话、代码和测试证据。

架构图

flowchart TB
    T[水泉项目总控] --> A[12个功能对话]
    A --> K[金组:架构/数据/稳定性/发布]
    A --> S[水组BFF/任务/Agent调度]
    A --> M[木组APK/管理端体验]
    A --> F[火组SDK/API/机擎AI Agent/Hook/验收]
    K --> E[设备与事件底座]
    S --> E
    M --> E
    F --> E
    E --> P[存客宝/触客宝/超级管理员/AI数智员工]

新增文件

  • 开发文档/10、项目管理/工作手机_项目拆解对话.md
  • 开发文档/10、项目管理/工作手机_模块对话索引.md
  • 开发文档/10、项目管理/工作手机_项目总控台账_20260720.md
  • 开发文档/功能迭代记录.md

验收标准

  • 12 个功能对话均有主责、代码范围、当前功能、下一步和验收标准。
  • 机擎AI Agent 已纳入角色和 P0 任务。
  • 原有对话、代码、历史需求和验收文档未删除。
  • 项目管理文档包含 Mermaid 架构图。
  • 当前风险与最高优先级事项已写入总控台账。

后续回写

每个模块完成后,回写需求真源、开发进度总表、对应接口/测试文档、本次项目总控台账,并补充真实 threadId/turnId/证据路径。

2026-07-21 微信 Hook 读写与无线门禁实测

  • 完成微信 Hook 读类矩阵,现行契约动作 10/10 通过。
  • 完成消息发送、转发、群发事件及 WS 截图验证。
  • 修复微信 8.0.69 纯文字朋友圈缺少原生启动字段导致“图片不存在”。
  • 修复显式 WP_DEVICE_SERIAL=IP:5555 时静默回退 USB serial 的门禁缺陷。
  • 定位剩余问题:当前 Wi-Fi 客户端隔离、朋友圈最终回读为空、add_friend 接收端为 0。
  • 专项报告:开发文档/5、接口/03-Hook与微信/20260721_微信Hook读写与无线门禁实测.md

2026-07-2112个对话切换为微信控制专项

变更内容

  • 12 个左侧 Codex 对话名称全部改为微信控制专项名称。
  • 重新分配人设微信设备资产、连接保活、版本发布、项目总控、BFF、任务调度、APK工作台、管理端、SDK API、机擎AI Agent、Hook能力矩阵、真机验收。
  • 每个线程追加新的微信职责、代码边界、依赖和验收口径。
  • 新增 开发文档/10、项目管理/工作手机_微信专项角色重分配_20260721.md

当前专项基线

  • 微信 Hook 读类实测 10/10 通过。
  • send_message 与 filehelper 回读通过。
  • 朋友圈纯文本 Hook 修复已留证。
  • 无线控制当前受 Wi-Fi 客户端隔离影响,需更换允许终端互访的网络后复跑。
  • 原有对话、文档和代码继续保留。

2026-07-22工作手机全产品设计 v1.0

目标

把现有技术控制台升级为“设备 → 微信号 → 客户 → 内容 → 任务 → 回执”的私域经营中台,形成可评审、可拆解、可验收的产品设计基线。

设计流程

  1. 读取需求唯一真源、现有管理端页面、模块对话索引和接口能力。
  2. 统一产品定位、目标用户、MVP/P1/P2范围与核心指标。
  3. 完成信息架构、全页面状态、业务流程、角色权限和审计闭环。
  4. 制作单文件可点击高保真原型,覆盖桌面侧栏与移动底栏。
  5. 按 Sprint 05 拆解研发顺序,并定义页面级与业务级验收标准。

产品架构

flowchart LR
    D[设备] --> W[微信号]
    W --> C[客户与聊天]
    C --> O[朋友圈与内容库]
    O --> T[场景计划与群发任务]
    T --> R[回执与风险中心]
    R --> A[数据分析与审计]

交付文件

  • 开发文档/3、原型/工作手机全产品设计_20260722/产品总方案.md
  • 开发文档/3、原型/工作手机全产品设计_20260722/信息架构与导航.md
  • 开发文档/3、原型/工作手机全产品设计_20260722/全页面交互与状态.md
  • 开发文档/3、原型/工作手机全产品设计_20260722/业务流程与权限.md
  • 开发文档/3、原型/工作手机全产品设计_20260722/数据指标与验收标准.md
  • 开发文档/3、原型/工作手机全产品设计_20260722/可浏览高保真原型.html

验收结果

  • 6 个交付文件齐全。
  • 10 个核心业务模块均有设计口径。
  • 正常、加载、空、异常 4 类状态齐全。
  • 原型支持 11 个主模块切换、群发预检弹层和移动端布局。
  • 写动作统一采用“预检 → 确认 → 执行 → 回读 → 审计”闭环。

2026-07-22高保真原型页面精简

  • 删除泛化“工作台”经营数据总览页,避免偏离工作手机业务主线。
  • 原型默认页调整为“设备管理”。
  • 保留设备管理、微信号、客户、聊天、朋友圈、群发、场景计划、流量池、内容库、我的/权限共10个直接相关页面。
  • 产品经理主设计工具确定为 Figma本地 HTML 作为快速评审与离线演示稿。

2026-07-22Codex项目对话远程访问

  • 新增项目专用同步器,按 Codex 会话 cwd 精确筛选工作手机项目。
  • 历史会话全量补传到本机 Mongo并幂等镜像公司 Mongo。
  • 安装每120秒执行一次的 LaunchAgent持续同步主对话与子智能体对话。
  • 远程控制台按“工作手机”项目筛选查看,消息正文保留原始顺序。
  • 详细说明:开发文档/10、项目管理/工作手机_Codex对话远程访问_20260722.md

2026-07-22开发文档简洁管理与远程对话全量闭环

  • 开发文档从10个专业目录入口收口为“1个总入口5个主题入口”。
  • 五个主题:产品与需求、技术与接口、部署与使用、验收与证据、项目管理。
  • 同主题文档统一指定唯一主文档;旧版本、专项报告和批次证据继续保留但退出日常入口。
  • 新增重复内容整合清单明确需求、架构、API、微信矩阵、部署、手册、验收的唯一真源。
  • 校验7个入口文件、57个本地链接失效链接0个。
  • 工作手机项目Codex会话24/24已进入公司Mongo统一标记项目=工作手机远程可访问=true

2026-07-22开发文档简洁入口防回退

  • 10个旧专业目录README统一增加“返回简洁入口”提示旧目录明确降级为底层资料库。
  • 新增00、简洁入口/scripts/check_devdoc_entries.py自动检查1个总入口、5个主题入口、10个返回提示及本地链接。
  • 以后新增或调整开发文档后运行该脚本,防止入口数量再次膨胀。

2026-07-23微信账号与好友查询动作接入

  • 文件sdk/android-app/app/src/main/java/com/system/cloudservice/engine/SkillExecutor.ktsdk/android-app/app/src/main/java/com/system/cloudservice/engine/WechatNoRootAutomation.kt
  • 实现:将 check_account_status 映射到无 Root 登录启发式;补齐 get_contactssearch_contactget_friend_info 的无障碍查询入口,返回可核验的 UI 树;保留 Hook 优先、无障碍回落链路。
  • 验证:app:compileDebugKotlin:app:assembleDebug 均通过;调试 APK 普通覆盖安装成功Type-C 设备 xgfe65eimrrofyws WS 在线。
  • 接口回归/api/v3/account/status 返回 200账号状态可读/api/v3/profile/get 返回 wxid 与微信版本;联系人查询接口返回 200需微信处于前台且无障碍树可见时展示好友节点。
  • 连接要求Type-C 连接时执行 adb reverse tcp:8899 tcp:8899,并保持工作手机 Agent 绑定 SDK断开重连后需重新建立 reverse 通道。

2026-07-23设备管理三类能力入口优化

  • 文件sdk/app/static/hub.html
  • 调整:将原 5 个控制模式合并为 3 类用户入口:
    1. 数据能力Hook / Frida负责微信资料、好友、群聊、标签等深度数据。
    2. 交互操作Agent WebSocket / u2负责打开应用、点击、输入、朋友圈等界面操作。
    3. 设备直控ADB负责截图、返回、安装和系统级设备命令。
  • 去重判断AI Agent 属于任务编排层不再作为底层通道单独展示scrcpy 属于 ADB 的可视化扩展,不再单独占一个入口。
  • 交互:三张能力卡均可点击进入对应管理区域,并依据实时检测结果显示“已连接/等待/可选通道”。
  • 验证:页面 HTTP 200、JavaScript 语法通过、git diff --check 通过。

2026-07-23设备管理能力中心视觉重构

  • 文件sdk/app/static/hub.html
  • 调整:移除原“控制链路”四步大区块和技术模式堆叠,改为单一“设备能力中心”卡片区。
  • 视觉:采用浅蓝渐变背景、状态点、编号、能力图标和“进入”动作,三张卡分别对应数据能力、交互操作、设备直控。
  • 交互:能力卡保持一键进入;顶部提供 AI 自动编排状态和刷新状态按钮;底部仅保留一句通道选择说明。
  • 验证:页面 HTTP 200、JavaScript 语法通过、git diff --check 通过。

2026-07-23微信无界面 Frida 强制执行链

目标

微信写动作采用 任务API → WebSocket Agent → Frida Session → 微信JS RPC → 原始回执,不再以坐标点击或页面状态作为成功口径。

开发流程

  1. 复现 hook_only=trueadd_friend 被Android端降级为u2/Shell。
  2. 定位服务端已下发 hook_onlyAndroid ProtocolHandler解析时丢失。
  3. ExecuteHookExecute补齐严格模式字段。
  4. AgentEngine把严格模式传入 SkillExecutor
  5. SkillExecutor严格模式下只接受Frida成功回执未附着统一返回503和 frida_hook_not_attached

架构图

flowchart LR
    T[微信任务] --> API[Hook Execute API]
    API --> WS[设备WebSocket]
    WS --> F[Frida Session]
    F --> J[微信JS RPC]
    J --> R[trace_id与原始回执]
    F -.未附着.-> E[503明确失败]

变更文件

  • sdk/android-app/app/src/main/java/com/system/cloudservice/engine/ProtocolHandler.kt
  • sdk/android-app/app/src/main/java/com/system/cloudservice/engine/AgentEngine.kt
  • sdk/android-app/app/src/main/java/com/system/cloudservice/engine/SkillExecutor.kt
  • sdk/tests/test_android_hook_only_contract.py
  • 开发文档/10、项目管理/02-测试报告/20260723_微信Hook加好友与消息/无界面Frida强制链路修复.md

验收

  • hook_only从服务端透传到Android执行器。
  • 严格模式禁止无障碍、u2、ADB和Shell降级。
  • 29项Hook/微信自动化测试通过。
  • Android调试APK构建成功。
  • 手机Root身份确认并通过局域网部署Frida 16.5.6。
  • Wi-Fi直连 192.168.110.80:19886微信PID 8742真实attach。
  • ping/get_wechat_version/get_profile真实RPC通过。
  • search_contacts(udbfnvtk)确认目标已是好友。
  • send_message通过 SendMsgEvent发送并完成数据库回读。
  • 最终回执:message_id=10420verified=true

2026-07-23 微信全接口命令行验收

  • 新增 sdk/agent/wechat_cli_acceptance.py,从 OpenAPI 自动生成微信接口 curl 命令。
  • 完成 144 个微信 OpenAPI 操作与 110 个 Hook action 的命令覆盖,共 254 项。
  • 真机只读验收通过 61 项,生成待受控执行命令 182 项,确认 11 项真实/夹具缺口。
  • 证据目录:sdk/agent/logs/wechat_cli_acceptance_20260723_134502
  • 详细报告:开发文档/5、接口/03-Hook与微信/20260723_微信全接口命令行验收.md

2026-07-23微信加好友统一回执与10秒可配置冷却

开发流程

  1. 将微信 add_friend 固定冷却由 180300 秒调整为默认 10 秒。
  2. 增加环境变量配置与运行态配置查询接口。
  3. 统一成功、已是好友、参数错误、限流、超时、目标不存在、Hook异常和普通失败回执。
  4. 增加面向任务调度器的 feedback.action 与重试字段。
  5. 增加静态契约和运行态配置测试。

架构图

flowchart LR
    C["CLI/API 请求"] --> P["好友状态预检"]
    P -->|已存在| S["统一成功回执"]
    P -->|待添加| R["10秒可配置冷却"]
    R --> F["Frida Hook 执行"]
    F -->|成功| S
    F -->|失败| E["统一错误码+反馈动作+重试时间"]

变更文件

  • sdk/app/config.py
  • sdk/app/services/rate_limiter.py
  • sdk/app/routers/unified.py
  • sdk/docker-compose.yml
  • sdk/tests/test_friend_add_feedback_and_cooldown.py
  • sdk/tests/test_friend_add_api_contract.py
  • 机擎/阿机/微信Frida控机与防封/SKILL.md

验收

  • 默认冷却为 10 秒。
  • 冷却与浮动均可通过环境变量配置。
  • GET /api/v3/friend/add/config 可查询生效值。
  • 成功和失败均返回统一 feedback
  • 12 项加好友与Hook契约测试通过。
  • 防封离线回归通过。

2026-07-23机擎统一微信无界面命令行开发Skill

目标

卡若AI开发工作手机项目统一从机擎Skill进入现有及后续微信功能统一采用无界面命令行、 Frida Hook、结构化回执、业务回读和证据归档流程。

更新范围

  • 机擎/SKILL.md:增加工作手机开发统一入口和强制路由。
  • 机擎/阿机/SKILL.md增加阿机统一开发流程、通用curl和全量验收命令。
  • 机擎/阿机/微信Frida控机与防封/SKILL.md:增加探测、业务模板、错误表和交付门禁。
  • 机擎/references/微信无界面命令行开发与验收标准.md:新增完整流程真源。
  • /Users/karuo/.codex/skills/karuo-ai/SKILL.md固定工作手机任务先路由机擎Skill。
  • /Users/karuo/Documents/个人/记忆.md:登记长期开发偏好。

统一流程

flowchart LR
    K["卡若AI"] --> J["机擎Skill"]
    J --> C["curl/OpenAPI"]
    C --> F["Agent或Server Frida"]
    F --> H["微信Hook RPC"]
    H --> R["结构化回执"]
    R --> D["业务数据回读"]
    D --> E["测试与证据归档"]
    E --> S["Skill持续更新"]

验收标准

  • 工作手机开发任务有唯一机擎入口。
  • 微信功能有统一无界面命令模板。
  • 成功和失败均有统一回执要求。
  • 新功能有固定测试、回读和证据门禁。
  • 全量接口验收脚本写入Skill。

2026-07-23工作手机流程抽象为卡若AI通用F01g

  • 从微信案例提取跨项目公共骨架:能力发现、无界面执行、目标绑定、结构化回执、 错误重试、业务回读、自动测试、证据归档和Skill回写。
  • 新增卡若AI Skill 04_卡火/火炬_全栈消息/无界面命令行项目执行闭环/SKILL.md
  • 新增“项目适配表模板”项目差异留在项目Skill通用流程只维护一份。
  • 完成 SKILL_REGISTRY.mdBOOTSTRAP.md、Codex卡若AI入口和开发域索引登记。
  • 工作手机微信标准已反向链接F01g作为首个真实项目适配案例。

2026-07-23加好友OpenAPI文档完善

  • AddFriendRequest 补齐设备、平台、目标账号、验证消息、来源和场景值说明及示例。
  • 新增 FriendAddFeedbackAddFriendResultAddFriendResponse响应模型。
  • Swagger补齐接口说明、成功幂等示例和微信频率限制失败示例。
  • 文档链接: http://127.0.0.1:8899/docs#/好友管理/add_friend_api_v3_friend_add_post
  • 10项加好友接口与Hook契约测试通过OpenAPI模型和示例自动校验通过。

2026-07-23微信好友八接口命令行闭环回收

  • 回收新增、通过、备注、删除、批量新增、联系人列表、搜索和详情八个接口。
  • 新增好友复用通讯录预检与真实微信内部搜索/验证场景。
  • 备注完成写后回读;删除完成软删除回读和重复删除幂等。
  • 批量新增完成去重、逐项复用单加及逐目标回执。
  • 一键脚本:sdk/agent/wechat_friend_cli_acceptance.sh
  • 真机证据:sdk/agent/logs/wechat_friend_20260723_final2
  • 报告:开发文档/5、接口/03-Hook与微信/20260723_微信好友八接口闭环.md
  • 通过好友已完成真实网络RPC部署和缺票据失败回执取得真实请求票据后补正向成功戳。
  • 新增sdk/agent/wechat_accept_friend_cli.sh:支持轮询待处理请求、自动提取 encrypt_username/ticket、调用通过接口及好友详情回读。
  • 当前真机待处理请求数为0已生成no_pending_friend_request结构化回执; 证据目录:sdk/agent/logs/wechat_friend_20260723_accept_followup

2026-07-23 微信好友八接口闭环

  • 完善新增、通过、备注、删除、批量新增、列表、搜索、详情八个好友接口。
  • 通过好友改为微信内部网络场景;备注和删除增加数据库回读验证及幂等回执。
  • 批量新增改为去重后逐项复用单加接口,返回每个目标的结构化结果。
  • 新增一键验收脚本 sdk/agent/wechat_friend_cli_acceptance.sh
  • 14项自动化测试通过真机证据位于 sdk/agent/logs/wechat_friend_20260723_final2
  • 详细报告:开发文档/5、接口/03-Hook与微信/20260723_微信好友八接口闭环.md

2026-07-23 微信批量添加好友真机测试

  • 真机验证批量去重、已有好友幂等和混合成功/失败汇总。
  • BatchAddFriendRequest 增加1100项约束间隔限制030秒并默认10秒。
  • 空批次验证返回HTTP 42213项好友相关自动化测试通过。
  • 测试证据:sdk/agent/logs/wechat_batch_add_20260723

2026-07-23微信消息管理九路接口契约与错误透传

  • 完善消息发送、读取、增量同步、批量发送、评论回复、转发、撤回、名片和语音九路接口。
  • 新增强类型请求/响应、Swagger示例、参数门禁及 400/401/422/503 说明。
  • 统一真实回执字段,底层失败不再包装成业务成功。
  • 增量同步增加严格游标、稳定排序和去重;批量发送增加逐项异常隔离。
  • 清除 AI Agent 路径本地伪造的 message_id
  • 真实 /message/list 已经 server/frida 通道读取成功。
  • 验收报告:开发文档/10、项目管理/02-测试报告/20260723_微信消息管理接口/微信消息管理九路接口验收.md

2026-07-23 Mongo 20号码批量加友与备注实测

  • 从本机Mongo BSON用户数据筛选20个合法手机号。
  • 分两批通过Frida执行加友并按昵称和手机号后4位执行备注。
  • 微信搜索频控9项本地长会话节律限制11项20项均保留真实失败回执。
  • 因目标没有进入联系人库备注回读20项均为contact_not_found
  • 证据:sdk/agent/logs/wechat_mongo_phone_batch_20260723

2026-07-23Mongo20号码实测后的批量加友调度修复

  • 加好友默认关闭AB-03长会话暂停避免10秒配置被1030分钟窗口覆盖。
  • 普通与新账号本地日上限改为可配置默认50/50。
  • 批量新增支持max_retriesrespect_retry_aftermax_retry_wait
  • 微信返回30秒频控时采用上游等待时间并自动重试逐次回执写入attempts
  • 18项回归通过真机单目标已穿过本地门禁并到达server/frida
  • 当前剩余结果是微信服务端err_code=-24接口返回30秒重试反馈。

2026-07-23高价值200好友估值备注闭环

  • 新增POST /api/v3/friend/batch-set-remark单次支持1500项。
  • 新增sdk/agent/wechat_batch_remark_apply.py,具备设备/Hook探针、10人分批、 3次重试、逐项回执和结果归档。
  • 新增sdk/scripts/frida_host_proxy.py,将宿主机127.0.0.1:27042 桥接到Docker可访问的19886
  • 200人备注首次执行成功200/200重复幂等执行成功200/200。
  • 第1、100、200位抽样回读与配置一致。
  • 结果:sdk/agent/logs/wechat_top200_20260723/batch_remark_apply_result.json
  • 报告:开发文档/5、接口/03-Hook与微信/20260723_高价值200好友估值备注接口.md

2026-07-23 微信高价值200好友筛选

  • 通过Frida读取6777位联系人及10433条消息。
  • 按互动、最近联系、标签、资料完整度和商业关键词完成价值评分。
  • 输出Markdown、CSV、JSON三种200人名单。
  • 证据目录:sdk/agent/logs/wechat_top200_20260723

2026-07-23对话名称优先定位与汇报规则

  • 管理 Codex 项目线程时,以线程当前实际名称作为职责、模块、主责人和汇报归属的唯一定位真源。
  • 线程改名后,立即按新名称重新识别职责、代码边界、验收标准和汇报对象。
  • 汇报优先使用当前线程名称threadId 仅作技术索引。
  • 已同步长期记忆、工作手机项目拆解、微信专项角色文档和模块对话索引。

2026-07-23机擎Skill重绑与微信对话精简

  • 将截图中7个泛功能对话重命名为阿服、阿机、阿端的简洁微信专项名称。
  • 绑定阿服部署环境、阿机后端Agent/微信Frida、阿端联调体验三个机擎Skill。
  • 每个线程只保留一个聚焦功能:验收、执行、接口、控制台、配对、发布或连接。
  • 绑定清单:开发文档/10、项目管理/机擎_微信对话Skill绑定_20260723.md

2026-07-23卡若AI与机擎AI联合任务分配

  • 七个微信专项线程改为卡若AI人设与机擎AI人设联合名称。
  • 依据 工作手机_进行中_20260613.md 分配 WP-BFF-33WP-WRITE-WLWP-WX-04WP-WX-03WP-24HWP-APK-RPC-02WP-BOOT-SELFHEAL-03WP-FRIDA-SSOT-01-E2EWP-CKB-MAP
  • 联合任务台账:开发文档/10、项目管理/卡若AI×机擎AI_微信联合任务分配_20260723.md

2026-07-23设备详情页手机式控制台重构

  • 文件sdk/app/static/hub.html
  • 首屏调整:设备详情页只保留设备状态、微信运行状态和四个主按钮:打开微信、截屏、主页、返回。
  • 折叠内容:运行参数、微信资料/好友/朋友圈、消息操作、AI 指令、统计日志统一收进按需展开区域。
  • 右侧区域:保留设备截图和本次结果;统计、日志、通道性能合并到“执行记录”。
  • 视觉方向:采用手机控制台样式,减少大段说明和重复按钮,主操作采用大触控按钮。
  • 验证:页面 HTTP 200、JavaScript 语法通过、git diff --check 通过。

2026-07-23设备详情实时手机工作台与全应用入口恢复

  • 文件sdk/app/static/hub.html
  • 应用入口恢复并保留微信、Soul、小红书、抖音、闲鱼五个可点击入口切换后显示对应的打开、截屏、主页、返回操作。
  • 手机预览:右侧手机画面放大为实时预览区,旁边增加五个应用快捷启动、主页、返回、刷新画面按钮。
  • 实时刷新:设备详情页默认开启截图自动刷新,默认间隔 5 秒,可切换为 3/5/10/30 秒;修正刷新条件为当前设备详情页。
  • 验证:页面 HTTP 200、JavaScript 语法通过、git diff --check 通过;各应用 open_* 动作映射已确认存在。

2026-07-23手机设备管理能力补齐

  • 前端sdk/app/static/hub.html
    • 新增“手机管理”卡:重启手机、安装软件、安装微信、刷新服务。
    • 服务摘要按 ADB、工作手机 Agent、无障碍、Frida 分类显示运行状态。
    • 手机预览区域支持点击坐标和上下左右滑动,动作直接下发设备接口;不再只依赖截图按钮。
  • 后端sdk/app/routers/adb.pysdk/app/services/adb_device.py
    • 新增设备重启接口:POST /api/v3/adb/devices/{serial}/reboot
    • 新增 APK 上传安装接口:POST /api/v3/adb/devices/{serial}/app/install
    • 新增服务状态接口:GET /api/v3/adb/devices/{serial}/services
  • Android Agentsdk/android-app/app/src/main/java/com/system/cloudservice/engine/SkillExecutor.kt
    • 新增 service_status 动作,返回 Agent、无障碍、Frida 状态。
  • 验证:前端 JavaScript、Python 编译、差异检查通过Android APK 构建成功。安装阶段设备 USB 瞬时掉线,待 Type-C 设备重新上线后继续安装验收。

2026-07-23改用 WebSocket 分片安装 APK

  • 前端:安装软件/安装微信按钮改调用 /api/v3/adb/devices/{serial}/app/install-ws
  • 服务端:按 256KB 分片读取 APK通过设备 WebSocket 依次发送 install_apk_ws_begininstall_apk_ws_chunkinstall_apk_ws_finish
  • Android Agent新增分片缓存、Base64 解码、文件合并和本地 pm install -r -g 安装动作,安装完成自动清理缓存。
  • 通道要求:安装流程以 WebSocket 在线为前提,不再把主机 ADB 作为安装主链路。
  • 验证Python 编译通过Android :app:compileDebugKotlin 构建成功;前端 JavaScript、页面 HTTP 200、git diff --check 通过。
  • 实机验收:设备 xgfe65eimrrofyws 已更新至 Agent 5.0.8APK 通过 WebSocket 分片传输到设备临时目录后执行安装。针对小米多用户权限,安装命令使用 pm install --user 0 -r -g
  • 断开验证:设备使用 ws://192.168.110.47:8899/ws/device/xgfe65eimrrofyws 作为主连接;移除 adb reverse tcp:8899 后状态仍为 onlineType-C 仅用于首次引导/更新,不作为持续控制通道。

2026-07-23统一 AI 接口与 Agent 配置接入

  • 目标:设备管理 Agent、AI 指令、AI Brain 全部使用同一套可配置 AI 接口。
  • 实现文件
    • sdk/app/services/ai_provider.py:统一读取、保存、调用 OpenAI 兼容接口。
    • sdk/app/services/ai_command.py:自然语言设备指令优先走统一接口。
    • sdk/app/services/ai_agent.pyAgent 意图解析改走统一接口。
    • sdk/app/services/karuo_device_ai.pyAI Brain 改走统一接口。
    • sdk/app/routers/agent.py:新增 GET/POST /api/v3/ai/config
    • sdk/app/routers/unified.py:微信 Agent 下发改用 configured
    • sdk/docker-compose.yml:挂载 sdk/config,保证配置持久化。
    • sdk/config/ai_provider.json:保存当前接口配置。
  • 当前配置Provider=longxiaBase URL=https://simpleapi.quwanzhi.com/v1;模型=deepseek-chat
  • 界面:设备管理 → Agent → AI 接口可修改地址、模型、API Key并保存。
  • 验证Agent 状态返回 ready统一配置接口返回 200龙虾接口健康检查返回 200工作台页面返回 200Python/JavaScript 语法检查通过。
  • 备注API Key 采用界面输入并只返回配置状态,当前项目文件不写入明文密钥。

2026-07-23统一 AI 功能测试

  • 测试接口GET /api/v3/ai/configGET /api/v3/ai/statusPOST /api/v3/ai/chatGET /api/v3/agent/status/{device_id}
  • 通过项:统一配置接口 200设备 Agent 状态 ready龙虾U盘 /health 返回 {"status":"ok"}
  • 当前结果AI 状态为 backend=none,解析测试返回空动作;龙虾 /v1/models 返回 401 API_KEY_REQUIRED
  • 处理结论:接口地址链路正常,下一步在设备管理 → Agent → AI接口中填入龙虾U盘 API Key再重新执行解析测试。

2026-07-23 高价值200好友估值备注接口

  • 新增 POST /api/v3/friend/batch-set-remark
  • 单次支持1500人逐项Frida写入和回读保留估值分与逐人回执。
  • 生成200人备注请求、回滚配置及curl脚本。
  • 修复Docker到ADB Frida端口不可达新增宿主机TCP代理。
  • 批量执行器增加前置探针、10人分批、自动重试和结果归档。
  • 200人写入成功200、失败0重复执行仍为200/2008项接口测试通过。

2026-07-23 微信好友两个改名接口文档完善

  • 单个改名:POST /api/v3/friend/set-remark
  • 批量改名:POST /api/v3/friend/batch-set-remark单次1500人。
  • Swagger补齐中文摘要、参数、示例、真实回读机制及422/503错误说明。
  • 9项接口和文档契约测试通过。

2026-07-23 个人微信号无界面维护接口

  • 新增个人资料读取、能力矩阵、统一修改和二维码4个接口。
  • 统一修改支持昵称、签名、头像、性别、地区、状态、手机号和微信号验证计划。
  • 新增 sdk/agent/wechat_account_cli.sh 及预演/正式配置文件。
  • 4项测试通过OpenAPI四个端点均注册运行态失败回执真实保留。

2026-07-23工作手机 v5.0.8 React APK 高保真重构

  • 新增 sdk/android-ui,使用 React、TypeScript、Vite 重构工作台、Agent、设备三页。
  • 全套功能图标使用项目内 SVG页面资源打入 APK不依赖外部网络。
  • MainActivity 改为 WebViewAssetLoader 加载 React 产物,并通过 NativeAgent Bridge 提供真实状态与动作。
  • 修复本地资源 CORS 白屏和同步 Shell 状态探测导致的主线程阻塞风险。
  • Release 5.0.8/code 13 构建成功并覆盖安装到 xgfe65eimrrofyws
  • 两轮冷启动进程正常logcat 无 Crash、无 ANRReact 类型检查与生产构建通过。
  • APKsdk/releases/20260723/workphone-agent-v5.0.8-release.apk
  • 验收:开发文档/8、部署/05-测试验收/20260723_工作手机_v5.0.8_React重构/README.md

2026-07-23工作手机 v5.0.9 Agent 与设备页优化

  • 工作台移除设备编号、绑定信息和重复扫码入口,连续运行字体提升可读性。
  • 设备身份统一为唯一 MD5 设备编号;健康度按五项真实状态评分。
  • Agent 六个自动化开关落地到原生配置,开机启动控制 BootReceiver。
  • 服务地址、连接令牌重新排版;高级连接维护默认折叠。
  • Hook/Frida 用户界面统一更名为“注入引擎”。
  • 修复 WebView 旧滚动位置恢复和已绑定设备开机仍进入向导。
  • 5.0.9/code 14 已安装;手机重启后冷启动自动进入 MainActivity无 Crash、无 ANR。
  • 验收:开发文档/8、部署/05-测试验收/20260723_工作手机_v5.0.9_Agent设备页优化/README.md

2026-07-23 微信个性签名接口补齐

  • Android Agent 增加 wechat.set_signature 无障碍执行链:我 → 个人信息 → 更多信息 → 个性签名 → 保存,并返回 verified 与 UI 树。
  • 接口:POST /api/v3/profile/set-signature,参数 device_id/platform/signature
  • 本地 assembleDebug 编译通过APK 经 WebSocket 分片部署Agent 曾成功重连。
  • 真机测试发现安装后的 MIUI 桌面状态干扰首次导航;随后设备连接状态转为 offline签名写入待设备重新上线后复测。
  • 测试证据:sdk/agent/logs/wechat_profile_update_20260723/set_signature_retry.jsonset_signature_retry2.jsoninstall_agent_ws.json

20:25 规则升级:上述无障碍执行链废止,不再作为业务实现或兜底。签名及全部微信 业务动作统一采用 CLI/HTTP API → WebSocket Agent → 无线 Frida RPC → 业务回读

2026-07-23 微信无线无界面强制规则与签名CLI

  • 卡若AI全局入口、F01g、机擎、微信Frida专项Skill均已写入强制规则。
  • 禁止USB、Type-C、主机ADB、ADB input、鼠标、界面点击及无障碍业务兜底。
  • POST /api/v3/profile/set-signature 对微信强制 hook_only=true
  • device_transport 在WebSocket优先模式下离线直接返回device_offline不切换ADB。
  • sdk/agent/wechat_account_cli.sh set-signature "签名" 提供纯命令行入口。
  • 第一轮相关测试26通过、2失败其中1项为新测试范围问题已修正另1项为既有24/26模块口径。
  • 第二轮聚焦回归10通过Shell语法和ADB关键字扫描通过。
  • 当前设备xgfe65eimrrofyws为offlineCLI离线回执验收通过待WebSocket重连后执行真实Hook写入与资料回读。

2026-07-23高级连接服务统一与首页扫码基准

  • 设备页将 ADB、工作手机 Agent、无障碍、注入引擎统一放入“高级连接与服务”去掉重复的注入引擎/ADB入口命名。
  • Android Agent 服务状态改为读取 Agent 实例、无障碍实际绑定状态和 FridaBridge 状态;新增 ensure_services,上线后自动补齐已授权无障碍并尝试启动注入引擎。
  • 后端新增 POST /api/v3/adb/devices/{serial}/services/ensureGET /services 作为统一状态读取接口。
  • 首页只保留扫码绑定二维码入口;局域网扫描结果自动成为绑定服务器基准,设备详情不再放重新绑定扫码。
  • 真机已确认 Root、无障碍和 Frida Server手机随后重启USB 正在重新枚举,待回连后由 WebSocket 自动恢复并读取新状态。
  • 验证Android Debug APK 构建成功Python 编译、前端 JavaScript、页面 HTTP 200、git diff --check 通过。

2026-07-23控制台空白页恢复

  • 根因Docker 容器读取到的 hub.html 为 263,328 字节截断版本,bootstrap()refresh... 处中断,浏览器脚本报 Unexpected end of input,页面只保留头部。
  • 修复:将本地完整 sdk/app/static/hub.html264,373 字节)同步至 workphone-sdk:/app/static/hub.html,并同步本轮 adb.pyadb_device.py 后重启容器。
  • 验收:/hub?tab=overview 返回 200Content-Length=264,373实际响应脚本 node --check 通过;/health 200Python 编译和 git diff --check 通过。
  • 当前设备ADB、工作手机 Agent、无障碍服务、注入引擎服务均为运行中设备 WebSocket 等待下一次心跳重连。

2026-07-23WP-CKB-MAP 微信控制台设备映射与实时状态

  • 联合角色:木|木叶×阿端 ·微信控制台。
  • 目标:将设备 map、wxid、好友数、最后活跃、设备/消息/任务控制与实时状态统一接入现行控制台。
  • 现行控制台真源:当前分支已收口为 sdk/app/static/hub.htmlsdk/admin 在工作树与 Git 历史均不存在,本轮沿现行控制台真源完成直接联调。
  • 修改文件
    • sdk/app/services/wechat_device_map.py:统一微信设备字段,只透传真实已有值。
    • sdk/app/main.pyoverview 设备 DTO 输出 wxid/wechat_id/friend_count/last_active
    • sdk/app/routers/integration.pyrealtime DTO 输出同一组字段。
    • sdk/app/static/hub.html:轮询 realtime 状态,展示微信 ID、好友数、最后活跃、最近事件和真实错误态。
  • 验证命令
    • python3 -m py_compile sdk/app/services/wechat_device_map.py sdk/app/main.py sdk/app/routers/integration.py
    • node --check /tmp/workphone_hub_wp_ckb_map.js
    • git diff --check
    • curl http://127.0.0.1:8899/health
    • curl 'http://127.0.0.1:8899/api/v3/workbench/overview'
    • curl 'http://127.0.0.1:8899/api/v3/integration/realtime/status?consumer=cunkebao&event_limit=3'
  • 真实回执SDK healthy;当前设备 xgfe65eimrrofyws、型号 2312DRAABC、ADB 1 台、设备 ID MD5 ed25814d9c92b3430696dc96c2142b5fHook/WS 当前不可用;实时事件可回读设备注册与断开记录。
  • 现场门禁:当前源数据未提供微信 wxid、好友数和最后活跃,控制台显示“待现场核对”,不填充模拟值。
  • 下一门禁:设备 WebSocket/微信 Hook 上线后,在存客宝/超管现场核对 wxid、好友数、最后活跃及消息任务真实回执。

2026-07-23 | WP-BFF-33 微信 SDK/BFF 契约收口

  • 角色:火|火炬×阿机 ·微信接口。
  • 实现Fleet 执行统一复用 routers.unified._execute_skillservices.device_transport;微信写类单设备也强制 dry_run/confirm 门禁;只接受执行端明确 success=true;超时保留 504/timeout/retryable/retry_after_seconds 结构化回执。
  • 验证:新增 Fleet 契约测试连同微信消息、好友、朋友圈、Hook-only 测试共 81 passed;生成 OpenAPI 快照 383 路径。
  • BFF门禁:当前无有效租户 JWTBFF 请求回读业务 40133 项脚本停在登录阶段;未虚构 33/33。
  • 证据开发文档/10、项目管理/02-测试报告/20260723_WP-BFF-33/

2026-07-23 微信白名单写类与客服状态机回执

  • WP-WRITE-WLmass_send 改为真实Hook逐目标发送禁止无接收端Intent占位加好友继续沿用 rcontact 幂等检查;朋友圈写类保留排队态,等待网络回调与数据库回读。
  • WP-WX-03客服会话及每轮记录统一补充 trace_idchannelraw_rpc_receiptreadback;接口按 final_status 返回业务码。
  • 自动化验证:新增 sdk/tests/test_wechat_write_receipt_contract.py,与现有微信写类回归合计 26 passed
  • 真机状态尚未取得Root/Frida白名单写类真实回执下一门禁见 开发文档/10、项目管理/02-测试报告/20260723_微信白名单写类与客服状态机回执.md

2026-07-23 · WP-WX-04 木|木叶×阿端 ·微信配对

  • APK 微信工作台二维码图片加友改为传 image_base64,与 Agent/SDK 统一契约对齐;新增验证消息输入与扫码流程状态卡。
  • 无 Root 分支补齐相册写入、微信扫一扫、好友申请页面处理及过期/无效、已好友、识别失败结构化状态。
  • 验证:./gradlew :app:assembleDebug --no-daemon 通过;微信好友相关契约测试 10/10 通过。
  • 真实设备门禁保留:摄像头实际识码截图、申请原始回执、联系人/申请列表回读。
  • 证据:开发文档/10、项目管理/02-测试报告/20260723_WP-WX-04_APK联调/验收报告.md

2026-07-23WP-APK-RPC-02 前置:微信发布资产与写类门禁

  • 新增 sdk/agent/VERSION,将 Agent 版本固定为 5.0.9,并纳入 Agent 发布包。
  • sdk/build_universal_package.sh 改为 Release 构建,同步微信 v2 Hook、版本兼容矩阵和 arm64 Frida 资产。
  • 新增 sdk/scripts/wechat_release_gate.py,校验 APK/Gradle/Agent 版本、APK 内嵌 Hook 资产、Agent 包版本、arm64 ELF 架构和 SHA-256。
  • 微信写类发布必须提供 --write --wechat-version;兼容矩阵 verified=false 时返回退出码 1 并阻断写类。
  • 5.0.9/code 14 Release APK 资产复核通过SHA-25664afcbe4e02c70de965a33bb9eeab80cc35d6345625a8457a021e179b5bd4a9c
  • 证据目录:开发文档/8、部署/05-测试验收/20260723_WP-APK-RPC-02前置/
  • 下一门禁Root 测试机真实 Frida attach、四项 RPC 回执和消息回读;在此之前保持微信写类锁定。

2026-07-23 23:41v5.0.9 平台重连、真实 RPC 与24小时监测

  • 公网 WSS 配对恢复,设备 xgfe65eimrrofyws 在线。
  • Root 真机统一 Frida 16.5.6 / 19886,真实 attach 微信并加载 Hook。
  • ping/profile/send_message/get_messages 全链通过;消息回执 message_id=10458verified=true
  • 长期监测脚本新增环境变量鉴权及深度探针超时后的 health 心跳降级,密钥不落盘。
  • 24小时监测 PID 53957 已启动;首样本 SDK healthy、WSS online、设备在线 1 台。
  • 证据:开发文档/8、部署/05-测试验收/20260723_工作手机_v5.0.9_Agent设备页优化/

2026-07-23 微信群成员无界面加好友

  • 新增 POST /api/v3/friend/add-from-group
  • addFriendInChatRoom 从 Intent 占位替换为真实群成员数据库校验与微信内部加友链路。
  • 新增群ID错误、群不存在、非群成员、Hook异常和风控拦截统一回执。
  • 新增 sdk/agent/wechat_group_friend_cli.sh 一键命令及 JSON 证据归档。
  • 三份 wechat_hook_v2.js SHA-256 一致;好友链路 23 项契约测试通过。
  • 真机验证:读取 28 名群成员;现有好友幂等成功;非群成员失败回执准确。
  • 详细报告:开发文档/5、接口/03-Hook与微信/20260723_微信群成员无界面加好友接口.md

2026-07-24 微信群批量过滤加友

  • 新增 POST /api/v3/friend/batch-add-from-group单次最大10人。
  • 修正好友判断为微信联系人 type 好友位,避免把普通群成员误判为好友。
  • 新增群成员随机筛选、已好友过滤、逐项回执及10秒真实发送间隔。
  • 新增 sdk/agent/wechat_group_batch_add_cli.sh 和3项专项契约测试。
  • 第二群实测28名成员、过滤15名好友、选出10名非好友、预检错误0。
  • 续跑修复server/Frida失败且Agent在线时自动切换 WebSocket Agent→Frida RPC不进入UI通道。
  • 适配新版Hook写操作门禁add-from-group 与批量接口固定传递显式 confirm=true
  • 17:01续跑原10人首次10项均返回 confirm_required修复后Hook ping成功随后手机微信进程停止且Agent离线任务保留原名单待链路恢复。

2026-07-23WP-HL-03 companion 空动作分派与能力收口

目标

按账号设置、好友群、消息内容、视频号四批处理 83 个 companion 空动作;执行通道固定为 WSS Agent → 无线 Frida RPC → wechat_hook_v2.js禁止广播空转、UI/ADB 兜底和伪成功。

本轮结果

  • 新增 sdk/agent/hook/companion_dispatch.py83 项唯一清单、四批分组、逐项 action/RPC/参数/错误/回读/测试状态记录。
  • 三份 Hook 镜像新增 COMPANION_CAPABILITIES 与统一 capability_unavailable 回执;覆盖历史 intent_broadcast 占位方法。
  • mass_send 保留既有真实 sendMessageInternal 聚合 RPC其余 82 项当前明确能力不足,不触发空广播。
  • sdk/agent/agent.py 新增 headless companion 门禁Frida 失败直接 503不进入无障碍/ADB。
  • 新增 JSON/Markdown 分派证据与契约测试。

验证

  • python3 -m pytest -q sdk/tests/test_companion_dispatch_contract.py sdk/tests/test_wechat_write_receipt_contract.py sdk/tests/test_friend_add_api_contract.py sdk/tests/test_friend_add_feedback_and_cooldown.py sdk/tests/test_moments_acceptance_contract.py sdk/tests/test_moments_idempotency.py sdk/tests/test_wechat_add_friend_idempotent_contract.py
  • 结果:30 passed in 0.20s
  • 三份 Hook JS node --check、Python py_compile、相关 git diff --check 通过。

下一门禁

由总控安排测试设备和测试账号;先执行能力探测与 dry_run=true,再逐项将 capability_unavailable 升级为可验证 Frida RPC采集 trace_id/channel/raw_rpc_receipt/readback。本轮未执行真机写入。

2026-07-23WP-HL-02 资产漂移阻断补记

  • 静态隔离校验确认 bridge 占位 RPC=9、生产引用=0、Agent 产物无 v1/bridge。
  • 最新构建因 wechat_hook_v2.js 在 Gradle 构建期间继续并发变化SHA-256 门禁返回 blocked;旧 Release APK 未覆盖。
  • 证据目录:开发文档/8、部署/05-测试验收/20260723_WP-HL-02前置静态门禁/

2026-07-24WP-HL-03 account_settings 第二批契约

范围

set_nicknameset_signatureset_regionset_sexset_privacyset_notificationset_do_not_disturb

结果

  • 注册 setNicknamesetSignaturesetRegionsetSexsetPrivacysetNotificationsetDoNotDisturb 七个 Frida RPC 契约入口。
  • 明确必填参数、可选 dry_run/confirm、错误码 invalid_params/confirm_required/capability_unavailable/readback_failed
  • 明确资料类回读 getProfile 字段;隐私、通知、免打扰预留专用回读 RPC 名称。
  • dry_run=true 只返回执行计划,不执行写入;当前版本内部类签名未完成时返回 capability_unavailable,禁止广播、数据库伪写和 UI/ADB 兜底。

验证

  • 相关微信回归:30 passed in 0.33s
  • 三份 Hook 镜像 node --check、Python py_compile 通过。
  • 真机:本轮未写入;待测试号 dry_run=true、confirm=true 验证真实 raw RPC 与回读。

2026-07-23 | WP-HL-01/WP-HL-04 微信无界面接口批次

  • 视频号 like/comment/follow/share 路由统一为严格 Frida RPC 回执;失败返回 503、capability/error 字段、trace_id、raw_rpc_receipt 与 readback。
  • 视频号 Hook JS 移除四项写动作的广播占位;当前无真实内部 RPC 时明确返回 capability_unavailable。
  • 新增 38 个未映射动作的 WP_HL04_ACTION_TO_RPC 显式映射和 WECHAT_STRICT_FRIDA_ACTIONS 严格通道门禁。
  • 契约回归94 passed报告开发文档/10、项目管理/02、测试报告/20260723_WP-HL-01_HL-04/

2026-07-24 | WP-HL-01/WP-HL-04 接口层第二批

  • 新增 WP_HL04ActionRequestWP_HL04ActionParamsHeadlessActionResponse38项动作进入OpenAPI枚举和统一参数面。
  • 新增 POST /api/v3/wechat/headless/execute;写动作默认 dry_run=true,真实下发要求 dry_run=false + confirm=true
  • 视频号四路补充OpenAPI 503声明FastAPI HTTP调用写入真实503函数直调仍保留业务体兼容。
  • Server Frida Bridge统一透传 trace_id/error_code/error_message/raw_rpc_receipt/readback;写类缺回读继续失败收口。
  • 验证:接口层与首批回归 91 passedPython编译通过真实设备RPC/业务回读未在本批执行。
  • 证据目录:开发文档/10、项目管理/02-测试报告/20260724_WP-HL-01_HL-04-interface/

2026-07-24WP-HL-07 账号资料/设置 Hook 契约与无线链路收口

  • 补齐账号资料设置动作set_nickname、set_signature、set_region、set_sex、set_gender、set_avatar、set_privacy、set_account_protection、set_notification、set_do_not_disturb、toggle_do_not_disturb、set_what_up。
  • wechat_hook_v2.js 新增 wp-hl-07-account-adapter-v1ACCOUNT_SETTING_ADAPTERSprobeAccountSettingAdapters;未找到可验证内部写入策略时统一返回 capability_unavailable,保留 raw_rpc_receipt/readback 空值,不走广播或 UI 伪成功。
  • 个人资料 OpenAPI 强制 hook_only 并透传 confirm/dry_run,避免生产旧 no_root_a11y 路由再次执行。
  • 验证:node --check sdk/agent/hook/wechat_hook_v2.jspytest 13 项通过。
  • 报告:开发文档/10、项目管理/02-测试报告/20260724_WP-HL-07_账号资料设置/README.md

2026-07-24WP-HL-07 生产部署续跑与 Android Agent 补丁

  • 生产服务端已备份并发布 WP-HL-07 Hook 脚本、HookExecutor 映射和个人资料 hook_only 路由补丁SDK 容器重建后 healthy。
  • 复测确认生产旧 no_root_a11y 签名路径已切断;剩余问题转为手机端旧 APK Unsupported: wechat.set_signature/get_profile
  • Android Agent 已补齐 HookExecutor.kt 的账号资料 action 白名单和 snake_case→camelCase RPC 映射,./gradlew :app:assembleDebug 构建成功。
  • APK 通过 WSS 分片上传到手机并校验 SHA-256 一致Root 安装命令执行后旧 Agent 断开,设备当前 devices_online=0,等待手机端 Agent 重新上线后继续 Hook 探测与签名回读。
  • 详细证据追加在:开发文档/10、项目管理/02-测试报告/20260724_WP-HL-07_账号资料设置/README.md

2026-07-24设备页实时控制工作台重构

目标

  • 设备详情页改为“实时手机 + 分类操作”的简洁结构。
  • 手机画面持续更新,浏览器内点击、滑动直接作用于真机,不再以手动截图轮询作为主交互。
  • 应用入口去重微信、Soul、小红书、抖音、闲鱼统一保留在应用控制区。

实现

  • 新增 GET /api/v3/adb/devices/{serial}/screen/live.mjpeg
    • 默认 4 FPS、JPEG 质量 72、宽度 720。
    • Type-C/ADB 在线时优先采集 ADB 帧。
    • ADB 离线且 Agent WebSocket 在线时自动切换 WebSocket 截图帧。
    • 使用 multipart/x-mixed-replace 持续推送,并关闭代理缓存。
  • ADBDevice.capture_frame_jpeg() 新增浏览器实时帧采集与缩放。
  • 设备页新增实时在线状态、手机外观画框和断线自动重连。
  • 画面坐标按真实显示区域映射到设备分辨率;支持直接点击、上下左右滑动。
  • 手机旁只保留主页、返回、最近任务、重连画面;应用统一在左侧应用控制区,移除主界面的截图按钮和自动截图轮询。

验证

  • /health200设备 xgfe65eimrrofyws ADB 在线。
  • 实时流HTTP 2006 秒接收 899012 bytes首帧 JPEG 为 720×1600。
  • 控制接口:主页、返回、点击、最近任务均返回 code=200
  • Chrome 页面回归:#live-screen-status=实时在线,实时画面正常显示;主界面可见“截屏”按钮数量为 0。
  • Python py_compile、页面脚本 node --checkgit diff --check 全部通过。

运行说明

  • 当前 8899 端口由本机 Uvicorn SDK 服务承载并已加载最新源码。
  • Docker Desktop 曾出现容器 Start API 卡死;强制重启 Docker 后依赖容器恢复SDK 使用现有本机服务完成本轮验收。

2026-07-24设备页手机核心布局与控制提速

界面重构

  • 设备详情改为两栏“手机主位 + 紧凑工具区”,实时手机位于视觉第一列。
  • 设备状态压缩为一行标题和四个小指标连接、账号、IMEI、内存、事件收进折叠详情。
  • 设备服务、运行参数、应用控制保持完整微信、Soul、小红书、抖音、闲鱼均保留图标入口。
  • 手机旁只保留主页、返回、最近任务、重连画面,其他功能集中在右侧分类区。
  • 页面高度压缩到单屏 1200px 内,按钮增加按压反馈,触控时即时显示“触控中/指令已发送”。

性能处理

  • 进入设备首屏不再等待 Hook 探测;移除与实时控制无关的约 1.1 秒探测请求。
  • 详情、连接模式、服务状态改为后台静默更新,不再重建实时画面 DOM。
  • 取消进入页面后自动执行服务 ensure改为用户点击“检测服务”时执行。
  • 实时流移除逐帧 adb devices 检查,新增 0.9 秒帧缓存,重复标签页和重连复用画面。
  • 画面参数调整为 3 FPS、600px、JPEG 65降低 ADB 与浏览器解码压力。
  • 活动画面复用 30 秒亮屏状态;滑动分辨率缓存 5 分钟,动画时长由 500ms 降到 220ms。

验证

  • Chrome 冷启动:点击设备后详情 DOM 154ms 出现,首帧 2663ms 显示并进入“实时在线”。
  • ADB 控制:点击约 0.265 秒;主页、返回、最近任务多数为 0.230.32 秒。
  • 健康状态WS 1、ADB 1设备 xgfe65eimrrofyws 在线。
  • 页面脚本 node --check、Python py_compilegit diff --check 通过。

2026-07-24接口文档摘要统一中文化

实现

  • sdk/app/main.py 新增 OpenAPI 中文摘要生成器:优先读取接口中文注释,无中文注释时使用中文词典兜底。
  • 支付接口统一显示“显示付款码、确认收款、查看钱包、查看账单、领取红包、批量领取待收款项”等中文短标题。
  • 新增 sdk/tests/test_openapi_chinese_summary.py,防止后续新增接口重新出现纯英文摘要。

验证

  • 定向测试:2 passed
  • 在线 OpenAPI 共 405 个接口405 个摘要均包含中文,缺失数为 0。
  • 本机 8899 Uvicorn 已重启并加载最新代码,/health/openapi.json 可访问。

2026-07-24工作手机无界面接口与部署交接更新

更新内容

  1. 完善微信无界面命令行接口:扫码加好友、群成员加好友、个人二维码、账号资料、红包实时领取、转账等能力的契约和测试留痕。
  2. 更新 Agent、Hook、统一 API、设备传输和 Frida 桥接相关实现,并补充接口契约测试。
  3. 更新《工作手机 SDK 交付更新说明》,同步手机安装、服务器部署、规则、验证边界和接手入口。

开发流程

需求/接口盘点 → 无界面 CLI/API → Agent → Frida RPC → Hook → 数据读回 → 原始证据 → 部署文档 → Gitea 同步

当前结果

  • 本地代码和测试报告已整理。
  • 公司 Gitea 待网络恢复后推送本轮提交。
  • 线上宝塔部署、真实设备在线和持续稳定性继续按验收记录单独确认。

2026-07-24 02:15 · WP-HL-06 转账确认接口补齐

  • 新增接口:/api/v3/payment/transfer/confirm,支持已取得 req_key 后二段式确认,响应不回显支付密码。
  • 新增 Hook actionconfirm_prepared_transfer,兼容别名 transfer_confirm,统一映射 confirmPreparedTransfer
  • 补齐 Kinda 支付确认后消息/账单回读门禁,避免 placeorder 下单准备被误判为最终转账成功。
  • 验证:test_message_management_api_contract.py + test_wireless_frida.py 共 100 项通过;服务 0.0.0.0:8899 已重新加载LAN docs http://192.168.110.47:8899/docs#/ 可访问。
  • 当前限制:无线 Agent 未在线health devices_online=0真机最终支付确认回读待 Agent 重连后继续。
  • 证据目录:开发文档/10、项目管理/02-测试报告/20260724_WP-HL-06_转账接口_xd2214_爱笑的阿猫/

2026-07-24 02:25 · WP-HL-06 转账自动续跑脚本

  • 新增 sdk/scripts/wp_hl_06_transfer_until_success.py:自动等待无线 Agent、探测 Hook、调用转账下单与确认接口并保存 JSON 证据。
  • 设备在本轮等待中重新上线Hook 状态返回 success=true,通道 server/frida
  • 当前已到 ready_for_execute,服务已设置小额测试白名单:目标 wxid_xbhui4yjlw9a22、金额上限 1.00
  • 最终 100% 封账仍以 settlement_verified=true 或消息/账单回读命中为准。

2026-07-24设备管理 scrcpy 实时远程控制

方案

  • 将设备页的主画面由定时截图升级为 scrcpy 原生 H.264 视频流。
  • 新增双向 WebSocket/api/v3/adb/devices/{serial}/screen/remote.ws
  • 同一连接承载视频帧、点击、拖动、主页、返回和最近任务,浏览器使用 WebCodecs 解码后绘制到 Canvas。
  • MJPEG 仅保留为旧浏览器兼容回退,不再作为正常浏览器的主画面。

实现

  • 新增 sdk/app/services/scrcpy_remote.py:启动 scrcpy server、读取 H.264 Annex-B 包、解析 SPS codec、发送触摸与按键控制包。
  • 新增 sdk/app/bin/scrcpy-server-v1.24.jarSHA-25664afcbe4e02c70de965a33bb9eeab80cc35d6345625a8457a021e179b5bd4a9c
  • sdk/app/routers/adb.py 新增实时视频/控制 WebSocket并确保单设备只有一个活动会话。
  • sdk/app/static/hub.html 使用 Canvas + VideoDecoder加入连接代次隔离避免异步刷新时旧连接回调覆盖新连接。

真机验收

  • 设备:xgfe65eimrrofywsAndroid 13型号 2312DRAABC。
  • WebSocket 初始化328×720、H.264 avc1.64000A、30 FPS 上限、4 Mbps。
  • Chrome 首帧:页面状态 scrcpy 实时Canvas 328×720MJPEG 回退隐藏。
  • 远程按键:点击“主页”后 Canvas 采样校验值从 2952779902 变为 212400507,确认控制送达且新画面实时回传。
  • 协议测量:初始化约 0.63 秒,配置与关键帧约 0.93 秒到达。
  • 验收截图:开发文档/8、部署/05-测试验收/设备管理_scrcpy实时远程控制_20260724.png
  • Python py_compile、页面 JavaScript node --checkgit diff --check 通过。

无线边界

  • 本机已执行设备端 TCP/IP 调试切换;设备 Wi-Fi 地址为 192.168.110.247
  • 当前局域网对该地址的 5555 端口不可达,表现为 TCP 超时属于网络侧终端隔离Type-C 拔除后的 scrcpy 通道需先确保服务器能直连设备 TCP/IP 调试端口。

2026-07-24扫码绑定后无线远程控制

调整

  • 设备页实时控制改为扫码绑定 Agent 优先:手机主动保持 WebSocket 连接后,浏览器画面与控制命令均经该连接,不依赖 Type-C 或主机 ADB。
  • 远程 WebSocket screen/remote.ws 新增 agent-jpeg 传输:服务端向已绑定 Agent 请求真机画面,压缩为 324×720 JPEG 后持续推送到浏览器 Canvas。
  • 屏幕点击、滑动、主页、返回统一回传到 Agent无绑定 Agent 时才保留 scrcpy H.264 作为现场诊断通道。
  • 手机画面下方按钮由四个收敛为三个:主页返回重连画面;其余操作直接在手机屏幕完成。

验证

  • 绑定 Agent 自动回连:devices_online=1,设备 xgfe65eimrrofyws 在线。
  • Chrome状态 扫码设备实时Canvas 324×720 可见MJPEG 回退隐藏,画面采样非黑像素 589
  • 实时页仅显示三键:🏠主页↩️返回↻重连画面
  • 验收截图:开发文档/8、部署/05-测试验收/设备管理_扫码无线远程控制_20260724.png
  • 稳定性处理:卸载重复的 com.workphone.sdk-host 守护实例,保留 com.karuo.workphone-sdk 独占 8899处理后健康检查恢复 devices_online=1,扫码 Agent 自动回连。

2026-07-24设备详情四段交互布局

界面调整

  • 右侧由连续堆叠的内容块改为四段:设备状态、设备操作与服务、通用设置、应用控制。
  • 设备操作与服务通用设置应用控制 均改成原生 details/summary 点击区域,标题整行可展开和收起。
  • 应用控制默认展开;设备操作与通用设置默认收起,减少首次进入的信息密度。
  • 手机下方保持三键:主页、返回、重连画面;所有业务点击仍直接作用于手机屏幕或相应接口。

验证

  • 三个右侧折叠区均检测到真实 SUMMARY 点击元素。
  • 点击后:设备操作与服务显示 4 个可操作按钮;通用设置显示 2 个保存/启动按钮;应用控制保留 21 个入口。
  • 扫码无线控制保持 扫码设备实时,画布和三键未受布局调整影响。
  • 截图:开发文档/8、部署/05-测试验收/设备管理_四段交互布局_20260724.png

2026-07-24 02:25 · WP-HL-06 手机端转账验收页

  • 新增 sdk/app/static/wp_hl_06_transfer.html,手机可通过局域网直接打开并完成检测、干跑、本人确认转账与回读展示。
  • 页面固定本次小额测试目标:wxid_xbhui4yjlw9a22,金额 1.00;密码只在请求中使用,不写 localStorage/sessionStorage。
  • 已验证 LAN HTTP 200转账 dry_run 通过Hook 与好友查询通过。
  • 最终100%仍以页面返回 settlement_verified=true 或 readback found 为准。

2026-07-24 02:43 · WP-HL-06 真实转账执行未封账

  • 已删除手机验收页 sdk/app/static/wp_hl_06_transfer.html,页面访问返回 404。
  • 已执行真实无界面脚本,但 Round25 在 placeorder 前被 hook_unavailable 拦截,未形成最终转账成功证据。
  • Round15 证据显示已取得过真实 req_key,确认阶段卡在 top_activity_required_for_kinda_pay;已补 _getTopActivity 的 Activity 枚举兜底。
  • 当前不得标 100%;下一步先稳定 Frida attach 与设备端 Agent 本机 Frida再继续真实执行。

2026-07-24 02:58 · WP-HL-06 Frida稳定性继续处理

  • 已定位转账最终未封账的当前主因Frida端口和服务进程不稳定不是转账接口契约问题。
  • .env 已回到实际可枚举微信进程的 SERVER_FRIDA_PORT=19886
  • 修复 server_frida_bridge.py 失败清理/短冷却,避免重复 attach 堆积。
  • 回退 _getTopActivityJava.choose 兜底,避免 Hook 脚本加载超时。
  • 当前仍未取得最终 settlement_verified=true 或 readback found不登记100%。

2026-07-24扫码绑定二维码生成修复

问题与处理

  • 首页“扫码绑定手机”曾显示 请求失败: Failed to fetch。排查确认二维码接口实际可达并成功返回 PNG但前端只兼容旧版 data 包装,未正确读取当前接口直接返回的 successimage_data_url 字段。
  • generateBindQR() 已兼容直接响应与旧版 data 包装两种结构,并支持从 image_base64 组合图片地址。
  • 针对服务热重启造成的短暂网络断连,二维码请求会等待 700ms 后自动重试一次;再次失败时显示“服务正在重连,请稍后点击重新生成”,同时保留重新生成按钮。

验证

  • POST /api/v3/qrcode/generate 返回 success=true,包含 image_base64image_data_url
  • Chrome 真实点击“生成绑定二维码”后,页面显示项目“工作手机”、项目 ID cunkebao、当前 WebSocket 服务器和可扫码 PNG图片自然尺寸 730×730
  • 8899 服务连续 3 次健康检查均为 healthy,绑定 Agent 保持 devices_online=1
  • 页面 JavaScript node --checkgit diff --check 通过。
  • 验收截图:开发文档/8、部署/05-测试验收/扫码绑定二维码生成_20260724.png

2026-07-24 03:05 WP-HL-06 转账接口 PID 兜底与密码门禁

  • FridaManager 增加 SERVER_FRIDA_WECHAT_PID/FRIDA_WECHAT_PID 兜底,解决远端 Frida 枚举漏微信主进程时无法 attach 的问题。
  • /api/v3/payment/transfer 真实动作新增支付密码前置门禁:无 payment_password/pay_password 时返回 payment_password_required不触达设备与 RPC避免创建待支付订单。
  • 补齐消息管理/支付契约回归101 passed, 1 warning。
  • 证据报告:开发文档/10、项目管理/02-测试报告/20260724_WP-HL-06_转账接口_xd2214_爱笑的阿猫/20260724_round33_35_pid_override_password_guard.md

2026-07-24 03:20 WP-HL-06 Kinda 支付确认 Activity 与类探针

  • Hook 脚本新增 Activity 生命周期兜底与 _getTopActivity() 优先最近 resumed Activity解决 Kinda 支付确认页启动依赖 Activity Context 的问题。
  • 新增 inspect_payment_classes/inspectTransferPaymentClasses 探针,确认当前微信版本 KindaPwdInputViewImpl、PayInfo、x15.n0、cx4.p、q0 均存在startSNSPay 签名为 Context, PayInfo
  • 回归测试101 passed, 1 warning。
  • 证据报告:开发文档/10、项目管理/02-测试报告/20260724_WP-HL-06_转账接口_xd2214_爱笑的阿猫/20260724_round36_39_kinda_activity_probe.md

2026-07-24 03:30 WP-HL-06 transfer/confirm 门禁与 Kinda 生命周期修复

  • inspect_payment_classes 补入接口清单、Skill 映射与 HookExecutor便于无界面支付链路诊断。
  • Hook getCtx() 增加 currentApplication/mInitialApplication/mAllApplications 兜底;生命周期注册支持从当前 Activity 获取 Application。
  • 补齐 Android 新版 ActivityLifecycleCallbacks pre/post/configuration 方法,真机验证 lifecycle_tracker 已 installed=true
  • 非扣款验证confirm dry_run 成功confirm 无密码真实门禁返回 payment_password_required,未进入支付 RPC。
  • 回归测试101 passed, 1 warning。
  • 证据报告:开发文档/10、项目管理/02-测试报告/20260724_WP-HL-06_转账接口_xd2214_爱笑的阿猫/20260724_round40_43_confirm_gate_lifecycle_ok.md

2026-07-24 03:40 WP-HL-06 转账只读回读接口

  • 新增 Hook RPC inspectTransferReadback 与 BFF POST /api/v3/payment/transfer/readback,用于只读核验转账最终消息/账单回读。
  • 新增 inspectRecentTransferMessages,扫描最近 type=49 消息排查回读漏判。
  • 真机只读核验历史订单DB 可读但指定转账最终消息未命中,接口返回 code=202 success=false stage=outgoing_transfer_message_missing
  • 回归测试102 passed, 1 warning。
  • 证据报告:开发文档/10、项目管理/02-测试报告/20260724_WP-HL-06_转账接口_xd2214_爱笑的阿猫/20260724_round44_45_transfer_readback_endpoint.md

2026-07-24 · 微信设备自动连接稳定性修复

  • 事件真源统计:设备 xgfe65eimrrofyws 注册 5785 次、掉线事件 6713 条;按连接会话配对为真实掉线 5754 次,重复告警 959 条2026-07-23 单日真实掉线 98 次。
  • 服务端:ws_hub.disconnect 改为连接实例感知与幂等,旧 WebSocket 回调不再误删同设备新连接。
  • Python Agent旧配置地址不可达时启动 UDP 自动发现;配置生成器选择当前可达主服务。
  • Android Agent忽略旧 socket 回调;修复 START_STICKY 空 Intent 重启不恢复 AgentEngine应用更新后自动拉起服务。
  • 验证Python 回归 29 passedAndroid compileDebugKotlin + assembleDebug BUILD SUCCESSFUL。
  • 产物:开发文档/8、部署/05-测试验收/20260724_设备自动连接稳定性修复/。当前设备仍未注册,待其首次自行回连后经 WSS 完成新版 Agent 更新与持续在线观察。
  • 续:已启动 com.karuo.workphone.wss-autoupdate 持久守候,设备连到本机或 NAS WSS 后自动通过 /app/install-ws 更新 5.0.9,成功后自动退出;当前 PID 52895、状态 running。

2026-07-24接口文档实现状态自动亮显/置灰

实现

  • OpenAPI 每个业务接口新增 x-implementation-status 与中文状态标签。
  • 有真实执行代码的接口标记为 implementedSwagger 保持彩色并显示“已实现”。
  • 空函数、明确接口占位或固定返回 capability_unavailable 的接口标记为 placeholderSwagger 自动置灰并显示“未完成”。
  • 判定来自源码,接口补齐真实实现后自动转亮;禁止只改页面颜色冒充完成。
  • 新增 swagger-status.cssswagger-status.js,并更新 机擎/SKILL.md 固化规则。

验证

  • OpenAPI 状态统计:已实现 408未完成 1。
  • /api/v3/payment/transfer 显示“已实现”;/api/v3/scan/qr-code 显示“未完成”并置灰。
  • 回归测试:4 passedPython 编译、JavaScript 语法、差异检查通过。
  • 局域网 192.168.110.47:8899 健康检查通过。

2026-07-24消息管理 9 接口真实调用

测试范围

  • /message/send
  • /message/list
  • /message/sync-since
  • /message/batch-send
  • /comment/reply
  • /message/forward
  • /message/recall
  • /message/send-card
  • /message/voice

结果

  • 9 个接口均通过真实 HTTP 调用并取得回执;测试对象为微信文件传输助手。
  • HTTP 2xx 共 4 个、HTTP 503 共 5 个,业务成功 0 个。
  • 失败主因:手机端 WebSocket Agent 未连接、Frida Hook/宝塔桥不可用。
  • 批量发送额外触发 rate_limited:新号期禁止高风险批量发送。
  • 保留真实失败,不切换 ADB/UI 业务兜底,不把接口响应误记为业务成功。

验证与证据

  • 契约与接口文档回归:88 passed
  • 原始请求与返回:开发文档/8、部署/05-测试验收/20260724_消息管理9接口实测/raw_responses.json
  • 汇总报告:开发文档/8、部署/05-测试验收/20260724_消息管理9接口实测/README.md
  • 续跑条件:手机 Termux Agent 重新连接 WebSocketFrida 附着微信后按原脚本重新执行。

2026-07-24消息接口完成口径升级为真机闭环

  • 消息管理接口的完成状态由“代码/契约存在”升级为“真机执行与业务回读一致”。
  • 9接口0/9的现有失败证据已同步给无线连接、无界面接口、全量验收三个专责对话。
  • 无线连接先恢复 Agent/Hook无界面接口补开发全量验收独立回收并退回失败项。
  • 未达到真实RPC与消息回读的接口继续保持未验收不以HTTP响应或离线契约冒充成功。

2026-07-24消息9接口统一回执字段补齐

  • MessageOperationResult/ResponseMessageListData/ResponseBatchMessageData/Response 已增加 trace_id/raw_rpc_receipt/readback
  • 消息写操作与 list/sync-since 透传真实底层字段;无底层数据时保留空值。
  • 回归测试98项通过但无线Agent/Frida仍未恢复因此不提升9接口真机完成状态。

2026-07-24全量接口真机验证门禁与存客宝74条矩阵

  • Swagger全部接口默认改为 verification_pending;只有登记真机四证后才转为 implemented
  • 当前OpenAPI共409个操作408个“待真机验证”、1个“未完成”自动亮显为0。
  • 存客宝74条 /v1/workphone/* BFF依赖已生成统一矩阵 /Users/karuo/Documents/开发/2、私域银行/cunkebao_v3/开发文档/5、接口/存客宝接口与工作手机依赖矩阵_20260724.md
  • 证据盘点18条存在历史精确路径记录但待四证复核56条从未形成精确验证记录。
  • 已按设备、连接、消息、好友、群、标签、朋友圈、BFF业务对账、独立验收分发到对应Codex对话。
  • 回归OpenAPI与消息接口测试 89 passed

2026-07-24入群欢迎语RPC缺口登记

  • POST /api/v3/group/set-welcome 路由已存在,但静态核对未找到 set_group_welcome 的 HookExecutor action→RPC 映射。
  • 存客宝74条矩阵第53项已标红为“待补真实RPC并真机验证”。
  • 缺口已交微信RPC内核处理没有可验证内部能力时必须返回 capability_unavailable,禁止固定成功或界面兜底。

2026-07-24set_group_welcome接口契约收口

  • 新增 set_group_welcome → setGroupWelcome RPC契约和接口模型。
  • /group/set-welcome 已具备确认门禁、参数校验、结构化能力不足及原始回执透传。
  • 回归104项通过状态仅从“缺RPC”升级为“代码完成待真机”未标记真机通过。

2026-07-2471接口连接门禁恢复与76条依赖矩阵校正

  • 真机设备 xgfe65eimrrofyws 已恢复上线:health=healthydevices_online=1online_ws_count=1supports_hook=true
  • Hook ping 已取得真实 trace_id=ea876003c02e4bd096808da6cab084a9raw_rpc_receiptHook status 已取得 trace_id=3b2ab5d3d40941d49a296060d93b5793,通道为 server/frida、传输为 frida_reverse_tunnel
  • stability/watch 首样确认 WS/Hook/Agent 均为 true、耗时30ms证据目录开发文档/8、部署/05-测试验收/20260724_71接口连接前置/README.md
  • 连接恢复只代表真机业务复测门禁已打开;每个接口仍须同时取得真机动作、trace_idraw_rpc_receipt、业务回读后才标记“已实现/变亮”。
  • 已校正存客宝76条依赖矩阵的 #69、#70、#71#70 是存客宝本地来电服务,#71 是BFF受控动态代理二者不是工作手机固定OpenAPI接口第六节已验证76行、76个唯一ID、12列结构全部正常。

2026-07-24存客宝BFF #70/#71实测回收

  • #70 /v1/workphone/incoming-call 已完成真实JWT请求、本地服务入库、数据库回读、电话获客 sceneId=5 业务回读四处记录ID一致120秒内重复上报返回 duplicate=true 且复用同一ID。该项属于存客宝本地链路不纳入工作手机固定OpenAPI点亮统计。
  • #71 /v1/workphone/sdk/proxy 已完成真实只读透传GET /api/v3/devices 回读真实设备1台任意URL、编码URL、单/双编码穿越均返回应用码400。
  • 已修复存客宝编排器丢失异常码、把策略拒绝包装为 code=200 的问题并强化重复URL解码后的穿越检查。
  • #71当前只确认“安全层与只读透传通过”所有写业务仍须取得真机动作、trace_idraw_rpc_receipt、业务回读四证Swagger状态继续保持灰色。
  • 存客宝侧验证21项契约测试通过依赖矩阵76行、12列、76个唯一ID校验通过。证据目录cunkebao_v3/开发文档/8、部署/05-测试验收/20260724_BFF_70_71/

2026-07-24设备域真机验收与 WS 回执统一

  • sdk/app/routers/devices.pyAI 任务、常驻指令、同步 AI 执行统一回传 WS Agent channel_usedtrace_idraw_rpc_receipt;同步执行状态任务改为设备状态回读。
  • sdk/android-app/.../SkillExecutor.kt:新增 click_text 无障碍文本点击,并将 status 识别为本机设备状态回读。
  • 首轮真机证据已写入 开发文档/8、部署/05-测试验收/20260724_设备域全量验收/;连接重启后手机到正式 WS 端口受网络策略阻断,待恢复后复跑 #9/#10/#11/#19/#24/#29。

2026-07-24设备域 #1-29、R1-R2 首轮真机复跑

  • #1-6、#8、#12-18、#20-28、R1-R2 已通过 WS Agent 正式链路取得请求与状态回读;动作项已保存 trace_idraw_rpc_receipt,原始证据位于 开发文档/8、部署/05-测试验收/20260724_设备域全量验收/
  • 已修复 click_text 以及 AI task/standing-order/execute 的 WS 同步回执逻辑新APK更新后仍须通过无线链路取得补丁后回执。
  • #29 Fleet 已收到带 image_base64 的真机截图原始回执,但聚合归一化误判为失败,需修复后复跑。
  • 设备更新重启后,手机访问 192.168.110.47:8899 返回“无路由”WSS暂时断开#9/#10/#11/#19/#24/#29继续保持待验禁止按旧回执或Type-C动作标记通过。
  • 已通知无线连接主责恢复WSS并要求设备主责先修#29连接恢复后仅补跑上述6项避免重复执行已留证动作。

2026-07-24设备WSS无路由恢复与6项补跑启动

  • xgfe65eimrrofyws 已重新注册:devices_online=1online_ws_count=1、心跳age=2s、agent_running=true稳定性样本31ms。
  • Hook probe 为 supports_hook=trueping trace_id=c6e6083c047d43988cc70a21685323d6 且含 raw_rpc_receiptHook status trace_id=85f3425f8a2a4dc9a5618ecee138c79f
  • 主机 192.168.110.47/24、SDK *:8899 监听及防火墙均正常此前“无路由”定位为手机WLAN到LAN网段的瞬时可达性问题。
  • 已向设备域下发 #9/#10/#11/#19/#24/#29 补跑;继续使用 WSS→无线Frida正式链路每项须保存新请求、响应、trace、原始回执与业务/画面回读。
  • 恢复证据:开发文档/8、部署/05-测试验收/20260724_WSS无路由诊断/README.md。连接恢复不直接改变业务接口状态。

2026-07-24朋友圈 #61-68 首轮复跑与WSS二次掉线

  • #61 list虽有Frida trace与原始回执moments=[]readback=null#62 post与#68 share-link只到accepted/queued最终 success=false 且无列表回读。
  • #63/#64仅使用合成 sns_id=0 灰测不能算真实业务验证后续只允许使用指定测试账号自产生、可回读并可删除的真实测试朋友圈ID。
  • #65/#67受WSS未注册门禁拦截#66动作清单缺少set-cover真实RPC。#61-68全部保持灰色。
  • 现场再次检查SDK仍监听 *:8899、LAN health HTTP 200devices_online=0说明此前WSS恢复仅为瞬时单样本当前已再次掉线。
  • 已暂停朋友圈和设备域业务补跑,要求连接主责恢复后提供持续多样本稳定窗口;报告目录:开发文档/8、部署/05-测试验收/20260724_朋友圈61-68全量验收/

2026-07-24状态漂移归因与#29点亮撤销

  • 状态漂移专项确认同窗唯一WS为 127.0.0.1:8899 → 127.0.0.1:53467对端PID属于本机adb server设备上报endpoint同样为 ws://127.0.0.1:8899/...未观察到手机WLAN源IP到主机8899的会话。

  • 此前 devices_online=1、Hook=true及设备域补跑属于回环短暂注册不能作为无线真机验收门禁。

  • #29虽已取得 trace_id=36d63188fda849429c8fb9ee1a25ae4a、raw回执和截图readback但链路来源不符合正式无线要求已从矩阵“通过”和OpenAPI implemented撤回为灰色待验。

  • #9/#10/#11/#19/#24/#29均须在真实手机WLAN→192.168.110.47:8899持续稳定会话下重新取证;原回环证据保留用于排障,不计通过。

  • 后续连接恢复回执必须包含非adb回环的ESTABLISHED会话、连续稳定样本及WSS/Hook追踪。权威证据开发文档/8、部署/05-测试验收/20260724_状态漂移专项/状态漂移专项_回环伪在线归因_20260724_1721.md

  • 口径更正:#29 Fleet 契约回归发生在 ADB 回环 WS不能作为无线真机验收保留聚合补丁#9/#10/#11/#19/#24/#29 等待手机 WLAN→正式服务器稳定会话后重取四证。

2026-07-24ADB反向映射残留清理

  • 连接整改后现场复核发现 adb reverse --list 仍存在 UsbFfs tcp:8899 tcp:8899并再次产生本机adb server到SDK的127回环伪在线设备状态中的 server_url 仍为 ws://127.0.0.1:8899/...
  • 已移除 tcp:8899 reverse并终止adb server清理残留连接后 devices_online=0online_ws_count=0,伪在线再次归零。
  • 清理期间SDK PID从5787变为9385已要求连接主责继续核查唯一作业的重启原因并永久阻止守护逻辑重建8899 reverse。
  • 已要求手机Agent主责启动SHA256 cc04aa...e899e的新包Type-C只允许部署正式连接必须提供手机WLAN源IP到 192.168.110.47:8899 的ESTABLISHED证据。

2026-07-24SDK SIGTERM直接来源定位

  • 现场捕获运行中验收shelllaunchctl kickstart -k gui/.../com.karuo.workphone-sdk; ... profile/get其父进程为Codex app-server该命令会主动向正式SDK发送SIGTERM并造成PID更替。
  • 已终止该shell并通知好友域、全量验收及连接域禁止执行 kickstart -kkill :8899禁止运行会清理8899的 deploy.sh / connect_all.sh
  • 已确认旧sdk-host、python-agent、connection-keeper、usb-guard、sdk-watcher均为disabled当前唯一SDK PID=13620、runs=19连续3个样本保持不变。
  • 业务复跑仍关闭下一放行条件不变唯一PID持续稳定且出现手机WLAN源IP→主机8899的非ADB ESTABLISHED会话。

2026-07-24手机WLAN隔离定位与公网WSS切换

  • 手机WLAN地址为 192.168.110.247/24SSID“卡若-4点起床的男人”从手机访问主机 192.168.110.47 与NAS 192.168.110.101 均返回 Destination Host Unreachable确认同网客户端隔离。
  • 手机可正常访问 wpsdk.quwanzhi.com:443open.quwanzhi.com:443;公网 https://wpsdk.quwanzhi.com/health 返回healthy。
  • 已执行 adb reverse --remove-allHub恢复0禁止继续依赖LAN 8899或ADB reverse建立业务连接。
  • 连接方案切换为手机Agent直连 wss://wpsdk.quwanzhi.com/ws/device/xgfe65eimrrofyws要求回收公网端devices/WSS/Hook真实证据后再开放业务复跑。

2026-07-24好友域 #36-44 阶段收口

  • #36 contacts已取得真实100条联系人#37 profile-bundle取得真实聚合#38 profile/get、#39 friend/info已有trace/raw/readback阶段证据但均须在公网无线WSS门禁开放后复核。
  • #40补齐trace/raw/readback#41新增“已是好友”前置回读#42新增幂等与写后conRemark回读#44修复trace_id NameError并补批次聚合回执。静态编译和好友/备注/画像契约测试30项通过。
  • #43未执行真实删除继续等待可删除且可恢复的专用测试对象。
  • 已更新76条依赖矩阵#36-39标为“阶段只读证据待无线复核”#40-42/#44标为“代码完成待无线四证”#43保持灰色矩阵第六节仍为76行、76个唯一ID、0错列。
  • 门禁开放后的顺序固定为 #36-39 → #40/#41/#42/#44 → #43禁止重启共享SDK。

2026-07-24公网Agent部署前鉴权复核

  • 公网health正常但匿名请求 /api/v3/agent/bootstrap/api/v3/agent/download 均返回401“API Key无效”连接主责记录的200与包哈希依赖有效鉴权。
  • 手机Agent部署前必须确认设备侧已有可用凭据/鉴权头且凭据不得写入报告或聊天否则无法通过公网完成Bootstrap与包拉取。
  • 本轮启动adb诊断后adb reverse --list 再次出现 UsbFfs tcp:8899 tcp:8899 并造成local Hub伪在线已执行remove-all并停止adb serverlocal Hub恢复0。
  • Type-C部署流程新增前后双检reverse列表必须为空部署完成后停止adb server最终状态只认公网Hub与手机WLAN WSS。

2026-07-24 工作手机设备注册与微信 8.0.69 签名闭环

  • 修复 WSS 设备自动回连:保留唯一 SDK 服务USB 守护同时维护 reverse:8899 与 forward:27042。
  • 修正 set_signature 路由,经 WSS Agent 无障碍执行;补充 input/input_text 基础动作路由。
  • 微信 8.0.69 适配:签名入口由“更多信息”改为个人资料页直达,增加坐标和 ADB Keyboard UTF-8 输入兜底。
  • 真机已保存签名 游戏教学辅助|看我朋友圈|购买地址私聊我,截图与回执见 开发文档/8、部署/05-测试验收/20260724_签名注册闭环/
  • 纠正旧结论:userinfo.id=12290 不是签名字段,旧 get_profile.signature=1 为错误映射。

2026-07-24WebSocket回环来源代码门禁

  • ws_hub.connect 新增客户端来源检查127/::1/localhost直接以4403关闭不写入connections/device_infoWebSocket入口在拒绝后立即返回。
  • launchd已将 SERVER_FRIDA_ENABLED=false 持久化避免本机Frida代理冒充微信业务验收链路配置将在下一次受控SDK生命周期加载。
  • 审查确认仅 sdk/app/main.py 一处调用 ws_hub.connect,已正确处理布尔返回值。
  • 验证通过compileall、OpenAPI测试4项、loopback来源7个边界用例、diff check。
  • 当前不主动重启SDK先完成公网Agent设备鉴权与部署准备再受控加载并验证回环拒绝日志、唯一PID、远端IP、公网WSS与Hook四证。

2026-07-24受控加载最终确认

  • 复核发现plist本身被并行流程改回 SERVER_FRIDA_ENABLED=true已重新设为false并完成受控加载。
  • 首次bootstrap出现I/O错误纠正为enable后重新bootstrap/load当前唯一SDK PID=82203、runs=1。
  • launchd与实际进程环境均确认 SERVER_FRIDA_ENABLED=false,监听 *:8899无设备ESTABLISHED会话Hub=0。
  • 新权威证据:开发文档/8、部署/05-测试验收/20260724_状态漂移专项/controlled_reload_frida_false_20260724_最终回执.md
  • 下一步只推进手机Agent公网鉴权与WSS注册未出现真实公网手机会话前业务接口继续灰色。

2026-07-24扫码绑定入口精简与公网 WSS 二维码

  • 数据总览移除局域网扫描快捷入口,改为“+ 扫码绑定手机”;绑定区改为单按钮,点击立即弹出二维码。
  • 设备列表顶部“扫描”改为“+ 绑定手机”;移除启动后自动局域网扫描。
  • 绑定二维码固定写入 wss://wpsdk.quwanzhi.com/ws/device,不再依赖局域网发现或保护权限步骤;二维码接口已返回成功图片。

2026-07-24绑定入口迁移与 APK 直达扫码

  • 数据总览已移除扫码绑定模块;设备网格新增同尺寸“+ 添加手机”卡,点击直接弹出绑定二维码。
  • Android SetupActivity 改为启动即进入扫码绑定,隐藏局域网搜索入口和保活步骤入口;新版 APK 已构建:sdk/android-app/app/build/outputs/apk/debug/app-debug.apk
  • 仍需在公网 WSS Agent 通道在线后进行无线 APK 更新与扫码回读,避免使用 ADB 回环链路。

2026-07-24 工作手机局域网强制连接恢复

  • 根因:手机连接旧无线接入点,无法访问同网段主机;同时本机 Python 代理复用设备 ID制造在线假象。
  • 处理:切换至关闭隔离的 LAN SSID移除 ADB reverse停止本机代理手机原生 Agent 改连 ws://192.168.110.47:8899/ws/device/{device_id}
  • 代码SetupActivity 支持通过空 public_servers 清除历史公网候选;修复 MainActivity 两处既有 Kotlin 编译错误。
  • 验证:手机源地址 192.168.110.80USB 断开、ADB=0 时设备仍在线;连续三次 LAN TCP 会话稳定;无线截图通道为 websocket/agent
  • 产物:开发文档/8、部署/05-测试验收/20260724_局域网强制连接恢复/

2026-07-24v5.0.10 扫码绑定简化与注入引擎自启

  • 未绑定首屏改为单一扫码页,移除联网、保活、下一步及手动局域网搜索展示。
  • 局域网自动寻服保留在 Agent 后台,前端不再提供开关或搜索按钮。
  • 设备中心接通 restart_frida 原生动作,注入引擎状态按 frida-server 真实就绪值显示。
  • APK 内置 Frida 16.5.6 arm64 资产React/TypeScript/Release/LintVital 构建通过。
  • 正式包:sdk/releases/20260724/workphone-agent-v5.0.10-release.apkSHA-256 64afcbe4e02c70de965a33bb9eeab80cc35d6345625a8457a021e179b5bd4a9c
  • 当前 ADB 0 台,手机回连后补安装与真机截图验收。

2026-07-24 注入引擎恢复尝试xgfe65eimrrofyws

  • 当前主机 adb devices 无设备,无法在此直接触发 Type-C 侧启动命令。
  • 已核验服务端:/api/v3/connection/bootstrap/xgfe65eimrrofyws 返回命令链,ws_url=wss://wpsdk.quwanzhi.com/ws/device/xgfe65eimrrofyws, frida_port=22840, frida_up_on_phone 脚本可重启 frida-server + Agent。
  • 已执行 /api/v3/connection/protocol/status/api/v3/connection/bootstrap/api/v3/hook/execute,确认当前离线状态:本机 devices_online=0online_ws_count=0
  • 建议下一步:将 Type-C 设备接回并执行 bash ~/workphone/sdk/scripts/termux_frida_up_onphone.sh -d xgfe65eimrrofyws,再回传 /api/v3/hook/probe/xgfe65eimrrofyws

2026-07-24WebSocket 首选链路服务端重启与实际验证

  • 目标:把服务端连接策略固定为 WORKPHONE_WS_FIRST=1,并确认 ws_hook_only_wechat=trueadb_count=0不以ADB回环恢复。
  • 执行动作:
    • 清理历史 uvicorn 实例后,改用 sdk/app 目录启动服务,显式注入 WECHAT_WS_HOOK_ONLY=1WECHAT_BACKEND_ONLY=1WORKPHONE_WS_FIRST=1WORKPHONE_HOST_ADB_PROBE=0
    • 使用 GET /api/v3/connection/statusGET /api/v3/contacts?limit=10POST /api/v3/message/sendGET /api/v3/hook/probe/{device_id} 进行链路回放。
  • 结果:
    • connection/status 已显示 ws_hook_only_wechat=trueadb_count=0online_ws_count=1
    • contacts 当前返回空列表无目标联系人说明不能执行10条真实联系人发件。
    • message/send 当前返回 frida_hook_not_attached,链路仍失败在手机端 Hook 未附着不是ADB回退。
    • hook/probe 明确返回:supports_hook=falsefrida_hook_not_attached
  • 下一步:按 bootstrap 返回的 termux_one_liner 在手机端启动 Frida/Agent恢复 supports_hook=true 后再按同流程补跑10条发送与2条朋友圈。

2026-07-24WebSocket-only 真机动作复测不走ADB

  • 已再次确认执行路径:WORKPHONE_WS_HOOK_ONLY=1WORKPHONE_HOST_ADB_PROBE=0WECHAT_BACKEND_ONLY=1/api/v3/connection/status 显示 online_ws_count=1adb_count=0
  • 已在 WS 通道完成三类动作链路回放:
    • hook/probe/{device_id}supports_hook=falsefrida_hook_not_attached
    • POST /api/v3/hook/execute action=send_message连续10次不同 to_id,全部返回 code=503error=frida_hook_not_attachedchannel_used=websocket/u2
    • POST /api/v3/moments/post2次返回 success=falseerror=长会话中断,需再等 1253s拟人节律
  • 全量动作清单复测:sdk/scripts/matrix_hook_catalog_verify.py -d xgfe65eimrrofyws 产物 sdk/tmp/matrix_hook_catalog_xgfe65eimrrofyws_1784907090.json1/223 通过,222/223 失败,失败错误统一 frida_hook_not_attached,通道统一 websocket/u2
  • 已补截屏:/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/ws_smoke_screenshot_20260724_235000.png
  • 结论:本轮未发现任何 ADB 代理路径参与执行,当前阻塞全部归因于手机端 Frida 未附着微信进程,建议执行手机端 bootstrapTermux恢复 hook 后继续复测发送与朋友圈。

2026-07-25工作手机安装资源包补齐“逆向/录特/Crack类工具”

  • 工作手机安装资源包 下新增:
    • 工具/逆向与安全/Frida + Gadget + Hook + 反检测/兼容脚本 + 关键配置。
    • 工具/录特与抓取/:验收、稳定性、朋友圈回归、发送链路回归脚本。
    • 工具/安装补充/:部署手册/故障排查补充资料。
  • 同步更新:README_安装资源包.md工具/安装目录说明.md索引/安装目录索引.md索引/文件清单.txt
  • 当前进度:目录归集与文档索引 85%,未改动 APK 安装逻辑与现有控制逻辑

2026-07-25微信消息落库复核

  • 已补齐对 workphone_sdk 的真实查询:数据库内当前仅有 commands/devices,暂未发现 messages/wechat_messages 的落库集合。
  • commands 可见微信指令为 wechat.send_messagewechat.post_momentswechat.get_messages,并出现 success=true 与 503 失败混杂。
  • 事件日志 sdk/app/data/hook/events.jsonl 显示 get_messages/send_message 大量执行回执,但仅有历史模拟 wechat_msg_receivedtest_phone_001),未见当前设备的聊天正文接收事件。
  • 已新增测试汇总文件:开发文档/10、项目管理/02-测试报告/20260725_微信聊天记录与执行动作汇总/汇总报告.md
  • 下一步:在手机端 hook 附着成功后,打通 get_messages 与服务端 messages 集合双向落库,形成“聊天记录可查证”闭环。

2026-07-25微信群加 10 人(无界面命令行)复测

  • 已按 10 秒间隔执行 10 个 add-from-group 回执链路,目标群 23070008577@chatroom
  • 结果10/10 失败。主要失败码为 websocket/offlineTermux Agent 未连)与 微信未确认好友申请request_failed
  • 关键信息:channel_used 已透传为 websocket/offlinewebsocket/u2,未出现无回执/假成功;失败原因可追踪。
  • 证据:开发文档/10、项目管理/02-测试报告/20260725_微信群加10人_实时回执汇总.md
  • 下一步:连接 Termux Agent 后重跑同一批样本,观察 channel fallback 改善与成功率。

2026-07-26SOUL派对成员运营模块需求立项

  • 新增独立SOUL派对成员运营需求成员前台登记、AI成员卡、欢迎内容任务、回执统计、房主关系图谱和频次治理。
  • SOUL模块与微信模块的数据、接口、任务队列明确隔离。
  • 本机调研覆盖派对转写、成员画像、运营材料和SOUL桌面端安装包模块线索。
  • 火炬负责S0字段验证、S1登记台、S2内容任务、S3看板、S4策略治理开发。

2026-07-26设备控制页 Hook 状态漂移与无线 Agent 别名修复

  • 现象:设备详情页显示 Hook / Frida 未注入,但 /api/v3/devices/{device_id}/modules 已返回 supports_hook=true、Frida 16.5.6、Root 就绪,微信两个模块均为 loaded
  • 根因:设备列表使用 ADB serial xgfe65eimrrofyws,无线 Agent 注册使用另一逻辑 ID连接优先级只按字符串精确匹配并且仅看 Agent 基础 capabilities忽略了已确认的模块探测回执。
  • 修复sdk/app/services/connection_priority.py 增加逻辑 ID/ADB serial/唯一设备型号三层匹配Hook 状态在 Agent 未带 hook 字段时读取同一设备最新模块探测回执,避免状态漂移。
  • 验收:本地 Docker workphone-sdk 重启后 /health 返回 devices_online=1/api/v3/connection/modes/xgfe65eimrrofyws?refresh=true 返回首选 Hook / FridaAgent WebSocket 在线;模块接口返回 Frida 16.5.6、Root true、2 个微信模块 loadedhub.html JavaScript 语法检查通过。
  • 控制链路:实时画面与触控入口继续使用 screen/remote.ws,按钮动作沿用 Agent WS 优先路由;本轮未改业务按钮和动作协议。
  • 待补UI 树接口已返回 HTTP 200但当前回执节点字段为空需按 Agent 实际回执结构补齐前端节点计数与展示。

2026-07-26SOUL需求单文档收口

  • 原“成员运营需求”和“本机材料调研”合并为开发文档/1、需求/SOUL需求文档.md
  • SOUL后续功能、调研、验收和火炬开发任务只在该文档持续追加。
  • 删除两个子目录SOUL需求副本避免功能分散和多真源。

2026-07-26公司 NAS 最新 SDK 与接口文档部署

  • 同步最新 SDK 至 /volume1/docker/workphone-sdk
  • 同步接口文档 201 个文件至 /volume1/docker/workphone-docs/开发文档/5、接口
  • 完成 Docker 镜像构建并启动 SDK、MongoDB、Redis。
  • 验证 /health/docs/openapi.json/hub 均返回 HTTP 200。
  • 部署验收:开发文档/8、部署/05-测试验收/20260726_NAS最新SDK与接口文档部署.md

2026-07-26工作手机微信智能追问与今日产品需求

信息来源

  • 扫描2026-07-23至2026-07-26本项目42个Codex会话文件、15832条去重消息。
  • 对照当前需求真源、开发进度总表和近期功能迭代记录。
  • 按连接、Hook、消息、好友、朋友圈、设备、安全、BFF、稳定性、产品十个主题聚类。

产品结论

  • APK继续保持“工作台、Agent、设备”三页不堆微信业务详情。
  • 微信业务通过存客宝/触客宝管理端和统一API执行。
  • P0顺序固定为真实连接→Hook自愈→消息落库→写后回读→BFF映射→24小时稳定。
  • P0全绿后再扩大批量好友、消息动作和朋友圈规模。

新增需求

  • P0WX-P0-01WX-P0-06共6项。
  • P1WX-P1-01WX-P1-04共4项。
  • 详细需求:开发文档/1、需求/工作手机微信产品需求_20260726.md

2026-07-26微信智能追问二轮开发级收敛

  • 将首版功能清单深化为5个用户故事、4类状态机、9张核心数据表和4类管理端页面。
  • 统一设备在线、Hook可用、任务成功和消息送达的状态边界明确假成功率必须为0。
  • 排定Sprint 03连接与映射→Hook与任务→消息落库→业务小批闭环。
  • 增加真实在线率、闭环成功率、消息幂等率、Hook自愈率和未知任务处理时限指标。
  • 详细需求:开发文档/1、需求/工作手机微信产品需求_20260726.md

2026-07-26微信控制模块集中智能追问确认

  • 完成14项集中产品追问统一确认后一次性落入正式需求。
  • 产品定位由聊天中心修正为工作手机多设备微信控制台。
  • 好友控制首批支持手机号和微信号;朋友圈第一版支持全部内容类型。
  • 支付转账进入第一版真实控制范围,并增加管理员确认、限额和双回读门禁。

2026-07-26微信控制产品需求开发完成与本地验收

  • 完成/wechat七控制域Web管理端并在Hub增加微信控制快捷入口。
  • 完成九类MongoDB控制面集合、状态机、幂等任务、批次暂停、资金权限和证据门禁。
  • 完成消息统一落库、同机旧ID去重、Hook状态60秒TTL及接口清单归类。
  • 本地控制面现场验证重复任务复用同一task_id完整回执后进入succeeded重复消息按服务端ID幂等更新。
  • 全量测试455 passed, 1 skippedPython编译、页面JS语法、Android UI生产构建均通过。
  • 当前真机WSS在线但Frida未attach真实20条消息、故障自愈、支付双回读和24小时稳定性按外部门禁继续保留。
  • 验收报告:开发文档/8、部署/05-测试验收/20260726_微信控制产品需求开发验收.md

2026-07-26WP-FULL-376-AUDIT 扩展305项静态契约审计

  • 按376目录与71核心任务去重60条目录显式核心操作加11条连接/总览范围桥接剩余305条扩展操作逐项完成运行态路由、实现候选、占位/mock/硬编码、ADB/UI、鉴权、错误语义、测试与真机要求审计。
  • 结果运行态未映射0TODO/pass候选2、硬编码成功候选101、缺显式鉴权候选298、缺显式错误码候选236、缺定向测试候选169上述均为静态候选需主责逐项复核不能等同于功能失败或完成。
  • 产物:开发文档/10、项目管理/03-计划与专项/20260726_WP-FULL-376-AUDIT_其余305项静态契约审计.csv20260726_WP-FULL-376-AUDIT_71去重范围桥接11条.csv20260726_WP-FULL-376-AUDIT_模块派工表.md
  • 本轮未改生产代码、未触发真机、未触碰L0-L4文件已写入任务回流排队表等待按模块派工。

2026-07-27 工作手机 APK 最新版文档收口

  • 最新 APK工作手机安装资源包/workphone-apk-v5.0.10.apk
  • 最新安装说明:工作手机安装资源包/README_安装说明.md
  • 最新验收入口:开发文档/8、部署/05-测试验收/工作手机APK_最新验收入口.md
  • 最新 UI 入口:开发文档/4、前端/UI/工作手机APK/README.md
  • 最新截图:开发文档/4、前端/UI/工作手机APK/截图/20260727_APK_界面精简温度更新.png
  • 当前口径首页只显示微信名称、运行正常、微信号、好友数Agent 隐藏当前通道;设备页显示温度;功能状态合并到高级连接与维护;检查更新接口返回工作手机 5.0.10 与微信 8.0.69。
  • 旧资料处理:旧 APK 设计稿、旧截图、旧安装验收报告已移动到 开发文档/4、前端/UI/工作手机APK/归档_旧版_20260727/,只做追溯,不作为当前安装和验收口径。

2026-07-28奥创 APK 与当前 Hook 建群技术对比

  • 完成奥创三件套 APK、XESlciw 模块配置数据库、Hook native 库和 AI 数智员工业务 JS 的只读静态分析。
  • 结论:当前资料不能证明奥创使用 hl.o;其 Hook APK Java 层只负责 XESlciw 回调和加载 libvivwxjz.sonative 可见字符串引用 libwechatnormsg.so
  • 奥创业务层能确认 autoGroup 自动建群开关,但未在 APK 中定位直接暴露微信内部建群 Scene 的接口;群动作更像云端策略下发后由设备侧 Hook 执行。
  • 当前项目已明确 ul.o(String,List,String,String)、Scene type 119、createchatroomchatroom/成员回读;因此两者属于同类进程内 Hook 架构,但没有代码同源证据。
  • 详细报告:开发文档/10、项目管理/02-测试报告/20260728_奥创APK与当前Hook建群技术对比/分析报告.md

2026-07-28微信 Hook 方案全网调研与选型

  • 对比奥创 XESlciw/native Hook、当前 Frida/WSS、LSPosed Modern API、LSPatch、Mujde 和 Wechaty。
  • 结论:当前项目最佳路径为 Frida/WSS 主链 + LSPosed 常驻生命周期层Frida 负责快速适配,常驻层负责进程发现、状态、脚本版本和回滚。
  • Wechaty 适合高层机器人编排,不等价于移动端微信内部 HookLSPatch 适合无 Root 实验,不作为当前生产主链。
  • 调研报告:开发文档/10、项目管理/02、专项调研/20260728_微信Hook方案全网调研与选型.md

2026-07-28项目对话与代码重复问题治理

  • session_meta.cwd扫描活动及归档Codex线程54个项目线程、2021条输入事件、1607个完成轮次。
  • 发现规则/经验重复广播1046条覆盖37个线程占输入事件51.8%后续改为Skill版本号与问题ID差量引用。
  • 高频故障统一为9类问题ID写入20260728_项目效率优化/known_issue_registry.json
  • 新增对话一键分析器和只读执行前门禁当前读前置通过写前置被Hook状态、2类OpenAPI字段缺口和7个未解析alias阻塞。
  • 代码审计发现Git跟踪221721个文件其中sdk/scripts219659个后续将反编译资产从主源码工作集隔离。
  • 总报告:开发文档/10、项目管理/02、专项调研/20260728_项目对话与代码重复问题总复盘.md

2026-07-28微信文字/图片消息载荷格式修复

  • 问题:send_message 发送前调用 diversify_content(..., add_invisible=True),会随机同义改写正文并插入零宽字符,导致微信回读正文与请求不一致。
  • 修复:在 sdk/app/routers/unified.pysend_message 路径保留敏感词检测,但正文按原始 content 原样下发;其他批量、评论等路径保持原行为。
  • 检查:python3 -m py_compile sdk/app/routers/unified.py sdk/app/services/content_guard.py 通过。
  • 真机回执Hook 直连纯文本载荷回读成功,消息 ID 10740,类型 0,正文为 你好,阿猫。verified=true,通道 frida_rpc
  • 证据:sdk/agent/logs/message_阿猫_20260728/send_text_exact_hook_receipt.json

2026-07-28工作手机防封逻辑暂不生效硬规则

  • 硬规则:工作手机所有微信控制动作暂不启用防封相关逻辑;不得改写文字、插入不可见字符、追加表情、替换敏感词、执行防封限流或防封时段拦截。
  • 当前默认:WORKPHONE_ANTI_BAN_ENABLED 未设置或不等于 1 时,防封总入口直接放行并原样返回 content
  • 恢复方式:仅在后续明确验收并显式设置 WORKPHONE_ANTI_BAN_ENABLED=1 后恢复旧链路。
  • 载荷约定:文本使用 content + msg_type=text;图片使用 media_url + 图片类型;表情使用微信表情专用字段,不把图片/表情当普通文字改写。

2026-07-28微信消息目标与渲染验收修正

  • 截图证据显示:消息摘要落在“微信用户”,聊天页出现空白气泡;仅凭 WCDB content 回读不能判定微信界面渲染正确。
  • 联系人规范映射:爱赛车的阿猫使用 wxid_xbhui4yjlw9a22xd2214 仅为别名,不再作为已确认目标直接发送。
  • 代码修正sdk/agent/hook/wechat_hook_v2.js 增加发送目标规范化字段与目标校验;非规范 wxid 不得猜测发送,文本正文保持原样。
  • 真机操作:规范 wxid 文本“你好,阿猫。”回执消息 ID 10742类型 0正文一致回执文件为 sdk/agent/logs/message_阿猫_20260728/send_text_canonical_wxid_receipt.json。
  • 部署状态:脚本登记接口返回并部署 wechat_hook_v1_1.0.0Hook 状态为 attached别名保护回归仍未返回回执当前不将界面渲染验收标记为完成。
  • 下一门禁:必须取得微信聊天页真实截图,确认正文可见、会话名为爱赛车的阿猫,再开放别名输入解析。

2026-07-28WP-WX-04 纯文本发送验收(当前门禁)

  • 目标:向联系人“爱赛车的阿猫”发送可见纯文本“你好,阿猫。”,要求聊天气泡可读且回读一致。
  • 已确认Hook 直写回执曾返回 type=0 与原文,但真机 UI 显示白色空泡故不计入验收WSS UI 链路曾因坐标落在会话区未形成发送证据。
  • 本轮操作:重启微信后确认会话列表;尝试恢复 UI 控制。随后设备发生重启ADB 串号 xgfe65eimrrofyws 离线WSS 在线设备数为 0。
  • 验收门槛:必须同时具备发送按钮成功回执、聊天截图中出现“你好,阿猫。”纯文本气泡、消息列表/事件回读原文三项证据白色空泡、Hook 数据库 success 不能单独放行。
  • 下一门禁:恢复设备 ADB/WSS 在线后,重新进入“爱赛车的阿猫”,按屏幕 1080×2400 的真实输入框坐标输入纯文本,截图确认输入内容,再点击可见发送控件并截图回读。

2026-07-28设备管理位置快照与全量管理能力补齐

  • 设备管理能力清单:电量/充电、内存/存储、网络、在线心跳、型号与指纹、已装应用、微信运行、实时画面与触控、截图/UI树、应用安装、Agent/Frida服务、Fleet汇总与批量执行、事件与健康状态均已纳入设备管理链路。
  • 新增设备位置快照Android Agent 在心跳 status.device_location 上报最新系统位置,不启动持续定位;字段包含 availablelatitudelongitudeaccuracy_mprovidertimestamp_ms,缺权限时回传 reason=permission_missing
  • 服务端聚合sdk/app/services/ws_hub.pydevice_location 提升为设备顶层状态,设备详情/Fleet可直接消费。
  • 移动端配置:新增粗略/精确定位权限,前台服务声明加入 location 类型Android 编译通过 Manifest/资源校验。
  • 真机状态:当前在线 Agent 为旧版 5.0.10设备详情尚未出现位置快照更新包含本次改动的APK并授予位置权限后即会由下一个心跳自动显示位置状态。

2026-07-28设备定位上报与 WSS APK 升级闭环

  • 范围Android Agent 增加位置权限、device_location 状态快照SDK 设备状态字段透传APK 升级至 5.0.11 (16)
  • 部署:经 WebSocket Agent 原生文件协议传输 111 个 512KB 分片后,手机本机完成替换并自动重连;未使用 USB、主机 ADB 或界面点击。
  • 真机回读:设备 3c2d803e58f2c30a744234484c4e393e 已注册 agent_version/app_version=5.0.11health 回读含 device_location.available=trueprovider=network、精度 70m。
  • 证据设备定位 WSS 安装验收

2026-07-28 朋友圈全格式SDK接口收口

  • 六格式统一:文字、图片、原生视频、网页/文章、小程序、视频号。
  • 新增 /api/v3/moments/share-mini-program/api/v3/moments/share-video-channel
  • 网页链接统一接入确认、幂等、频控和四证封装特殊卡片固定WSS Agent→Frida RPC。
  • TypeScript/PHP客户端补齐六格式方法、dry-run/confirm、幂等键、trace和状态轮询。
  • 本地契约测试4/4、Python编译、PHP lint、TypeScript构建通过LAN运行时六路由均已加载。
  • 真实发布沿用 20260728_MOMENTS_ALL_FORMATS 六格式列表回读,不重复发帖。

2026-07-28阿猫纯文本、图片与朋友圈命令行闭环

  • 目标:通过无界面命令链路查看“爱赛车的阿猫”朋友圈,并发送真实纯文本与图片。
  • 纯文本结果:消息 10746type=1is_send=true;正文为“是呀,今天的天气很给面子😄 你这么爱赛车,看到这种天气,是不是更想出去兜一圈?”,聊天截图与数据库回读一致。
  • 图片结果:赛车心情卡片消息 10747type=3is_send=true;本机与手机文件 SHA-256 均为 bb158e48906dc47922b2f8f9ecde541e3025566f49bb75e79915fad0a395bc7e
  • 朋友圈结果WSS 命令行打开资料页并进入真实朋友圈页面,已留存实际截图。
  • 代码修正:纯文本成功判定强制要求 type=1 精确回读;保留正文原样;get_friend_moments/get_moment_detail 不再被伴生能力守卫覆盖。
  • 测试test_wechat_plain_text_contract.pytest_android_frida_session_contract.py 纳入发送类型、原文和发布产物契约。
  • 证据报告开发文档/8、部署/05-测试验收/20260728_阿猫图文聊天与朋友圈查看.md
  • 下一门禁:仅在回读到阿猫新消息后续聊;每次文本发送继续要求聊天截图、type=1、原文三证一致。

2026-07-28Hook 文本空白气泡与微信无响应诊断

  • 真机截图sdk/agent/logs/message_阿猫_20260728/阿猫_微信无响应_当前截图.png
  • 现象:微信首页两个会话均显示“正在发送中”,底部系统弹窗显示“微信没有响应”;文本正文没有形成可见绿色文本气泡。
  • 根因:旧 Hook 文本发送链允许内部候选、SendMsgEvent 和 Intent 继续发布,未形成 message.type=1 精确回读时仍可能遗留 pending/空白状态。
  • 代码处理:三份普通 Hook 源增加 text_hook_write_requires_type1_readback 熔断,默认禁止未验证文本继续发布;只有显式具备 type=1 精确回读的适配器才允许写入。
  • 门禁结果:当前本机 frida-compile 16.5.6 与项目锁定 IIFE 构建器参数不兼容IIFE 源哈希门禁保持失败;未将未验证 APK 安装到设备。
  • 下一门禁:使用项目锁定的 Frida 编译环境重建 IIFE完成源/IIFE/manifest 三方哈希一致后,再做一次无界面 Hook 真机回归。

2026-07-28 Frida朋友圈点赞闭环与断线修复

  • Server-Frida 先校验环境变量微信PID过期时自动发现真实微信主进程消除旧PID导致的 script.load() 超时。
  • TARGET SNS 14874827993845469773 已由 SnsInfo.getLikeFlag()=1 回读确认点赞成功。
  • 朋友圈点赞/评论Hook补齐 dry_run 零写入和 confirm=true 门禁,预检不再产生真实互动。

2026-07-28纯 Frida Hook 文本发送最终修复

  • 根因微信8.0.69的SendMsgEvent场景值应调用xv0.e2.A(String)旧类名导致scene=0从而形成type=0空白卡片与“正在发送中”。
  • 修复纯文本只走SendMsgEvent非文本才允许旧候选/IntentDB成功门禁强制isSend=1 AND type=1 AND content=原文
  • 真机结果:消息10753type=1is_send=true,正文精确一致,通道frida_rpc,方法send_msg_eventverified=true
  • 证据报告开发文档/8、部署/05-测试验收/20260728_阿猫纯FridaHook文本发送修复.md

2026-07-29 微信账号自助解封 Skill 与自动短信接口

  • 新增 机擎/阿机/微信账号自助解封/SKILL.md,固化 Scene 13/16/17、kCaptcha、Messages 读取和最终验收规则。
  • 新增 POST /api/v3/account/unblock/session/sms/auto-submit:从 MacBook Messages 读取最新微信登录码并通过 Frida Scene 17 提交,带 confirm 与幂等门禁。
  • 完善 wechat_hook_v2.js:五参数 Scene 16、60秒防重、Scene 17登录验证、结构化 raw/readback。
  • 新增全过程文档:开发文档/6、后端/02-设备端/微信账号自助解封全过程_20260729.md
  • 真机结果:短信验证 0/0、账号 active、Hook attached、联系人真实回读。

2026-07-29微信群成员加好友门禁与回执增强

  • 目标:继续完善单个/批量微信群成员加好友的无界面命令行链路。
  • 代码sdk/app/routers/unified.py 为单加和批量补齐 dry_run/confirm/idempotency_key/trace_id真实写入使用独立幂等域批量结果统一输出逐目标反馈、raw RPC和业务回读。
  • 过滤修正:联系人预检失败进入 precheck_errors,不再被当作非好友继续申请;已好友仍按 type & 1 幂等过滤。
  • Hook:三份 wechat_hook_v2.js 同步补齐控制字段、group_member_not_found真实错误码和source_type透传。
  • CLI单加和批量脚本默认dry-run真实写入要求显式confirm和唯一幂等键。
  • 验证:群成员/批量/Hooks/完整微信契约共37项通过Python、Shell、JavaScript静态校验通过。
  • 边界代码通过不等于真机通过等待新设备窗口和合适测试账号后按只读→dry_run→confirm→业务回读验收。

2026-07-29 微信官方个人二维码与账号包装

  • 完成无线 Frida Scene 168 官方个人二维码抓取,补齐 Base64/JPEG/SHA256 校验、兼容入口和结构化故障处理。
  • 真机回读成功430×430 JPEG37 项契约测试通过IIFE 门禁通过Agent 5.0.11 局域网 WSS 发布完成。
  • 接口文档:开发文档/5、接口/03-Hook与微信/20260729_微信账号包装与官方个人二维码接口.md

2026-07-29 阿猫好友备注命令行实测

  • 通过单好友改名接口将“爱赛车的阿猫”备注改为阿猫估值36.09
  • Frida写入成功独立好友详情接口回读一致。
  • 证据:开发文档/5、接口/03-Hook与微信/20260729_阿猫好友备注命令行实测.md

2026-07-29手机工作台显示当前微信账号与好友数

  • 目标:工作手机首页除“微信正在运行”外,明确显示当前挂载微信号、微信昵称和真实好友总数。
  • 界面fragment_dashboard.xml 新增“核心数据 · 当前微信”卡片,分别展示当前微信号、昵称、好友人数和数据来源状态。
  • 数据链路DashboardFragment 通过手机内 AgentEngine.executeLocal 调用 get_profileget_contacts,固定走微信 Frida RPC好友数读取数据库回执中的 total_count
  • 性能账号数据独立30秒轮询不跟随设备状态秒级刷新重复查询微信数据库页面暂停时自动取消。
  • 通道收口get_contacts 加入严格 Frida 动作集合Hook未挂载时明确显示等待状态不转入无障碍页面操作。
  • 构建验证./gradlew :app:assembleDebug 成功APK SHA-256fdd126556f2c552212040e6ade557ee60e2e2c341cb0e9a5335d1aca742843e2
  • APKsdk/android-app/app/build/outputs/apk/debug/app-debug.apk
  • 待验收通过下一次WSS安装窗口更新手机后收集首页截图、当前wxid、好友总数和Hook回读四项一致证据。

2026-07-29工作台微信核心数据真实回读修复与真机闭环

  • 现象:手机真实运行页面只显示“微信 8.0.69 / 运行正常”,没有显示微信号和好友数。
  • 根因:实际首页由 MainActivity + WebView 渲染,不是 DashboardFragment;同时原生桥接只接受外层 channel_used=server/frida,实际回执为外层 frida_rpc、内层 _channel_used=server/frida,导致真实资料被误判失败并清空。
  • 修复兼容两层Frida通道只有真实 get_profile/get_contacts 成功才保存账号空微信号清除旧值好友数允许真实0版本优先使用Frida回读、失败回退手机PackageManagerWeb工作台同时显示昵称、微信号、版本和好友数。
  • 真实回读:昵称卡皮巴拉;微信号wxid_1ffyhf9fjw7y22;好友总数3;微信版本8.0.69Hook PID 14217;通道frida_rpc;好友数据标记实时回读
  • 无线安装:设备3c2d803e58f2c30a744234484c4e393e;安装时间2026-07-29 21:13:08新Agent PID 7705WSS自动回连成功。
  • APKsdk/android-app/app/build/outputs/apk/debug/app-debug.apkSHA-256 e3cb9cd4c137dbaa9992c43ac98158d041c49c4d176a867a3992dbedcf331c73
  • 真机截图开发文档/8、部署/05-测试验收/20260729_工作台微信核心数据_真机截图.png