101 KiB
工作手机功能迭代记录
本文件记录本项目新增的功能拆解、开发流程和架构调整;历史细节仍以
开发文档/10、项目管理/开发进度总表.md与需求真源为准。
2026-07-25|工作手机APK安装资源整理(中文根目录)
- 新建中文目录:
/工作手机/工作手机安装资源包。 - 汇总 APK:
apk/放入v5.0.10最新版 + 历史版本(v5.0.1/v5.0.2/v5.0.8/v5.0.9)。 - 汇总相关工具:
工具/放入安装、启动、部署、配置相关脚本及配置文件,便于同一入口管理。 - 新增索引文件:
工作手机安装资源包/README_安装资源包.md工作手机安装资源包/索引/安装目录索引.md工作手机安装资源包/索引/文件清单.txt工作手机安装资源包/工具/安装目录说明.md工作手机安装资源包/apk/checksums.sha256
- 文件清点:
- 最新APK:
workphone-agent-v5.0.10-release.apk - 校验文件:
checksums.sha256
- 最新APK:
- 说明:本次整理仅做目录与资料归集,未改变安装脚本执行逻辑。
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)
- Vite 编译通过(
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 候选。 - 新增本地持久化(
localStorage)wp_bind_server_v1:扫码上一次选的服务器会记住,不再每次默认回退公网。 scanLanDevices / loadServerInfo在发现本机服务时优先更新绑定基准,优先展示与扫码一致的目标服务器。
- 在“手机设备”二维码绑定弹窗中新增绑定目标服务器选择与输入框,支持局域网 IP/端口(如
- 验证:
- 前端 JS 语法通过(
node -e "new Function(...)”) - 待你线上机型点击“+扫码绑定”后实机扫码验证(选择同/不同服务器是否成功落链)。
- 前端 JS 语法通过(
2026-07-24|工作手机全链路切 WS-First(禁 ADB 回退)
- 已确认当前
/api/v3/connection/status中ws_first=true、online_ws_count=1、adb_count=0,执行入口改为服务器 WebSocket 优先。 - 已在
sdk/.env设置:WORKPHONE_WS_FIRST=1WECHAT_WS_HOOK_ONLY=1WORKPHONE_HOST_ADB_PROBE=0WECHAT_BACKEND_ONLY=1以锁定“微信能力与统一分发不走 ADB 回退”执行口径。
- 说明:当前服务为本机 Uvicorn 进程(非 Docker 容器)直接监听
:8899,如有重启部署请同步加载以上环境值并以服务器链路复测message/send、connection/status、hook/probe。
2026-07-24|Type-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.sh、wait_and_start.sh、termux_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.json,complete=false;待使用有效S2登录凭据续跑全部好友、聊天、图片/文件媒体、群聊和财务。 - NAS监管:
tools/monitor_full_backup.sh每300秒检查下载进程、断点状态、归档大小和磁盘空间;任务退出时自动拉起run_all.sh,日志位于monitor.log。
2026-07-23|微信 Frida 命令行批量加友幂等修复
- 修复
addFriend对现有好友仍调用空广播的问题:先查询rcontact,返回already_friend=true、verified=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_message、retry_after_seconds、wechat_err_type、wechat_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 指令。
- 其他应用:独立基础操作区,保留打开、截屏、主页、返回。
- 测试结果继续使用右侧执行结果和操作日志,不新增假接口。
- 保留原有
doAction、wxQuickRun、wxCall和 API 路由,未调整服务端契约。
验收
- HTML JavaScript
node --check通过。 git diff --check通过。- 本机 Hub
http://127.0.0.1:8899/hub返回 HTTP 200,并包含新应用分组标记。 - 服务端
/health返回健康,当前 ADB 设备可见。 - Type-C 真机逐项点击微信基础操作、数据读取和测试诊断按钮,待后续真机回归留痕。
2026-07-23|Type-C 微信 WS 回连与 503 处理
根因
- Type-C 上的
com.system.cloudservice使用127.0.0.1:8899连接 SDK。 - USB 反向端口未建立时,手机 APK 与本机 SDK 之间没有 WS,微信资料、版本和 Hook 相关调用返回 503。
处理
- 建立 ADB reverse:
tcp:8899 → tcp:8899。 - 重启
com.system.cloudservice,设备xgfe65eimrrofyws已重新注册。 - 当前 WS 在线 1 台、ADB 在线 1 台,微信运行中,微信版本
8.0.69,wxid已回读。 - 页面将外层 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成为设备端智能执行与任务编排的核心角色。
开发流程
- 读取卡若AI入口、BOOTSTRAP、AGENTS和长期记忆。
- 读取工作手机 README、需求真源、开发进度、架构、接口、后端、部署、测试和历史 Mongo 对话汇总。
- 通过卡若AI路由定位“五行项目对话拆解总控”和“Codex智能体开发入口”。
- 依据真实代码目录划分 SDK 服务端、设备端 Agent、Android 壳、管理端、Hook、BFF、部署和验收边界。
- 形成 12 个模块对话、角色绑定、任务台账和统一验收规则。
- 只新增文档,不删除或覆盖历史对话、代码和测试证据。
架构图
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-21|12个对话切换为微信控制专项
变更内容
- 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
目标
把现有技术控制台升级为“设备 → 微信号 → 客户 → 内容 → 任务 → 回执”的私域经营中台,形成可评审、可拆解、可验收的产品设计基线。
设计流程
- 读取需求唯一真源、现有管理端页面、模块对话索引和接口能力。
- 统一产品定位、目标用户、MVP/P1/P2范围与核心指标。
- 完成信息架构、全页面状态、业务流程、角色权限和审计闭环。
- 制作单文件可点击高保真原型,覆盖桌面侧栏与移动底栏。
- 按 Sprint 0~5 拆解研发顺序,并定义页面级与业务级验收标准。
产品架构
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-22|Codex项目对话远程访问
- 新增项目专用同步器,按 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.kt、sdk/android-app/app/src/main/java/com/system/cloudservice/engine/WechatNoRootAutomation.kt - 实现:将
check_account_status映射到无 Root 登录启发式;补齐get_contacts、search_contact、get_friend_info的无障碍查询入口,返回可核验的 UI 树;保留 Hook 优先、无障碍回落链路。 - 验证:
:app:compileDebugKotlin、:app:assembleDebug均通过;调试 APK 普通覆盖安装成功;Type-C 设备xgfe65eimrrofywsWS 在线。 - 接口回归:
/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 类用户入口:
- 数据能力:Hook / Frida,负责微信资料、好友、群聊、标签等深度数据。
- 交互操作:Agent WebSocket / u2,负责打开应用、点击、输入、朋友圈等界面操作。
- 设备直控: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 → 原始回执,不再以坐标点击或页面状态作为成功口径。
开发流程
- 复现
hook_only=true的add_friend被Android端降级为u2/Shell。 - 定位服务端已下发
hook_only,AndroidProtocolHandler解析时丢失。 - 为
Execute、HookExecute补齐严格模式字段。 AgentEngine把严格模式传入SkillExecutor。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.ktsdk/android-app/app/src/main/java/com/system/cloudservice/engine/AgentEngine.ktsdk/android-app/app/src/main/java/com/system/cloudservice/engine/SkillExecutor.ktsdk/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=10420、verified=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秒可配置冷却
开发流程
- 将微信
add_friend固定冷却由 180~300 秒调整为默认 10 秒。 - 增加环境变量配置与运行态配置查询接口。
- 统一成功、已是好友、参数错误、限流、超时、目标不存在、Hook异常和普通失败回执。
- 增加面向任务调度器的
feedback.action与重试字段。 - 增加静态契约和运行态配置测试。
架构图
flowchart LR
C["CLI/API 请求"] --> P["好友状态预检"]
P -->|已存在| S["统一成功回执"]
P -->|待添加| R["10秒可配置冷却"]
R --> F["Frida Hook 执行"]
F -->|成功| S
F -->|失败| E["统一错误码+反馈动作+重试时间"]
变更文件
sdk/app/config.pysdk/app/services/rate_limiter.pysdk/app/routers/unified.pysdk/docker-compose.ymlsdk/tests/test_friend_add_feedback_and_cooldown.pysdk/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.md、BOOTSTRAP.md、Codex卡若AI入口和开发域索引登记。 - 工作手机微信标准已反向链接F01g,作为首个真实项目适配案例。
2026-07-23|加好友OpenAPI文档完善
- 为
AddFriendRequest补齐设备、平台、目标账号、验证消息、来源和场景值说明及示例。 - 新增
FriendAddFeedback、AddFriendResult、AddFriendResponse响应模型。 - 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增加1~100项约束,间隔限制0~30秒并默认10秒。- 空批次验证返回HTTP 422;13项好友相关自动化测试通过。
- 测试证据:
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-23|Mongo20号码实测后的批量加友调度修复
- 加好友默认关闭AB-03长会话暂停,避免10秒配置被10~30分钟窗口覆盖。
- 普通与新账号本地日上限改为可配置,默认50/50。
- 批量新增支持
max_retries、respect_retry_after、max_retry_wait。 - 微信返回30秒频控时采用上游等待时间并自动重试,逐次回执写入
attempts。 - 18项回归通过;真机单目标已穿过本地门禁并到达
server/frida。 - 当前剩余结果是微信服务端
err_code=-24,接口返回30秒重试反馈。
2026-07-23|高价值200好友估值备注闭环
- 新增
POST /api/v3/friend/batch-set-remark,单次支持1~500项。 - 新增
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-33、WP-WRITE-WL、WP-WX-04、WP-WX-03、WP-24H、WP-APK-RPC-02、WP-BOOT-SELFHEAL-03、WP-FRIDA-SSOT-01-E2E、WP-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.py、sdk/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 Agent:
sdk/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_begin、install_apk_ws_chunk、install_apk_ws_finish。 - Android Agent:新增分片缓存、Base64 解码、文件合并和本地
pm install -r -g安装动作,安装完成自动清理缓存。 - 通道要求:安装流程以 WebSocket 在线为前提,不再把主机 ADB 作为安装主链路。
- 验证:Python 编译通过;Android
:app:compileDebugKotlin构建成功;前端 JavaScript、页面 HTTP 200、git diff --check通过。 - 实机验收:设备
xgfe65eimrrofyws已更新至 Agent5.0.8;APK 通过 WebSocket 分片传输到设备临时目录后执行安装。针对小米多用户权限,安装命令使用pm install --user 0 -r -g。 - 断开验证:设备使用
ws://192.168.110.47:8899/ws/device/xgfe65eimrrofyws作为主连接;移除adb reverse tcp:8899后状态仍为online,Type-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.py:Agent 意图解析改走统一接口。sdk/app/services/karuo_device_ai.py:AI 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=
longxia;Base URL=https://simpleapi.quwanzhi.com/v1;模型=deepseek-chat。 - 界面:设备管理 → Agent → AI 接口,可修改地址、模型、API Key并保存。
- 验证:Agent 状态返回 ready;统一配置接口返回 200;龙虾接口健康检查返回 200;工作台页面返回 200;Python/JavaScript 语法检查通过。
- 备注:API Key 采用界面输入并只返回配置状态,当前项目文件不写入明文密钥。
2026-07-23|统一 AI 功能测试
- 测试接口:
GET /api/v3/ai/config、GET /api/v3/ai/status、POST /api/v3/ai/chat、GET /api/v3/agent/status/{device_id}。 - 通过项:统一配置接口 200;设备 Agent 状态
ready;龙虾U盘/health返回{"status":"ok"}。 - 当前结果:AI 状态为
backend=none,解析测试返回空动作;龙虾/v1/models返回 401API_KEY_REQUIRED。 - 处理结论:接口地址链路正常,下一步在设备管理 → Agent → AI接口中填入龙虾U盘 API Key,再重新执行解析测试。
2026-07-23 高价值200好友估值备注接口
- 新增
POST /api/v3/friend/batch-set-remark。 - 单次支持1~500人,逐项Frida写入和回读,保留估值分与逐人回执。
- 生成200人备注请求、回滚配置及curl脚本。
- 修复Docker到ADB Frida端口不可达,新增宿主机TCP代理。
- 批量执行器增加前置探针、10人分批、自动重试和结果归档。
- 200人写入成功200、失败0;重复执行仍为200/200;8项接口测试通过。
2026-07-23 微信好友两个改名接口文档完善
- 单个改名:
POST /api/v3/friend/set-remark。 - 批量改名:
POST /api/v3/friend/batch-set-remark,单次1~500人。 - 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、无 ANR;React 类型检查与生产构建通过。
- APK:
sdk/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.json、set_signature_retry2.json、install_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为offline,CLI离线回执验收通过,待WebSocket重连后执行真实Hook写入与资料回读。
2026-07-23|高级连接服务统一与首页扫码基准
- 设备页将 ADB、工作手机 Agent、无障碍、注入引擎统一放入“高级连接与服务”,去掉重复的注入引擎/ADB入口命名。
- Android Agent 服务状态改为读取 Agent 实例、无障碍实际绑定状态和 FridaBridge 状态;新增
ensure_services,上线后自动补齐已授权无障碍并尝试启动注入引擎。 - 后端新增
POST /api/v3/adb/devices/{serial}/services/ensure;GET /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.html(264,373 字节)同步至workphone-sdk:/app/static/hub.html,并同步本轮adb.py、adb_device.py后重启容器。 - 验收:
/hub?tab=overview返回 200,Content-Length=264,373;实际响应脚本node --check通过;/health200;Python 编译和git diff --check通过。 - 当前设备:ADB、工作手机 Agent、无障碍服务、注入引擎服务均为运行中;设备 WebSocket 等待下一次心跳重连。
2026-07-23|WP-CKB-MAP 微信控制台设备映射与实时状态
- 联合角色:木|木叶×阿端 ·微信控制台。
- 目标:将设备 map、wxid、好友数、最后活跃、设备/消息/任务控制与实时状态统一接入现行控制台。
- 现行控制台真源:当前分支已收口为
sdk/app/static/hub.html;sdk/admin在工作树与 Git 历史均不存在,本轮沿现行控制台真源完成直接联调。 - 修改文件:
sdk/app/services/wechat_device_map.py:统一微信设备字段,只透传真实已有值。sdk/app/main.py:overview 设备 DTO 输出wxid/wechat_id/friend_count/last_active。sdk/app/routers/integration.py:realtime 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.pynode --check /tmp/workphone_hub_wp_ckb_map.jsgit diff --checkcurl http://127.0.0.1:8899/healthcurl '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 MD5ed25814d9c92b3430696dc96c2142b5f;Hook/WS 当前不可用;实时事件可回读设备注册与断开记录。 - 现场门禁:当前源数据未提供微信
wxid、好友数和最后活跃,控制台显示“待现场核对”,不填充模拟值。 - 下一门禁:设备 WebSocket/微信 Hook 上线后,在存客宝/超管现场核对
wxid、好友数、最后活跃及消息任务真实回执。
2026-07-23 | WP-BFF-33 微信 SDK/BFF 契约收口
- 角色:火|火炬×阿机 ·微信接口。
- 实现:Fleet 执行统一复用
routers.unified._execute_skill与services.device_transport;微信写类单设备也强制dry_run/confirm门禁;只接受执行端明确success=true;超时保留504/timeout/retryable/retry_after_seconds结构化回执。 - 验证:新增 Fleet 契约测试,连同微信消息、好友、朋友圈、Hook-only 测试共
81 passed;生成 OpenAPI 快照383路径。 - BFF门禁:当前无有效租户 JWT,BFF 请求回读业务
401,33 项脚本停在登录阶段;未虚构 33/33。 - 证据:
开发文档/10、项目管理/02-测试报告/20260723_WP-BFF-33/。
2026-07-23 微信白名单写类与客服状态机回执
- WP-WRITE-WL:
mass_send改为真实Hook逐目标发送,禁止无接收端Intent占位;加好友继续沿用rcontact幂等检查;朋友圈写类保留排队态,等待网络回调与数据库回读。 - WP-WX-03:客服会话及每轮记录统一补充
trace_id、channel、raw_rpc_receipt、readback;接口按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-23|WP-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 14Release APK 资产复核通过,SHA-256:64afcbe4e02c70de965a33bb9eeab80cc35d6345625a8457a021e179b5bd4a9c。- 证据目录:
开发文档/8、部署/05-测试验收/20260723_WP-APK-RPC-02前置/。 - 下一门禁:Root 测试机真实 Frida attach、四项 RPC 回执和消息回读;在此之前保持微信写类锁定。
2026-07-23 23:41|v5.0.9 平台重连、真实 RPC 与24小时监测
- 公网 WSS 配对恢复,设备
xgfe65eimrrofyws在线。 - Root 真机统一 Frida
16.5.6/19886,真实 attach 微信并加载 Hook。 ping/profile/send_message/get_messages全链通过;消息回执message_id=10458、verified=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.jsSHA-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-23|WP-HL-03 companion 空动作分派与能力收口
目标
按账号设置、好友群、消息内容、视频号四批处理 83 个 companion 空动作;执行通道固定为 WSS Agent → 无线 Frida RPC → wechat_hook_v2.js,禁止广播空转、UI/ADB 兜底和伪成功。
本轮结果
- 新增
sdk/agent/hook/companion_dispatch.py:83 项唯一清单、四批分组、逐项 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、Pythonpy_compile、相关git diff --check通过。
下一门禁
由总控安排测试设备和测试账号;先执行能力探测与 dry_run=true,再逐项将 capability_unavailable 升级为可验证 Frida RPC,采集 trace_id/channel/raw_rpc_receipt/readback。本轮未执行真机写入。
2026-07-23|WP-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-24|WP-HL-03 account_settings 第二批契约
范围
set_nickname、set_signature、set_region、set_sex、set_privacy、set_notification、set_do_not_disturb。
结果
- 注册
setNickname、setSignature、setRegion、setSex、setPrivacy、setNotification、setDoNotDisturb七个 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、Pythonpy_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_HL04ActionRequest、WP_HL04ActionParams、HeadlessActionResponse,38项动作进入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 passed,Python编译通过;真实设备RPC/业务回读未在本批执行。 - 证据目录:
开发文档/10、项目管理/02-测试报告/20260724_WP-HL-01_HL-04-interface/。
2026-07-24|WP-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-v1、ACCOUNT_SETTING_ADAPTERS、probeAccountSettingAdapters;未找到可验证内部写入策略时统一返回capability_unavailable,保留 raw_rpc_receipt/readback 空值,不走广播或 UI 伪成功。- 个人资料 OpenAPI 强制
hook_only并透传confirm/dry_run,避免生产旧 no_root_a11y 路由再次执行。 - 验证:
node --check sdk/agent/hook/wechat_hook_v2.js;pytest13 项通过。 - 报告:
开发文档/10、项目管理/02-测试报告/20260724_WP-HL-07_账号资料设置/README.md。
2026-07-24|WP-HL-07 生产部署续跑与 Android Agent 补丁
- 生产服务端已备份并发布 WP-HL-07 Hook 脚本、HookExecutor 映射和个人资料
hook_only路由补丁;SDK 容器重建后 healthy。 - 复测确认生产旧
no_root_a11y签名路径已切断;剩余问题转为手机端旧 APKUnsupported: 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()新增浏览器实时帧采集与缩放。- 设备页新增实时在线状态、手机外观画框和断线自动重连。
- 画面坐标按真实显示区域映射到设备分辨率;支持直接点击、上下左右滑动。
- 手机旁只保留主页、返回、最近任务、重连画面;应用统一在左侧应用控制区,移除主界面的截图按钮和自动截图轮询。
验证
/health:200,设备xgfe65eimrrofywsADB 在线。- 实时流:HTTP 200,6 秒接收 899012 bytes,首帧 JPEG 为 720×1600。
- 控制接口:主页、返回、点击、最近任务均返回
code=200。 - Chrome 页面回归:
#live-screen-status=实时在线,实时画面正常显示;主界面可见“截屏”按钮数量为 0。 - Python
py_compile、页面脚本node --check、git 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.23~0.32 秒。
- 健康状态:WS 1、ADB 1,设备
xgfe65eimrrofyws在线。 - 页面脚本
node --check、Pythonpy_compile、git 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|工作手机无界面接口与部署交接更新
更新内容
- 完善微信无界面命令行接口:扫码加好友、群成员加好友、个人二维码、账号资料、红包实时领取、转账等能力的契约和测试留痕。
- 更新 Agent、Hook、统一 API、设备传输和 Frida 桥接相关实现,并补充接口契约测试。
- 更新《工作手机 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 action:
confirm_prepared_transfer,兼容别名transfer_confirm,统一映射confirmPreparedTransfer。 - 补齐 Kinda 支付确认后消息/账单回读门禁,避免 placeorder 下单准备被误判为最终转账成功。
- 验证:
test_message_management_api_contract.py+test_wireless_frida.py共 100 项通过;服务0.0.0.0:8899已重新加载;LAN docshttp://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.jar,SHA-256:64afcbe4e02c70de965a33bb9eeab80cc35d6345625a8457a021e179b5bd4a9c。 sdk/app/routers/adb.py新增实时视频/控制 WebSocket,并确保单设备只有一个活动会话。sdk/app/static/hub.html使用 Canvas + VideoDecoder;加入连接代次隔离,避免异步刷新时旧连接回调覆盖新连接。
真机验收
- 设备:
xgfe65eimrrofyws,Android 13,型号 2312DRAABC。 - WebSocket 初始化:328×720、H.264
avc1.64000A、30 FPS 上限、4 Mbps。 - Chrome 首帧:页面状态
scrcpy 实时,Canvas 328×720,MJPEG 回退隐藏。 - 远程按键:点击“主页”后 Canvas 采样校验值从
2952779902变为212400507,确认控制送达且新画面实时回传。 - 协议测量:初始化约 0.63 秒,配置与关键帧约 0.93 秒到达。
- 验收截图:
开发文档/8、部署/05-测试验收/设备管理_scrcpy实时远程控制_20260724.png。 - Python
py_compile、页面 JavaScriptnode --check、git 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:状态
扫码设备实时,Canvas324×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 堆积。 - 回退
_getTopActivity的Java.choose兜底,避免 Hook 脚本加载超时。 - 当前仍未取得最终
settlement_verified=true或 readback found,不登记100%。
2026-07-24|扫码绑定二维码生成修复
问题与处理
- 首页“扫码绑定手机”曾显示
请求失败: Failed to fetch。排查确认二维码接口实际可达并成功返回 PNG,但前端只兼容旧版data包装,未正确读取当前接口直接返回的success、image_data_url字段。 generateBindQR()已兼容直接响应与旧版data包装两种结构,并支持从image_base64组合图片地址。- 针对服务热重启造成的短暂网络断连,二维码请求会等待 700ms 后自动重试一次;再次失败时显示“服务正在重连,请稍后点击重新生成”,同时保留重新生成按钮。
验证
POST /api/v3/qrcode/generate返回success=true,包含image_base64与image_data_url。- Chrome 真实点击“生成绑定二维码”后,页面显示项目“工作手机”、项目 ID
cunkebao、当前 WebSocket 服务器和可扫码 PNG;图片自然尺寸730×730。 - 8899 服务连续 3 次健康检查均为
healthy,绑定 Agent 保持devices_online=1。 - 页面 JavaScript
node --check、git 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与 BFFPOST /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 passed;Android
compileDebugKotlin + assembleDebugBUILD 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与中文状态标签。 - 有真实执行代码的接口标记为
implemented,Swagger 保持彩色并显示“已实现”。 - 空函数、明确接口占位或固定返回
capability_unavailable的接口标记为placeholder,Swagger 自动置灰并显示“未完成”。 - 判定来自源码,接口补齐真实实现后自动转亮;禁止只改页面颜色冒充完成。
- 新增
swagger-status.css、swagger-status.js,并更新机擎/SKILL.md固化规则。
验证
- OpenAPI 状态统计:已实现 408,未完成 1。
/api/v3/payment/transfer显示“已实现”;/api/v3/scan/qr-code显示“未完成”并置灰。- 回归测试:
4 passed;Python 编译、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 重新连接 WebSocket,Frida 附着微信后按原脚本重新执行。
2026-07-24|消息接口完成口径升级为真机闭环
- 消息管理接口的完成状态由“代码/契约存在”升级为“真机执行与业务回读一致”。
- 9接口0/9的现有失败证据已同步给无线连接、无界面接口、全量验收三个专责对话。
- 无线连接先恢复 Agent/Hook;无界面接口补开发;全量验收独立回收并退回失败项。
- 未达到真实RPC与消息回读的接口继续保持未验收,不以HTTP响应或离线契约冒充成功。
2026-07-24|消息9接口统一回执字段补齐
MessageOperationResult/Response、MessageListData/Response、BatchMessageData/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-24|set_group_welcome接口契约收口
- 新增
set_group_welcome → setGroupWelcomeRPC契约和接口模型。 /group/set-welcome已具备确认门禁、参数校验、结构化能力不足及原始回执透传。- 回归104项通过;状态仅从“缺RPC”升级为“代码完成待真机”,未标记真机通过。
2026-07-24|71接口连接门禁恢复与76条依赖矩阵校正
- 真机设备
xgfe65eimrrofyws已恢复上线:health=healthy、devices_online=1、online_ws_count=1、supports_hook=true。 - Hook ping 已取得真实
trace_id=ea876003c02e4bd096808da6cab084a9与raw_rpc_receipt;Hook status 已取得trace_id=3b2ab5d3d40941d49a296060d93b5793,通道为server/frida、传输为frida_reverse_tunnel。 - stability/watch 首样确认 WS/Hook/Agent 均为 true、耗时30ms;证据目录:
开发文档/8、部署/05-测试验收/20260724_71接口连接前置/README.md。 - 连接恢复只代表真机业务复测门禁已打开;每个接口仍须同时取得真机动作、
trace_id、raw_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_id、raw_rpc_receipt、业务回读四证,Swagger状态继续保持灰色。 - 存客宝侧验证:21项契约测试通过;依赖矩阵76行、12列、76个唯一ID校验通过。证据目录:
cunkebao_v3/开发文档/8、部署/05-测试验收/20260724_BFF_70_71/。
2026-07-24|设备域真机验收与 WS 回执统一
sdk/app/routers/devices.py:AI 任务、常驻指令、同步 AI 执行统一回传 WS Agentchannel_used、trace_id、raw_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_id、raw_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=1、online_ws_count=1、心跳age=2s、agent_running=true,稳定性样本31ms。- Hook probe 为
supports_hook=true,pingtrace_id=c6e6083c047d43988cc70a21685323d6且含raw_rpc_receipt;Hook statustrace_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 200,但devices_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,但链路来源不符合正式无线要求,已从矩阵“通过”和OpenAPIimplemented撤回为灰色待验。 -
#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-24|ADB反向映射残留清理
- 连接整改后现场复核发现
adb reverse --list仍存在UsbFfs tcp:8899 tcp:8899,并再次产生本机adb server到SDK的127回环伪在线;设备状态中的server_url仍为ws://127.0.0.1:8899/...。 - 已移除
tcp:8899reverse并终止adb server,清理残留连接后devices_online=0、online_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-24|SDK SIGTERM直接来源定位
- 现场捕获运行中验收shell:
launchctl kickstart -k gui/.../com.karuo.workphone-sdk; ... profile/get,其父进程为Codex app-server;该命令会主动向正式SDK发送SIGTERM并造成PID更替。 - 已终止该shell,并通知好友域、全量验收及连接域:禁止执行
kickstart -k、kill :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/24,SSID“卡若-4点起床的男人”;从手机访问主机192.168.110.47与NAS192.168.110.101均返回 Destination Host Unreachable,确认同网客户端隔离。 - 手机可正常访问
wpsdk.quwanzhi.com:443与open.quwanzhi.com:443;公网https://wpsdk.quwanzhi.com/health返回healthy。 - 已执行
adb reverse --remove-all,Hub恢复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 server,local 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-24|WebSocket回环来源代码门禁
ws_hub.connect新增客户端来源检查:127/::1/localhost直接以4403关闭,不写入connections/device_info;WebSocket入口在拒绝后立即返回。- 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.80;USB 断开、ADB=0 时设备仍在线;连续三次 LAN TCP 会话稳定;无线截图通道为websocket/agent。 - 产物:
开发文档/8、部署/05-测试验收/20260724_局域网强制连接恢复/。
2026-07-24|v5.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.apk,SHA-25664afcbe4e02c70de965a33bb9eeab80cc35d6345625a8457a021e179b5bd4a9c。 - 当前 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=0,online_ws_count=0。 - 建议下一步:将 Type-C 设备接回并执行
bash ~/workphone/sdk/scripts/termux_frida_up_onphone.sh -d xgfe65eimrrofyws,再回传/api/v3/hook/probe/xgfe65eimrrofyws。
2026-07-24|WebSocket 首选链路服务端重启与实际验证
- 目标:把服务端连接策略固定为
WORKPHONE_WS_FIRST=1,并确认ws_hook_only_wechat=true、adb_count=0,不以ADB回环恢复。 - 执行动作:
- 清理历史 uvicorn 实例后,改用
sdk/app目录启动服务,显式注入WECHAT_WS_HOOK_ONLY=1、WECHAT_BACKEND_ONLY=1、WORKPHONE_WS_FIRST=1、WORKPHONE_HOST_ADB_PROBE=0。 - 使用
GET /api/v3/connection/status、GET /api/v3/contacts?limit=10、POST /api/v3/message/send、GET /api/v3/hook/probe/{device_id}进行链路回放。
- 清理历史 uvicorn 实例后,改用
- 结果:
connection/status已显示ws_hook_only_wechat=true、adb_count=0、online_ws_count=1。contacts当前返回空列表(无目标联系人),说明不能执行10条真实联系人发件。message/send当前返回frida_hook_not_attached,链路仍失败在手机端 Hook 未附着,不是ADB回退。hook/probe明确返回:supports_hook=false、frida_hook_not_attached。
- 下一步:按
bootstrap返回的termux_one_liner在手机端启动 Frida/Agent,恢复supports_hook=true后再按同流程补跑10条发送与2条朋友圈。
2026-07-24|WebSocket-only 真机动作复测(不走ADB)
- 已再次确认执行路径:
WORKPHONE_WS_HOOK_ONLY=1、WORKPHONE_HOST_ADB_PROBE=0、WECHAT_BACKEND_ONLY=1,/api/v3/connection/status显示online_ws_count=1、adb_count=0。 - 已在 WS 通道完成三类动作链路回放:
hook/probe/{device_id}:supports_hook=false,frida_hook_not_attached。POST /api/v3/hook/execute action=send_message:连续10次不同to_id,全部返回code=503,error=frida_hook_not_attached,channel_used=websocket/u2。POST /api/v3/moments/post:2次返回success=false、error=长会话中断,需再等 1253s(拟人节律)。
- 全量动作清单复测:
sdk/scripts/matrix_hook_catalog_verify.py -d xgfe65eimrrofyws产物sdk/tmp/matrix_hook_catalog_xgfe65eimrrofyws_1784907090.json,1/223通过,222/223失败,失败错误统一frida_hook_not_attached,通道统一websocket/u2。 - 已补截屏:
/Users/karuo/Documents/开发/2、私域银行/工作手机/开发文档/8、部署/05-测试验收/ws_smoke_screenshot_20260724_235000.png。 - 结论:本轮未发现任何 ADB 代理路径参与执行,当前阻塞全部归因于手机端 Frida 未附着微信进程,建议执行手机端 bootstrap(Termux)恢复 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_message、wechat.post_moments、wechat.get_messages,并出现success=true与 503 失败混杂。- 事件日志
sdk/app/data/hook/events.jsonl显示get_messages/send_message大量执行回执,但仅有历史模拟wechat_msg_received(test_phone_001),未见当前设备的聊天正文接收事件。 - 已新增测试汇总文件:
开发文档/10、项目管理/02-测试报告/20260725_微信聊天记录与执行动作汇总/汇总报告.md。 - 下一步:在手机端 hook 附着成功后,打通
get_messages与服务端messages集合双向落库,形成“聊天记录可查证”闭环。
2026-07-25|微信群加 10 人(无界面命令行)复测
- 已按 10 秒间隔执行 10 个
add-from-group回执链路,目标群23070008577@chatroom。 - 结果:10/10 失败。主要失败码为
websocket/offline(Termux Agent 未连)与微信未确认好友申请(request_failed)。 - 关键信息:
channel_used已透传为websocket/offline与websocket/u2,未出现无回执/假成功;失败原因可追踪。 - 证据:
开发文档/10、项目管理/02-测试报告/20260725_微信群加10人_实时回执汇总.md。 - 下一步:连接 Termux Agent 后重跑同一批样本,观察 channel fallback 改善与成功率。
2026-07-26|SOUL派对成员运营模块需求立项
- 新增独立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、Frida16.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 / Frida、Agent WebSocket在线;模块接口返回 Frida16.5.6、Roottrue、2 个微信模块loaded;hub.htmlJavaScript 语法检查通过。 - 控制链路:实时画面与触控入口继续使用
screen/remote.ws,按钮动作沿用 Agent WS 优先路由;本轮未改业务按钮和动作协议。 - 待补:UI 树接口已返回 HTTP 200,但当前回执节点字段为空,需按 Agent 实际回执结构补齐前端节点计数与展示。
2026-07-26|SOUL需求单文档收口
- 原“成员运营需求”和“本机材料调研”合并为
开发文档/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全绿后再扩大批量好友、消息动作和朋友圈规模。
新增需求
- P0:WX-P0-01~WX-P0-06,共6项。
- P1:WX-P1-01~WX-P1-04,共4项。
- 详细需求:
开发文档/1、需求/工作手机微信产品需求_20260726.md。