Files
workphone-sdk/开发文档/1、需求/修改/工作手机_进行中_20260613.md
Manus AI ad477806be fix(adb/u2): SDK adb通道5038→5037共享修复 + WP-WX-04扫一扫root am start
- adb_device.py: 默认端口 5038→5037(共享本机 adb server · 修复 adb_devices=0)
- skill.py _open_scan_pick_album_first: 改用 root am start + 坐标点击
  · su -c 'am start BaseScanUI' 打开扫一扫(绕过 u2 click MIUI 限制)
  · 相册按钮 (937,2012) + 选图 (270,400) 真机验证
  · 权限弹窗处理 + AlbumPreviewUI 完成按钮
- 进度回写: WP-WX-04 探针 ~70%(u2通道通 · 不再 u2_offline)
2026-06-27 23:39:40 +08:00

44 KiB
Raw Blame History

工作手机 · 进行中20260613 · 唯一需求真源)

SDK :8899 · 真机 xgfe65eimrrofyws · modify/ 只保留本文件
已完成工作手机_0613已完成项归档_20260613.md · 0612全文备份
验收清单工作手机微信全量验收清单_待验_20260613.md
进度总表开发进度总表

〇、核心目标 · 互通与可持续开发(强制)

总纲真源全项目_进行中_20260613.md §〇
本端角色SDK :8899 · 真机/Hook/Agent · 四端 device-map 数据真源

核心目标:私域银行五端 可通行、可调用、E2E 留痕;本端改动须保证 存客宝 BFF · 触客宝 · AI 数智员工 调用链不断。

每轮开发前必读Agent 强制)

  1. 全项目_进行中_20260613 — 下一项 /🟡
  2. 本文 — 本端待办
  3. 被调用/调用方端 — 跨仓 *_进行中_*.md
  4. 相关 8、部署/05-测试验收/*_待验_*.md

需求互传:本循环新发现 → 写入本文 /🟡 + 时间戳;跨端影响 → 同步对方分端 + 全项目 §1.1/§测试收尾;验收 /🟡 → W05f §十五 回写。

子项完成度 | 7/5014.0% · - [x] / - [ ] 勾选 主 REQ 完成度 | 0/60.0% · 待办表 /🟡 统计时间 | 2026-06-17 17:12


测试收尾 · 2026-06-14W05f · 清单唯一口径 · 103/201=51.2% · 零

清单真源8、部署/05-测试验收/工作手机微信全量验收清单_待验_20260613.md
汇总 103 · 0 · 🟡 98 · 0
跨端同步全项目_进行中_20260613 §测试收尾

待修复 Bug · 须进开发)

REQ ID 验收ID 现象 根因/归属 证据
WP-ACC-01 P0-A10 BFF 无 JWT 仍 HTTP 200 存客宝 middleware 鉴权未全覆盖 bff_acceptance 日志
WP-ACC-02 P0-B09 GET restrictions 404/422BFF 路由已补 2026-06-14 01:23 HTTP 200 code=200r2 主控)
WP-ACC-03 P0-D04 ui-tree nodes=0 2026-06-14 10:12 HTTP 200 xml_len=18825 Frida reload 后 u2 xml 正常 42_ui_tree
WP-ACC-04 P1-WX60 screenshot b64=0 2026-06-14 10:12 HTTP 200 b64_len=130116 WS 稳定后 BFF 截图正常 清单 P0-D02 同源
WP-ACC-05 P2-S03 超管 static 第 4 项 FAIL project list provider exit 1
WP-ACC-06 P1-A08/A10 group/list · tag/list 间歇 502r2 BFF 200 2026-06-14 01:24 successWS 在线时)

待解阻塞(🟡 · 环境/口径)

REQ ID 验收ID 阻塞说明 解除条件
WP-ACC-07 P0-A05/NEW-WP-01 health online=1 但 ws=0 SDK health/connection 口径统一
WP-ACC-08 P0-A07/P0-B01 真机门禁/Hook probe 间歇 false Agent WS 稳定 + Frida reload防中断run_checklist_anti_interrupt.sh 分段+短超时
WP-ACC-09 P0-A14 wz_02 列表无 19445 切 companyId=2130 或权限
WP-ACC-10 P1-A99 BFF 33/33 需 Agent 驻留后稳定复跑 workphone_bff_acceptance.sh
WP-ACC-11 无线稳定 BFF+revoke E2E §2.1 末项

存客宝双通道 E2E 复验WP-E2E · 不改本仓)

ID 状态 现象
WP-E2E-01 health online=1 · connection ws=0
WP-E2E-02 contacts/messages/profile 30s 超时
WP-E2E-03 screenshot 200 但 base64 空
WP-E2E-04 🟡 设备 1↔0 闪断 → send 502
WP-E2E-05 hook/events 连跑 connection reset

一、总览看板

子项完成度 17/5034.0% · [x]/[ ] 勾选
主 REQ 完成度 2/633.3% · WP-APK-UI-01 · WP-PMAX-01 · 待办表 /🟡
本端目标 测试 /🟡 收口 + Agent 驻留 + 写类/解封/扫码真机 E2E
整体完成度 34.0%(子项 17/50主 REQ 2/6=33.3%
最后更新 2026-06-27 23:08
本端未完成 REQ 13 主项 + 11 测试 ACC/🟡
已关单索引 0613已完成归档

1.1 待办表(仅 /🟡

| :-: | :------------ | :------------------------------------------------------------ | :---------------: | | 🟡 | WP-0608-11 | 24h 稳定性长跑 | ~95% · 未满 24h | | 🟡 | WP-ARCH-01 | 架构/交互图与 CKB-143 双通道同步 | ~95% · #3 Fleet/WS · #4 M8 路由 | | | WP-0608-12 | 白名单写类 mass_send/add_friend/朋友圈互动 | 0% | | | WP-WX-02 | batch-send/batch-add 真机频控验收 | 0% | | | WP-WX-03 | 解封联系客服 A→E 真机 success 样本 | 30% | | 🟡 | WP-WX-04 | AI 传二维码图 → 微信扫一扫识别 → 自动加好友 | 50% | | 🟡 | WP-WX-HOOK | 微信 176 action Frida Hook 全量打勾 §七(修正误判 · companion 84→62 | 58/176 | | | WP-AGENT-01 | 24h Agent 驻留 + Termux/APK 去 Mac 依赖 | 0% | | | WP-COORD-01 | 四端业务切 USE_FOR_* / 触客宝 kefu 切 BFF | COORD |


二、待完成(按优先级 · 仅未勾项)

2.1 P0 · 跨端绑定 CKB-143WP-CKB-143

接口真源:存客宝 08-四端设备微信数据同源与触达链路.md · 详文见归档 四端对接 §3.8.9

  • SdkV3Adapter 回写 map / extra.sdkDeviceIdS2 同步不得覆盖 map
  • 绑定后设备详情挂载:工作手机 ID、wxid、好友数、电量、最后活跃 2026-06-27 真机 — 工作手机 ID + wxidwxid_5g37snchpv8e22 真机 UI 验证)+ 电量已在 DashboardFragment.tvHardwareInfo 显示 · 好友数/最后活跃需 SDK 上报
  • 无线稳定 BFF 33/33 + revoke E2E verifiedHook 间歇 script destroyed · 待 Agent 驻留稳定后重跑)
  • 验收 V4/V6V8s2_legacy 切换 · 双机 · AI 默认 Provider · 现场截图)

2.2 P0 · 24h 稳定性WP-0608-11

  • 满 24h 且无未解释掉线(区分主动重启 vs 非预期掉线)

2.3 P0 · 写类白名单专项WP-0608-12

  • mass_send / add_friend / post_moments / moment_like / moment_comment 白名单真实执行 + JSON 报告

2.4 P-MAX · 防封WP-PMAX-01

  • 量产黄灯Magisk DenyList / Shamiko / Root 隐藏 / 清理默认 27042 2026-06-27 23:08DenyList enforced magisk --denylist enable + add com.tencent.mmDenylist is enforced · com.tencent.mm|com.tencent.mm 在列表);Shamiko 已装 /data/adb/modules/zygisk_shamiko/27042 未监听 frida-server 用 19886模块清单selinuxpatch / zn_magisk_compat / zygisk_lsposed / zygisk_shamiko / zygisksu

2.5 P0 · 微信占位与批量WP-WX-01/02

  • GH-03/04 余:forward_multiple / revokeMessage 真 NetScene 撤回回执 / 建群拉人踢人
  • batch-send / batch-add 真机§3.3.1 风控:批间 ≥65s、加友 ≥2min
  • 魔兽世界账号:restricted=true 时返回明确限制原因,禁止与 Hook 失败混报

2.6 P0 · 解封WP-WX-03

| 录入需求 | 2026-06-13 16:00卡若口述增补 · 详 §九·一) | | 完成需求 | — |

  • unblock_via_customer_service 真机至少 1 次 final_status=success 留痕

2.6b P0 · AI 传图扫码加微信WP-WX-04

| 录入需求 | 2026-06-13 16:00卡若口述 · 详 §九·二) | | 完成需求 | 2026-06-16 契约层+Agent u2 链路已补(待真机 E2E |

  • POST /scan/add-friend-from-image REST 契约image_base64/image_url + verify_message 2026-06-16unified.py L2538py_compile exit 0
  • Agent extract_qr_from_image / add_friend_from_image u2 落盘+相册扫图 2026-06-16sdk/agent/skills/wechat/skill.pypy_compile exit 0
  • 离线路由+skill 对齐 pytest 2026-06-16 10:15test_wp_wx04_scan_routes_and_agent_skill 1 passed · gate exit 1adb=0·devices_online=0
  • integration manifest 登记 /scan/add-friend-from-image 2026-06-16 10:25localhost:8899 consumers/cunkebao 可见;probe_wp_wx04_when_ws_online.sh
  • extract_qr_from_image 真机不再 503Frida/u2 在线)— 🟡 2026-06-27 23:55 探针进展(~70% SDK adb 通道已修复5038→5037 共享 · 3 文件改动 · adb_devices=2)· u2 通道已通(channel_used: websocket/u2 · 不再 u2_offline· root am start 打开扫一扫验证(BaseScanUI)· 相册按钮坐标 (937,2012) 真机验证 · 选图坐标 (270,400) 验证进入 AlbumPreviewUI · _open_scan_pick_album_first 已改用 root am start + 坐标点击 · 🟡 权限弹窗处理逻辑需改进(焦点含 permis 而非 GrantPermissions · 微信自有权限 Activity· 🟡 u2 dump 不到微信节点SurfaceView 限制 · 已用坐标绕过)· 🟡 AlbumPreviewUI "完成"按钮坐标待精确定位
  • AI 数智员工 / BFF 可向工作手机下发「二维码图片 URL/base64」→ 真机执行全链路 verified

2.7 P1 · Agent / 部署WP-AGENT-01

  • Termux/APK Agent 自启动闭环(去掉 Mac 守护依赖 · 减少 WS 掉线后 Hook destroyed
  • 奥创真机 APK 残留复检 2026-06-13 21:05 — 无 org.xeslciw.manager/top.zzz.vivwxjz、无 /data/adb/xesd/;证据 8、部署/05-测试验收/20260613_奥创S2残留审计/
  • 奥创真机清机 Skill 2026-06-13 21:08机擎/阿服/奥创真机清机/SKILL.md + clean_aochuang_device.sh + verify_aochuang_clean.sh;真机 verify 7/7 PASS
  • CONN-08 BFF 方案 B 切换+同步 2026-06-13 21:12 — 2130 切 s2_legacydevices/sync HTTP 200·synced=0→恢复 workphone_sdk;证据 04_conn08_s2_legacy_e2e.json
  • CONN-08 奥创真机 APK 控机 / 007 token 直连SDK aochuang Provider health
  • BIND 公网/APK 扫码量产 E2E归档 设备Agent §3.5

2.8 P1 · 私域矩阵扩展(归档 矩阵_20260608

  • 写类:群消息 / 批量发 / 群发助手 / 加友 / 标签变更 / 朋友圈互动测试群·白名单·sns_id
  • auto_tag_contacts · sync_group_profile · moments_campaign · workflow.execute
  • 线索回流 BFF E2Ereport_lead_event → 存客宝)

2.9 COORD · 四端(不改本仓业务代码)

  • WP-001 存客宝/触客宝切 SDK 执行层(USE_FOR_*
  • WP-002 BFF 封装 ai/brain/*(非仅 proxy
  • WP-004 超管/存客宝「连接方案切换」UI
  • WP-006 与 CKB-143 UI 联调(与 §2.1 重叠)
  • 触客宝 kefu/message/send|sync → BFF 全量回归

2.10 P0 · APK 界面深度重构WP-APK-UI-01

| 录入需求 | 2026-06-13 21:15卡若口述 · 详 §十) | | 完成需求 | 2026-06-27 22:45真机 E2E 留痕闭环 · 6/6 子项全 |

  • 按 §十 信息架构重构 sdk/android-app 三 Tab首页/微信·防封/设备) 2026-06-27Tab 改名 bottom_nav.xml 连接/微信·防封/设备);WechatFragment 防封融合 3 步向导 阶段3 SetupActivity设备 Tab 改造 阶段2 SettingsFragment
  • 首次安装 3 步向导:联网 → MIUI 保活权限 → 扫码技术绑定 2026-06-273 步向导骨架 SetupActivity ViewFlipper 4 页:① 联网检查 ConnectivityManager/NetworkCapabilities · onResume 重检 ② 保活 4 项跳系统设置 ③ 扫码/LAN 发现 ④ 成功页 device_id + 复制 + 进入主页);connect_stage 人话 阶段4 DashboardFragment + 阶段8 SetupActivity handleConfig 轮询实时映射)
  • 扫码绑定全流程 UXBIND-04 增强 · connect_stage 人话 · 成功页 device_id 2026-06-27成功页 device_id + connect_stage 人话 DashboardFragment.refreshengine.getConnectStage() 映射 primary→主服务器/lan→局域网服务器/public→公网备用 · AgentEngine.getConnectStage() 公开访问器 · fragment_dashboard.xml tvConnectStage 行);SetupActivity 绑定过程实时 stage 显示 2026-06-27handleConfig startAgentService 后轮询 engine.wsManager.state + getConnectStage() 每500ms映射 · 连接成功→成功页 · 15s超时→失败提示 · stageText() 复用 DashboardFragment 人话映射);compileDebugKotlin BUILD SUCCESSFUL
  • 防封模块进 APK UIAB-02~06 runtime · RiskSentinel · 熔断 Banner 2026-06-27AB-02 熔断红条 + AB-03 长暂停黄条 + runtime 信号 + 详情弹窗 WechatFragment.updateAntiBanUI level>=3 红条「已熔断」/ level==2 黄条「已降速」· showAntiBanDetail AlertDialog 详情 + 打开 hub 防封页);AB-06 高风险禁批量 2026-06-27RiskSentinel.currentLevel() 公开 · AntiBanManager.canBatch() level<3 判断 · AIBrain.batchGate 闸门属性 · AgentEngine init 注入 · heartbeatCycle/chatAndExecute 两处批量入口 level>=3 整批跳过 429compileDebugKotlin BUILD SUCCESSFUL
  • 业务绑定指引链 CKB-147技术绑定成功后引导存客宝入库 2026-06-27设备 Tab 引导文案 + device_id 复制/二维码 SettingsFragment btnCopyDeviceId/btnShowDeviceQr zxing MultiFormatWriter 生成 QR与存客宝扫码页 UI 联调 2026-06-27(二维码内容改标准 JSON {"device_id","server","project"},与扫码绑定 QR 格式对称,存客宝扫码即可识别设备归属入库);compileDebugKotlin BUILD SUCCESSFUL
  • 真机量产 E2E 留痕 2026-06-27 22:458、部署/05-测试验收/20260627_APK界面重构/3 PNG + 3 UI XML + 验收报告.md · 真机 Redmi K70xgfe65eimrrofyws三 Tab 全验证(连接/微信·防封/设备)· wxid wxid_5g37snchpv8e22 真机 UI 显示 · connect_stage 人话「主服务器」· CKB-147 业务绑定指引 + 二维码按钮 · 防封运行时区块 · 保活清单 ④ 项

三、架构待补WP-ARCH-01 · 余量产黄灯)

# 缺口 状态
Magisk DenyList / Root 隐藏(设备运维) 2026-06-27 23:08 · DenyList enforced + Shamiko + 27042 未监听

四、验收命令(真机铁律)

# 真机微信全功能 + 截图 一键验收(设备稳定在线后产 PNG 图片 + 读/发/转发 JSON
# Mac Docker优先 WORKPHONE_SDK_URL=http://localhost:8899127.0.0.1 可能非当前 SDK 进程)
WORKPHONE_SDK_URL=http://localhost:8899 DEVICE_ID=xgfe65eimrrofyws \
  bash sdk/scripts/run_wechat_realdevice_acceptance.sh

# WP-WX-04WS 在线后扫码加友探针
WORKPHONE_SDK_URL=http://localhost:8899 DEVICE_ID=xgfe65eimrrofyws \
  bash sdk/scripts/probe_wp_wx04_when_ws_online.sh

# 守护:微信 Frida 一旦重附立即自动跑上面的验收(适合设备闪断/待恢复时挂后台)
MAX_MIN=120 WORKPHONE_SDK_URL=http://127.0.0.1:8899 DEVICE_ID=xgfe65eimrrofyws \
  nohup bash sdk/scripts/auto_capture_when_frida_back.sh >/dev/null 2>&1 &

# 微信 Hook 离线回归套件WP-WX-01/HOOK/PMAX · 一键 · 仅回归不替代真机)
bash sdk/tests/run_wx_hook_regression.sh   # 转发24/24 + 诚实性 + 防封17 + 审计0缺失

# 模块化/接口化契约(存客宝可调用全量微信端点 · 只读零副作用)
curl -sS http://127.0.0.1:8899/api/v3/integration/consumers/cunkebao   # 19模块/259端点 · 微信全覆盖

# 门禁
WORKPHONE_SDK_URL=http://192.168.110.101:8899 bash 开发文档/8、部署/05-测试验收/scripts/real_device_gate.sh

# 私域读类(默认不含真实写类)
node sdk/scripts/run_wechat_private_domain_acceptance.mjs -d xgfe65eimrrofyws --base http://127.0.0.1:8899

# 白名单写类(显式开关)
WORKPHONE_TEST_TO_ID=filehelper node sdk/scripts/run_wechat_private_domain_acceptance.mjs -d xgfe65eimrrofyws --include-real-write

留痕目录:开发文档/8、部署/05-测试验收/YYYYMMDD_*


七、WP-WX-HOOK · 待办

  • 🔒 真机 attach需卡若提供 Frida 真机通道):消息 sendVideo/sendFile/revoke、批量加友、解封 A→E
  • 🔒 余 62 个真 companion _intentAction 逐项改 Frida须真机验证,禁止盲写标

五、已完成( · 已迁出本文)

工作手机_0613已完成项归档_20260613.md
WP-0608-0110 · WP-0610 · WP-WOW-01 · WP-PMAX · WP-ARCH · CKB-143 已勾子项 · WP-WX-01 已勾 Hook · 接口化 manifest


八、剩余 阻塞与授权

本机可独立验证的代码项已做尽(防封 AB-02/03/05/06、微信转发真 Frida、矩阵诚实化、回归套件。剩余 11 项 卡在两类外部依赖,按真机铁律禁止无证据标 / 禁止盲写不可验证 Frida

阻塞类 涉及项 解锁条件
🔒 真机 Frida attach已解除 2026-06-27 23:00 revoke 真撤回 · 建群/拉人/踢人 · batch 真机频控 · 解封 A→E · 24h 长跑 · 62 companion 逐项 卡若提供 Frida 真机 attach 通道已验证frida -H 192.168.110.80:19886 -p 8811 attach 微信主进程成功 · NativeFunction system() ret=0 · 证据 Frida通道验证留痕.md · 注意Java.perform 不兼容需用 NativeFunction
🔒 跨端 UI四端铁律 WP-CKB-143 超管 device-map UI · WP-COORD 四端切换 卡若授权改 superadmin-web / 各端仓

默认:未授权前,仅继续本仓可离线回归验证的写类真 Frida复用已验证原语非破坏性
Frida 通道已通2026-06-27 23:00frida -H 192.168.110.80:19886 -p 8811 · NativeFunction 方式 · Java.perform 不兼容用 system() 绕过。


九、卡若口述增补 · 解封 + 扫码加微信

九·一、WP-WX-03 · 自动联系微信客服协助解封

| 录入需求 | 2026-06-13 16:00 | | 完成需求 | — |

卡若原话整理:微信号被封/限制后,工作手机要自动帮找客服、打开封号相关界面、申请对接客服,并在微信客服会话里持续聊天——说明原因、反复协助、最终说服客服完成解封。
语音备注:口述「淘宝上找客服」按 微信 App 内 导航理解(设置/安全中心/搜索客服),闲鱼/淘宝 App 客服;若后续要闲鱼解封另开 REQ。

一句话:全自动「进客服 → 多轮 AI 对话缠磨 → 解封成功或明确拒绝」闭环,禁止 mock final_status=success

业务规则

编号 规则
R1 触发:账号 restricted/blocked 或运营/API 显式调用 POST /api/v3/account/unblock-customer-service
R2 导航路径UI 自动化):我 → 设置 → 账号与安全 → 微信安全中心 → 联系客服/在线咨询;未命中则二级页 解封账号/申诉解封 → 再找客服
R3 客服会话:抓取客服最新消息 → AIBrain 生成 ≤120 字回复(说明业务原因、配合核查、礼貌坚持)→ 发送 → 循环至成功/拒绝/超时
R4 说服策略:承认配合、提供 reason/phone/wxid禁止威胁、冒充、编造证件见 system prompt
R5 退出:final_statussuccess / reject / timeout / fallback / error;每轮写入 session.turns[] 留痕
R6 仅自有/授权账号;调用方必传 reason 审计字段

现状(代码审计 2026-06-13

状态
Skill unblock_via_customer_service 五阶段状态机 S1S5
REST POST /account/unblock-customer-service max_rounds/chat_interval_sec/use_web_search
方案文档 6、后端/02-设备端/微信解封_联系客服自动化方案.md
真机 final_status=success 待 E2E 样本

代码锚点

文件 关注点
sdk/agent/skills/wechat/unblock_customer_service.py S1S5 状态机 · 客服文案命中 · AI 回复
sdk/app/routers/unified.py L2364 unblock_via_customer_service 路由
sdk/agent/agent.py action 白名单 · timeout

待开发 / 验收

# 任务
03.1 真机:受限账号走完整 A→Efinal_status=success JSON + 截图
03.2 客服入口多文案兜底回归(联系客服/在线咨询/申诉客服)
03.3 空窗追问与 empty_streak timeout 策略真机验证
03.4 BFF /v1/workphone/* 透传 + 存客宝/AI 员工可触发解封任务
03.5 运营手册对齐:9、手册/02-操作指南/微信解封_联系客服批量操作手册.md

验收

  • V1调用 API 后真机自动进入微信安全中心客服会话(有 UI 截图)
  • V2session.turns[] ≥3 轮,含客服原文 + AI 回复 + 发送状态
  • V3至少 1 次真机 final_status=success 或诚实 reject(附 turns 全量)
  • V4无 Frida 离线时返回 503禁止假成功

九·二、WP-WX-04 · AI 下发二维码图片 → 扫一扫加微信

| 录入需求 | 2026-06-13 16:00 | | 完成需求 | — |

卡若原话整理:给这台工作手机的 AI 数字员工 发一张好友二维码图片(扫码添加微信的那种),手机端应走 微信「扫一扫 → 从相册选图/上传图片」 识别二维码,识别成功后自动触发添加好友;扫描与加好友由工作手机真机执行,不是 PC 模拟。

一句话二维码图 → 推送到设备 → 微信识别 → add_friend_by_qr → verified 加好友

业务规则

编号 规则
R1 输入AI/BFF 下发 image_urlimage_base64(微信个人二维码 PNG/JPG
R2 执行链:保存到设备相册 → 打开微信 扫一扫从相册选择/识别图中二维码 → 解析 qr_contentadd_friend_by_qr
R3 可选附言:支持 verify_message(打招呼语),走现有加友频控与 _anti_ban_guard
R4 失败诚实返回:识别失败 / 二维码过期 / 已是好友 / 503 Hook 未附着,禁止 mock success
R5 WP-0608-12 白名单写类一致:真机 verified 后方可标

现状(代码审计 2026-06-13

状态 证据
add_friend_by_qr 🟡 单次 200 events.jsonl 2026-06-13 06:47 · qr_content=probe
extract_qr_from_image 🟡 Agent u2 已补 skill.py 落盘+相册路径 · 真机 503 待 Frida 在线复验
POST /scan/extract-qr 已接图参 image_base64/image_url Body · unified.py L2519
POST /scan/add-friend-from-image 契约层 unified.py L2538 · Agent add_friend_from_image u2
AI→设备传图 🟡 BFF 透传待四端联调 · 本仓 REST+Agent 已就绪

代码锚点

文件 关注点
sdk/app/routers/unified.py L24922523 /scan/* · extract_qr_from_image
sdk/agent/hook/hook_executor.py extract_qr_from_imagescan_qr_code 映射
sdk/app/skills/wechat/skill_v2.py add_friend_by_qr(qr_content)
sdk/agent/agent.py U2/UI 扫一扫动作

待开发

# 任务
04.1 RESTPOST /scan/add-friend-from-imageimage_base64/image_url + verify_message 2026-06-16
04.2 Agent图片落盘 → 推相册 → 微信扫一扫选图 UI 自动化u2/Frida 2026-06-16 代码层 · 真机 E2E 待验
04.3 修复 extract_qr_from_image 503Frida attach + UI 路径)
04.4 识别后串联 add_friend_by_qr,返回 verified + 目标 wxid/昵称
04.5 AI 数智员工 / 存客宝 BFF「发二维码加好友」自然语言 → 上述 API
04.6 频控:复用加友日上限 · 批间 ≥2min对齐 TKB 风控口径)

验收

  • V1向 AI 发一张真实微信二维码 PNG真机完成加好友申请截图扫一扫+确认页)
  • V2API 返回 verified=true 或诚实错误码(过期/已是好友/识别失败)
  • V3extract_qr_from_image 不再 503Frida 在线前提下)
  • V4加友后 get_contacts 或好友申请列表可核对目标

十、WP-APK-UI-01 · 工作手机 APK 界面深度重构(卡若口述 2026-06-13

| 录入需求 | 2026-06-13 21:15 | | 完成需求 | — | | 优先级 | P0(量产店员入口 · 与 WP-AGENT-01 / BIND / WP-PMAX / §〇 互通总纲联动) | | 包名 | com.system.cloudservice | | 代码锚点 | sdk/android-app/app/src/main/java/com/system/cloudservice/ui/ · MainActivity · SetupActivity · DashboardFragment · WechatFragment · SettingsFragment · StatusFragment | | 归档参考 | 设备Agent §3.5 · 防封共享基线 · hub 防封 Tab assets/hub.html |

卡若原话整理:封装好的工作手机 APK整个界面要按最新私域银行需求深度重构——流程更简、体验更顺;把微信防封模块和控机状态融合进 APK扫码绑定设备要更细节、更流畅;让店员装完就能「变活」并对接存客宝/触客宝/AI 数智员工。

一句话APK = 量产唯一入口 · 三屏搞定(连上服务器 → 微信安全可控 → 设备已入库),工程师细节默认折叠。

十·一、重构原则

# 原则 说明
P1 对齐 §〇 四端互通 UI 只展示与「可通行、可调用」相关的状态;不重复 SDK 工程师面板
P2 先简后深 默认 3 Tab + 1 条主流程Frida 日志/Hub PWA/手动 server_url 进「高级」折叠
P3 防封可见不可扰 P-MAX 状态店员能看懂(绿/黄/红 + 人话);熔断时自动停自动化,禁止静默硬跑
P4 两种绑定分步引导 ① 技术绑定(扫项目 QR → Agent↔SDK② 业务绑定(存客宝/AI 扫码入库 CKB-147
P5 失败可自助 每个 connect_stage 对应「下一步点哪里」BIND-07 日志可在 APK 内复制给运维

十·二、信息架构Tab 重构)

Tab 新名称 主内容 替换现有
首页 连接 四态大卡Agent WS · SDK 在线 · Frida · 微信登录;connect_stage 人话;主 CTA「扫码绑定项目」/「重新连接」 DashboardFragment
微信 微信 · 防封 Hook 状态 · /antiban/status runtimeAB-02/03/05/06· 今日配额/暖机 · 解封助手入口(WP-WX-03) · 扫码加友(WP-WX-04) WechatFragment
设备 设备 · 绑定 device_id 可复制 · 业务绑定指引(链 CKB-147· MIUI 保活 checklist · 日志导出 SettingsFragment + 部分 SetupActivity

底部导航:图标 + 两字标签;在线时首页 Tab 角标绿点。

十·三、核心用户流程(须简化)

装 APK → 首次 3 步向导(联网 / 权限 / 扫码)
      → 自动 LAN 发现8898 beacon或扫项目 QRBIND-04
      → WS register 成功 → 首页全绿
      → 引导「下一步:打开存客宝扫本机 device_id 完成入库」
      → 日常使用:只看首页+微信 Tab异常才进设备 Tab
步骤 页面 UX 要求
1 SetupActivity 向导 进度条 1/2/3每步最多 1 个主按钮;跳过仅隐藏高级项
2 权限 MIUI自启动 · 省电无限制 · 通知 · 无障碍(灰色项可点进系统设置)
3 扫码 全屏相机 · 手电筒 · 相册选 QR解析 JSON 写 config + 自动 connect
4 成功页 动画 → 显示 device_id大字号可复制+ 「去存客宝绑定」图文步骤
5 失败 阶段码 + 3 条建议(换 WiFi / 检查 NAS SDK / 联系管理员)+ 「重试扫码」

十·四、扫码绑定增强BIND-04 · P0

# 任务 验收
UI-01 扫码页全屏 · 权限引导(相机) 首次拒绝后可二次引导
UI-02 扫成功 → 写 server/project/public_servers → 触发 AgentEngine.connect config.json 与 Python Agent 同协议
UI-03 连接中展示 connect_stagediscovering/connecting/registering/online /api/v3/connection/status 一致
UI-04 在线后卡片展示 wxid/好友数(有则显示,无则「微信未登录」) 对齐 CKB-143 设备详情字段
UI-05 BIND 公网/APK 扫码量产 E2E§2.7 末项) 真机 PNG扫 QR → online → 存客宝可见

十·五、防封模块融合P-MAX · 必须进 APK

真源:防封共享基线 · SDK AntiBanManager · RiskSentinel · hub 防封 Tab

SDK 信号 APK 展示 店员动作
runtime.circuit_breakerAB-02 红条「已熔断,自动化已暂停」 等待或联系运营
runtime.long_pauseAB-03 黄条「长暂停中,约 N 分钟」 勿手动狂点发送
silent_throttle 橙条「发送受限,请减慢操作」 暂停批量任务
risk_level / AB-06 微信 Tab 顶栏徽章 低/中/高 高风险禁开批量
warmup_72h / 新号 蓝条「暖机期,请勿群发/加友」 只人工聊天
needs_human 弹窗阻断 + 停 Hook 任务 人工处理验证

待开发

  • 微信 Tab 轮询 GET /api/v3/antiban/status?device_id=(本地 SDK loopback 或 NAS URL 2026-06-27 — 改为直读 engine.getAntiBanStatus() 内存(无 HTTP 开销);WechatFragment.refresh + updateAntiBanUI 渲染 level/level_name/minute/hour/cooldown/nurture phaseAgentEngine.getAntiBanStatus() 公开访问器;compileDebugKotlin BUILD SUCCESSFUL
  • 熔断/长暂停时同步暂停 NurtureScheduler / 批量队列(与 SDK 一致) 2026-06-27NurtureScheduler@Volatile paused + pause()/resume()/isPaused() + shouldNurture() 开头检查 paused + getStatus()paused 字段;AntiBanManager.riskSentinel 回调联动level>=3 nurtureScheduler.pause() / level<=1 nurtureScheduler.resume()compileDebugKotlin BUILD SUCCESSFUL
  • 防封详情抽屉:今日发送数 · 最近高危动作 · 一键「打开 hub 防封页」WebView 可选) 2026-06-27WechatFragment.showAntiBanDetail AlertDialog 展示 level/level_name/quota/cooldown/consecutive_failures/nurture phase + neutralButton 打开 hub 防封页pwa_urlcardAntiBan 可点击

十·六、与私域银行跨端 REQ 对齐

跨端 REQ APK 承接
§〇 四端互通 首页展示「存客宝/触客宝/AI 可调」在线前提SDK+WS 双绿) 2026-06-27fragment_dashboard.xml 加四端互通状态卡 · DashboardFragment.refresh isOnline && engine != null 时展示「在线 · 存客宝·触客宝·AI 数智员工 可调」/ 否则「离线 · 等待 SDK+WS 双绿」)
CKB-147 业务绑定步骤卡 + device_id QR 供存客宝扫 2026-06-27设备 Tab 引导卡 + device_id 二维码 JSON 化)
WP-CKB-143 绑定后展示 map 字段:工作手机 ID · wxid · 电量 2026-06-27 真机验证DashboardFragment.tvHardwareInfo 显示真实 wxid wxid_5g37snchpv8e22 · DeviceInfo.getWxid(context) 读 APP files/wxid_cache.txt · refresh_wxid_cache.sh 守护脚本用 adb su 读微信 SharedPreferences login_weixin_username 写入 · Frida system() 兜底 · 工作手机 ID + 电量已有 · SELinux category 限制 APP su 读微信文件,改用 adb su 写 APP files 方案)
WP-WX-03 微信 Tab「解封助手」→ 触发 unblock-customer-service + 进度 2026-06-27triggerUnblockAssistantunblock_via_customer_service skill · Frida 未就绪诚实提示)
WP-WX-04 微信 Tab「收到二维码加好友」→ 相册/推送图入口 2026-06-27pickImageLauncher 相册选图 → 缓存文件 → add_friend_from_image skill · Frida 未就绪诚实 503
WP-AGENT-01 去 Termux 依赖 · BootReceiver 自启 · 前台服务常驻 2026-06-27BootReceiver 接收 BOOT_COMPLETED → 读 prefs server_url/project_id/device_id · 已绑定或 auto_discover 时启动 AgentForegroundService · Android O+ startForegroundService · AgentForegroundService.initAndStartEngine 已处理空 serverUrl 走 beacon 自动发现 · Manifest 已注册 receiver + RECEIVE_BOOT_COMPLETED 权限)
WP-PMAX-01 十·五 防封 UI · MIUI Root 隐藏 checklist设备 Tab 2026-06-27fragment_settings_v2.xml 加 Root 隐藏清单卡 · SettingsFragment 三个按钮:① Magisk DenyList 跳 com.topjohnwu.magisk ② Shamiko 模块提示 ③ 检测 27042 端口 ShellExecutor/proc/net/tcp grep :69A2

十·七、视觉与交互(简化规范)

要求
布局 单列卡片 · 主 CTA 每屏 ≤1 · 次要操作文字链
状态色 绿=在线 · 黄=连接中/预警 · 红=离线/熔断 · 灰=未配置
字体 device_id / connect_stage 关键信息 ≥16sp · 可复制
动效 连接成功轻反馈 · 扫码成功 check 动画 · 禁止复杂转场
横屏 锁定竖屏(保持现有 SCREEN_ORIENTATION_PORTRAIT

十·八、验收(真机铁律)

# 场景 证据
V1 新装 APK 走完 3 步向导 + 扫项目 QR → SDK devices 在线 PNG 成功页 + JSON register
V2 扫码失败 3 类(无网 / SDK 不可达 / QR 过期UI 可读 各 1 张截图
V3 防封熔断时 APK 红条 + 自动化暂停 antiban status + APK 截图
V4 技术绑定成功后device_id 引导文案与 CKB-147 存客宝步骤一致 对照存客宝扫码页
V5 24h 前台服务 + 换网自动重连BIND-05 日志 connect_stage 序列

留痕目录:开发文档/8、部署/05-测试验收/YYYYMMDD_APK界面重构/(含 README + 小图嵌入)

需求互传:本 REQ 若发现存客宝扫码页/超管 map 文案需改 → 同步 全项目_进行中_20260613 §CKB-147 / §6.5(§〇 互传铁律)。


六、变更记录

日期 说明
2026-06-27 WP-APK-UI-01 阶段 16-19 真机开发:① 阶段16 真机在线排查USB+网络 adb 192.168.110.80:5555 · Redmi K70 Android 13 · Magisk Delta Root · 微信 8.0.69 · Agent 在线)② 阶段17 修复 Magisk 包名 bugSettingsFragment.launchMagisk 改多包名兼容 com.topjohnwu.magisk+io.github.vvb2060.magisk · Magisk Delta 真机验证)③ 阶段18 启动 Frida 16.5.6/data/local/tmp/frida-server-16 端口 19886 · frida -U/-H 192.168.110.80:19886 双通道 · Magisk 模块 Shamiko+LSPosed )④ 阶段19 WP-CKB-143 wxid 真机实现(DeviceInfo.getWxid(context) 读 APP files/wxid_cache.txt · refresh_wxid_cache.sh 守护脚本 adb su 读微信 SharedPreferences login_weixin_username 写入 · SELinux category 限制 APP su 读微信文件,改用 adb su 写 APP files 方案 · UI 显示 wxid_5g37snchpv8e22 );§十·六 WP-CKB-143 🟡 · §十·六 7/7 全 · 子项 15/5030%)· 真机 E2E 通道已建立
2026-06-27 WP-APK-UI-01 阶段 15WP-CKB-143 wxid UI 占位(DashboardFragment.tvHardwareInfo buildString 加 wxid 行 · hookOk 时「待 Hook 注入」/ 否则「—」 · 工作手机 ID + 电量已有 · wxid 需 Frida Hook engine 暂无通道);compileDebugKotlin BUILD SUCCESSFUL in 1m§十·六 WP-CKB-143 🟡部分完成wxid 待 Hook· §十·六 6/7 + 1 🟡 · 子项 15/5030%
2026-06-27 WP-APK-UI-01 阶段 14assembleDebug 打包验证(./gradlew :app:assembleDebug BUILD SUCCESSFUL in 1m 20s · APK 7.1M app-debug.apk · 验证资源/清单/打包流程全通过gitea 同步成功commit 0447726c3 · 25 文件 +3733/-391 · 34084867e..0447726c3 mainGitHub push 卡住已 stop网络慢gitea 内网已同步);离线开发部分完成 · §十·六 6/7 · 子项 15/5030% · 剩余项需真机/跨端授权
2026-06-27 WP-APK-UI-01 阶段 13WP-PMAX-01 Root 隐藏 checklistfragment_settings_v2.xml 保活卡后加 Root 隐藏清单卡 · SettingsFragment 三按钮:① btnRootDenyList 跳 Magisk App 提示勾选微信 ② btnRootShamiko 跳 Magisk 提示确认 Shamiko ③ btnRootCheckPort ShellExecutor.execute/proc/net/tcp grep :69A20x69A2=27042检测 Frida 默认端口 · 加 launchMagisk 辅助 + scope + onDestroyViewcompileDebugKotlin BUILD SUCCESSFUL in 1m 15s§十·六 WP-PMAX-01 · §十·六 7 项全 · 子项 15/5030%
2026-06-27 WP-APK-UI-01 阶段 12§ 四端互通首页状态卡(fragment_dashboard.xml GridLayout 后加四端互通状态卡 · DashboardFragment.refresh isOnline && engine != null 时 tvInteropStatus 绿「在线」+ tvInteropDetail「存客宝·触客宝·AI 数智员工 可调」/ 否则红「离线」+「等待 SDK+WS 双绿」);compileDebugKotlin BUILD SUCCESSFUL in 1m 9s§十·六 §〇 四端互通 · 子项 15/5030%·§十·六为REQ对齐表不计入子项
2026-06-27 WP-APK-UI-01 阶段 11WP-AGENT-01 BootReceiver 自启核验(BootReceiver.kt 已存在且实现完整 · 接收 BOOT_COMPLETED → 读 prefs server_url/project_id/device_id · 已绑定或 auto_discover 时启动 AgentForegroundService · Android O+ startForegroundService · AgentForegroundService.initAndStartEngine 已处理空 serverUrl 走 beacon 自动发现 · Manifest 已注册 receiver 第56-63行 + RECEIVE_BOOT_COMPLETED 权限第16行compileDebugKotlin BUILD SUCCESSFUL in 19s§十·六 WP-AGENT-01 · 子项 15/5030%·§十·六为REQ对齐表不计入子项
2026-06-27 WP-APK-UI-01 阶段 10WP-WX-04 相册选图加友入口(WechatFragment.pickImageLauncher registerForActivityResult 相册选图 · handlePickedImage URI→缓存文件→add_friend_from_image skill · Frida 未就绪诚实 503 · 用后删除临时文件);补标 §十·六 WP-WX-03/CKB-147 APK 承接 compileDebugKotlin BUILD SUCCESSFUL§十·六 WP-WX-04
2026-06-27 WP-APK-UI-01 阶段 9CKB-147 业务绑定二维码 JSON 化(SettingsFragment.showDeviceQr 二维码内容从纯 device_id 改为标准 JSON {"device_id","server","project"} · 与扫码绑定 QR 格式对称 · 存客宝扫码即可识别设备归属服务器/项目入库 · 弹窗文案优化);compileDebugKotlin BUILD SUCCESSFUL§二.10 业务绑定指引项 · 子项 15/5030%
2026-06-27 WP-APK-UI-01 阶段 8SetupActivity 绑定过程实时 connect_stage 显示(handleConfig startAgentService 后轮询 engine.wsManager.state + getConnectStage() 每500ms · stageText() 复用 DashboardFragment 人话映射 primary→主服务器/lan→局域网服务器/public→公网备用 · CONNECTED→成功页 · 15s超时→失败提示compileDebugKotlin BUILD SUCCESSFUL§二.10 扫码绑定 UX 项 · 子项 12/5024%
2026-06-27 WP-APK-UI-01 阶段 7AB-06 高风险禁批量(RiskSentinel.currentLevel() 公开 · AntiBanManager.canBatch() level<3 · AIBrain.batchGate 闸门属性 · AgentEngine init 注入 antiBan::canBatch · heartbeatCycle/chatAndExecute 两处批量入口 level>=3 整批跳过返回 429compileDebugKotlin BUILD SUCCESSFUL§二.10 防封模块 AB-06 · 子项 11/5022%
2026-06-27 WP-APK-UI-01 阶段 6AB-02 熔断联动 NurtureSchedulerNurtureScheduler@Volatile paused + pause()/resume()/isPaused() + shouldNurture() 检查 paused + getStatus()paused 字段 · AntiBanManager.riskSentinel 回调 level>=3 暂停 / level<=1 恢复);compileDebugKotlin BUILD SUCCESSFUL§十·五 熔断同步暂停项 · 子项 10/5020%
2026-06-27 WP-APK-UI-01 阶段 5AB-03 长暂停黄条level==2 橙黄「风险较高,已降速」· bg_pill_connecting+ 防封详情弹窗(showAntiBanDetail AlertDialog 展示 level/quota/cooldown/consecutive_failures/nurture + neutralButton 打开 hub 防封页 · cardAntiBan 可点击);compileDebugKotlin BUILD SUCCESSFUL§十·五 防封详情抽屉项 · 子项 9/5018%
2026-06-27 WP-APK-UI-01 阶段 4connect_stage 人话映射(AgentEngine.getConnectStage() 公开访问器 · DashboardFragment.refresh 映射 primary→主服务器/lan→局域网服务器/public→公网备用 · fragment_dashboard.xml tvConnectStage 行);compileDebugKotlin BUILD SUCCESSFUL§二.10 扫码 UX connect_stage 人话
2026-06-27 WP-APK-UI-01 阶段 3SetupActivity 重构为 3 步向导ViewFlipper 4 页:① 联网检查 ConnectivityManager/NetworkCapabilities · onResume 重检 ② MIUI 保活 4 项跳系统设置 ③ 扫码/LAN 发现 ④ 成功页 device_id monospace + 复制 + 进入主页);保留 adb 注入配置跳过向导;compileDebugKotlin BUILD SUCCESSFUL§二.10 3 步向导/扫码 UX 项部分
2026-06-27 WP-APK-UI-01 阶段 2SettingsFragment 改造为「设备·绑定」Tabtitle 改「设备」+ device_id 16sp monospace + 复制按钮 + zxing MultiFormatWriter 生成 device_id 二维码 + CKB-147 业务绑定三步指引卡 + MIUI 保活 checklist 4 项跳系统设置);compileDebugKotlin BUILD SUCCESSFUL§二.10 业务绑定指引项部分
2026-06-27 WP-APK-UI-01 阶段 1三 Tab 改名(连接/微信·防封/设备)+ WechatFragment 防封 runtime 信号融合AB-02 熔断 Banner + level/level_name/minute/hour/cooldown/nurture phase+ 解封助手/扫码加友入口按钮;AgentEngine.getAntiBanStatus() 公开访问器;compileDebugKotlin BUILD SUCCESSFUL§十·五 轮询项
2026-06-16 integration_manifest other 桶清零antiban/customer/stability 归类)· 容器内 manifest other=0 PASS
2026-06-16 WP-WX-04 app/agent 与 agent 双份 skill 同步MCP 绑定修复 ct_0784cc85
2026-06-16 WP-WX-04 04.1/04.2 契约+Agent u2 链路;子项 5/46MCP 中断修复 ct_9bb14f7d
2026-06-13 WP-APK-UI-01 APK 界面深度重构:三 Tab · 扫码绑定 UX · 防封融合 · 量产流程(§十)
2026-06-13 §〇:四端互通 · 需求互传 · 可持续对话每轮必读(链全项目总纲)
2026-06-13 换日分拣0612 全文 → modify需求归档_20260613/工作手机_0613已完成项归档;§测试 ACC 入库
2026-06-13 WP-WX-03/04 卡若口述 §九
2026-06-14 防自动中断:主控 CHECKLIST_CHUNK/PHASE+Frida探针+run_checklist_anti_interrupt.sh+fix_persistent_chat_no_interrupt.sh