320 KiB
2026-06-12 17:26 | Frida 真机 E2E(Type-C 直连 · 非 ADB)
- 真机控机已证实:设备 xgfe65eimrrofyws + WeChat 8.0.69,经 SDK→WS Agent→Frida attach;
send_messageverified=true · message_id=3128/3129/3130/3135 · method=send_msg_event;profile/ping/contacts 经 rpc.* Frida,全程无 ADB UI - 修 WS 不稳定根因:卸载竞争
com.workphone.python-agentLaunchAgent(与手动 Agent 争抢同 device_id WS 槽互踢);手动后台 Agent 改 oneclickstart_new_session正确脱离 - 修嵌套死锁:forward/forwardMultiple/revoke 在外层 performNow 内调
_intentAction(自带 performNow)致 Frida 挂起 → 改 performNow 外降级;离线 24/24 仍绿 - 待续:forward/revoke 真机 RPC ~30s 挂起复测(疑 u2 兜底/残留注入);留痕
8、部署/05-测试验收/20260612_frida真机E2E/ - 进度 94%→95%
2026-06-12 17:36 | forward/revoke 真机 Frida 跑通(双层 u2 路由修复)
- 根因:forward/forward_multiple/revoke 被双层 u2 强制清单拦截(
agent.py U2_FORCE_ACTIONS+device_transport.py WECHAT_U2_ONLY_ACTIONS)→ 走 u2 30s 挂起,从未到 Frida。两处移除后走 Frida 主通道,耗时 22s→0.04~0.6s - forward 真机验证:发文本 id=3137 → forward → success · send_msg_event · verified · text_resend;search「FWD-SRC」命中 2 条(原文+副本确落库)
- revoke 真机:假ID→msg_not_found;真消息(id=3139)→资格通过→intent no_receiver(真撤回 NetScene 待实现,诚实不假成功);revoke SQL 加 msgId OR 匹配
- WP-WX-01 → ✅(90%);整体 95%→96%;留痕
20260612_frida真机E2E/真机验收记录.md - 读类批量真机复验:get_contacts/groups/labels(323)/recent_messages/friend_requests 全 channel=hook success;读+发+转发+撤回资格全链 Frida 验证通过
- 标签写类闭环真机:create_label(wcdb_insert,323→324,含新标签True)→delete_label(wcdb_delete,→323) 全 channel=hook,真实 WCDB 落库可逆
- 私域能力批量验收真机:Node runner passed=23/failed=1(video_channel 视频号 companion 已知)/gated=5;报告
20260612_微信私域能力验收/*.json - 联系人打标签写类闭环真机:create_label→set_contact_label(filehelper,wcdb_update)→get_contacts_by_label 返回 filehelper→还原;私域核心「打标签+按标签查」Frida 真写可逆
2026-06-12 17:20 | WP-WX-01 微信媒体/转发 · 诚实复核 + 真 Frida 转发
- 修矩阵误判:
gen_wechat_capability_matrix.py旧用固定 1400 字窗口判_intentAction,越界把sendVideo/sendFile/sendLink等真 share 实现误判 companion;改花括号配平 +has_real双判 - 结果:companion 占位 84→63(−21 误报),Frida 可交付 ✅+🟢 48→57
- forwardMessage 真 Frida:文本类从 DB 取原文 → 复用已验证
_sendMessageInternal(SendMsgEvent+DB 回查),非文本降级 intent 不假成功;JS 语法校验通过 - 待真机:forward/revoke attach 验证;进度 92%→93%
- 离线回归:
sdk/tests/test_forward_message_logic.mjs抽取真实 forwardMessage 源码注入 mock,12/12 断言绿(文本真发送/非文本降级/DB miss/未验证不假成功/缺参);exit 0 - forwardMultiple 真 Frida:逐条复用文本转发真实路径,有成功条计 forwarded,全失败整体降级 intent 不假成功;测试扩至 18/18 绿;companion 84→62,可交付 58/176
- 复核更正:朋友圈
get/like/comment_moments本就真 Frida(_*InternalperformNow),矩阵+§七已更正;新增sdk/tests/test_matrix_classifier_honesty.py(防 companion 误判复发,0 失败 exit 0) - 一键回归套件:
sdk/tests/run_wx_hook_regression.sh(转发18/18 + 诚实性0失败 + 审计0缺失)全绿;需求新增 §八 阻塞授权清单(剩 11 项卡真机 Frida / 跨端 UI);进度 94% - revokeMessage 资格预检:DB 查存在/本人/2min 窗口(复用 _execSQL),不合格诚实返错不发 intent;回归扩至 24/24 绿;companion 62→61,可交付 59/176
- 防封限流离线回归:
sdk/tests/test_rate_limiter_antiban.py17 断言全绿(AB-02 熔断退避/AB-03 长暂停节拍+高危互斥/AB-06 分级/AB-05 runtime);纳入一键套件run_wx_hook_regression.sh(4 步全绿)
2026-06-12 17:05 | WP-PMAX-01 防封收口 · AB-02/03/05/06
- AB-02 静默限流熔断:
rate_limiter.trip_silent_throttle/reset_silent_throttle+_check_silent_throttlefast-fail;message/sendsuccess 无 msg_id 触发设备级写类冷却 30-60min(逐次×1.5 退避),真 msg_id 回来即 reset - AB-03:
_check_long_pause(每 8-12 动作 10-30min)+_check_highrisk_combo(高危互斥)接入_anti_ban_guard,fast-fail 不长 sleep - AB-05:
/api/v3/antiban/status?device_id新增runtime(熔断/长暂停/节拍/最近高危);hub.html 防封 Tab 加 AB-02/03 实时熔断面板 - AB-06:
classify_risk()→ block/needs_human/log,guard 阻断附risk_action,全 10 写类端点透传;单测通过 - 验收:SDK 经 LaunchAgent 重启 health=healthy,curl runtime 字段返回正常;进度 90%→92%
2026-06-12 16:30 | WP-WX-HOOK · Frida 全量打勾表 + 规则精简
- 需求:
开发文档/1、需求/修改/工作手机_进行中_20260612.md新增 §七(176 action · 48/176 Frida 可交付 · 84 companion 占位) - 规则:
.cursor/rules/workphone-rules-discipline.mdc新增;persistent-chat.mdc24KB→597B 指针(总规则 ~19KB,原 ~41KB) - 审计:
wechat_interface_audit.pyACTION→RPC 130/130;矩阵gen_wechat_capability_matrix.py✅18 🟢30 ⬜121
2026-06-12 15:51 | modify 需求收口 · 单文件真源 + 已完成归档
执行人:卡若AI / Cursor
1、需求/修改/6 篇迁入10、项目管理/已完成/modify需求归档_20260612/。- 新建唯一进行中真源
工作手机_进行中_20260612.md(28 项跟踪 · 12 ✅ · 3 🟡 · 13 ⬜)。 - 新建
工作手机_0608已完成项归档_20260612.md摘要 WP-0608/0610/WOW。 - 补
WP-ARCH-01架构/交互图待办(双通道 A/B 图、防封图状态、Fleet 总线、M8 抖/红路由)。 - 更新
1、需求/README.md、索引.md、开发进度总表.md需求真源链接。
2026-06-08 21:30 | 存客宝设备正式绑定 + Provider 在线映射 + 移动端真机控制实点
执行人:卡若AI / Codex
- 持久对话继续沿用
ct_c56d3c94 ↔ 工作手机,卡若AI Gate 第 33 次校验通过。 - 正式绑定接口增加可选
deviceId精确目标和公司归属校验;accountId=1546 + deviceId=13287 + deviceIdMd5返回code=200。 - 修复 provider 假离线:
SdkV3Adapter同时索引device_id/device_id_md5/serial;同步后设备13287回读alive=1。 - 存客宝
/v1/devices回读仅 1 台设备,id=13287、当前真机 MD5、status=online;/v1/workphone/status同时返回在线真机。 verify_ckb_123_device_alive.mjs新增 MD5 映射断言并通过:列表/统计/仪表盘均1/1,SDK/WS/Frida 在线。- 存客宝设备详情新增“真机控制”页:状态刷新、Hook 探测、真机截图、仅发送到文件传输助手的安全消息验证。
- 浏览器实点:自动匹配
xgfe65eimrrofyws;Hook 显示微信8.0.69、Hook/Frida 可用;截图1080x2400;安全消息发送成功。 Cunkebao pnpm vite build、Docker Web 重建、PHP 语法检查、git diff --check均通过;BFF 串行复验PASS=14 FAIL=0。- 24h 长跑继续落盘:21:30 时已运行
1.033h,61 样本/57 成功/4 失败,当前成功率93.44%、当前在线。 - 未闭环:白名单群发/加友/群消息/朋友圈实写、超管 provider 页面可视点验、视频号内容级解析、24h 长跑满时。
2026-06-08 21:02 | 剩余读类闭环 + 视频号伪数据清零 + 24h 长跑启动
执行人:卡若AI / Codex
- 持久对话继续沿用
ct_c56d3c94 ↔ 工作手机,卡若AI Gate 第 32 次校验通过。 - 修复视频号列表历史 UI 树污染:
uiautomator dump前删除旧 XML,只接受本次<hierarchy>;标题只从com.tencent.mm节点提取。 - 视频号真机回归:无线 ADB 打开
FinderHomeAffinityUI;UI tree 不可靠时返回videos=[],不再返回ATX/Alpha/工作手机等伪数据。 - 修复朋友圈列表错误降级 u2:微信朋友圈读类改为 Hook-only;真机返回
websocket/hook、success=true、moments=[]、count=0和 DB 诊断。 - 群成员真机回归:测试群
23070008577@chatroom返回 28 人,channel_used=websocket/hook。 - 截图副作用回归:WS 截图返回
1080x2400、base64 长度 85332;截图前后焦点均保持 Finder 页面。 - 存客宝 BFF 再次串行复验:
PASS=14 FAIL=0。 - 超管 provider E2E:项目
2778 / 卡若私域为workphone_sdk;设备同步接口返回“设备同步完成 · 方案 工作手机 SDK”,项目回读deviceOnline=1。 - 修正超管 provider 页面真实性文案:明确 provider 只切换设备同步/在线判定,业务控制 BFF 固定走 SDK;
SuperAdmin pnpm build完整通过,项目详情页/dashboard/projects/[id]已产出。 - 微信安全矩阵:
passed=21 failed=0 gated=20,报告safe_matrix_20260608-202820.json。 - 24h 长跑已由
com.workphone.stability-longrun持续落盘;21:01 时 33 样本、29 成功、2 离线事件、2 恢复。当前失败包含本轮主动重启,24h 尚未完成。 - 未闭环:白名单群发/加友/群消息/朋友圈实写、存客宝/超管页面可视点验、视频号内容级解析、长跑满 24h、4 项设备黄灯与 Mac 主机资源压力。
2026-06-08 20:30 | Hub 实点回归 + BFF 14/14 + 宿主 SDK 单实例驻留
执行人:卡若AI / Codex
- 持久对话继续沿用
ct_c56d3c94 ↔ 工作手机,卡若AI Gate 第 31 次校验通过。 - 修复 Hub 设备身份漂移:工作台只返回主设备
xgfe65eimrrofyws,设备总数/可控数均为 1,MD5ed25814d9c92b3430696dc96c2142b5f。 - 修复 Hub 结果反馈:通用日志不再覆盖微信结果,大列表显示预览并保留真实总数。
- 浏览器实点联系人按钮:
websocket/hook、2534ms、返回 500,total_count=6200、raw_total_count=6340、has_more=true;群列表 27、标签 323、资料均已通过。 - 私域默认验收复跑:
passed=22 failed=0 gated=4;联系人 6200、消息 2482;报告private_domain_acceptance_20260608-201257.json。 - 存客宝 BFF 安全路由矩阵:
PASS=14 FAIL=0;WorkPhoneEventBridge完成真实事件同步与重复识别,宿主 PHP 语法检查通过。 - 清理 8899 双实例:停止 Docker
workphone-sdk并关闭自动重启;新增com.workphone.sdk-hostLaunchAgent,RunAtLoad + KeepAlive,8899 当前仅一个 Python 监听。 - 未闭环:白名单群发/加友/群消息/朋友圈实写、存客宝业务页/超管 provider 点验、24h 长跑、4 项设备黄灯与 Mac 主机资源压力。
2026-06-08 10:58 | 微信私域能力矩阵扩展 + 聚合接口真机验收
执行人:卡若AI / Codex
- 表述统一:项目口径改为“公司自有 Root 测试工作机上的设备端能力验证与标准 API 对接”。存客宝/超管通过 SDK/BFF 调用;群发、加友、朋友圈互动、红包/转账等写类默认走测试白名单、频控、dry-run 或
confirm_required。 - 新增
GET /api/v3/customer/profile-bundle:客户画像聚合包,一次返回资料、联系人、群、标签、最近消息、搜索结果和通道信息。 - 新增
POST /api/v3/message/sync-since:按since_time增量同步消息,返回next_since_time和has_more。 - 新增
GET /api/v3/stability/watch:WS/Hook/ADB/耗时采样入口,可作为 24h 长稳脚本的底层探针。 sdk/scripts/run_wechat_private_domain_acceptance.py默认验收扩展到 20 项,覆盖读类、聚合、增量同步、稳定性、资金 dry-run。- 真机结果:设备
xgfe65eimrrofyws在线,微信 8.0.69,MD5ed25814d9c92b3430696dc96c2142b5f;画像包早期返回联系人 200、群 26、标签 323、最近消息 10(旧预览口径,15:42 已纠偏为总数+分页);增量消息返回 20 条;稳定性采样 2/2 成功。 - 默认私域验收:
passed=20 failed=0 gated=4,证据开发文档/8、部署/05-测试验收/20260608_微信私域能力验收/private_domain_acceptance_20260608-105845.json。 - 后续已闭环:MongoDB 恢复;存客宝 BFF 有效 JWT 真机读写闭环,安全路由矩阵 14/14。
2026-06-08 15:42 · 联系人/消息数量口径纠偏 + 分页验收(卡若AI)
持久对话:继续沿用 ct_c56d3c94 ↔ 工作手机,卡若AI Gate 校验通过;本轮不新建会话。
问题定位:
- 用户指出联系人不止 200、消息数量不对。复查确认:原先 200/20 是 Hub 聚合面板和 Hook 默认拉取上限,不是真实总量。
- 一次性拉取 6000+ 联系人和 2000+ 消息会导致 WS 大包抖动;已改为“总数 + 预览 + 分页”的接口口径。
代码修复:
sdk/app/routers/unified.py:/contacts、/message/list、/message/sync-since、/customer/profile-bundle、/hook/data/{device_id}支持limit/offset,返回total_count/raw_total_count/has_more。sdk/agent/hook/wechat_hook_v2.js与sdk/app/agent/hook/wechat_hook_v2.js:联系人/消息 DB 读取接入LIMIT + OFFSET,返回真实总数、当前页数量和分页状态。sdk/app/static/hub.html:Hook 数据面板改为预览包(联系人 200、消息 50),仍显示真实总数,避免大包导致 Agent 断线。sdk/scripts/run_wechat_private_domain_acceptance.py:新增分页验收项和完整数量摘要。
真机结果:
- 无 USB 无线链路:
WiFi adb + WS + Frida RPC就绪,设备xgfe65eimrrofyws在线,ADB serial192.168.110.80:5555。 GET /api/v3/contacts:联系人6196,原始rcontact=6336,has_more=false。GET /api/v3/contacts?limit=200&offset=200:返回 200,total_count=6196,has_more=true。POST /api/v3/message/list:消息2447,has_more=false。POST /api/v3/message/list limit=100 offset=100:返回 100,total_count=2447,has_more=true。GET /api/v3/hook/data/{id}预览:联系人预览 200/总数 6196,消息预览 50/总数 2447,执行后健康检查devices_online=1。
验收报告:
开发文档/8、部署/05-测试验收/20260608_微信私域能力验收/private_domain_acceptance_20260608-154118.json- 汇总:
passed=22 failed=0 gated=4。
下一步:
- 白名单写类:单聊、群消息、群发、加友、朋友圈点赞/评论/发布做真实测试对象验收。
- 存客宝 BFF:用有效 JWT 跑
BFF -> SDK -> Agent -> Hook -> 回执。 - 长稳:用分页口径跑 24h,记录 WS 重连、Hook probe、接口耗时和掉线恢复。
Mongo 复核:
lsof显示com.docker监听*:27017。pymongo连接mongodb://admin:admin123@127.0.0.1:27017/karuo_site?authSource=admin返回ServerSelectionTimeoutError。mongosh与docker exec datacenter_mongodb mongosh均出现超时/挂起;已清理挂起探测进程。- 当前结论:Mongo 聊天记录汇总是 Docker/Mongo 环境阻塞,不能伪造摘要;SDK/无线真机主链仍健康。
BFF 复核:
127.0.0.1:8080/8081/3000未监听;8082/3001由com.docker.backend监听。curl --max-time 3 http://127.0.0.1:8082/v1/workphone/status与http://127.0.0.1:3001/均超时。- 当前结论:存客宝 BFF E2E 是 Docker/BFF 环境阻塞;工作手机 SDK 侧
/api/v3/integration/manifest可返回 34 个模块,真机 SDK 链路正常。
2026-05-24 | 需求 modify 登录项代码对照打勾
执行人:阿表 · 阿端
- 对照
wechat_auto_login.py/skill.py/WECHAT_U2_ONLY_ACTIONS核对登录相关 5 项 u2 真实现 开发文档/1、需求/修改三篇 +索引.md:P3 表、WX-09/10、VIP 登录 BFF ✅;短信/注册仍 ⬜
2026-06-03 20:30 | AB-06 拟人延迟+多态混淆实装(防封)
执行人:阿机(后端)
- persistent-chat MCP 恢复(ct_066d991e),卡若门禁 PASS;每轮读防封共享基线
- AB-06:
rate_limiter.human_delay(lo,hi)右偏截断高斯替代 uniform(离线 mean 43.9<45、截断[30,60]),用于 check_and_wait 间隔 - AB-06:
content_guard.diversify_content(polymorphic=True)同义改写词典 + 标点后零宽空格(离线 8/8 唯一变体) - py_compile + lint 通过;SDK 重启加载;未改存客宝/触客宝/AI数智员工
- 设备 ADB 回到 5037、SDK healthy;hook=False(Frida attach 抖动,oneclick 后未稳定)
- AB-06 真机批量动作留痕、moments PRAGMA 复确、sendLink 验证 待设备稳定窗口
2026-06-02 14:50 | 真机 Hook 闭环打通 + 防封 AB-06(解 14:20 阻塞)
执行人:阿机(Agent/Frida)· 阿端(联调)· 防封基线先读
- 解 14:20 遗留阻塞「在线 WS device_id 与 serial 不一致 / hook_only 返回 not_supported_no_root」:
以
WP_DEVICE_SERIAL=192.168.110.80:5555 WP_FRIDA_MODE=remote WP_FRIDA_PORT=25000 agent.py -d xgfe65eimrrofyws常驻启动 Mac Frida Agent → 注册 device_id=xgfe65eimrrofyws、Frida attach 微信 pid=29047、RPC pong(96 actions) - 真机验证:
GET /hook/probe/xgfe65eimrrofyws→ supports_hook=True wx=8.0.69;get_labels→ 323 标签(websocket/hook 真数据) - 关键教训:Agent 须常驻后台(工具原生后台/launchd),
&派生进程被会话回收即死(14:20 hook 不通根因之一) - 功能扫测读类 6/8 PASS;wallet/steps 为 C 类
_intentAction占位(诚实 503,非假成功) - AB-06:
rate_limiter.pyhuman_delay()右偏截断高斯替代random.uniform;离线 2万采样验证(mean40.86>median40.51 右偏);共享文档 §1.6 + WBS AB-06 - 先读防封基线
2、架构/05-规范/防封共享策略与执行基线.md(每轮铁律) - 留痕:
8、部署/05-测试验收/20260602_环境恢复与防封AB06留痕.md;未改存客宝/超管/AI数智员工/触客宝
2026-06-02 14:20 | WX-11 修复 + 防封续检索 + 门禁留痕
执行人:阿机 · 阿端 · 阿表
sdk/app/agent/hook/frida_manager.py完成 WX-11 修复:禁frida spawn,改am start温和拉起 + attach only- 离线验证通过:
tests/test_frida_manager.py17/17 +py_compile无报错 - 全网续检索(OWASP/phantom-frida/AHB)已同步到需求与共享防封文档
- 新增接力单 #004(真机回归 + AB-06)并落测试留痕文档
- 修复
adb_connection_stabilize.sh的 ADB 设备解析 bug(tab 分隔误判),复跑后门禁通过(ADB 192.168.110.80:5555 + SDK 在线) - Hook 闭环仍未通过:在线 WS device_id 与期望 serial 不一致,
hook_only get_profile返回not_supported_no_root(见20260602_WX11修复与门禁留痕.md)
2026-05-31 21:00 | P-MAX 防封+红米优先级 · 调研内联三篇需求
执行人:阿表 · 阿机 · 阿桥
- 微信需求:
§〇点〇全局铁律;§〇点七防封全文内联;§〇点九红米/MIUI;§8.5AB 前置路线图;八域表 P-MAX 防封 - 设备Agent / 四端对接:
§〇点〇对齐 P-MAX;看板增防封+红米行;四端 Phase0 防封先行 - 防封共享基线 / Skill / 调研 MD:标注「执行以需求内联为准」
- 代码:AB-02 静默限流、AB-03 长暂停(下一轮回)
2026-05-31 20:30 | GitHub 微信 Frida/Hook 完整控机调研落地
执行人:阿机 · 阿桥 · 阿表
- 新增
5、接口/03-Hook与微信/GitHub微信Frida控机与防封方案调研_20260531.md(通道对比、项目 catalog、八域路径、防封 §五、GH-01~08) - 新增 Skill
机擎/阿机/微信Frida控机与防封/SKILL.md - 需求真源
工作手机_微信全量控机与私域_20260529.md§〇点八 + 变更记录 - 索引:
03-Hook与微信/README·防封共享策略§1.2 ·08-微信Hook·阿机/SKILL - 代码迭代:GH-02 P0 媒体(sendImage)待真机 enumerate
2026-05-31 19:00 | TODO-09 WCDB 2.x 读库核心修复 + Frida eternalize 回归确认
执行人:阿机(后端)· 阿端(联调)
- 设备恢复稳定(Frida eternalize bug 已修,hook=True,wechat 8.0.69)
- TODO-09 核心修复:
_execSQL2x用反射确认的handle.getAllRowsFromSQL(sql)+_parseSelectColumns列名映射;实测 sns_query ok=True/rows=1/used=getAllRowsFromSQL - get_moments 改走 websocket/hook(不再降级 u2);moments=0 系账号 SnsInfo 无缓存(数据非代码)
- 次级修复:PRAGMA table_info 列名映射(avail_cols)
- js_ok + 双副本同步;未改存客宝/触客宝/AI数智员工
- PRAGMA 增量待下个稳定窗口复确认;USB flap 仍致 agent 重载偶发 attach 失败
- 留痕:
8、部署/05-测试验收/20260531_设备控制续跑/README.md
tags:
- 工作手机
- 项目管理
- 进度 doc-type: 进度 layer: 10、项目管理 parent: 10、项目管理/README related:
- "开发进度总表"
- "工作日志"
- "项目目录总览"
- "开发文档/README"
工作手机SDK v3.0 - 工作日志
管理Skill: 工作手机/机擎/SKILL.md(火炬+五人) 记录规则: 每次对话结束自动追加
2026-05-30 17:50 | GitHub+全网方案调研 → 需求 §〇.六 · 目标自检未100%
执行人:阿机 · 阿桥 · 阿端(ct_066d991e · 续跑·检索三段②)
- WebSearch + GitHub 检索微信控制 + 防封最新方案,整理入需求 §〇.六 全网方案调研
- WeKit(Ujhhgtg/cwuom)适配微信 8.0.65~8.0.72 完美(含 8.0.69):抢红包/卡片/SILK语音/单删检测/JS引擎/原生Hook → 占位真实现首选参考(类签名对齐)
- 群管理 Hook 锚点:
com.tencent.mm.plugin.chatroom.a.c(field_type=1 入群);红包 LuckyMoneyUI;撤回 Hook SQLiteDatabase.delete - frida-mcp(AI 驱动 frida enumerate)→ 解决占位真实现「需 UI 类名」逆向缺口
- 防封铁律(全网共识):≤20条/小时、批≤50、批间≥65s、间隔±随机、设备指纹一致、独立IP、静默限流识别(200 但 svr_id 空);frida 反检测换端口(已 33891)+ patched build
- 解封合规修正:官方明确不可脚本绕过,A→E 仅 UI 辅助定位,真正解封走官方人工申诉;被「插件封」需临时关 Hook
- 目标自检:未 100%。接口封装 100% · 三项 P0/四端 12/12/friend-add 全绿 · 真机闭环 98%
- 剩余:① 79 占位真实现(需稳定 frida + 手机同步逐模块逆向)② frida 稳定性 FS-1 ③ AI chat 上游余额 ④ 解封受限账号样本
- 续推:占位清零(P0 标签起,参 WeKit)+ 防封铁律落地 rate_limiter(补 65s 批间隔/静默限流/渐进配额)
2026-05-30 17:30 | ★真机探针根因定位:79 占位方法 + Frida 稳定性 · 待开发清单补进需求
执行人:阿机 · 阿端(ct_066d991e · 续跑迭代)
- 全量串行探针 51/174(matrix_hook_catalog_verify)
- 根因① Frida 稳定性:手机本机 Frida 16.5.6 密集 RPC 下间歇 detach(ART 崩溃/OOM)→ 后续假失败;非 action 不可用
- 检索经验(frida #3568 ART 崩溃 / #3488 CPU kill / PR#280 eternalize)→ 补需求 §〇.五 FS-1~FS-6
- 根因②(决定性)占位假实现:
add_favorite真机no_receiver_registered·intent_broadcast·com.workphone.*- 统计 79 个 rpc.exports 方法是
_intentAction广播占位,0 receiver = 假成功,违反真机铁律 - 补需求 占位清零 WBS(P0 标签/媒体/会话 → P1 资料/二维码 → P2 视频号/公众号 → P3 钱包/解封 → P4 长尾)
- 统计 79 个 rpc.exports 方法是
- 代码修复:
agent.py503 诚实透传frida_error/frida_result(定位出占位根因);matrix_hook_catalog_verify.py重试覆盖 frida_connected/503 + 退避 - 下一轮 P0:标签 createLabel/deleteLabel/setContactLabel 占位改真实现(存客宝刚需,参 postMoments)
- frida-server 升级 17.2.15+(手机端治本 detach)
2026-05-30 16:29 | 需求深度体检 · 真机 smoke + 空成功语义修正
执行人:机擎全员(阿表/阿机/阿桥/阿端/阿服)
- persistent-chat 新计划 ct_8594ec48,卡若AI门禁 PASS,PER 长连接保持。
- 真机门禁:
adb devices见xgfe65eimrrofyws,/healthhealthy,SDK 在线设备数=1;修正后real_device_gate.sh xgfe65eimrrofywsexit 0。 - 离线回归:
test_connection_provider.py+test_agent_public_fallback.py+test_skill_registry_alignment.py→ 17/17 PASS。 - 静态审计:微信 catalog 175 / RPC 132 / 缺失 RPC 0;Skill registry 150 action / 设备缺失 0。
- 真机 smoke:health/devices/connection/hook/AI dashboard/account/profile/messages/contacts/groups/moments/screenshot 共 12 项落盘。
- 发现并修正 Hook 读接口“核心数据为空仍
success:true”:wechat_hook_v2.js对 profile/contacts/groups/labels/moments 增加空读失败语义,node --check通过。 - 修复
message/list即时回读:send_message成功后写入_messageBuffer,三项验收可命中新发文本。 - 重启真机并用
ANDROID_ADB_SERVER_PORT=5037复跑 oneclick:Hook 恢复supports_hook=true,profile/contacts/groups/labels 真实可读。 - 四端 E2E 复跑:
workphone_4end_e2e.sh WP_WRITE=1→ PASS=12 BLOCKED=0 FAIL=0。 - 三项验收复跑:
run_three_acceptance.sh→ PASS=3 FAIL=0(发消息/收消息/朋友圈)。 - 待复验:
moments/list当前仍可能data=0,需继续稳定读或明确返回待同步状态。
留痕:开发文档/8、部署/05-测试验收/20260530_需求深度体检/需求问题与优化建议.md
2026-06-13 21:05 | 奥创/S2 残留审计 · 第 2 轮复检留痕
执行人:@阿端(联调)· @阿表(进度)
完成内容
- 全仓奥创/S2 残留分类清单(真机 / SDK / 存客宝 BFF / 资料 / 卡若AI 脚本)
- 真机复检:
xgfe65eimrrofyws无奥创两包、无/data/adb/xesd/,仅com.system.cloudservice - 留痕:
8、部署/05-测试验收/20260613_奥创S2残留审计/(adb 包列表 + xesd + health JSON) s2.siyuguanli.com:9991HTTP 401(服务在线需鉴权);本机 SDK health online=1- CONN-08 BFF:
2130切s2_legacy+POST /v1/admin/devices/syncHTTP 200(synced=0)后恢复 SDK —04_conn08_s2_legacy_e2e.json
待办
资料/奥创工作手机APK提取/目录缺失,需备份或真机重装后 pull- CONN-08 SDK
aochuangProvider health(007 token);存客宝 P4 脱 S2(触客宝 request2 优先)
2026-05-29 17:30 | 设备连接方案 · 可切换驱动层(CONN-01~08)+ 四端切换开关
执行人:@阿机(SDK/服务端)· @阿桥(四端对接文档)· @阿端(离线+实时验收)
背景需求(卡若)
存客宝四端「所有设备连接」要做成 可切换多方案开关:现有连接形式 / 当前机擎工作手机 / 另一台奥创工作手机 / 预留自研,一键切换、都能直接用、预留接口可扩展。
完成内容
- 新增
sdk/app/services/connection_provider.py:BaseConnectionProvider抽象 +JiqingNativeProvider(复用 device_transport 无线主控)+HttpConnectionProvider(奥创/legacy/自定义,端点+字段映射)+ConnectionProviderManager(三级开关 global/project/device + 禁用回退 + 持久化) - 新增
sdk/app/routers/connection_provider.py:7 API(list/active/switch/register/delete/health/execute),main.py 注册 config.py增连接方案变量(CONNECTION_ACTIVE_PROVIDER/AOCHUANG_/LEGACY_)- 文档:设备Agent §3.6 连接方案可切换驱动层(架构/内置方案/API/环境变量/CONN WBS);四端对接 §3.8.8 四端共用切换开关 + COORD WP-004/WP-005
- 留痕:
8、部署/05-测试验收/20260529_连接方案可切换E2E/(7 步实时切换 JSON + 留痕.md)
验收数字
- 离线回归
test_connection_provider.py9/9 ✅;既有套件 25/25 无回归 - 实时 SDK :8899 热加载:默认 jiqing → 切奥创 → 设备级覆盖回 jiqing → 恢复全局,7 步全 200 ✅
- 铁律:jiqing 离线设备 execute 返回 503 不假成功;最终出厂态 global=jiqing,奥创/legacy 禁用
待办
- CONN-08 奥创/legacy 真机连通(需 base_url+token,WP-005);WP-004 超管/存客宝切换 UI
2026-05-29 14:50 | 四端对接需求 · 真机 E2E 验证 + OpenAPI diff 清零
执行人:@阿桥(接口/中间层)· @阿端(联调)· @阿机(SDK)
完成内容
- 需求真源
工作手机_存客宝四端对接_20260529.md全量拆解,逐项 P0 真机验证 - OpenAPI ↔ snapshot diff 清零:
export_api_catalog.py增加实时/openapi.json回退 + 仓库根健壮查找,重生成 339 paths / 348 ops - 新增
开发文档/8、部署/05-测试验收/scripts/workphone_4end_e2e.sh:四端 P0 只读/写 E2E,自动分类 PASS/BLOCKED/FAIL - 真机验证(设备 xgfe65eimrrofyws):skill-registry 211 action/150 平台 ✅;ai_brain_enabled=true
- 需求 MD 新增 §十一 真机 E2E 结果 + 解除阻塞清单 U1-U4、§〇 看板与 §十三 变更记录同步
真机结论(不 mock)
- SDK 路由代码侧健康,返回诚实错误码(无 mock success)
- P0 真机 E2E 受阻于 4 项环境/设备侧前置(非代码缺陷):
- U1 Frida 未 attach(手机需启 frida-server)→ message/contacts/moments/group/tag
- U2 CKB
enabled:false/api_key 未配 → friend-add 转发 scenarios - U3
DEEPSEEK_API_KEY未配 → agent/execute - U4 ADB 未连 → u2 截图(WS_FIRST 下非必须)
进度
- SDK 路由 + OpenAPI 同步:100%
- 四端真机 P0:代码侧 100%,真机待解除 U1-U4
- 存客宝 develop 当前无 workphone BFF(COORD-WP-001,铁律不改其 PHP)
补充(15:20 ③执行块)
- 中间层 PHP/TS SDK 双端对齐核对(sendMessage/getContacts/postMoments/executeTask/getAIBrainStatus/5 平台快捷 全一致)
- PHP+TS SDK 新增
getSkillRegistry/executeScript/batchExecuteScript(§3.7 #6/#7/#8 多平台精确控机),字段经 OpenAPI 校验一致,lint 0 - §11.2.1 新增 U1 Frida attach 排查清单(检索 frida Issues #3687/#3709/#3711 + GitHub wechat_chatter)
- 需求 MD §3.7.1/§八点五/§十三 同步
2026-05-24 23:50 | 存客宝 BFF 底层 100% · 验收 17/17
执行人:@阿桥(接口)· @阿端(联调)
完成内容
WorkPhoneGatewayController::wrap()+WorkPhoneSDK::request()— SDKdetail/503 → BFF 200 +sdk_codeServer/scripts/workphone_bff_acceptance.sh— PASS=17 FAIL=0- 存客宝
5、接口/02-存客宝与工作手机对接/进度/验收/README 同步 100% - 工作手机
存客宝BFF与工作手机SDK映射表.md§十一验收记录 - 后台
auto_recover_adb_oneclick.sh(192.168.1.12:5555)等待真机授权
进度
- 存客宝 BFF 软件层:100%
- 真机 E2E:待 ADB device 授权(110.80 Host down · 1.12/0.12 offline)
2026-05-24 18:40 | 设备连接根本性修复 · u2 串行 + 连接守护 daemon
执行人:阿机 · 阿服 · 阿端
背景:USB 已插但 ADB/WS 在长任务(微信登录 u2)期间间歇掉线;需「处理别的任务时也保持连接」。
根因:
- u2 非线程安全 — 命令执行与 connection_guard 并发 dump/click 导致 ATX 挂死 → WS 误判离线
- 服务端 send 一次失败即 disconnect;长任务无 heartbeat 宽限期
- MIUI USB「仅充电」模式导致 ADB 间歇消失
- 宿主机无常驻 ADB/WS 恢复进程
完成:
agent.py(sdk/agent + sdk/app/agent):_u2_lock+ 单线程_u2_executor+_cmd_semaphore+_run_u2_sync()- 连接守护:每 6 轮
full_guard_cycle(网络/u2/屏幕/ADB);弹窗与命令串行 connection_guard.py:新增 USB 模式规则(仅充电→文件传输)ws_hub.py:send 3 次重试;长命令command_grace_seconds;pending 命令跳过 sweepconfig.py:WS_TIMEOUT60→120- 新增
sdk/scripts/connection_keeper_daemon.sh(--bg/--once宿主机 ADB+WS 保活)
验收(待 USB 授权后):
bash sdk/scripts/connection_keeper_daemon.sh --bg
bash sdk/scripts/adb_connection_stabilize.sh
curl -s http://127.0.0.1:8899/health | python3 -m json.tool
2026-05-29 17:00 | 真机验收触发 ★ 发消息通过 · WCDB 8.0.69 根因修复
执行人:阿机 · 阿端(持久对话 ct_d4da7b6b · 全自动)
- 守护自动触发:手机 frida 上线(supports_hook=true,微信 8.0.69,ws 1)
- §13.1 发消息真机通过 ✅ channel_used=
websocket/frida(产品 P0 核心) - 真机暴露缺口:收消息/朋友圈/get_contacts DB 读全空
- 根因定位:
_findOpenWcdb只认 WCDB 1.x,微信 8.0.69 升 WCDB 2.x(com.tencent.wcdb.core.Database) - 修复
wechat_hook_v2.js::_findOpenWcdb:多类名候选+放宽路径+isOpen/path 兼容;新增diagWcdb诊断 RPC - 审计 129/catalog175/缺失0 ✅ · 回归 9/9 passed · 留痕
20260529_微信三项验收留痕.md - ★重大发现:
_intentAction('com.workphone.*')写操作(朋友圈/改资料/红包/解封)无接收端=占位假成功;全项目 .kt/.java 0 命中 receiver - 留痕新增修复方向 TODO-WX-08(朋友圈优先 Frida 主动调用对齐 sendMessage,兜底 u2)
- 收消息闭环 — 待手机重载新 JS +
diag_wcdb确认 WCDB 类名(守护自动跑) - 朋友圈改真实现:postMoments → 真启动 SnsUploadUI + 预填(Ksnsupload_type=9) +
_autoClickPublish自动点发表(ActivityThread 取栈顶 Activity→遍历 decorView→点「发表」) - 待手机同步新 JS + 重启 Agent → 守护自动验证收消息/朋友圈转绿
- 资料/红包等其余 _intentAction 占位按同模式改(后续)
2026-05-29 17:18 | 守护自动验收触发 ★ diag 定位 DB 1.x/2.x 混用
执行人:阿机 · 阿端(ct_d4da7b6b · 全自动)
- 手机已同步新 JS(diag_wcdb 可用),守护自动跑三项
- 发消息 ✅ channel=websocket/frida(再次真机验证)
- diag_wcdb 决定性诊断:EnMicroMsg.db=WCDB 1.x(消息/联系人);SnsMicroMsg.db=WCDB 2.x core.Database(朋友圈)
- 收消息 messages:[](EnMicroMsg 1.x 已枚举,查询空→疑跨线程/talker,已加
_lastDbDiag+diagWcdb 实读 rcontact/SnsInfo 测试) - 朋友圈 startActivity 失败(待 frida 日志);
_execSQL加 2.x 无 rawQuery 检测提示 - 实读诊断(17:32):main_query(EnMicroMsg) rows:1 读取成功✅;sns_query(SnsMicroMsg) 未找到实例
- 修两真 bug:①
_wcdbClassResolved缓存致跨版本库找不到→_findOpenWcdb改始终遍历全候选;② 收消息 talker 中文名→_getMessagesFromDBnormalize filehelper - 结论:8.0.69 DB 读架构可行(EnMicroMsg 1.x 已通);收消息修复待同步验
- 朋友圈:SnsMicroMsg 2.x core.Database 查询 API 待实现 + startActivity 发布失败待修 frida 错误
2026-05-29 16:40 | 全自动验收闭环 · P0 代码层全核实就绪
执行人:阿机 · 阿端(持久对话 ct_d4da7b6b · 全自动模式)
- 新建
sdk/scripts/run_three_acceptance.sh(发/收/朋友圈三项一键验收 + 留痕,字段全对齐) - 新建
sdk/scripts/auto_accept_when_ready.sh(守护:probe=true 自动跑三项,已后台运行 7200s) - 核实 P0 代码层全部就绪非占位:
- friend-add →
report_lead→ 双重MD5签名 POSTckbapi.quwanzhi.com/v1/api/scenarios✅ - AI chat →
chat_and_execute_on_device→ brain 决策 → WS execute ✅ - 解封客服
unblock_customer_service.py存在 ✅
- friend-add →
- 接口审计 128/174 全绿 · CI pytest 通过
- 结论:所有未完成项唯一阻塞 = 手机端 frida-server 未附着微信(无 USB/无线 ADB offline)
- 守护脚本修复(隐藏字符/set -u bug)→ 稳定后台轮询 7200s(每10s probe,supports_hook=False 持续等待)
- 新建
sdk/tests/test_wechat_acceptance_offline.py离线回归 8/8 passed(三项请求模型+128对齐+friend-add+AI chat+解封+脚本存在) - 真机三项 + friend-add + AI chat E2E — 守护已就位,手机 frida 上线即自动触发跑三项
2026-05-29 14:45 | 微信真机验收启动 · 手机端 Frida 起服脚本
执行人:阿机 · 阿端(持久对话 ct_d4da7b6b)
- 设备
xgfe65eimrrofywsWS+ADB 上线(5/5 轮询稳定) - 静态审计 128 action / catalog 174 / 缺失 RPC 0 ✅
- 定位卡点:Agent 在线但 frida-server 未附着微信(hook_ready=0、send_message→hook(failed))
- 根因:phantom frida-server(
fs_301450@ 33891)未在手机端运行;Agent remote 不自拉 - WebSearch 检索:微信 8.0+ 扫 27042(我们用 33891 已避开);须 root 起服 + 可能 setenforce
- 新建
sdk/scripts/termux_frida_up_onphone.sh(手机 Termux 一键起服 + attach + 重启 Agent,免 ADB) connection/bootstrap修正端口 27042→读配置 33891 +frida_up_on_phone字段- 真机三项验收(发/收/朋友圈 §13)— 待手机端 frida-server 上线
2026-05-24 18:47 | 微信 128+174 catalog · skill_v2 alias · 设备 bootstrap API
执行人:阿机 · 阿桥 · 阿端
skill_v2.execute接入resolve_action+normalize_params(173/174 catalog alias 可分发)- H40 矩阵 18 项补全 helper 方法(voice_call、mass_send、download_file 等)
wechat_interface_audit.py增强:alias 校验 +--probe-full128 全量探针GET /api/v3/connection/bootstrap/{device_id}设备 Termux 启动指引 APIwechat_hook_bridge.js标注 DEPRECATED(真源 wechat_hook_v2.js)- 静态审计:128/128 + catalog 174 + alias 0 未解析 ✅ · CI pytest ✅
- 真机 128+174 探针(110.80 offline · 后台流水线等 Agent)
2026-05-24 20:19 | wechat_full H40 REST 18 路由补全
执行人:阿桥 · 阿端
wechat_full.py新增 H40 专用 REST(ping、safety-center、voice/video call、mass-send 等 18 项)GET /api/v3/wechat/actions返回 128 canonical + 173 catalog 全列表- SDK 重启加载;后台
run_wechat_full_acceptance.sh已重挂 - 真机验收仍等 Termux Agent
执行人:阿机 · 阿桥 · 阿端
skill_v2.pyWECHAT_ACTIONS 110→128(补矩阵 H40:voice_call、mass_send、get_safety_center 等 18 项)hook_executor.py/app/agent同步set_what_up映射wechat_interface_audit.py三方对齐审计通过(rpc 130 / ACTION_TO_RPC 128 / WECHAT_ACTIONS 128,缺失 RPC 0)- E2E 禁止 offline 占位通过(
test_wechat_full_e2e.py) - 真机探针 0/6(WS Agent 离线;ADB 110.80 Host is down)
- Termux 启动 Agent 后跑
matrix_hook_catalog_verify.py+ 173 catalog + 发消息/朋友圈验收
执行人:阿机 · 阿端
- 删除误建的
local_skill_ai.py/local_ai.py(Ollama 新接口) - 手机
LLMClient→ 卡若/api/gateway/chat(沿用原接口) AIBrain.chatAndExecute+NativeAgent.runAiChat+ Hub「小AI助手」页- Agent
config.json启用 ai_brain(gateway) agent.py新增 WSai_chat→chat_and_execute(卡若网关即时执行)- debug APK 编译完成
app-debug.apk7.8M(待 ADB 授权后 install) - 微信登录 E2E、解封 UI 锚点(待 ADB 稳定)
2026-05-24 17:26 | 微信自动登录 u2 · Lytiao1 测试
执行人:阿机 · 阿端
sdk/agent/skills/wechat/wechat_auto_login.py增强(8.0.56 UI + 坐标降级 + ui_sample)sdk/config/wechat_login.yaml(Lytiao1 / key123456 / xgfe65eimrrofyws)- Agent
U2_FORCE_ACTIONS登录类强制 u2,避免 Frida 空返回 sdk/scripts/wechat_login_typec_test.sh一键测试脚本- E2E 登录成功:首轮
fill_edittexts_partial;当前 ADB 间歇掉线待 USB 重新授权
2026-05-24 15:30 | 真机开发铁律 · 集群规则迭代(强制)
执行人:火炬 · 机擎全员
- 新增 Cursor 规则
.cursor/rules/real-device-mandatory.mdc(最高优先级) - 真源文档
开发文档/2、架构/01-总览/真机开发铁律.md workphone.mdc§零、机擎/SKILL.md§〇.七 同步- 存客宝
.cursorrules.md§工作手机真机铁律 +工作手机对接/01§七 - 卡若AI
运营中枢/参考资料/工作手机真机开发铁律.md+ BOOTSTRAP 热技能
铁律摘要:机器+卡若AI 联合开发;禁止占位/模拟冒充交付;验收必须真机留痕。
2026-05-24 15:45 | 真机铁律 · 集群补全(续)
- 机擎五人 SKILL(阿表/阿机/阿桥/阿端)追加真机铁律引用
- 存客宝
.cursorrules+工作手机对接/README+03-联调验收同步 - 集群引用链闭环:真源 MD → Cursor mdc → 存客宝 → 卡若AI
2026-05-24 16:00 | 真机铁律 · 五人全员 + 对称文档(续二)
- 阿服 SKILL 追加真机部署铁律
- 工作手机
存客宝BFF与工作手机SDK映射表.md顶部铁律 + 对称链 - 存客宝
02-分板块+工作手机开发进度.md铁律引用
2026-05-24 16:10 | 真机铁律 · 门禁脚本 + 跨工作区规则(续三)
- 新增
real_device_gate.sh(ADB + SDK 在线设备,失败 exit 1) workphone_bff_smoke.sh无设备改 exit 1(对齐铁律)系统架构.md+开发进度总表.md完成判定引用铁律- 个人
.cursor/rules/real-device-mandatory.mdc跨工作区 alwaysApply
2026-05-24 16:15 | 真机铁律 · 机擎完整功能定义 + 注册表(续四)
- 机擎 §3.2.1「完整功能」改为须
real_device_gate.sh或真机留痕 - 存客宝
03-联调BFF 验收前置门禁命令 - 卡若AI
SKILL_REGISTRYG15b + 存客宝 SKILL 铁律引用 - 本机探测:
192.168.110.80:5555Host down · SDK healthy · devices_online=0
2026-05-24 14:15 | 设备 ID MD5 字段 · 红米全量资料汇总
执行人:@阿机 · @阿桥
- 新增
sdk/app/services/device_id_util.py(device_id_md5/enrich_device_id_fields) - API 返回
device_id_md5:connection/status、devices/{id}、hook/probe、hook/data、device_fleet - 红米
xgfe65eimrrofyws→ MD5ed25814d9c92b3430696dc96c2142b5f - [!] 当前 ADB 离线,Frida/Hook 需 USB 重连后 oneclick 恢复
- 新增
sdk/scripts/upgrade_wechat_and_oneclick.sh(等 ADB → 装 8069 arm64 → oneclick) - 预下载
/tmp/wechat_apk/weixin8069_arm64.apk(248MB 官方 arm64) - 无线主控口径:
WORKPHONE_WS_FIRST=1· hook/probe 经 WS · 文档5、接口/02-业务对接/WebSocket无线主控口径.md device_transport.py统一封装 · 机擎 §〇.八 · Cursor/workphone.mdc · 存客宝 BFF 文档同步connection/status增加transport_policy·wait_ws_agent.sh·run_kaluo_msg_moments.sh改 WS 优先
2026-05-24 14:25 | 联系客服解封2 · UI 链路对齐截图
执行人:@阿机 · @阿端
unblock_customer_service.py新增限制页直链:安全保护中→联系客服→kf.qq.com→联系专属客服→允许小程序→专属客服会话- 保留原「我→设置→安全中心」兜底路径
- API:
POST /account/unblock-customer-service已有,skillunblock_via_customer_service
2026-05-24 14:15 | Obsidian 粘贴图 AI 可读 · 绝对路径闭环
执行人:@阿表 · @阿端
.obsidian/app.json:{folder}/images+ 绝对路径 Markdown(工作手机 + 存客宝 v3)设备-微信-解封2.md去除 4 条 wikilink;5 张图落1、需求/修改/images/- vault 根 4 个
Pasted image删除;.gitignore忽略根目录粘贴图 - 新增
机擎/scripts/fix_pasted_images.py(--vault跨项目) - AI Read 验收 5/5;全库 0 wikilink 图片引用
2026-05-24 | BFF 接口概念讲解 + 映射表 13 条同步
执行人:@阿桥 · @阿表
- 解答 BEF→BFF(Backend For Frontend)概念与三层调用
- BFF 13 条路由实机 curl:
status/connection/status/hook/events/message/send均 BFF 200 message/sendSDK 层 Hook failed(ADB offline,非 BFF 问题)- 映射表 §三 §六 7→13 条;cunkebao
01-总体架构与BFF映射.md同步
2026-05-24 10:46 | Frida 军训验收终轮 · REST 96/96 + catalog 173/173 + E2E 8/8
执行人:@阿端 · @阿桥 · @阿机
完成内容
- 矩阵 REST 96/96、action 全量 50/50、catalog 173/173
test_hook_e2e.py8/8(Phantom 无 Agent WS)- 存客宝 BFF
/v1/workphone/statussdk_online=true - 触客宝全链路
POST /v1/kefu/message/send→ workphone_sdk → Frida → filehelper ✅ - 可见发消息 + 截图
sdk/tmp/visible_frida100_104603.png - 进度总表 F-CKB-1/2/4→100%,D-CKB-2→80%
- GitHub:
2dd2ad1/977925c
2026-05-24 22:30 | 存客宝对接文档 + 本地 E2E 闭环(cunkebao_v3)
执行人:@阿桥(接口)· @阿端(联调)
完成内容
- cunkebao_v3
开发文档/5、接口/+工作手机对接/01~04文档体系(含配图索引) - BFF 触客宝
message/send鉴权修复(JWT id 替代 s2_accountId) - P4a
KefuMessageSync+sync?write=1 - 本地 Docker:3100/3101
nginx.local.conf→ 本地 server(非线上 ckbapi) - E2E:8082/3101 发消息 200;3100 workphone/status 200;workbench_sdk_smoke OK
- seed + sync_contacts_from_sdk(50 好友入库)
进度
- 存客宝侧 SDK 对接代码:~92%
- 存客宝对接文档:~95%
下一步
- 线索 Hook friend-add → 流量池验
- 完整 Workbench 队列 Job + 生产 nginx 策略
执行人:@阿端(联调)· @阿机(Hook)
完成内容
- Phantom frida-server 在线(
fs_279d5dport 25693),hook/probesupports_hook=true - 矩阵安全组 29/29 →
sdk/tmp/matrix_v8056_verify_xgfe65eimrrofyws_1779589458.md - 矩阵全量(含写操作)50/50 →
sdk/tmp/matrix_v8056_verify_xgfe65eimrrofyws_1779589538.md _hook_smoke.py8 段冒烟全绿(含 send_message + unified channel=hook)- unified REST 矩阵 96/96 →
sdk/tmp/matrix_v8056_verify_xgfe65eimrrofyws_1779590389.md - Hook catalog 173/173(补
batch_send/mass_send探针参数) 开发进度总表AF9 真机验证标记完成;契约 §七 补矩阵记录;存客宝侧 M5→100%
进度
- Phase 8 Frida 全功能:100%(110 action / 24 模块 / 119 RPC 映射)
- 项目总进度:99.6%
2026-05-24 18:45 | 微信全功能矩阵 v8.0.56 真机验收闭环
执行人:@阿端(联调)· @阿桥(接口)· @阿机(Hook)
完成内容
-
unified API E2E 全量 50/50(
SDK_MATRIX_VERIFY=1,设备 xgfe65eimrrofyws) -
Hook catalog 探针 157/157(
matrix_hook_catalog_verify.py,含别名+参数归一+群/标签预取) -
hook_executor.normalize_params补全:sns_id、member_ids、moments_cover、forward_moments_link -
报告:
sdk/tmp/matrix_v8056_verify_*_1779588562.md、matrix_hook_catalog_*_1779589116.json -
矩阵 MD 逐行状态回写(
matrix_v8056_sync_doc_status.py):0 项待补全 -
补全
add_tag/remove_tag→set_contact_label别名
下一步
- 扩展 unified REST 路由 E2E(矩阵 ~97 端点):96/97 通过(group_quit 无有效群跳过)
2026-05-24 10:05 | Frida RPC 映射验收 + Phantom Frida 打通 send_message
执行人:@阿机(后端)· @阿端(联调)
完成内容
- 全量扫描
ACTION_TO_RPC↔wechat_hook_v2.js:119/119 映射与 JS 实现齐 - 定位 send 失败根因:stock frida-server attach 微信超时(非映射缺失)
- 部署反检测 frida(随机名+端口 48220),
phantom_frida_config.json unified.py_get_frida_manager优先读 phantom 配置走remote模式- 真机验收:
send_message→filehelper ✅、get_contacts7906 条 ✅、hook/probesupports_hook=true - 重导
sdk/tmp/all_wechat_friends_xgfe65eimrrofyws.csv(7906 行) setup_phantom_frida.shmacOS 无shuf兼容
变更文件
sdk/app/routers/unified.pysdk/scripts/anti_detect/setup_phantom_frida.shsdk/scripts/anti_detect/phantom_frida_config.json(运行时生成)sdk/tmp/all_wechat_friends_xgfe65eimrrofyws.csv
下一步
- 将 phantom 启动并入
frida_workphone_oneclick.sh标准流程 - 矩阵 JSON「未确认导出」批量改状态(V5 纠偏版已存在:32 条误报→0 真缺失)
- GitHub 同步:
355ed27phantom unified/oneclick;68b4d8fhook RPC 扩展
2026-05-24 11:30 | Frida 完整整理 · RPC 契约文档扩写
执行人:@阿桥(接口)· @阿表(文档)
完成内容
开发文档/5、接口/03-Hook与微信/微信Frida_API契约.md由跳转 stub 扩为完整参考(五层调用链、119 映射、Phantom、验收、故障排查)- 手册 v2.4 §七 分拆:RPC 映射 / call_rpc 兼容 / Phantom 反检测
03-Hook与微信/README.md索引更新
文档入口
- 技术详文:
开发文档/5、接口/03-Hook与微信/微信Frida_API契约.md - 五图手册:
开发文档/9、手册/工作手机·五图总览与使用手册.md
执行人:@阿服(部署)
完成内容
- 家里 Station(192.168.110.29 · DS213j)原生部署工作手机网站(无 Docker,Python 3.8 armv7)
- 精简依赖
requirements.nas-armv7.txt;motor/aiohttp可选降级 - SDK 监听 8899,控制台
/hub内网验收 200 - frpc 增加
[home-nas-workphone]8899→8889(外网待 frps 恢复) - 脚本
sdk/scripts/deploy_home_station.sh
访问地址
| 场景 | URL |
|---|---|
| 内网控制台(家里 WiFi) | http://192.168.110.29:8899/hub |
| 公网域名 | http://workphone.quwanzhi.com/hub |
| 内网 API/文档 | http://192.168.110.29:8899/docs |
| frp 直连 | http://opennas2.quwanzhi.com:8889/hub |
进度
- 家里 NAS 工作手机网站部署:100%
- 公网域名 workphone.quwanzhi.com:100%(kr Nginx + frp)
执行人:@阿桥(接口)+ @阿端(联调)
完成内容
- Hook 动作别名补全
hook_executor.py:unified/ADB 方法名 → Frida RPC(recall→revoke、search_contact→search_contacts 等 30+ 别名) - 补 RPC
wechat_hook_v2.js:getSafetyCenter / checkRestrictions / getTopStories / getWechatSteps / getStickerList / showPaymentCode - send_message 走 Hook 主控:ChannelRouter 微信强制
Channel.HOOK;_send_via_hook解析 ADB serial - forward/recall 接口补
msg_svr_id字段透传 - 真机
xgfe65eimrrofyws安全组 E2E:29/29 全绿(channel=frida/hook) - 全量写操作组 E2E:50/50(100%)(验收模式
SDK_MATRIX_VERIFY=1绕过 anti_ban 仅用于矩阵脚本) - 验收脚本
sdk/scripts/matrix_v8056_real_device_verify.py+ 报告sdk/tmp/matrix_v8056_verify_* - 矩阵文档更新:
workphone-devdoc/.../微信全功能矩阵_v8.0.56.md引擎改为 Frida Hook + 真机验收戳
进度
- 矩阵安全只读组真机验收:100%(29/29)
- 矩阵全量 97 端点(含写操作/支付/加好友):待
--full续验 - 总进度:99.7%
2026-05-24 09:30 | 接口全量目录 + 存客宝对接架构图
执行人:@阿桥(接口)+ @阿表(文档结构)
完成内容
- 从
sdk/app/main.py扫描 328 条 HTTP 路由,写入5、接口/01-规范与统一层/工作手机API全量接口目录.md - 公共参数、存客宝 8 条重点接口、分模块全量表格(设备/Hook/微信/网关/ADB 等)
- 存客宝对接架构 PNG + HTML 交互图(
images/02-业务对接/+05-交互图/存客宝对接架构图.html) - 路由快照
04-OpenAPI/routes_snapshot.json+ 脚本6、测试/scripts/export_api_catalog.py - 续:
02-业务对接/存客宝BFF与工作手机SDK映射表.md(BFF↔SDK↔WorkPhoneSDK.php) - 续:cunkebao_v3 补全 4 条 workphone AI BFF 路由 + WorkPhoneSDK 4 方法
- 续:主手册 v2.3、开发进度总表、typescript-sdk AI Brain 四方法对齐
- 更新
5、接口/README.md及各子目录 README 入口
进度
- 接口文档全量索引:100%
- 存客宝对接可视化:100%
- 总进度:99.6%
2026-05-24 15:30 | 根目录非 SDK 整理 · 项目总览图
执行人:阿表(文档)+ 阿服(Gitea/挂载)+ 阿端(Obsidian)
完成内容
docs/→开发文档/8、部署/04-Gitea门户/;publish_wiki.py/sync_when_online.sh路径修复tools/→开发文档/8、部署/05-测试验收/scripts/+_repo_root.py;根目录 46 个 legacy 脚本/JSON →scripts/legacy/verification_screenshots/→screenshots/verification_110/;sdk/tests/run_live_verification.py对齐local-mount-sync/→机擎/阿服/local-mount-sync/- 新增
开发文档/2、架构/01-总览/项目目录总览.md、各层 README;Skill §九 根目录迁入速查 - Obsidian
workphone-devdoc.css扩展(00总览/6测试/scripts/机擎/sdk);workspace 去旧路径 - 架构图
2、架构/images/01-整体总览/工作手机项目目录总览.png
进度
- 根目录非 SDK 整理:100%
- 补全包目录移除:100%(
f5df311已推 GitHub) - 后续:
5919659SDK控制台 ·5d8cbe3路径校验 ·ea29ca3CI ·e6526f1Mermaid - 总进度:99.5%
2026-05-24 16:00 | 补全包目录移除 · CodeGraph 项目整理
执行人:阿机(代码收编)+ 阿表(文档)+ 火炬(CodeGraph)
完成内容
- 唯一未收编资产
wechat_hook_bridge.js→sdk/agent/hook/wechat_hook_bridge.js - 历史 ZIP →
资料/archive/微信Frida_SDK_20260518_补全包.zip+资料/archive/README.md - 移除根目录
补全包/、工作手机SDK补全包_微信Frida/(代码已在主线sdk/) 开发文档/8、部署/05-测试验收/scripts/extract_wechat_sdk_control_interfaces_1838.py扫描源仅保留sdk/+ 测试脚本- 主手册 v2.2、Wiki 摘要、hook README 路径对齐
.cursor/rules/codegraph.mdc+codegraph init -i+codegraph install -l local(MCP 写入.cursor/mcp.json)
进度
- 项目结构整理:100%(根目录无补全包冗余)
- CodeGraph 索引:276 文件 · 6,576+ 节点
- 总进度:99.5%
- 续 · 真机验收:
xgfe65eimrrofywshook/probe ✅ ·get_profilevia/hook/execute✅(Frida 16.5.6 · 微信 8.0.56) - 续 · F08 批量验证:148 项 148/148 全通过(修复 frida-server 监听
0.0.0.0:27042后重跑)
2026-05-24 12:00 | 补全包并入开发文档 · 统一手册 v2.0
执行人:阿端(手册)+ 阿桥(接口收敛)+ 阿表(索引)
完成内容
开发文档/9、手册/工作手机·五图总览与使用手册.md升级 v2.0:并入补全包/与工作手机SDK补全包_微信Frida/九模块(F01~F09)、RPC 四层兼容、无线 Frida 部署;路径对齐主线sdk/;附架构图 + 无线真机截图。- 去重:
5、接口/微信Frida_API契约.md、8、部署/微信Frida无线部署与验证说明.md改为跳转主手册,避免双份维护。 9、手册/README.md更新主入口说明。开发文档/README.md、5/8 接口部署 README、使用与落地方案.md钉死主手册跳转。机擎/SKILL.md§〇.二 增加主手册必读;Hook 能力表更新 110/132;阿端/SKILL.md同步。开发进度总表.md文档索引首行指向 v2.1 主手册;已推 GitHub。- 仓库根
README.md增加主手册入口;浏览器已打开 HTML 预览。
2026-05-24 08:47 | frida_wireless 导入修复 + SDK 重启
执行人:阿机
完成内容
- 修复
frida_wireless.py错误导入agent.hook(sdk/app/agent 无 wireless_deployer)→ 对齐sdk/agent/hook。 /api/v3/frida/discover验证:success: true(修复前 ModuleNotFoundError)。- Commit
9bea66c已推 GitHub;SDK 已重启(8899)。
2026-05-24 09:30 | 指定真机全自动闭环(无线 ADB + WS 全绿)
执行人:阿端 + 阿机 + 阿服
完成内容
- 无线 ADB 连接
192.168.110.80:5555(ro.serialno=xgfe65eimrrofyws),USB 端仍为 unauthorized。 - 修复
adb_device.py:ro.serialno→ ADB serial 映射,Hook API 可解析指定 device_id。 - 修正 Agent
config.jsonWS 基址;重启 SDK+Agent;ws_full_test.py13/13 全绿。 - 重编译部署 APK(桌面 工作手机 Launcher 已可见);Frida 16.5.6 + 微信 8.0.56 Hook 通过。
验收
connection/status: WS 在线xgfe65eimrrofyws;hook/probesupports_hook=true- 报告:
sdk/tmp/ws_full_test_xgfe65eimrrofyws_1779586146.json
执行人:阿端(手册)+ 阿表(测试环境归档)
完成内容
- 生成统一风格 PNG 五图:
开发文档/9、手册/images/workphone_fig01~05.png(架构 / 对接 / 功能 / 真机测试 / 使用闭环)。 - 补全
开发文档/9、手册/工作手机·五图总览与使用手册.mdv1.0:原理、API 表、110 项与 132 RPC、本机实测、故障速查、索引。
2026-05-23 16:30 | 工作手机·五图总览与使用手册
执行人:阿端(手册)+ 阿桥(对接图)+ 阿表(测试环境归档)
完成内容
- 新增
开发文档/9、手册/工作手机·五图总览与使用手册.md:统一 Mermaid 配色五图(架构 / Frida 原理 / 对接集成 / 功能版图 / 真机测试环境)+ 统一使用步骤 + 附录索引。 使用与落地方案.md改为跳转五图总览;9、手册/README.md增加总览必读入口。
下一步
- 可将五图导出 PNG 放入
开发文档/2、架构/与现有 HTML 架构图并列(可选)。
2026-05-23 14:58 | 微信SDK真实控制接口矩阵 V5 — 检测脚本纠偏
执行人:阿表(进度验收)+ 阿机(后端核源码)+ 阿桥(接口映射核对)
完成内容
- 阿机:定位 V3 检测脚本
tools/build_wechat_sdk_true_control_matrix_v3_1858.py的parse_hook_exports()用r'rpc\.exports\s*=\s*\{(?P<body>.*?)}\s*;'非贪婪正则,遇到第一个内层return { ... };即截断;导致 V4 矩阵把wechat_hook_v2.js后段 122 个真实 RPC 全部误标「未确认导出」。 - 阿桥:新增
tools/build_wechat_sdk_true_control_matrix_v5_corrigendum.py:用「定位rpc.exports = {+ 找紧跟行首的\n};\n闭合」替代非贪婪正则,按 4 空格缩进抓顶层方法名;并跟随_xxxInternal/_getXxxFromDB内部委托判定实现类型(sql_or_java/intent_only/mixed_sql_intent/simple_return)。 - 阿表:产出
开发文档/5、接口/06-验收与矩阵/110项功能逐项确认/2026-05-18/微信SDK真实控制接口矩阵V5_检测脚本纠偏_追加版_145843.md+.json。wechat_hook_v2.js真实rpc.exports顶层方法数:126wechat_hook_ckb_patch.js扩展 RPC:6(getContactsDetail / getContactDetail / getGroupMembersDetail / startFriendAddListener / startGroupMemberListener / batchSyncContacts)- V4 标记的 32 条「未确认导出」:32/32 全部为脚本误判,实际全部已在 wechat_hook_v2.js 导出(含
sendMessage/getMessages/addFriend/acceptFriend/getContacts/postMoments/getProfile等核心动作)。
影响范围
- V4 矩阵中的「FRIDA_RPC 执行层缺失」结论应整体作废;A 类核心接口数量应显著上调。
- 后续真机重测以「实现类型」分桶:
sql_or_java(A 类核心,可 Hook 直达)vsintent_only(B 类待补,仍需 Agent 端 IntentReceiver/ADB 兜底)vsmixed_sql_intent(SQL 优先、Intent 降级)。
下一步
- 阿机:用 V5 的
extract_rpc_exports_block反向修补 V3/V4 脚本,重出 V6 矩阵覆盖 95 个核心接口的真实执行层。 - 阿桥:核对
hook_executor.py::ACTION_TO_RPC与 V5 真实导出表,列出仍有 action 但 RPC 缺失的剩余项(若有)。 - 阿端:基于 V6 矩阵刷新 110 项真机重测计划,把过去因 V4 误判被压到 B 类的接口提到 P0。
2026-05-06 | 本地控制台 8880 反代 502 修复
执行人:阿服(部署)+ 阿端(验证)
完成内容
- 阿服:排查
workphone-website→workphone-sdk返回 502;根因是 SDK 容器仅在 defaultbridge,与 Nginx 所在的workphone-network不通。已执行docker network connect workphone-network workphone-sdk,http://127.0.0.1:8880/与/health经反代恢复 200。 - 阿端:本机验证
curl http://127.0.0.1:8880/health与根路径均为 200。
下一步
- 日后若单独启动或重建
workphone-sdk,确认其加入workphone-network(或由docker compose up在同 compose 项目下一键拉起),避免再次出现仅 bridge 导致 Nginx 上游不可达。
2026-06-02 | 三级连接顺序写入工作手机项目规则(workphone.mdc §零.十)
.cursor/rules/workphone.mdc§零.十(项目规则真源)workphone-nas-connection.mdc指向 §零.十;real-device-mandatory.mdc交叉引用机擎/SKILL.md§〇.十 ·机擎/阿服/SKILL.md部署清单 ·deploy_nas_rsync.sh头注释真机开发铁律.md增补 SDK 连接顺序
2026-06-02 | 公司 CKB NAS 工作手机生产部署 + 连接铁律
deploy_nas_rsync.sh→192.168.110.101:workphone-sdk-nas重建,health 200docker-compose.nas.yml增加name: 05-业务网站-工作手机- 登记:
开发文档/8、部署/03-运维同步/公司NAS工作手机服务登记.md· CKBNAS 登记册 §3.4 - Cursor:
.cursor/rules/workphone-nas-connection.mdc(NAS 主服 · Mac 备案) sdk/scripts/nas_primary_agent_setup.sh:主服110.101:8899,Mac 备案110.167:8899- 外网 frp
:8899OPEN
2026-05-06 | NAS Gitea 同步与仓库卫生(tmp/logs/tmp_rom 不入库)
执行人:阿服(远程/推送)+ 阿桥(仓库边界)+ 阿表(日志留痕)
完成内容
- 阿服:
gitea远程使用内网192.168.1.201:3000;本次将本地已跟踪变更与新增sdk/app/agent等一并提交并git push gitea main。 - 阿桥:
.gitignore增加sdk/tmp/、sdk/logs/、sdk/tmp_rom/,避免好友导出 CSV、PID、本地 ROM zip 误入版本库。 - 阿表:本段写入工作日志;未改业务源码,仅文档与忽略规则配合提交。
下一步
- 若需保留
tmp类产物,改存 NAS 非 Git 目录或对象存储,仓库只留可复现脚本与接口契约。
2026-05-05 | Frida 主控通道闭环:一键脚本 + 存客宝默认走 hook
执行人:卡若AI(火炬总控) + 机擎五人联动:阿机(后端 Agent) + 阿桥(中间层对接) + 阿端(联调手册) + 阿服(部署脚本) + 阿表(进度表与日志)
完成内容
- 阿机:新增
sdk/scripts/frida_workphone_oneclick.sh一键启动脚本。该脚本将“Type-C 插入 → frida-server-16 启动 → SDK 启动 → /hook/probe 探测 → Agent 启动”串成一条原子流程;自动锁定主机frida==16.5.6,遵循开发文档/8、部署/设备端Hook安装部署.md的版本兼容矩阵;Root 不可用时自动降级到 Frida Gadget 备背,符合frida_manager.py的mode=gadget设计。 - 阿桥:升级
sdk/php-sdk/WorkPhoneClient.php:sendMessage默认channel=hook、新增hookProbe / hookData / hookExecute / hookActions / wechatSendByHook / wechatGetContactsByHook,与sdk/app/routers/unified.py的/api/v3/hook/*路由一一对应。存客宝侧无需任何额外改动,新版客户端 PHP 类即可直接驱动 110 个 Frida RPC 操作 / 24 个模块。 - 阿端:在
开发文档/9、手册/新增《工作手机·一键接入与存客宝对接操作手册.md》。手册以 Frida 主控为主线,覆盖五个章节(架构概览 / 一键流程 / 存客宝对接 / 联调验证 / 故障排查)。 - 火炬:本轮所有改动只落到本机仓库
/Users/karuo/Documents/开发/2、私域银行/工作手机,遵循“项目只改本地”的项目级约束。
设备链路达成
- 主控通道:Frida Hook(默认 / 推荐)
- 辅助通道:ADB UI 自动化(自动降级)
- 入口接口:
POST /api/v3/hook/execute、GET /api/v3/hook/probe/{device_id}、GET /api/v3/hook/data/{device_id}、POST /api/v3/message/send (channel=hook)
验证基线(与 references/快速入机部署_Root_Frida_Hook.md 对齐)
- ping、getWechatVersion、getContacts、searchContacts、getContactInfo、getProfile、getGroups、getMessages、hookStatus、versionCompat 共 10 项可经一键脚本闭环验证。
进度变化
- Phase 4 部署:D7 五机实测路径 → 由
frida_workphone_oneclick.sh替代手工流程,85% → 95%(仅需真机执行一次留痕)。 - 总进度:99% → 99.5%。
下一步
- 在真机上执行:
./sdk/scripts/frida_workphone_oneclick.sh -d <serial>,按其输出结果回写 D7 状态。 - 存客宝后端 vendor 中同步更新
WorkPhoneClient.php,回归一次wechatSendByHook与hookData调用。
2026-04-10 | 品牌更名并重装:AI数智员工(vivo 真机)
执行人:阿端(联调)+ 阿机(Android)
完成内容
- Android 端可见文案由“云同步”替换为“AI数智员工”(
strings.xml、通知标题、应用日志、Hub 标题/页脚等)。 - 重新编译并安装
app-debug.apk到设备RW4XLRKJRW8LW4TO,安装成功并启动SetupActivity。 - 连接验收:
/health显示devices_online=1、adb_devices=1;/connection/status显示online_ws_count=1;/agent/status/{device_id}=ready。 - 无障碍已通过 adb 开启:
accessibility_enabled=1,服务为com.system.cloudservice/.service.AgentAccessibilityService。
风险与现状
- [!] 当前这台 vivo 设备未 Root(
su: inaccessible or not found),/hook/probe/{device_id}返回root_status=false、supports_hook=false、frida not installed。 - [!] Hook 链路要恢复到“正常连接”,需切回已 Root 且已部署 frida-server 的设备(如
xgfe65eimrrofyws当前为 offline)或先对本机完成 Root+Frida 部署。
2026-04-10 | 真机 Gemma 前置:侧载升级 Google Play services(APKCombo)
执行人:阿端(联调验收)+ 阿服(侧载与 adb)
完成内容
- 从 APKCombo 预签名链拉取 Google Play services 26.13.62 (100400-896079563) 至本机
/tmp/GooglePlayServices.apk(约 248MB)。 adb install -r -d安装成功;dumpsys package com.google.android.gms可见 versionCode=261362013(高于此前 SERVICE_VERSION_UPDATE_REQUIRED 所需的 253600000)。am force-stop com.google.android.gms后启动 AI Edge Gallery(com.google.ai.edge.gallery/.MainActivity)冷启动正常;logcat 中 GMS 栈已指向 @261362013。
待你在手机上闭环
- 打开 AI Edge Gallery,优先试 Gemma-4-E2B-it 下载与对话;若仍见 MirrorManager / don't Support,再试 Gemma3-1B-IT。
- 若出现异常:抓 logcat(过滤
ai.edge、MirrorManager、GmsCore)并反馈。
2026-03-25 | NAS 一体化部署:docker-compose.nas.yml + rsync 脚本 + 文档 §二点七
执行人: 阿服(部署)
完成内容
sdk/docker-compose.nas.yml:Mongo7 + Redis7 + SDK + website,内网 8880/8899,默认关闭 AI Brain。sdk/.env.nas.example、sdk/scripts/deploy_nas_rsync.sh(NAS_USER/NAS_HOST/NAS_DIR)。开发文档/8、部署/本地Docker部署指南.md§二点七(访问地址、防火墙、ADB/开发文档挂载)。
2026-04-03 | 桌面「工作」图标仍可见时的处理
- 工程侧:
SetupActivity已无MAIN/LAUNCHER;deploy.sh启动步骤仅保留am start …SetupActivity(无 monkey LAUNCHER)。 - 真机侧:须重装当前分支编译的 APK;若桌面仍残留快捷方式,长按图标→移除(与是否已卸载旧逻辑无关,部分桌面会保留孤儿快捷方式)。
续:全自动部署(零提问)
deploy.sh:macOS 强制优先 JDK 21/17(覆盖指向 JDK 22+ 的JAVA_HOME,避免 Kotlin 1.9 守护进程报错);默认./gradlew --stop+ 删.gradle/app/build清坏缓存;DEPLOY_NO_CLEAN=1跳过删目录、DEPLOY_USE_ENV_JAVA=1不覆盖JAVA_HOME;未传序列号时自动选机;install -r -g -t。app/build.gradle:release使用signingConfig signingConfigs.debug,便于./deploy.sh release无交互安装(勿用于上架 Play)。
2026-03-30 | 首页「可用功能」检测优化(Root / 无障碍 / 微信 / AI)
执行人: 阿机(Android Agent)+ 阿端(联调展示)
完成内容
ShellExecutor.hasRoot():改为runWithTimeout(su -c id, 10s)并校验输出含uid=0,避免流未读满导致误判。AgentAccessibilityService:新增isEnabled(context),读取Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,与「系统里已开启」一致;保留isServiceBound()。DeviceInfo.isWeChatInstalled():用getLaunchIntentForPackage(com.tencent.mm)。DashboardFragment:无障碍用isEnabled(ctx);微信=已安装且(微信进程在跑或 WS 在线);AI=已有engine或前台同步服务isRunning;onResume起 15 次×1s 轮询刷新以覆盖 engine 异步创建。AgentEngine:hasFridaBridge()/isFridaReady()供状态页使用;StatusFragment同步 Frida/无障碍文案。- 说明:真机全绿仍依赖 Magisk 授权本应用
su、开启无障碍、WS 连通与微信安装/运行;编译需在路径无乱码环境验证。
续:去掉桌面「工作」图标
AndroidManifest.xml:从SetupActivity移除MAIN/LAUNCHER,安装新版本后桌面不再出现该入口;打开方式:adb shell am start -n com.system.cloudservice/.ui.SetupActivity,或 设置→应用→云同步→打开,或点前台通知。deploy.sh:启动步骤改为仅am start SetupActivity(不再用 LAUNCHER monkey)。- 续删品牌:应用名改为「云同步」;自适应图标改为中性灰+极简前景(去掉蓝底手机+星);
ic_launcher.xml前景改引用@drawable/ic_launcher_foreground;删除未使用的ic_launcher_background.xml;通知标题与首页/设置文案对齐;versionCode6 /versionName5.0.1。 - 续:WS 一键绑定修复:
SetupActivity新增 adb 注入配置入口(--es server_url/ project_id/ pwa_url),且当携带server_url时优先覆盖已绑定状态;实测通过adb reverse + am start ... --es server_url ws://127.0.0.1:8899将online_ws_count从 0 拉到 1(device_id=7921cf53a297b0d174e09f2f102eced4)。 - 续:Frida 与解封 skill 联调测试:
- 主机 Frida 测试通过:
frida 16.5.6、可枚举设备进程(含com.tencent.mm:push)。 - 设备端已修复
setup_frida.sh引号问题(chmod/后台拉起命令),可稳定启动frida-server。 - Hook 探测接口当前仍返回
frida not installed(后端运行环境未加载frida模块,非手机侧 Root/Frida 问题)。 - 微信解封 skill 已执行:
POST /api/v3/account/unblock使用device_id=xgfe65eimrrofyws返回成功(mode=adb,status=normal,备注“账号当前未被封禁”)。
- 主机 Frida 测试通过:
- 续:稳定性回归(连接/Root/无障碍/解封):
- 连接状态:
online_ws_count=1、adb_count=1、agent/status=ready。 - 权限状态:
su -c id为 root;enabled_accessibility_services含AgentAccessibilityService且总开关=1。 - 解封操作:
/account/unblock-self(ADB 通道)返回成功(账号未被封禁,无需解封);/account/unblock在当前页面态下偶发 30s 超时。 - 代码修复:
sdk/app/routers/unified.py增强agent目录定位(兼容.../agent与.../sdk/agent);sdk/app/routers/hook_modules.py增加/data/local/tmp/frida-server --version探测兜底。
- 连接状态:
下一步(验收闭环,按序执行)
- 本机 Android Studio 打开
sdk/android-app(或路径无乱码的副本)执行 Build → Make Project,生成app/build/outputs/apk/debug/app-debug.apk。 - USB 连接:
bash sdk/scripts/usb_reverse_workphone_ws.sh,再bash sdk/scripts/real_device_connect_check.sh(SDK 先起在 8899)。 - 安装:
sdk/android-app/deploy.sh debug或adb install -r app-debug.apk;无桌面图标时用adb shell am start -n com.system.cloudservice/.ui.SetupActivity。 - 手机侧:Magisk 固定授权 云同步;开启无障碍;必要时点首页能力条进对应设置;打开微信或保持 WS 在线 以点亮能力格。
- 发版前同步
strings.xml的app_version_tagline与build.gradle的versionName。
续(同日):能力标签快捷操作 + USB reverse 脚本
- 首页六个能力标签可点击:Root→应用信息(引导 Magisk 授权);Hook→Toast + 重启同步服务;无障碍→系统无障碍设置;防封→说明 Toast;微信→拉起
com.tencent.mm;AI→MainActivity切到「设置」页(EXTRA_OPEN_SETTINGS)。 - 新增
sdk/scripts/usb_reverse_workphone_ws.sh:adb reverse tcp:8899 tcp:8899(可设WORKPHONE_WS_PORT)。
2026-03-21 | 截图实时刷新 + Brain API 修复 + 全 API 验证通过
执行人: 全员协作(阿机/阿桥/阿端/阿服/阿表)
完成内容
1. 截图实时刷新功能(阿端)
- 新增截图自动刷新:支持 3s / 5s / 10s / 30s 四档间隔
- 开关式控制:▶ 自动刷新 / ⏸ 停止刷新 一键切换
- 立即截图按钮 + 截图时间戳和分辨率显示
- 离开设备控制页面自动停止刷新,避免无效请求
2. 后端 Bug 修复(阿机)
- AI Brain Dashboard 500 错误修复:
device_manager.get_all_devices()是 async 函数,缺少await adb_manager.get_all_devices()改为同步的scan_devices(),并加 try-except 保护
3. 全部 9 个核心 API 验证通过(阿端/阿桥)
| API | 状态 | 说明 |
|---|---|---|
/api/v3/workbench/overview |
✅ | 14 篇文档 |
/api/v3/discovery/server-info |
✅ | IP:192.168.110.250, beacon:True |
/api/v3/gateway/info |
✅ | 外部对接网关 |
/api/v3/connection/status |
✅ | WS/ADB 连接 |
/api/v3/workbench/docs |
✅ | 14 篇文档 |
/api/v3/ai/brain/dashboard |
✅ | 9 技能 130 操作(已修复) |
/api/v3/heartbeat/dashboard |
✅ | 心跳监控 |
/health |
✅ | healthy v3.0.0 |
/api/v3/ai/brain/skill-registry |
✅ | 9 技能 39 模块 130 操作 |
4. 前端零 JS 报错验证(阿端)
- 浏览器控制台无任何 JavaScript 错误
- 5 个主标签页全部正常加载
- 底部连接状态栏正常更新
当前进度
- 控制台 hub.html 功能完善度:93%
- 服务端 API 覆盖:98%(全部核心 API 验证通过)
2026-03-21 | 局域网自动发现 + 控制台 UX 全面升级 + 全功能验证
执行人: 全员协作(阿机/阿桥/阿端/阿服/阿表)
完成内容
1. 局域网设备自动发现服务(阿机)
- UDP Beacon 广播:服务器启动自动在 port 8898 每 5 秒广播存在信息
- 优化 LAN 扫描:先 TCP 快速探活(0.5s 超时),再 HTTP 验证,254 台 → 3.8 秒完成
- 自动发现 API:
GET /api/v3/discovery/server-info- 本机服务器信息(IP、端口、WS 地址)POST /api/v3/discovery/scan-lan- 扫描局域网 SDK 服务器GET /api/v3/discovery/last-scan- 上次扫描结果POST /api/v3/discovery/listen-beacon- 监听 beacon 发现POST /api/v3/discovery/beacon/start|stop- 控制 beacon
- 自动连接逻辑:页面加载时无在线设备 → 自动触发 LAN 扫描
2. 控制台 UX 全面升级(阿端,基于 F-pattern + Information Hierarchy 理论)
- KPI Hero 区域:F-pattern 布局,North Star Metric(设备总数)在左上角
- 快速操作网格:6 个一键入口(设备管理/智能引擎/对接网关/知识库/扫描局域网/Swagger)
- 持久连接状态栏:固定底部,实时显示 WS/ADB/Beacon 状态 + 操作按钮
- 导航优化:更清晰的描述("工作台"替代"总览")
- 重复代码清理:合并 openDoc/openAgentDoc 为统一函数
- 局域网发现面板:扫描结果可视化,区分本机/其他服务器
3. 全功能验证(阿端)
- 5 个主标签页全部通过 ✅(工作台/设备管理/智能引擎/对接网关/知识库)
- 3 个设备管理子标签 ✅(设备控制/接口文档/系统说明)
- 发现 API 验证 ✅(检测到 192.168.110.250:8899 本机 + 8080 其他服务)
- 无 JS 报错 ✅,底部连接栏正常 ✅
- UDP Beacon 广播正常 ✅
新增文件
sdk/app/services/discovery_service.py- 设备自动发现服务sdk/app/routers/discovery.py- 发现 API 路由
当前进度
- 控制台 hub.html 功能完善度:90%
- 服务端 API 覆盖:97%
- 设备自动发现:100%
2026-03-21 | 设备管理深度重构 — 统一控制面板 + 接口文档 + 系统架构可视化
执行人: 全员协作(阿机/阿桥/阿端/阿服/阿表)
完成内容
1. 设备管理三标签重构(阿端/阿机)
- 设备控制(统一面板):将原"设备总览"+"微信号管理"深度融合为三栏布局
- 左栏:设备列表(搜索+筛选:全部/在线/ADB/离线)
- 中栏:设备控制(截屏/主页/返回/UI树/信息)+ 应用选择器(微信/Soul/小红书/抖音/闲鱼)+ 应用专属操作 + 消息发送 + AI命令
- 右栏:截图预览 + 执行统计 + 操作日志 + 通道性能
- 接口文档(120+ 端点):14 分类完整展示所有 API 端点,点击复制路径,链接 Swagger/ReDoc
- 系统说明:四通道控制链路 + 三种对接方式 + 数据流向 + 技术栈 + 支持平台可视化
2. 功能整合与去重(阿端)
- 合并微信号管理到设备管理,消除重复内容
- 统一设备选择逻辑(
selectDevice()替代selectWechatWorkspaceDevice()) - 修复 AI 命令调用(
sendCmd()替代不存在的runCommand()) - 新增
open_soul动作映射
3. 浏览器验证(阿端)
- 三个子标签均通过验证:设备控制 ✅ / 接口文档 ✅ / 系统说明 ✅
- 无 JS 报错,功能按钮全部可点击
- 服务器启动正常,2 台设备识别、1 台在线
当前进度
- 控制台 hub.html 统一管控中心功能完善度:85%
- 服务端 API 覆盖:95%
2026-03-21(续1)| AI Brain 面板结构化重构 — 5 标签分层 + 80+ 预设指令
执行人: 全员协作(阿机/阿桥/阿端/阿服/阿表)
完成内容
1. AI Brain 面板结构化重构(阿端)
- 5 标签分层架构(替代单页长滚动):
- 📊 总览 — 4 卡统计 + 4 通道可视化 + 6 能力卡片
- 📦 技能库 — 8 大技能按平台筛选标签 + 每个 action 可点击跳转执行
- ⚡ 脚本执行 — 控制台 + 80+ 预设指令按分类排列
- 📋 任务管理 — AI 任务推送 + 9 常驻指令 + 6 自然语言任务示例
- 📖 API — 接口文档独立标签页,不占用功能区
2. 预设指令库完善(80+ 条覆盖全功能)
- 微信·消息 (9条):发消息/群发/获取消息/转发/名片/表情/语音/位置/文件
- 微信·好友 (8条):添加/通过/批量/获取/搜索/详情/备注/删除
- 微信·群聊 (8条):创建/邀请/群发/公告/列表/成员/欢迎语/踢人
- 微信·朋友圈 (6条):发布/点赞/查看/删除/转发链接/隐私设置
- 微信·标签 (4条):创建/添加/查看/按标签查人
- 微信·个人 (7条):资料/昵称/签名/头像/置顶/免打扰/红包
- 多平台 (8条):抖音/小红书/闲鱼/Soul 常用操作
- 系统控制 (10条):截屏/打开应用/关闭/设备信息/按键/坐标/UI树/网络
3. 常驻指令增加到 9 条
- 新增:朋友圈互动、标签整理、设备状态上报
4. AI 自然语言任务示例 6 条
- 客户跟进/群发通知/数据采集/朋友圈营销/新人欢迎/日报汇总
进度变化
- AI Brain 智能引擎:结构化 100%,功能齐全
下一步
- 真机联调 AI Brain 脚本执行
- 心跳面板与 AI Brain 联动
2026-03-21 | AI Brain 智能引擎全面升级 — 技能注册表 + 脚本控制台 + 批量执行
执行人: 全员协作(阿机/阿桥/阿端/阿服/阿表)
完成内容
1. 服务端 AI Brain 增强 API(阿机)
- 技能注册表 API (
GET /api/v3/ai/brain/skill-registry)- 8 大技能模块完整注册:微信(96 actions/12模块) + 抖音 + 小红书 + 闲鱼 + Soul + 系统控制 + Hook引擎 + 防封引擎
- 返回全量技能/模块/操作清单,前端一键渲染
- AI Brain 仪表盘 API (
GET /api/v3/ai/brain/dashboard)- 设备统计(WS/ADB/总注册) + 技能统计 + 4层通道信息 + AI Brain 版本与功能列表
- 脚本执行 API (
POST /api/v3/ai/brain/execute-script)- 支持 script + action + params + channel 灵活组合,WS 设备直达
- 批量执行 API (
POST /api/v3/ai/brain/batch-execute)- 一次向多台设备发送相同脚本,返回每台结果
2. hub.html 智能引擎 AI Brain 面板全面重构(阿端)
- AI Brain 仪表盘:4 卡统计(技能模块数 / 可用操作数 / WS设备 / AI Brain 版本)
- 技能注册表:8 大技能按分类展示,每个 action 可点击自动填入脚本控制台
- 脚本控制台:Script + Action + Channel + Params 四栏输入,支持单设备执行和批量执行
- 常驻指令面板:6 个预设指令卡(检查未读/通过好友/保活微信/弹窗守护/网络恢复/养号计划)
- 执行通道面板:4 层通道优先级可视化(Frida → u2 → ADB → AI)
- REST API 速查:3 组共 11 个 API 端点完整文档
3. 数据统计
- 技能模块:8 个(微信/抖音/小红书/闲鱼/Soul/系统/Hook/防封)
- 总操作数:~200+ actions
- 新增 API:4 个(skill-registry / dashboard / execute-script / batch-execute)
- 前端新增函数:6 个(loadBrainDashboard / fillBrainScript / brainExecuteScript / brainBatchExecute 等)
进度变化
- AI Brain 智能引擎面板:从基础状态展示 → 完整功能控制中枢(100%)
下一步
- 真机联调测试 AI Brain 脚本执行
- 心跳面板与 AI Brain 联动优化
- 设备端 AI Brain 自主模式增强
2026-03-20(续11)| Frida Hook 全链路打通 — Root + WCDB + 10/10 功能验证
2026-03-20(续14)| 微信号管理工作台参考存客宝彻底重构 — 一页化三栏布局
执行人: 全员协作(阿机/阿桥/阿端/阿服/阿表)
完成内容
1. 研究存客宝v3界面设计
- 微信号列表:卡片式(头像+昵称+状态+微信号+好友数+所属设备+活跃时间+进度条)
- 设备管理:卡片式(IMEI+设备名+在线/离线+微信号绑定+好友数)
- 工作手机工作台:统计卡(4格) + 设备概览 + 连接状态表 + 截屏功能
- 关键模式:设备 ↔ 微信号 1:1 绑定关系
2. 微信号管理工作台彻底重构
- 移除原4-tab结构(账号台账/客户标签/社群内容/执行中心),改为一页化布局
- 新三栏布局:
- 左侧(280px):设备列表卡片(搜索 + 全部/在线/ADB/离线筛选 + 设备卡片列表)
- 中间(flex):设备详情 + 8快捷按钮 + 快捷消息 + AI指令
- 右侧(300px):执行统计 + 控制链路 + 执行结果 + 操作日志 + 通道性能
- 设备卡片(参考存客宝):头像首字母 + 设备名 + 设备ID + 状态徽章 + 微信号/好友数
- 文件从2732行精简至2450行(-10%),函数从30000字符精简至17000字符(-43%)
3. 代码清理
- 移除旧函数:
_wxWorkspaceTab、getWechatManagedDevices、setWechatWorkspaceTab、setWechatWorkspaceFilter、wxInfoBlock、wxQuickField - 保留核心函数:
wxStatusTone、wxHealthScore、selectWechatWorkspaceDevice、wxReadInput
4. 验证结果
/hub?tab=wechat200正常,三栏布局渲染完美/wechat200正常,旧页面完好- JS控制台零错误
- S2引用: 0处,模板语法: 0处异常
2026-03-20(续13)| 微信号管理工作台四板块深度完善 + S2 引用全清除
执行人: 全员协作(阿机/阿桥/阿端/阿服/阿表)
完成内容
1. S2 引用全面清除
sdk/app/static/hub.html:清除所有 7 处 S2 相关文字- "参考 S2「微信号管理」" → "以账号视角出发"
- "S2 参考字段映射" → "管理维度总览"
- "S2 式筛选器" → "高级筛选器"
- "与 S2 对齐的业务思路" → "业务演进路线"
- 页面标题描述文字全部替换为独立表述
2. 微信号台账(accounts)全面增强
- 新增综合健康度指标卡 + 健康度进度条
- 设备详情卡增加渐变边框(随状态变色)
- 新增设备统计面板(WS在线/ADB连接/微信运行/离线 分类计数)
- 快捷操作新增"未读消息"和"搜一搜"入口
- 筛选器改为按钮式切换(全部/在线/ADB/离线)
3. 客户与标签(customers)全面增强
- 新增"联系人检索"面板(支持类型筛选:好友/群聊/公众号)
- 标签管理独立卡片化
- 新增"聊天记录查询"面板(拉取聊天记录/搜索消息/未读消息)
- 好友运营独立卡片(添加好友/设置备注/通过好友)
- 底部新增"更多原子能力"快捷按钮区
4. 社群与内容(groups)全面增强
- 群聊管理和朋友圈运营分两列展示
- 新增"消息与内容分发"面板(发送消息/批量群发/发名片)
- 新增"社群运营建议"指引卡片
- 底部保留标签/群发/位置/名片/搜一搜/截屏等原子能力
5. 执行中心(execute)全面增强
- 新增"快捷消息"面板(发消息/批量发送/发文件)
- AI/指令协同保留三种模式(模式指令/AI执行/AI解析)
- 新增 3 个 SOP 模板卡片(客户触达/社群活跃/风险兜底),可一键执行
- 新增执行日志与结果区域
6. 验证结果
/health返回 200,服务健康/hub?tab=wechat返回 200,微信工作台渲染正常/wechat返回 200,旧页面完好- 浏览器验证:无 JS 错误,所有板块正常渲染
- S2 关键词搜索结果: 0 条
2026-03-20(续12)| 微信号管理工作台重构 + S2 安装部署说明归档 + 在线验证
执行人: 全员协作(阿机/阿桥/阿端/阿服/阿表)
完成内容
1. 微信板块业务重构(阿端)
sdk/app/static/hub.html:- 左侧导航
微信控制调整为微信号管理 - 将原“96 个 action 表单页”重构为四层工作台:
- 微信号台账
- 客户与标签
- 社群与内容
- 执行中心
- 保留原有底层接口与执行能力,页面只暴露高频业务入口
- 页面设计参考 S2「微信号管理」形态,但收口为设备微信管理所需的能力,不再直接铺满原子动作
- 左侧导航
2. S2 调研包补充(阿桥/阿服)
/Users/karuo/Documents/卡若Ai的文件夹/报告/S2私域管理后台_功能与接口调研/05_工作手机服务端_Root与安装部署说明.md- 说明 Root 是否必须
- 整理服务端 / 设备端所需安装项
- 给出 ADB、Agent、Hook/Frida、Docker、多服务器注册中心的落地步骤
- 明确哪些板块优先保持可用:总览 / 微信号管理 / 设备控制 / 对接网关
- 同时更新该目录
README.md索引
3. 在线自检(阿机)
- 重启 SDK 服务端:
python3 -m uvicorn main:app --host 0.0.0.0 --port 8899 /health返回:devices_online: 0adb_devices: 2adb_serials: ["dc9c23e00510", "192.168.1.126:5555"]
/api/v3/devices返回 2 台adb设备,设备型号Redmi 21121119SCPOST /api/v3/adb/devices/dc9c23e00510/app/start启动微信成功:com.tencent.mm/.ui.LauncherUI
POST /api/v3/adb/devices/dc9c23e00510/screenshot成功:1080 x 2400base64_len = 405512
GET /hub?tab=wechat已返回新页面内容:微信号管理工作台微信号台账客户与标签社群与内容执行中心
结论
- 当前这台已连接手机已处于 ADB 可控 状态
- 服务端网站可正常打开并已切到新业务结构
- 微信控制链路至少已验证:
- 设备发现 ✅
- 打开微信 ✅
- 截屏 ✅
执行人: 阿机/阿端
完成内容
1. Root 权限获取
- 重装 Kitsune Mask Manager v31.0(旧版被工作 APP 封装无法打开 UI)
- 超级用户页面手动开启
[SharedUID] Shell权限 su -c 'id'→uid=0(root)确认 root 成功
2. Frida Server 部署
- Frida 17.8.1 Java 桥与设备不兼容,降级至 16.5.6
- frida-server-16 以 root 运行(
su -c '/data/local/tmp/frida-server-16 -D') - Java 桥正常工作,可读取 WeChat ART VM
3. Hook 脚本修复(wechat_hook_v2.js)
- WCDB 适配:
_execSQL改用com.tencent.wcdb.database.SQLiteDatabase已打开实例(WeChat 加密数据库) - 列修复: 移除
lvbuff/memberCount等不兼容列 - 版本兼容: 添加
8.0.69到_VERSION_TABLE - Profile ID 修正:
id=2是 wxid,id=4是昵称(原代码反了) - FridaManager:
_find_wechat_pid支持 "WeChat" 进程名 + adb fallback;call_rpc支持 camelCase→snake_case 转换
4. 功能验证结果(10/10 通过)
| 方法 | 结果 | 数据 |
|---|---|---|
| ping | ✅ | pong from wechat_hook_v3.0 — 96 actions / 26 modules |
| getWechatVersion | ✅ | 8.0.69 |
| getContacts | ✅ | 2294 个联系人 |
| searchContacts | ✅ | 搜索 "卡若" → 7 条 |
| getContactInfo | ✅ | 返回昵称/备注/类型 |
| getProfile | ✅ | wxid=wxid_gb5mi6ijhzxk22, nick=老坑爹 |
| getGroups | ✅ | 1 个群 |
| getMessages | ✅ | 历史消息可读 |
| hookStatus | ✅ | 5/5 hooks 激活 |
| versionCompat | ✅ | 8.0.69 精确匹配 |
待优化
- FridaManager
_on_session_detached回调线程竞争问题 - Frida 17.x Java 桥兼容(需等官方修复或升级设备 ROM)
进度
- Frida Hook 通道: 100% (全功能验证通过)
- 三通道就绪: ADB ✅ / WebSocket/u2 ✅ / Frida Hook ✅
2026-03-20(续10)| WiFi ADB + E2E 全量测试 + 三通道验证
执行人: 阿机/阿端
完成内容
1. WiFi 无线 ADB 打通
adb tcpip 5555→adb connect 192.168.1.126:5555成功- 双连接确认:USB(
dc9c23e00510) + WiFi(192.168.1.126:5555) 同时在线 - SDK 服务器识别
adb_devices: 2
2. E2E 安全模式测试结果(15 个 action / 9 组)
| 组 | 通过/总计 | 通道 |
|---|---|---|
| message | 2/5 | sdk_control + websocket/u2 |
| friend | 2/2 | websocket/u2 |
| group | 1/1 | websocket/u2 |
| tag | 1/1 | websocket/u2 |
| moments | 1/1 | websocket/u2 |
| profile | 2/2 | websocket/u2 |
| security | 1/1 | websocket/u2 |
| favorites | 1/1 | websocket/u2 |
| chat_settings | 1/1 | websocket/u2 |
| 合计 | 12/15 (80%) | 11/12 走 websocket/u2 |
3. Frida Server
- 设备端已有 frida-server (53MB arm64)
- Magisk (HuskyDG) 已安装但 su 需手机上确认授权弹窗
- 当前需手动在手机上允许 Root 权限
2026-03-20(续9)| WebSocket/u2 通道打通 + Agent 初始化修复 + channel_used 动态报告
执行人: 阿机/阿桥/阿端
完成内容
1. WebSocket Agent 连接打通
- Agent (
sdk/agent/agent.py) 通过ws://127.0.0.1:8899/ws/device/dc9c23e00510成功连接到服务器 devices_online: 1,设备注册确认,心跳稳定- 实现脱离 USB 线的无线控制路径:API → WebSocket → Agent → u2 → 手机
2. Agent 初始化 3 个错误修复
- RiskSentinel:
__init__参数device/on_alert→ 改为()无参;can_operate()→check(action);get_status()→get_stats() - SensorSimulator:
frida_mgr关键字 → 改为device=self.d - NurtureScheduler: 位置参数
self.d/phase→ 改为()无参;should_nurture()→get_nurture_plan() - 修复后防护状态从
✅❌❌✅→✅✅✅✅(Guard/Sentinel/Sensor/Touch 全绿)
3. channel_used 动态报告修复
unified.py97 处Channel.SDK_CONTROL.value硬编码 →result.get("_channel_used", "sdk_control")_execute_skill()函数增加_channel_used字段:websocket/frida、websocket/u2、adb/sdk_control、offline- 现在 API 响应准确反映实际执行通道
4. 通道验证结果
| 操作 | 通道 | 耗时 | 结果 |
|---|---|---|---|
| 获取联系人 | websocket/u2 | 25.8s | ✅ 200 |
| 账户状态 | websocket/u2 | 16.0s | ✅ logged_in=true |
| 获取个人资料 | websocket/u2 | 28.9s | ✅ nickname 返回 |
通道状态总结
- WebSocket + u2: ✅ 已打通(主要控制通道)
- ADB: ✅ 兜底通道(USB 连接时自动可用)
- Frida Hook: ❌ 未启动(设备端 Frida Server 未运行,需手动启动)
- AI Brain: ⬜ 未启用(需配置 API Key)
2026-03-20(续8)| D6 多服务器注册中心 + D7/D8 文档脚本 + 微信控制页设备列表修复
执行人: 全员协作(阿机/阿桥/阿端/阿服/阿表)
完成内容
根因修复(阿端/阿机)
- 微信控制页一直「无设备 / 离线」:
GET /api/v3/devices与GET /api/v3/adb/devices的data为设备数组,前端误用data.devices导致永远为空。 sdk/app/static/wechat_control.html:normalizeDeviceArray()+loadedDeviceList+ 切换设备时更新状态 + **「刷新设备」**按钮 + 无设备时明确提示(USB 授权 / Agent)。
设备列表复用(阿机)
sdk/app/services/device_fleet.py:list_merged_local_devices()抽取原get_devices逻辑。sdk/app/routers/devices.py:get_devices改为调用上述函数,行为不变。
D6 多服务器注册中心(阿机/阿桥)
sdk/app/services/registry_cluster.py:节点登记、心跳、静态WORKPHONE_REGISTRY_PEERS、HTTP 拉取对端/api/v3/devices聚合。sdk/app/routers/registry_cluster.py:/api/v3/registry/*(info、register、heartbeat、nodes、fleet/aggregate)。sdk/app/main.py:注册registry_cluster路由。
D7 真机(阿端)
sdk/scripts/real_device_connect_check.sh:一键 curl 健康检查、devices、adb、registry 聚合。
D8 上线手册(阿服/阿表)
开发文档/8、部署/上线与运维操作手册.md:部署形态、上线清单、ADB/WS 双路径在线说明、D6 环境变量与 API、故障速查。开发文档/5、接口/外部对接网关接口说明.md:新增 §八 多服务器注册 API。- 进度总表:Phase 4 → 85%;D6/D8 ✅;D7 标记为脚本就绪待真机跑满 5 台。
文件变更摘要
- 新增:
services/device_fleet.py,services/registry_cluster.py,routers/registry_cluster.py,scripts/real_device_connect_check.sh,开发文档/8、部署/上线与运维操作手册.md - 修改:
routers/devices.py,main.py,static/wechat_control.html,tests/test_wechat_full_e2e.py,开发进度总表.md,外部对接网关接口说明.md
2026-03-20(续7)| 外部对接网关完成 — REST/OpenAI/MCP 三协议 + 多设备Fleet + AI旅程
执行人: 全员协作(阿机/阿桥/阿端/阿服/阿表)
完成内容
GW1: 外部对接网关(阿机)
sdk/app/routers/gateway.py— 新建外部对接网关路由- OpenAI Compatible API:
/gateway/v1/chat/completions、/gateway/v1/models - MCP Protocol:
/gateway/mcp/tools(8个工具)、/gateway/mcp/call - REST 元信息:
/gateway/info - 修复
_execute_mcp_tool中错误的_execute_via_channel导入,改为直接使用adb_manager+WeChatADBEngine
- OpenAI Compatible API:
GW2: 多设备Fleet管理 + AI旅程追踪(阿机)
- Fleet 多设备管理:
/gateway/fleet/status、/gateway/fleet/broadcast - 设备分组:
/gateway/fleet/group、/gateway/fleet/groups - AI旅程追踪:
/gateway/journey/{device_id}、/gateway/journey - MCP工具调用时自动记录旅程
GW3: Hub.html 对接网关面板(阿端)
sdk/app/static/hub.html— 新增「对接网关」导航标签- 5个子标签:概览、多设备管理、AI旅程、MCP Tools、测试
- 概览:三种对接方式入口 + 在线设备数 + 旅程条目数
- 多设备管理:设备列表 + 广播命令 + 设备分组
- AI旅程:按设备分组的操作历史时间线
- MCP Tools:8个工具卡片 + 参数说明
- 测试:OpenAI 对话测试 + MCP 工具调用测试
D5: Docker + Nginx + 一键部署(阿服)
sdk/docker-compose.yml— workphone-sdk + website 双容器sdk/website/nginx.conf— Nginx 反代 + WebSocket 支持sdk/deploy.sh— 一键部署脚本(local/docker/stop/status/logs/health)
阿桥:外部对接文档
开发文档/5、接口/外部对接网关接口说明.md— 三种对接方式完整文档
阿表:进度更新
- 开发进度总表 Phase 4 → 65%(D5+GW1-GW3 完成)
- 工作日志更新
验证结果
✅ GET /api/v3/gateway/info → 200 OK
✅ GET /api/v3/gateway/fleet/status → 200 OK(检测到 1 台设备)
✅ GET /api/v3/gateway/journey → 200 OK
✅ GET /api/v3/gateway/mcp/tools → 200 OK(8 个工具)
✅ POST /api/v3/gateway/mcp/call → 200 OK(list_devices 成功)
✅ GET /api/v3/gateway/v1/models → 200 OK
文件变更
- 新增:
sdk/app/routers/gateway.py(外部对接网关) - 新增:
sdk/deploy.sh(一键部署) - 新增:
sdk/website/nginx.conf(Nginx 配置) - 新增:
开发文档/5、接口/外部对接网关接口说明.md - 修改:
sdk/app/main.py(+gateway 路由) - 修改:
sdk/app/static/hub.html(+对接网关面板) - 修改:
sdk/docker-compose.yml(双容器配置) - 修改:
开发文档/10、项目管理/开发进度总表.md
2026-03-20(续6)| 微信全链路打通 — 96个action / 29个模块 / 全功能控制面板
执行人: 全员协作(阿机/阿桥/阿端/阿服/阿表)
完成内容
Phase 1+2: WechatSkill 96个action全覆盖
sdk/agent/skills/wechat/skill.py— 从29个action扩展到96个action- 新增67个action: 消息(forward/recall/send_card), 好友(search/info), 群聊(quit), 朋友圈(delete/cover/privacy/link), 个人设置(profile/nickname/signature/avatar/gender/region), 账号安全(9个), 支付(7个), 聊天设置(3个), 收藏(2个), 小程序/公众号(2个), 视频号(6个), 扫一扫(4个), 通话(2个), 群发/搜索/发现(3个), 运动/位置/表情(6个), 语音/文件(3个), 设置管理(5个), 截图(1个)
- 修复10个不完整action: accept_friend(支持指定用户), delete_friend(完整资料页流程)等
- 每个action标注控制形式(Hook/u2/ADB)和预期耗时
Phase 3: 微信全功能控制面板
sdk/app/static/wechat_control.html— 新建网页控制面板- 18个侧边栏导航模块 + 全部API端点一览
- 每个模块含操作表单、参数输入、一键执行
- 右侧面板: 全链路状态监控(6层架构可视化)、执行统计、操作日志
- 三种控制通道性能对比表(Hook/u2/ADB)
Phase 3b: 路由注册
sdk/app/main.py— 新增/wechat路由 →wechat_control.html
Phase 4: E2E全功能测试脚本
sdk/tests/test_wechat_full_e2e.py— 全新E2E测试- 安全模式(只读+文件传输助手) / 全量模式(含写操作)
- 支持按组(
--group)或单action(--action)运行 - 自动检测设备、生成JSON测试报告
- 三种通道性能对比
三种控制通道性能
| 通道 | 原理 | 延迟 | 稳定性 |
|---|---|---|---|
| Frida Hook | 调用微信内部方法/读SQLite | 50-200ms | 依赖版本偏移表 |
| u2 UI自动化 | uiautomator2模拟点击 | 2-15s | 高,跨版本通用 |
| ADB Shell | adb命令+坐标 | 1-10s | 中,依赖分辨率 |
文件变更
- 修改:
sdk/agent/skills/wechat/skill.py(29→96 actions) - 修改:
sdk/app/main.py(+/wechat路由) - 新增:
sdk/app/static/wechat_control.html(全功能控制面板) - 新增:
sdk/tests/test_wechat_full_e2e.py(E2E测试)
融合到主页
- 微信控制面板已融合到
hub.html主页(侧边栏"微信控制"导航),不再独立页面 - 渲染函数
renderWechatPanel+ 96个action路由表WX_ACTION_ROUTES+ 执行函数wxExec
E2E 真机验证(dc9c23e00510 / Redmi Note 11)
- 健康检查: ✓ SDK healthy, ADB 1台设备
- 5个读操作端点(account/status, contacts, tag/list, profile/get, favorites/list): 全部 HTTP 200
- 通道:
sdk_control(ADB引擎),Agent未连接时自动走ADB - 部分ADB操作超时/坐标错误属正常(需Agent在线走u2通道提升稳定性)
访问方式
- 主页微信控制:
http://localhost:8899/?tab=wechat(已融合到主页) - 独立页面(兼容):
http://localhost:8899/wechat - E2E测试:
cd sdk && python3 tests/test_wechat_full_e2e.py - 全量测试:
cd sdk && python3 tests/test_wechat_full_e2e.py --full
2026-03-21 | 代码质量 + 性能 + 测试全面加固(阿端 + 阿机 + 阿服)
执行人: 阿端(联调)+ 阿机(后端)
完成内容
asyncio.get_event_loop()→get_running_loop():全项目 18 处修复(ws_hub.py、unified.py、devices.py、gateway.py、adb_device.py、connection_priority.py、discovery_service.py、auto_register.py),消除 Python 3.10+ DeprecationWarning。- Pydantic v2 迁移:
unified.py中req.dict()→req.model_dump()。 ws_hub.py命令响应变量名冲突:data重赋值改为normalized中间变量,避免遮蔽入参。- ADB 路由事件循环阻塞:
routers/adb.py所有 handler 从async def改为def,FastAPI 自动在线程池执行同步 ADB 命令。验证:ADB 操作 13s 执行期间/health仅 0.17s(修复前被阻塞同等时间)。 - Frida 测试 mock 修正:
test_frida_manager.py中sendMessagemock 改为send_message(call_rpc内部做 snake_case 转换),修复 2 个预存失败用例。 test_wechat_full_e2e.py:TestResult/TestReport改名为CheckResult/CheckReport,消除 pytest 收集警告。test_full_system.py超时调整:ADB 操作 timeout 从 10-15s 放宽到 30s(WiFi ADB 延迟高达 13s),末尾 Home 键请求加 try-except 容错。- 全链路集成测试:SDK(8899)+ 真机(dc9c23e00510)→ 14/16 ADB 测试通过;输入文字/点击文字因设备状态(无焦点输入框)可控失败。
测试结果
pytest tests/ -q→ 54 passed, 0 warningstest_full_system.py→ 14/16 通过(健康/根/文档/设备列表/设备详情/截图/UI树/点击/滑动/Home/Back/当前APP/APP列表/统一发送 ✅)
2026-03-20(续5)| 测试基建:pytest 可安全收集 + 全量脚本与 E2E 命名分离
执行人: 阿端(联调 / 测试)
完成内容
tests/test_full_system.py:模块级 HTTP 改为仅main()执行,避免pytest收集阶段连本地 8899 即崩溃;test_*改名为check_*/run_check;ADB 信息不再写死android_version == "14";支持SDK_BASE_URL/SDK_API_KEY环境变量。- 脚本型 E2E 与 pytest 分离:
test_api.py、test_ai_brain_e2e.py、test_wechat_e2e.py、test_hook_e2e.py中将可被 pytest 误收集的async def test_*改名为check_*,仍通过python3 xxx.py跑全链路。 sdk/requirements.txt:增加pytest、pytest-asyncio(建议在 venv 安装);sdk/pytest.ini:指定testpaths;tests/conftest.py:说明异步 E2E 与pytest-asyncio的配合方式(占位)。- 本机验证:
cd sdk && python3 -m pytest tests/ -q→ 54 passed(无 SDK 在线亦可绿)。
说明
- 全系统脚本:
python3 tests/test_full_system.py(需 SDK + ADB)。 - 微信 / Hook / AI Brain E2E:仍以各文件
if __name__ == "__main__"为准,见机擎/SKILL.md§〇.六。
2026-03-20(续3)| WebSocket 通道调通 + 微信发消息 E2E 验证
执行人: 阿机(Agent + 服务端)
完成内容
- Agent config 修正:
server_url从错误 IP192.168.1.100改为127.0.0.1,Agent 终于连上本地 SDK Server。 - Docker 端口冲突排查:Docker 容器
workphone-sdk与本地 Python Server 同时监听 8899(IPv6 vs IPv4),API 请求被 Docker 容器拦截导致走 ADB。停止 Docker 容器解决。 - 僵尸进程清理:多个旧 Agent 进程残留,互相争抢 WebSocket 注册,导致连接反复断线。全部
pkill -9清理后单实例启动正常。 - 心跳宽容模式:ACK 超时从
interval * 3(30s)放宽到 300s,避免 u2 阻塞导致误判心跳丢失。 - WechatSkill 坐标修复(1080x2400 设备):
- 搜索图标:
(W*0.89, H*0.069)→(W*0.82, H*0.06)— 原坐标偏到了 + 号 - 搜索结果点击:
H*0.183→H*0.20(y=480)— 原坐标打不到搜索结果行 - 输入框聚焦:
H*0.971→H*0.955— 更精准 - 发送按钮:
W*0.93→W*0.91,并增加set_input_ime替代已废弃的set_fastinput_ime
- 搜索图标:
- E2E 全链路验证通过:
curl → /api/v3/hook/execute → WebSocket → Agent → u2 坐标自动化 → 微信消息发送成功(文件传输助手收到 "E2E 验证 20:14:00")。
当前状态
- 通道:WebSocket Agent + u2 坐标自动化(无 Root、无 Frida)
- 可用操作:send_message(文件传输助手验证通过)
- 注意事项:Docker 容器勿与本地 Server 同端口共存;Agent 需单实例运行
2026-03-20(续4)| 机擎:飞书群复盘触发 + SKILL 完善
执行人: 火炬(机擎)
完成内容
- 按卡若复盘五块格式推送飞书群(Webhook:
send_feishu_review.py,含「工作手机」关键词)。 机擎/SKILL.md新增 §3.2.1「完整功能交付时必触发飞书群复盘」、格式/关键词/命令自检说明;触发词增加「飞书复盘」「功能复盘」等。验收与项目说明.md§7.2 与卡若五块对齐;§7.3 明确完整功能必推。机擎/scripts/send_feishu_review.py文档字符串补充五块与文档索引。
2026-03-25 | NAS 一体化部署:docker-compose.nas.yml + rsync 脚本 + 文档 §二点七
执行人: 阿服(部署)
完成内容
sdk/docker-compose.nas.yml:Mongo7 + Redis7 + SDK + website,内网端口 8880/8899,默认关闭 AI Brain。sdk/.env.nas.example、sdk/scripts/deploy_nas_rsync.sh(NAS_USER/NAS_HOST/NAS_DIR)。开发文档/8、部署/本地Docker部署指南.md§二点七(访问地址、防火墙、ADB/开发文档挂载说明)。
2026-03-20(续三)| Docker 长期防护:LaunchAgent 引擎守护 + 窗口重置脚本
执行人: 阿服(部署)
完成内容
sdk/scripts/docker_engine_guard.sh:com.docker.backend在跑且docker info限时失败 →docker desktop restart;launchd 友好 PATH;--dry-run/--open-ui。install_docker_engine_guard.sh:安装/卸载 LaunchAgent(每 10 分钟);脚本副本 至~/Library/Application Support/com.workphone/(避免从文稿路径执行 Operation not permitted)。reset_docker_desktop_window.sh:退出 Docker 后删除window-management.json(备份)。本地Docker部署指南.md§二点六(安装/卸载/日志/菜单栏说明);本机已执行安装并kickstart验证日志输出。
2026-03-20(续二)| Docker Desktop:引擎卡死致无界面 + 文档/脚本加固
执行人: 阿服(部署)
完成内容
- 本机诊断:
docker version曾 500;com.docker.backend.log为 context deadline exceeded(Linux VM 引擎无响应),docker desktop restart后引擎恢复。 open_docker_desktop_gui.sh改为:先docker desktop restart等待docker info,再open内嵌 Docker Desktop.app +docker-desktop://dashboard。- §二点五 区分 引擎异常 vs 仅界面找不到;补充菜单栏折叠、删除
window-management.json重置窗口。
2026-03-20 | macOS:Docker Desktop 界面唤起脚本 + 部署文档
执行人: 阿服(部署)
完成内容
sdk/scripts/open_docker_desktop_gui.sh:open -a Docker+docker-desktop://dashboard。开发文档/8、部署/本地Docker部署指南.md新增 §二点五(菜单栏鲸鱼、调度中心、彻底退出等)。
2026-03-20 | Docker:新增 website 服务(Nginx 反代 SDK)
执行人: 阿服(部署)
完成内容
sdk/website/Dockerfile+sdk/website/nginx.conf:容器名workphone-website,8880→80 反代workphone-sdk:8899(含 WebSocket Upgrade)。sdk/docker-compose.yml增加website服务,depends_on: workphone-sdk。开发文档/8、部署/本地Docker部署指南.md:端口表与 3.1 启动说明(docker compose up -d --build、访问 http://localhost:8880)。sdk/requirements.txt增加python-multipart,否则 Docker 内 FastAPI(hook_modules表单路由)启动失败、website 反代 502。
2026-03-20(续)| 无 Root 微信:无障碍自动化 + 文档
执行人: 阿机(Android SkillExecutor)+ 阿端(手册)
完成内容
- 新增
WechatNoRootAutomation:get_wechat_version(PackageManager)、send_message(无障碍点击搜索/会话/发送)、get_hook_status等桩说明非 JS Hook。 SkillExecutor.executeWithFridaPriority在 Frida 未就绪时优先走 Channel 1b 无 Root 微信;get_contacts/get_messages/get_profile明确返回 501 说明。AgentAccessibilityService.clickFirstMatchingText辅助点击文案节点。FridaBridge/AgentForegroundService日志说明无 Root 时走无障碍。sdk/docs/设备端Hook版本安装与服务端对接手册.md增加 §2.0 无 Root 对照表与要求。
2026-03-20 | Hawk Hook 微信:修复 Agent HookExecutor 调用 + hook_only + 冒烟脚本
执行人: 阿机(Agent/unified/ws_hub)
完成内容
- 修复
sdk/agent/agent.py:HookExecutor.execute误传(script, action, params)导致 Hook 通道异常/恒降级 u2;改为execute(action, params),且仅script=="wechat"时走 Frida RPC。 - hook_only:
HookExecuteRequest.hook_only+_execute_skill(..., hook_only);Agent 在 hook_only 时禁止 u2 降级;ADB 模式遇 hook_only 直接返回说明(不冒充 HWK)。 - ws_hub:Android 扁平 execute 时保留
script、hook_only;Agent execute 合并顶层字段兼容扁平协议。 - 联调脚本
sdk/tests/hook_wechat_hwk_smoke.py:顺序调用 get_hook_status / get_wechat_version / get_process_info / check_login_state / get_profile / get_contacts(可选 send_message)。
备注
- 本机
adb devices若显示 unauthorized,需在手机上点允许 USB 调试后重试。
2026-03-19 | 工作手机项目上传 Gitea 并添加协作者 wong + 上传后校验流程
执行人: 阿服(部署/仓库)
完成内容
- 使用 Gitea API 在 open.quwanzhi.com 创建仓库
fnvtk/workphone-sdk(描述:工作手机SDK v3.0 — 存客宝 AI 手机控制引擎) - 通过 API 将用户 wong 添加为仓库协作者,权限:write(拉取+推送)
- Gitea 仓库已有内容(empty=false, size≈67MB),推送已就绪
- 上传后检查:更新
scripts/sync_to_gitea_github.sh,推送后自动调用 Gitea API 校验(empty/size/commits);设置GITEA_PASS时执行校验 - 开发文档 8、部署/README.md 增加「Gitea 上传与校验」流程:禁止 SSH 建仓,必须 API 建仓 → 推送 → 上传后检查
仓库与协作者
- Gitea: http://open.quwanzhi.com:3000/fnvtk/workphone-sdk
- 协作者: wong(写权限,已添加)
- 远程名:
gitea(已配置,含 token 认证)
使用方式(以后按此节上传并检查)
- 建仓:仅用 Gitea API 或网页创建,禁止 SSH 手动建目录。
- 同步:
bash scripts/sync_to_gitea_github.sh(会先提交未提交变更再推送)。 - 校验:
GITEA_PASS=密码 bash scripts/sync_to_gitea_github.sh会在推送后自动校验仓库非空。
2026-03-17 02:00 | AI数智员工 PWA 深度 Mock 清理(第二轮)
执行人: 全员(阿端UI + 阿机API + 阿表验收)
完成内容
- profile/account-assets 资产页:核心指标(客户总数、好友数、转化率、健康度)对接
statsService+customerService+wechatService,估值模型数值动态计算 - 首页 mockCustomerValuations(5条mock客户):完全删除,替换为
customerService.getPotentialList+friendService.getListAPI 实时搜索 - 首页 3 处 alert("开发中"):替换为 AI 对话消息提示(符合聊天式交互体验)
- chat/page.tsx 消息中心:确认 localStorage 是正确方案(客户端推送通知),保留
- chat/history 对话历史:确认 localStorage 是正确方案(AI本地对话),保留
编译结果
npx next build✅ 0 错误,28/28 页面全部通过
Mock 残留状态
- 已消除:所有可对接 API 的 mock 数据已全部替换
- 合理保留:chat 消息中心(localStorage 通知)、chat 历史(本地AI对话)— 这些是客户端特性,不需要后端 API
2026-03-17 01:00 | AI数智员工 PWA 全页面 Mock→真实API 对接
执行人: 全员(阿端UI改造 + 阿机API对接 + 阿桥service层 + 阿表编译验收)
完成内容
- wechat-accounts/[id] 微信账号详情页:对接
wechatService.getDetail,替换全量 mock 数据 - contacts 联系人页:对接
friendService.getList,支持搜索/分页/加载更多 - group-sync 社群管理页:对接
chatroomService.getList,支持搜索/分页 - settings 设置页:
useEffect自动加载真实设备(deviceService)和微信(wechatService)状态 - data-center 5个分析页:全部替换硬编码为 API 调用
- traffic-analysis →
statsService全量接口 - assets-analysis →
statsService.getBaseInfo+customerService.getStatistics - wechat-analysis →
wechatService.getOverview+wechatService.getMoments - tasks-report →
statsService.getPlanStats+statsService.getToday - customers-analysis →
statsService.getBaseInfo/getCustomer7Days+customerService.getStatistics
- traffic-analysis →
- customers/add 客户添加页:
handleSubmit对接真实好友请求 API
编译结果
npx next build✅ 0 错误,28/28 页面全部通过- 所有页面均有 API 失败时的 fallback 机制,保证离线可用
下一步
- 部署测试环境验证真实数据展示
- profile/account-assets 资产页对接(需新 API)
- chat/history 聊天历史对接
2026-03-16 23:30 | AI数智员工 PWA × 存客宝 扫码绑定全链路对接
执行人: 全员(阿服配置 + 阿桥API服务层 + 阿端UI组件 + 阿表进度验收)
完成内容
API基础设施对接(承接上轮7Phase门店端API全量对接)
- next.config.mjs 新增3条代理路由:存客宝设备API
/api/ckb-device/+ SDK QR/api/sdk/qrcode/+ SDK连接状态/api/sdk/connection/ - routes.ts 新增
DEVICE_BIND路由常量组(7个端点) - 新建
device-bind-service.ts:generateCkbBindQR / generateSDKBindQR / getConnectionStatus / pollBindResult / getCkbDeviceList - 更新
app/api/index.ts统一导出
扫码绑定UI组件(DeviceBindDialog)
- 全新
DeviceBindDialog.tsx替代原ScanQRCodeDialog.tsx - 四步流程:generate → waiting → success → error
- 双通道绑定:优先SDK服务器QR → 回退存客宝QR
- 轮询机制:3秒间隔,最多120轮,自动检测设备上线
- 配置可编辑:服务器地址 + 项目标识可手动修改
页面集成
- 首页(page.tsx):顶部扫码按钮
crop_free触发 DeviceBindDialog,绑定成功自动推送AI消息 - 设备状态页(device-status/page.tsx):顶部栏新增
+绑定按钮,绑定成功自动刷新设备列表
编译验证
npx next build通过,30个路由零错误
全链路扫码绑定流程
PWA首页/设备页 → 点击扫码/+ → DeviceBindDialog
→ 调用 SDK /api/v3/qrcode/generate(优先)
→ 或 存客宝 /v1/api/device/add(回退)
→ 展示二维码 → 手机APP扫码
→ APP解析JSON → 连接WebSocket → register
→ PWA轮询 /api/v3/connection/status
→ 检测到设备上线 → 显示绑定成功
进度
- AI数智员工 PWA × 存客宝 全模块API对接:100%
- 扫码绑定功能:100%(代码完成,待真机验证)
- 下一步:部署到测试环境,真机扫码验证端到端流程
2026-03-16 21:00 | AI数智员工 v4.0 优化迭代 — 品牌/UI/连接/架构图/文档全面升级
执行人: 全员(火炬统筹 + 阿机连接优化 + 阿桥hub桥接 + 阿端UI品牌 + 阿服架构图文档)
完成内容(7个Phase全部完成)
Phase A: 图标品牌
- 松鼠图标转5密度Android mipmap资源(mdpi→xxxhdpi)+ adaptive icon foreground
- 色彩系统从暗色切换为浅色主题(匹配AI数智员工PWA #F0F5FF)
- Material3 Light主题,状态栏/导航栏全浅色
Phase B: UI/UX优化
- 底部导航重构:首页(PWA) → 控制台(Hub) → 状态 → 设置
- 首页默认显示AI数智员工PWA(原为hub.html)
- SetupActivity增加手动输入功能 + 品牌按钮样式
- StatusFragment/SettingsFragment改用Card布局
- 新增btn_brand.xml、btn_outline.xml、ic_nav_home.xml、ic_nav_status.xml
Phase C: 连接绑定优化
- AgentEngine.buildWsUrl() 智能URL构建(自动拼接 /ws/device/)
- 修复heartbeat重连bug(原代码
wsManager.connect("${wsManager}")→ 正确URL) - 保存 serverUrl 字段用于断线重连
- PWAFragment注入NativeAgent桥 + 设备上下文
Phase D: 工作台升级
- hub.html品牌更名"AI数智员工·控制台"
- API基地址兼容WebView(file://协议时通过NativeAgent桥获取服务器地址)
- 同步更新Android assets/hub.html
Phase E: 整合修复
- HubFragment.executeCommand实际执行命令(不再是空壳)
- 清理SettingsFragment中IntentIntegrator无用导入
- BUILD SUCCESSFUL — 7.0MB(零错误,仅无害警告)
Phase F: 架构图
- 创建完整HTML交互式架构图:AI数智员工v4.0架构图.html
- 5层架构(业务前端→SDK服务端→Android APK→工作流程→五通道)
Phase G: 文档更新
- 系统架构.md 添加 § 〇(v4.0)章节
- 开发进度总表.md 新增 Phase 10: v4.0 APK(V1-V12全完成)
- 工作日志更新
当前进度: Phase 10 v4.0 = 100%
下一步
- Release签名构建(正式keystore)
- 真机部署测试(USB + WiFi ADB批量安装)
- PWA与APK联调(WebSocket连接、扫码绑定、A11y自动化)
2026-03-16 20:35 | AI数智员工 v4.0 统一APK — 全8阶段完成,编译成功
执行人: 全员(火炬统筹 + 阿机后端引擎/防封 + 阿桥Frida桥接 + 阿端UI重构 + 阿服构建部署)
完成内容(Phase 8 最终构建阶段)
核心成果: 单一 APK 编译成功 — 6.9MB
- 修复 4 处 Kotlin 类型推断错误(SkillExecutor.kt + HookExecutor.kt 中
mapOf显式声明<String, Any?>) - APK 路径:
sdk/android-app/app/build/outputs/apk/debug/app-debug.apk - APK 包含: 9个dex、assets/hub.html 工作台、assets/wechat_hook_v2.js Frida脚本
全 8 个阶段已完成:
- Phase 1: 项目基础重构 — 包结构/依赖/Manifest ✅
- Phase 2: AgentEngine — OkHttp WebSocket + Coroutines Flow ✅
- Phase 3: SkillExecutor — Frida优先 → A11y → Shell 三级降级 ✅
- Phase 4: AIBrain — 任务队列 + LLM决策 + 离线缓冲 ✅
- Phase 5: 防封模块 Kotlin 全量重写(5模块)✅
- Phase 6: FridaBridge — 可选Root + Frida集成 ✅
- Phase 7: UI重构 — 单Activity + 4个Fragment + BottomNav ✅
- Phase 8: 构建部署 — APK打包/脚本更新/清理Termux ✅
新架构模块清单(全Kotlin,无Python依赖):
| 包路径 | 文件 | 功能 |
|---|---|---|
| engine/ | AgentEngine, WebSocketManager, ProtocolHandler, SkillExecutor | 核心引擎 |
| ai/ | AIBrain, LLMClient | AI大脑 |
| antiban/ | AntiBanManager, RiskSentinel, NurtureScheduler, DeviceGuard, TouchHardener, SensorSimulator | 防封6件套 |
| frida/ | FridaBridge, FridaServerManager, HookExecutor | Frida集成 |
| service/ | AgentForegroundService, AgentAccessibilityService, BootReceiver | 系统服务 |
| ui/ | MainActivity, SetupActivity, HubFragment, PWAFragment, StatusFragment, SettingsFragment | 界面 |
| util/ | Logger, ShellExecutor, DeviceInfo | 工具 |
| root | App.kt | Application入口 |
当前进度: 100% 编译通过
下一步
- Release 签名构建(正式签名 APK)
- 真机部署测试(USB + WiFi ADB 批量安装)
- 联调测试(WebSocket 连接服务端、QR扫码绑定、Frida Hook 注入)
2026-03-16 | AI数智员工统一安装包 — 5端合一封装(早期版本)
执行人: 全员(火炬统筹 + 阿机APK改造/防封 + 阿桥Agent脚本 + 阿端扫码绑定 + 阿服部署脚本)
完成内容
任务1: Android APK 改造(包名伪装 + PWA 合并)
- 包名从
com.workphone.agent伪装为com.system.cloudservice - App 名称改为「AI数智」,通知栏显示「云同步服务」
- 15 个 Kotlin 源文件迁移到新包路径
- 新增
SetupActivity.kt— 首次扫码绑定入口 - 新增
WebViewFragment.kt— 内嵌 AI数智员工 PWA 界面 - 新增
TermuxBootstrap.kt— 自动检测/部署 Termux Agent - build.gradle: versionCode 3, buildConfig 注入 PWA_URL/DEFAULT_WS
任务2: 防封模块 4 个缺失文件补全
risk_sentinel.py— 风控哨兵(频率控制/抖动/告警/冷却)touch_hardener.py— 触摸加固(贝塞尔曲线/坐标偏移/时长随机)sensor_simulator.py— 传感器模拟(加速度计/陀螺仪/root降级)nurture_scheduler.py— 养号调度(7天递增/时段分布/行为计划)
任务3: Agent 安装脚本伪装改造
- 目录名
workphone-agent→cloud-sync - 新增
--auto全自动模式、--disguise痕迹清理模式 - Frida 进程名随机化(8位随机字母)
- 启动脚本/日志文件名全部伪装
任务4: 一键批量部署脚本 master_deploy.sh
- USB Hub + WiFi ADB 双模式设备发现
- 自动安装 APK + 授权全部权限 + 无障碍服务
- 自动部署 Termux Agent + 防封自检
- 电池优化白名单 + 保持唤醒
- 部署结果汇总报告
任务5: 扫码绑定流程
- SetupActivity 首次启动 → 扫码 → 解析 JSON(server/project/token/pwa)
- 自动启动 AgentService WebSocket 连接
- 触发 TermuxBootstrap 部署 Agent
- 绑定成功后跳转 PWA 主界面
任务6: 构建发布包脚本 build_release.sh
- 一键构建: APK + agent.tar.gz + 部署脚本 → zip 发布包
- 支持 debug/release 模式
变更文件清单
- 新建: SetupActivity.kt, WebViewFragment.kt, TermuxBootstrap.kt
- 新建: risk_sentinel.py, touch_hardener.py, sensor_simulator.py, nurture_scheduler.py
- 新建: master_deploy.sh, build_release.sh
- 新建: activity_setup.xml, fragment_webview.xml
- 改动: build.gradle, AndroidManifest.xml, strings.xml, AgentService.kt, MainActivity.kt, install.sh
- 迁移: 15个Kotlin文件 com.workphone.agent → com.system.cloudservice
进度
- 总进度维持 98%(代码完成,待真机验证)
- 下一步: 真机编译APK → 批量部署测试 → E2E扫码绑定验证
2026-03-16 | 设备端深层防护模块全量植入 (AF13-AF18)
执行人: 阿机(设备端防护开发)+ 阿桥(集成对接)+ 阿表(进度验收)
完成内容
新建 sdk/agent/anti_ban/ 模块目录(5个核心防护组件):
device_guard.py— 设备环境守卫:8项自检(Root隐藏/Frida反检测/设备指纹/模拟器/SELinux/App隐藏/危险属性/无障碍服务)sensor_simulator.py— 传感器噪声注入:后台线程持续注入加速度计/陀螺仪微噪声,simulate_hand_shake模拟手持抖动touch_hardener.py— 触摸事件加固:3通道随机注入(shell 60%/API 30%/sendevent 10%),无障碍服务动态开关nurture_scheduler.py— 自动养号调度:新号/成长/成熟三阶段预算控制,7:00-22:30时段自动执行浏览/阅读/空闲等6类养号动作risk_sentinel.py— 运行时风控哨兵:5级风控响应(正常→警戒→暂停30min→暂停2h→完全停止),屏幕弹窗实时扫描+自动关闭
agent.py 深度集成:
_init_anti_ban()— 启动时初始化全部5个防护模块- 注册事件增加
anti_ban字段(自检报告+模块状态) _execute_command()前置风控检查(RiskSentinel.can_operate)_nurture_loop()并发任务(每15分钟养号检查)stop()/stop_async()清理防护模块_get_device_info()增加防护模块状态上报_on_risk_alert()风控告警实时上报服务器
base.py + skill_executor.py 集成:
BaseSkill.__init__新增anti_ban_ctx参数,自动注入 risk/touch/sensorhuman_click()— 风控前置检查 + 传感器微抖动 + 触摸加固通道human_swipe()— 传感器手持模拟 + shell加固通道优先natural_behavior_before/after()— 根据风控等级动态调整延迟倍率SkillExecutor新增anti_ban_ctx参数,全部 Skill 自动注入防护上下文
更新文档
- 防封策略文档 v2.0(新增第八章:设备端深层防护实现索引)
- 开发进度总表(AF13-AF18 全部完成)
2026-03-16 | Frida Hook 全功能扩展 — 116 个操作 / 24 模块
执行人: 阿机(Hook 开发)+ 阿桥(接口对接)+ 阿表(进度)
完成内容
wechat_hook_v2.js → v3.0(全功能微信控制):
- 从 27 个 RPC 操作扩展到 96+ 个 RPC 操作
- 新增模块:H23 账号管理、H24 账号安全、H25 支付、H26 二维码、H27 视频号
- 新增模块:H28 标签、H29 收藏、H30 设置、H31 搜索、H32 小程序
- 新增模块:H33 文件传输(图/视频/文件/语音/位置/名片/链接)
- 新增模块:H34 消息转发、H35 注册/登录、H36 公众号、H37 表情
- 新增模块:H38 浮窗、H39 设备信息(型号/存储/网络)
- 新增
_intentAction()通用 Intent 调度器,所有非 DB 操作统一走此 - 新增
batchExecute批量执行(单次调用多个操作) - DB 直读覆盖:联系人/消息/群/朋友圈/标签/收藏/公众号/用户信息
hook_executor.py → v3.0(全映射):
- ACTION_TO_RPC 从 27 条扩展到 116 条
- 新增 MODULE_NAMES 模块名称映射(24 个模块)
- 新增
get_supported_actions()/get_status()增强状态查询
unified.py hook/execute 端点增强:
- 新增
GET /api/v3/hook/actions接口 — 返回 96 个操作清单(按 24 模块分组) POST /api/v3/hook/execute增强响应格式,携带 action + channel_used- HOOK_ALL_ACTIONS 全量操作字典内置
技术要点
- Frida Hook 通道优先级:Frida RPC → WebSocket Agent → ADB UI 自动化
- 三种连接模式不变:USB(需 Root)、Gadget(免 Root)、Remote(WiFi 远程)
- 脱离 USB 路线:Gadget 监听 0.0.0.0 + FridaManager remote 模式
文件变更
sdk/agent/hook/wechat_hook_v2.js— v2.1 → v3.0(96+ RPC 操作)sdk/agent/hook/hook_executor.py— 27 → 116 映射sdk/app/routers/unified.py— hook/actions + hook/execute 增强
下一步
- 设备授权恢复 + Frida Gadget 注入微信 APK
- 卡若AI 网关 (18080) 集成工作手机 SDK 接口
- 真机 Frida Hook 全功能验证
2026-03-16 | 文档隔离与开发分工 + 统一接力文档
执行人: 火炬(总控)
完成内容
文档隔离方案设计与落地:
- 学习卡若AI协同规范(文件写入权归属制、任务交接单、Pipeline、跨组收敛)
- 搜索 GitHub 多 Agent 协同方案(Scout-and-Wave 文件隔离、Agyn 角色沙箱、Orchestrator 任务分发)
- 设计五人文件写入权归属表:阿表→10项目管理、阿机→6后端、阿桥→5接口、阿端→4前端+9手册、阿服→7数据库+8部署
- 写入机擎 SKILL.md § 五「文档隔离与开发分工」
- 创建统一开发接力文档
机擎/references/开发接力文档.md - 定义跨区域协作规则:不直接改对方文件,通过接力单传递
- 定义开发流水线 Pipeline:需求→阿表→阿机→阿桥→阿端→阿服→阿表→火炬
关键规则:
- 谁负责谁写入,其他人只读
- 跨区域走接力单,不直接改对方文件
- 工作日志各写各的段落
- 紧急情况火炬可裁决并记录
下一步: 各角色确认管辖范围;后续开发按接力文档流转
2026-03-16 | 工作台整站重构 + 架构图体系 + 经验沉淀规则
执行人: 全员(火炬总控 + 阿机后端 + 阿桥对接 + 阿端前端 + 阿服部署 + 阿表进度)
完成内容
工作台整站重构(W1-W7):
- hub.html 整体重写为统一站内工作台,去掉 iframe
- 说明文档改为"总览卡片 + 站内正文页"(Markdown 渲染)
- 设备控制融合进工作台(列表、详情、截图、快捷操作、AI 对话)
- Hook、AI Agent、连接协议改为站内原生面板
- 新增统一 DTO 接口:/api/v3/workbench/overview、/docs、/docs/{id}
- 新增开发文档静态挂载:/workbench-docs
- 存客宝 PHP 聚合接口同步消费统一 DTO
- 存客宝 React 页面重构为新数据结构
架构图体系(A1-A9):
- 生成 12 张中文架构图(系统架构、交互流程、设备端运转、Agent 工作流、Hook 交互、防封模块、防封拆细、5 种控制模式)
- 清理重复和英文架构图(删除 SDKv3 英文版 + 微信控制重复版)
- 全部架构图注册到 /api/v3/workbench/docs 接口,工作台可直接展示
经验沉淀规则(E1-E4):
- 写入长期记忆:每次对话结束做经验沉淀
- 在业务需求.md 新增"对话沉淀需求"章节,后续所有对话产出的需求追加到此
- 说明文档空白 bug 修复:openDoc 里 DOM 重建时序问题
关键文件变更:
- sdk/app/static/hub.html — 整体重写
- sdk/app/main.py — 新增 workbench 接口 + 架构图扫描 + 文档渲染
- sdk/requirements.txt — 新增 markdown 依赖
- cunkebao_v3 controller + index.tsx — 同步重构
- 开发文档/1、需求/业务需求.md — 新增对话沉淀需求章节
进度: 工作台重构已完成;架构图体系 12 张已就绪;经验沉淀规则已落地
下一步: N1 工作台视觉增强、N2 设备控制右侧抽屉、N3 控制模式对比总览图
2026-03-16 | 设备部署:Redmi 21121119SC Soul + Hook + Agent 安装
执行人: 阿机(设备部署)+ 阿服(环境)
设备信息
- 型号: Redmi 21121119SC (selene)
- Android: 11 | 架构: arm64-v8a | Root: Magisk
- 序列号: dc9c23e00510
- 连接方式: Type-C USB
完成内容
- Soul APP 安装 — 从 APKPure 下载 XAPK (284MB),拆包后
adb install-multiple安装成功- 包名: cn.soulapp.android
- 启动 Activity:
.component.startup.main.MainActivity
- Frida Server 部署 — v17.8.1 arm64,已推送到
/data/local/tmp/frida-server- 非 root 下可枚举进程;root attach 需手机上 Magisk 授权(待操作)
- uiautomator2 UI 控制验证 — 验证通过,可完全控制设备 + Soul APP
- Agent 终端安装(Termux 内
~/workphone-agent/)- Python 3.13.12 + websockets 16.0 + uiautomator2 3.5.0 + httpx 0.28.1 + Pillow 12.1.1
- config.json 已配置(device_id=dc9c23e00510, server=ws://192.168.1.100:8899/ws/device)
- Soul Skill 已包含在 agent 包中
- package.sh 更新 — 新增 Soul 技能目录到打包脚本
待操作
- 手机上 Magisk 授权 root → Frida 可 attach 到 Soul 进程进行深度 Hook
- 启动 SDK 服务器后运行
cd ~/workphone-agent && python3 agent.py连接 - Soul APP 首次打开需登录账号
进度: 设备部署 100% | 整体项目 96%(不变)
2026-03-15 | 防封模块深度验证+13项BUG修复
执行人: 火炬(机擎全员)
验证方式
- 代码深度审计(9个文件,5个维度)
- 防封策略文档 vs 代码逐章差距分析(55项需求对照)
- 全网搜索最新微信2025-2026风控规则+Frida反检测技术
发现问题(审计前覆盖率仅40%)
- 3个P0崩溃BUG: unified.py get_phase缺await+缺参数、L1/L2限流仅定义常量未实现、80%端点绕过防封守卫
- 7个P1缺陷: 默认账号阶段MATURE(应为NEW)、Redis断线永不恢复、贝塞尔滑动死代码、Frida端口模块共享、无操作时段控制、无告警推送、敏感词库不足
- 多项缺失: 自然行为链、正则匹配、内容格式校验
修复内容(13项,全部完成)
- [P0] unified.py: get_phase/get_rules 补 await + platform 参数
- [P0] rate_limiter: 实现 L1 全局限流(100RPM) + L2 设备限流(10RPM) 滑动窗口
- [P0] rate_limiter: 新增操作时段控制(7:00-23:00),OutsideOperationHours 异常
- [P0] unified.py: 补齐6个端点防封守卫(comment/reply, batch-add, group/send, moments/like, moments/comment, mass-send)
- [P0] unified.py: guard返回字段统一为"reason"
- [P1] account_lifecycle: 未注册账号默认 NEW→最严格(原MATURE→最宽松)
- [P1] account_lifecycle: Redis set 加 TTL(1年)
- [P1] rate_limiter + account_lifecycle: Redis 健康检查(60s间隔ping),断线自动恢复
- [P1] base.py: 贝塞尔滑动 swipe_points 替代直线 swipe(降级兼容)
- [P1] frida_manager: 端口从模块级改为实例级(_random_port())
- [P1] 新增 anti_ban_alert.py 风控告警(5种告警:日限额/指纹碰撞/时段违规/敏感内容/连续失败)
- [P1] content_guard: 扩充敏感词40+,新增7个正则模式(URL/手机号/邮箱/微信号/QQ号)
- [P1] base.py + wechat/skill.py: 新增 natural_behavior_before/after 自然行为链
进度: Phase 5 覆盖率 40% → 70%+ | 整体项目 95%
下一步: Phase 3B 独立管理端 或 Phase 4 部署上线
2026-03-14 | 第8次对话 — 微信全功能v2 + 导航缓存系统
完成内容
1. 微信引擎 v1→v2 升级(54→96 actions)
- 新增 14 个功能模块(模块13~26),共 42 个新方法
- 覆盖:解封完善(5)、视频号(6)、扫一扫(4)、支付增强(5)、通话(2)、群发(1)、搜一搜(2)、微信运动(2)、位置(2)、表情(2)、朋友圈增强(3)、语音(1)、文件(2)、设置(5)
- API 端点从 55 → 98 个(23 个功能模块)
- 全局容错机制:
_retry()/_recover_state()/_verify_action()
2. 导航缓存系统(全新)
- 新建
sdk/app/services/wechat_nav_cache.pyWeChatNavCache: 持久化导航路径+页面元素+Tab坐标到 JSONOperationLogger: 每次操作自动记录(action/params/steps/duration/result)PageSignature: 页面特征签名,快速验证当前在哪个页面NavPath+NavStep: 结构化导航路径模板
- 缓存文件:
sdk/data/nav_cache/nav_v8.0.56_1080x2400.json(10KB,538行) - 预置 6 条导航路径:to_me / to_settings / to_account_security / to_safety_center / to_discover / to_contacts
- 预置 3 个页面录制:me / settings / account_security
3. 真机探索录制
- 屏幕精确参数:1080×2400, density 440
- Tab精确坐标录制(微信:135, 通讯录:405, 发现:675, 我:945, y=2148)
- 完整录制"我"页面(11个元素坐标)
- 完整录制"设置"页面(13个元素坐标)
- 完整录制"账号与安全"页面(8个元素坐标)
- 截图5张保存为导航参考
4. 引擎导航方法重构
_tab_positions()/_tap_tab()改为缓存优先- 新增
_navigate_cached()通用缓存导航方法 - 新增
_record_page_elements()页面录制方法 - 新增
_nav_to_settings()/_nav_to_account_security()/_nav_to_safety_center()快速导航 execute()方法集成操作日志(自动记录每次操作的步骤/耗时/结果)- 所有账号安全相关方法(unblock/safety_center/change_password等)改用缓存路径
5. 微信全功能矩阵文档
- 新建
开发文档/5、接口/微信全功能矩阵_v8.0.56.md - 23 类功能、~98 端点完整清单
发现的问题
- 设备 USB 在操作过程中断连(物理连接问题)
- 之前
_tap_tab的 y 坐标错误(用 h-246=2154 算出来的不对,实际 tab 在 y=2148) - 设置页面需要先滑到顶部才能看到"账号与安全"
进度
- 整体: 95% → 97%
- Phase 7(导航缓存): 100%
下一步
- 设备重新 USB 连接后完成安全中心页面录制
- 真机测试 unblock_self / scan_qr_code / video_channel 等新功能
- Phase 3B 独立管理端
- Phase 4 部署上线
2026-03-14(晚)| 存客宝后台集成「工作手机管理」页面 + SDK状态联通
执行人: 火炬 本次完成:
- 新增 PHP 控制器
GetWorkPhoneStatusController(聚合 SDK 健康/设备列表/连接状态) - 新增后端路由
v1/workphone/status|device|screenshot - 存客宝前端新增「工作手机管理」页面(
/mine/workphone)- SDK 在线状态指示灯
- 在线/离线/WS连接/ADB 四格统计面板
- 连接设备列表(型号、品牌、ID、APP、状态)
- 单台设备截屏功能
- 连接协议详情表(服务器时间、WS 在线数、心跳延迟)
- 15 秒自动刷新
- 「我的」页面新增入口(蓝色手机图标 + "工作手机管理")
- 路由/菜单/权限全部注册
- SDK 服务端验证:health✅ / devices✅ / connection/status✅
- 开发进度总表更新(92%,Phase 3A 存客宝集成 100%)
当前在线设备: Redmi 2312DRAABC via ADB(xgfe65eimrrofyws)
进度: Phase 3A 0% → 100% → 整体 92%
2026-03-14(下午)| 无Root方案完成 + Git推送 + 116 API全在线 + 54测试全绿
执行人: 机擎全员 本次完成:
- 无 Root 方案落地:frida-gadget v17.8.1 arm64、setup_noroot.sh 六阶段自动化、inject_frida_gadget.sh、debug.keystore
- FridaManager 升级为 usb/gadget/remote 三模式,默认 gadget 无 Root
- SDK 服务端 116 个 API 端点全部在线验证(消息3/好友5/群9/朋友圈4/标签6/设备控制14/ADB14/Hook14/AI2/连接5/体验12/语音3/二维码3/项目4/其他17)
- 54 项单元测试全绿(test_frida_manager 14 + test_hook_executor 20 + test_hook_module_api 20)
- Git commit + push 到 GitHub:d6bb3f1(16 files changed, 2626 insertions)
- 飞书群复盘推送(工作手机开发进度群)
进度: Phase 2 Hook增强 90% → 整体 88%
2026-03-14(中午)| 真机 E2E 联调:SDK 通道验证通过 + Root 进行中
执行人: 机擎全员(阿机/阿桥/阿端/阿服/阿表) 设备: Redmi Note 13 5G(2312DRAABC, MT6833, Android 13, MIUI V14.0.10.0.TNQCNXM)
本次完成:
真机联调成功(SDK Control 通道):
- 设备 ADB 连接成功,SDK 服务端(8899)识别设备为 online
/healthAPI 正确返回 adb_devices: 1, adb_serials: ["xgfe65eimrrofyws"]/api/v3/adb/devices返回设备完整信息(型号/品牌/Android版本/分辨率)- 通过 ADB 通道启动微信(
app/start)→ 成功 - 截图 API(
screenshot)→ 成功获取微信主界面截图,确认已登录 - UI 树获取(
ui-tree)→ 成功,包含完整的微信 XML 节点树 - 文本点击(
click-text: "卡若")→ 成功导航到卡若联系人页 - Unified API 发消息(
/api/v3/message/send)→ 成功,通道sdk_control,message_id:adb_1773462108071
微信信息:
- 微信版本: 8.0.56(versionCode 2800, targetSdk 34)
- 微信 PID: 8280(运行中)
- 聊天列表包含 19 个置顶聊天 + 多个群组和联系人
Root 进程:
- Bootloader 已解锁(verifiedbootstate=orange)
- Magisk v28.1 APK 已安装到手机
- Magisk app 检测 Ramdisk=是,支持标准安装
- boot.img 提取中 — fastboot fetch 不支持,mtkclient macOS 缺 libfuse,改用 fastboot 临时方案
- 手机进入 fastboot 后 macOS USB 驱动异常 — 等待手机重启恢复
下一步:
- 手机重启后 → 下载固件提取 boot.img → Magisk 修补 → fastboot 刷入 → 安装 Frida Server
- 备选方案:Frida Gadget 无 Root 注入模式
- H24 多版本适配 + H33 E2E 真机完整测试
2026-03-13(下午)| Phase 2 Hook增强 全量代码完成 + 54项单元测试全绿
执行人: 机擎全员(阿机/阿桥/阿端/阿服/阿表) 本次完成:
Hook 脚本全量开发(H14-H23):
- H14: 创建
sdk/agent/hook/scripts/common.js— 公共脚本框架(日志/事件/SQL/Intent/Hook辅助/文件/节流等9大模块) - H15-H17: 升级
wechat_hook_v2.js→ v2.1 — 消息收发完整实现(SQLite insert/update Hook + 多版本类名适配 + Intent 降级) - H18: 好友请求监听 — SQLite insert type=10002 拦截 + XML 解析(fromusername/encryptusername/ticket)
- H19: 添加/通过/删除好友 + 设置备注 — Intent 广播 + 事件上报
- H20: 朋友圈发布 — Intent 广播 + SnsMicroMsg.db 读取
- H21: 朋友圈浏览/点赞/评论 — SnsInfo 表查询 + contentDesc 解析 + Intent 操作
- H22: 群管理完整实现 — 获取群列表/成员/详情 + 创建群/邀请/踢人/设置公告/改名/退群(共10个RPC方法)
- H23: 创建
sdk/agent/hook/scripts/syscall_hook.js— 网络层拦截(libc connect/SSL_read/SSL_write/DNS + SSL Pinning Bypass 可选)
HookExecutor 升级:
- ACTION_TO_RPC 映射从 12 个扩展到 30 个,覆盖消息/联系人/好友/群/朋友圈/系统全部动作
模块管理API 确认已完成(H25-H29):
app/routers/hook_modules.py+app/services/hook_module_service.py— CRUD/启停/scope + 脚本上传下载部署 + 设备模块状态 + 事件历史+实时流
54项单元测试全绿(H30-H32):
- H30:
test_frida_manager.py— 14 tests(初始化/连接/RPC/事件/清理/EventReporter) - H31:
test_hook_executor.py— 20 tests(离线/在线/动作映射/好友/群/朋友圈) - H32:
test_hook_module_api.py— 20 tests(CRUD/脚本/事件/设备状态,全部 async 兼容 Python 3.14)
设备连接:
- 检测到小米手机
2312DRAABC(序列号xgfe65eimrrofyws)物理 USB 已连接 - USB 调试未开启 — 等待用户在手机上授权
进度变化:
- Phase 2 Hook 增强:35% → 90%(H1-H32 全部完成,仅余 H24 多版本适配 + H33 E2E 需真机)
- 整体进度:75% → 88%
下一步:
- 用户开启 USB 调试后 → 安装 Frida Server → 真机 E2E 测试 → H24 版本适配
- Phase 3 管理端 + Phase 4 部署上线
2026-03-13 | Hook 通道完整实现 + 奥创工作手机真机分析
执行人: 机擎全员(阿机/阿桥/阿端/阿服/阿表) 本次完成:
设备连接与分析:
- 奥创工作手机真机(Redmi 21121119SC)通过 USB 连接成功,ADB 在线
- 确认设备已 Root(Magisk),
uid=0(root) - 检测到奥创核心组件:
org.xeslciw.manager(XESlciw v1.8.4)+top.zzz.vivwxjz(微信Hook) - 从真机拉取两个奥创 APK 到本地(
资料/奥创工作手机APK提取/当前设备/) - SDK 服务端启动成功(8899端口),设备在
/api/v3/adb/devices中可见 - 远程启动微信成功(
am start -n com.tencent.mm/.ui.LauncherUI)
Hook 通道实现(Phase 2 核心):
- 创建
sdk/agent/hook/frida_manager.py— Frida 生命周期管理(attach/detach/reconnect/rpc.exports) - 创建
sdk/agent/hook/hook_executor.py— unified 动作映射到 Frida RPC(12个动作) - 创建
sdk/agent/hook/event_reporter.py— Hook 事件上报(缓冲+发送+统计) - 创建
sdk/agent/hook/wechat_hook_v2.js— 完整微信 Hook 脚本:- SQLite 消息拦截(message 表 insert Hook → 实时推送新消息)
- 消息撤回拦截(update Hook → 事件上报)
- 网络请求拦截(weixin.qq.com 域名监控)
- rpc.exports:sendMessage / getMessages / getContacts / getContactInfo / getGroups / sendGroupMessage 等
- 数据库直读:联系人、群列表、消息历史(从 EnMicroMsg.db)
- 创建
sdk/agent/hook/__init__.py— 模块化导出 - 升级
sdk/app/routers/unified.py_send_via_hook:- WebSocket 模式:下发
hook_execute指令到 Agent 端 HookExecutor - ADB 模式:本地 Frida 直连设备执行
- 自动降级:Hook 失败 → SDK/ADB 通道
- WebSocket 模式:下发
- 创建
sdk/scripts/setup_frida.sh— 一键安装 Frida Server 到设备 - 更新
sdk/requirements.txt— 增加 frida-tools、uiautomator2、adbutils
GitHub 调研(微信 Hook 方案):
- 搜索并分析 GitHub 上微信 Hook 相关项目:
- wechatbot-xposed(Xposed 微信机器人)
- WechatMagician(Kotlin Xposed 模块,1.8k⭐)
- frida_wechat_hook(Frida PC微信Hook)
- WechatAutoMsgSender(uiautomator 自动发消息)
- Hook_WeChat_FaaS_Xposed(Kotlin 云函数Hook)
- 技术路线确认:Frida 16.x(动态插桩)+ SQLite DB Hook + rpc.exports
进度变化:
- Phase 2 Hook 增强:0% → 35%(架构扩展 H1-H5 完成、设备端 Frida 集成 H6-H13 完成)
- 整体进度:65% → 75%
下一步:
- 连接设备后执行
setup_frida.sh安装 Frida Server - 用
channel=hook参数跑通一次微信发消息 - 根据实际微信版本适配 Hook 脚本中的类名(IDA 分析 VivWxjz APK)
- 补全 Phase 2 剩余:H14-H24 Hook 脚本微信版本适配
2026-02-28 | Soul 多维度调研文档(参考其形式开发 APP)
执行人: 阿机 本次完成:
- 在 开发文档/平台分析/Soul/调研/ 下新增多维度分析文档,供从技术、产品、安全、商业、体验等维度参考 Soul 形式开发自研 APP。
- 文档清单:README(索引)、01 产品与功能维度、02 技术架构与实现维度、03 安全与风控维度、04 商业与运营维度、05 体验与交互维度、06 参考 Soul 开发 APP 的技术基线与实现方式。
- 各文档均含「好处/坏处」「优点/缺点」拆解及可借鉴点;06 为技术基线、分阶段架构建议、实现方式选型与开发顺序,作为开发参考总纲。
- 更新 Soul/README:增加调研子目录入口。
用途: 立项或开发类似形态 APP 时,可按 01→06 顺序阅读,以 06 为技术基线与实现方式参考。
2026-02-28 | Soul 抓包流程加固与「继续直到成功」
执行人: 阿机 本次完成:
- mitmdump 增加
-k(不校验上游证书),解决 Soul 直连 IP(120.x/118.x)导致的「Certificate verify failed: IP address mismatch」,API 请求可被解密。 - soul_capture_addon.py:扩展 host(118.x)、排除纯静态路径(app-source、heads/avatar-)、按请求头名称遍历匹配 auth/token/sign/device,兼容不同大小写与命名。
- run_soul_capture.sh:抓包时长改为 180 秒,结束逻辑判断 ~/.soul_env 是否含非空 SOUL_AUTH_TOKEN/DEVICE_ID/API_SIGN,有则提示「✅ 已写入」,无则提示「⚠️ 请在抓包期间于 Soul 内发瞬间或刷新」。
- 文档 Soul自动化方案与命令行操作.md 7.1:明确写清「抓包期间 Soul 必须在前台并发瞬间或刷新」,否则无法拿到 Token。
结论: 抓包链路与脚本已就绪;成功写入 ~/.soul_env 的前提是:运行 run_soul_capture.sh 的 180 秒内,Soul 在前台且执行发瞬间或刷新。满足后 addon 会从 API 请求中提取头并写入,即可用 source ~/.soul_env && ./soul_post_moment_mac.sh "内容" 发瞬间。
2026-02-28 | Soul Mac 抓包与配置写入
执行人: 阿机 本次完成:
- 安装 mitmproxy(brew install mitmproxy),用于 Mac 上抓 Soul HTTPS。
- 编写 soul_capture_addon.py:mitmproxy 插件,捕获 api.soulapp.cn 请求头(X-Auth-Token、api-sign、device-id 等)并写入 ~/.soul_env。
- 执行抓包:代理临时切到 127.0.0.1:8080,mitmdump 运行 75 秒后恢复原代理 7897;本机该时段未抓到 Soul 发帖请求(Soul 未在抓包期间发帖或未走系统代理)。
- 新增 run_soul_capture.sh:一键抓包脚本(代理 8080、90 秒);用户在本机运行后,在 Soul 内发一条瞬间即可把 Token 等写入 ~/.soul_env。
- soul_post_moment_mac.sh 已支持从 ~/.soul_env 读取;抓包得到的数据会写入该文件,无需手填。
后续: 用户执行 开发文档/平台分析/Soul/run_soul_capture.sh,在 180 秒内打开 Soul 并发一条瞬间或刷新页面,即可自动写入 ~/.soul_env;之后用 source ~/.soul_env && ./soul_post_moment_mac.sh "内容" 发瞬间(若 api-sign 随请求变化则需每次发帖时重新抓包或实现签名算法)。
2026-02-28 | 开发文档分类与 Soul 专项整理
执行人: 阿表 + 阿机 本次完成:
- 新增 平台分析 分类:开发文档下增加「平台分析」目录,各平台(如 Soul)专项分析统一放此处,不散落。
- 新增 平台分析/Soul/:Soul 全部内容集中此目录。新建 Soul项目分析.md(Soul 全部接口列表 + 全部功能列表);Soul自动化方案与命令行操作.md 从 9、手册 迁入。
- 开发文档 四类分类:在 README 中明确「需求与架构」「开发与接口」「部署与数据」「手册、验收与平台分析」四类,现有文档分别归属;根目录不出现文档,Soul 只出现在 平台分析/Soul。
2026-02-28 | Soul 自动化方案与 Skill 实现
执行人: 阿机 + 阿端 本次完成:
- 编写《Soul自动化方案与命令行操作》文档(开发文档/9、手册/):SOUL Mac 版结构说明、安卓包名 cn.soulapp.android、发瞬间/发视频/私聊/获取好友流程与命令行示例
- 新增 Agent 端 Soul Skill(sdk/agent/skills/soul/):post_moments、send_message、get_messages、get_contacts
- 在 skills/init.py 注册 SoulSkill,skill_executor 与 agent 中增加 soul 分支;unified ADB 模式增加 soul 包名
说明: 用户通过 unified 接口指定 platform=soul 即可在已连接设备上执行发瞬间、发私聊、获取联系人;Mac 版 /Applications/SOUL.app 不在此 SDK 控制范围。
2026-02-24 | 工作手机项目上传 Gitea + GitHub
执行人: 阿服 本次完成:
- 初始化 Git 仓库,配置 .gitignore(排除 github-repos、.gradle、app/build、.env 等)
- 首次提交(230 文件)
- 创建 GitHub 私有仓库 fnvtk/workphone-sdk 并推送成功
- 配置 Gitea 远程 fnvtk/workphone-sdk
- Gitea 推送:需先在 open.quwanzhi.com 手动创建仓库(Push to create 未开启)
仓库:
- GitHub: https://github.com/fnvtk/workphone-sdk
- Gitea: http://open.quwanzhi.com:3000/fnvtk/workphone-sdk(创建后可推送)
同步脚本: scripts/sync_to_gitea_github.sh
2026-02-10 | 全量开发文档整合与完善(调研→开发文档10目录)
执行人: 机擎全员(阿表/阿机/阿桥/阿端/阿服) 本次完成:
整合调研材料(12份→开发文档):
- 创建
1、需求/技术调研与方案选型.md— 融合12份调研文件,含选型结论+竞品对比+复刻路径 - 合并
成本与需求澄清.md入项目概述.md(≤3文档规则)
架构扩展:
- 创建
2、架构/Hook通道与多设备多服务器架构.md— 双通道路由+Frida集成+多设备多服务器 - 合并
对接与方案补充.md入系统架构.md(≤3文档规则)
前端管理端:
- 创建
4、前端/管理端前端开发规范(毛玻璃风格).md— 苹果毛玻璃UI+React组件+页面设计
接口设计:
- 创建
5、接口/Hook模块管理接口.md— 模块CRUD+脚本管理+设备模块+Hook事件API
后端开发指南:
- 创建
6、后端/docs/07-设备端Hook开发指南.md— FridaManager/ScriptLoader/HookExecutor/EventReporter完整代码 - 创建
6、后端/docs/08-微信Hook脚本开发.md— 微信Frida脚本+Java Hook+Syscall拦截+逆向方法
部署扩展:
- 创建
8、部署/设备端Hook安装部署.md— Root/Gadget安装+多设备批量部署+验证清单 - 合并
部署流程与提示词.md入本地Docker部署指南.md(≤3文档规则)
项目管理:
- 重写
10、项目管理/开发进度总表.md— Phase 1-4全量任务拆解(H1-H33 + F1-F14 + D1-D8) - 更新全部受影响目录README索引(1/2/4/5/8共5个)
文档统计:
- 新增:7个文档
- 合并:3个文档(数据完整保留)
- 删除:3个已合并的原文件
- 所有目录均满足≤3主文档规则
项目进度: 65%(Phase 1完成100%, Phase 2-4待开发) 下一步: 按开发进度总表Phase 2.1开始执行(H1-H5架构扩展,预估2天)
2026-02-10 | 机擎复刻 Frida 与奥创的管理与注入 — 实现路径
执行人: 机擎(阿机/阿桥) 本次完成:
- 撰写《机擎复刻Frida与奥创管理注入_实现路径.md》
- 结论:可实现,需新增 Hook 通道、模块管理、Frida 集成
- 复刻目标:奥创管理形态(模块列表、Scope、启用/禁用)、Frida 注入形态(attach、脚本、rpc.exports)
- 能力提取:VivWxjz 等效(消息同步、发消息、联系人、朋友圈)
- 四阶段实现路径:架构扩展 → 设备端 Frida 集成 → Hook 脚本开发 → 私域管理端
- 整体架构图、优先级表、约束与风险
文档路径: 资料/机擎复刻Frida与奥创管理注入_实现路径.md
2026-02-10 | 奥创微信控制接口与插件提取复用指南
执行人: 机擎(阿机/阿桥) 本次完成:
- 创建《奥创微信控制接口与插件提取复用指南.md》
- 插件与包名完整清单(XESlciw Manager、VivWxjz、AI数智员工)
- 007 云端 API 接口推断与机擎映射
- VivWxjz libvivwxjz.so 导出符号、Syscall 拦截点
- 机擎 WechatSkill 与奥创能力一一对照
- 复用开发建议与速查表
文档路径: 资料/奥创微信控制接口与插件提取复用指南.md
2026-02-10 | XESlciw 与 Frida 及机擎详细对比分析
执行人: 机擎(阿机/阿桥) 本次完成:
- 创建《XESlciw与Frida及机擎详细对比分析.md》
- XESlciw vs Frida 架构、能力、接口清单对比
- 机擎统一 API、WebSocket、设备端接口全量清单
- 三者功能合适度分析及选型建议
- 按场景/开发阶段的选型指引
文档路径: 资料/XESlciw与Frida及机擎详细对比分析.md
2026-02-07 | 设备端完善 - 自动与服务器交互、能力声明、配置拉取
执行人: 机擎(阿机) 进度: 设备端 M8 保持 100%;目的达成「设备自动与服务器交互、拥有完整设备端」 本次完成:
- 注册后上报
agent_started事件,服务端可记录设备上线 - 设备能力声明增加
skill_wechat/douyin/xhs/xianyu、event、device_request - 连接成功后自动向服务端
get_config,收到device_request_ack后应用下发的heartbeat_interval - README 明确:server_url 填基础地址、设备自动注册并上报能力、自动与服务器交互
下一步: 维护与迭代;可选 E2E 全绿、M6 抓包按需。
2026-02-10 | 第7次对话 - 机擎团队合并升级(1人=1目录+能力增强)
执行人: 火炬(卡若AI 大总管协同) 对话主题: 机擎AI开发小组全面合并升级,清理重复目录,整合Skill+学习材料+外部资源
任务:
- 将5人的多个重复目录合并为1人=1目录的精简结构
- 整合所有Skill内容(去重合并)
- 从卡若AI学习相关能力(全栈开发、工作手机中间层、数据管理等9个Skill)
- 搜索GitHub/SkillsMP获取外部开发能力(uiautomator2、DroidRun、Fremko、Android-MCP等)
- 升级机擎总控SKILL.md为v2.0
完成项:
- 读取并分析5人共13个重复目录的所有SKILL/README内容
- 从卡若AI获取9个相关Skill(火炬全栈开发、工作手机中间层、金盾数据管理等)
- 搜索GitHub获取5个相关开源项目(uiautomator2 v3.5.0、DroidRun 7.6k⭐、Fremko、Android-MCP、mcp-android-server)
- 搜索SkillsMP获取4类推荐Skill(CI/CD 6091个、测试 3464个、LLM&AI 10372个、代码质量 3185个)
- 创建新的合并目录:阿表/、阿机/、阿桥/、阿端/、阿服/(各含1个合并版SKILL.md v2.0)
- 每人SKILL.md包含:人设+技能点(去重合并)+学习材料(卡若AI+GitHub+SkillsMP)+关键路径+触发词
- 阿桥:将3个重复目录(阿桥-ISFJ-对接中间层/、阿桥-ISFJ-接口对齐-业务与中间层/、阿桥-对接中间层/)+ 业务SKILL + 中间层SKILL 合并为1个完整SKILL
- 升级机擎/SKILL.md至v2.0:新增§七外部能力增强(卡若AI+GitHub+SkillsMP)、更新§九.2目录结构
- 删除11个旧重复目录
- 更新.cursor/rules/workphone.mdc路径引用
- 本条工作日志
目录变更(清理前→清理后):
- 清理前:每人2-3个目录(共13个),命名不统一
- 清理后:每人1个目录(共5个),命名简洁(阿表/、阿机/、阿桥/、阿端/、阿服/)
- 已删除:阿表-ISTJ-进度验收/、阿表-ISTJ-盯节点-进度与验收/、阿机-ISTP-后端Agent/、阿机-ISTP-上机就干-服务端设备端Agent/、阿桥-ISFJ-对接中间层/、阿桥-ISFJ-接口对齐-业务与中间层/、阿桥-对接中间层/、阿端-ENFP-联调/、阿端-ENFP-先跑通-联调与体验/、阿服-ISTJ-部署/、阿服-ISTJ-稳了再发-部署与环境/
进度变化: 无模块百分比变更(纯结构优化与能力增强)
遇到的问题: 无
下次计划:
- 按需继续迭代各人SKILL中的学习材料
- 可选:从SkillsMP/GitHub安装具体Skill到项目中
- 继续维护与E2E全绿
提示词摘要: "机擎小组合并升级,1人=1目录,整合所有Skill,整合学习材料,从卡若AI和GitHub/SkillsMP搜索相关开发能力,让团队具备完整开发工作手机SDK的能力"
日志记录
2026-02-07 | 五方向学习与调查:向卡若AI 分配学习并完成
用户诉求:安置五个问题方向,向卡若AI 分配学习与调查相应资料并继续完成。
执行人:阿桥、阿机、阿端、阿服、阿表(按机擎 § 一.二 分配)
学习与调查来源:卡若AI _共享模块/task_decomposer/references(深度理解与任务拆解、验证不通过回溯)、机擎 references/工作手机中间层抽象.md、阿桥中间层 SKILL、开发文档/5、8、9、10 与 sdk 代码。
完成项:
- 方向1(阿桥):接口契约与 PHP/TS SDK 一致性——调查 unified 与两 SDK;TS 的 sendMessage 返回类型增加 error_code、timeout_seconds;batchSendMessage 返回类型改为 sent/failed/total,与接口规范一致。PHP 已对齐。
- 方向2(阿机):联调可观测与排障——结论:已有 [message/send]、[ws_hub] 等关键日志;排障见 9、手册 与 E2E 验证指南。
- 方向3(阿服):部署与环境一致性——结论:.env.example、8、部署/README 已覆盖;无新增变更。
- 方向4(阿端):E2E 与联调验收——9、手册/README 进度描述更新为 100%;验收清单见 SDK操作手册、微信消息E2E验证指南。
- 方向5(阿表):进度与文档可维护——新增 10、项目管理/五方向学习与调查结论.md;总表与工作日志一致,100%。
下一步:维护与迭代;接入方使用 SDK 时按最新类型处理 success/error_code 与 batch 的 sent/failed/total。
2026-02-07 | 本地模型驱动架构审视 + 机擎全员执行与反馈
驱动:本地模型(qwen2.5:1.5b)输出 5 条架构方向 → 机擎按岗位落实并文档化。
执行人:阿桥、阿机、阿服(按机擎 § 一.二 分配)
完成项:
- 接口契约(阿桥):接口规范 §2.1 响应与实现对齐——data.success/message_id/error/error_code/timeout_seconds;§1.5 补充 batch_send 返回 data.sent/failed/total 及 503 说明。
- 模块边界(阿机):系统架构 §二 增加「模块边界」——unified→_execute_skill→ws_hub/ADB;设备端 WebSocket;扩展仅改 Skill 与路由。
- 容错与可观测(阿机):系统架构 §二 表格增加「容错与可观测」原则与实现方式。
- 部署跨环境(阿服):8、部署/README 增加「跨环境一致性」——环境变量、init_db、端口与凭证入口。
- 进度:总进度仍 100%;本轮为文档与架构补齐,无代码功能变更。
下一步:若你还有架构/体验上的顾虑,直接说(例如:需要更多监控指标、想收口某类错误码),机擎继续按「提问→分配→执行→反馈」循环;否则可进入日常维护与可选 E2E 全绿。
2026-02-07 | 下一步:数据库初始化可运行 + 凭证与文档补齐
执行人: 金盾(数据库线) 完成项:
- init_db 带认证运行:使用本地凭证
MONGO_URI=mongodb://admin:admin123@localhost:27017执行sdk/app/scripts/init_db.py,devices/commands/execution_logs/capture_data/messages/api_keys 索引已创建。 - 凭证与文档:本地环境凭证.md 增加 SDK 用 MongoDB 的 MONGO_URI 与首次建库命令;7、数据库/README 增加「首次建库与索引」节。
- sdk/app/.env.example:新增示例,含 MONGO_URI、REDIS_URL、MESSAGE_SEND_TIMEOUT 等注释项。
下一步: 维护与迭代;可选 E2E 全绿、M6 抓包按需。
2026-02-07 | 全量完成:联调契约 + AI Agent 联调 + 验收与进度 100%
执行人: 机擎(按顺序全量完成) 完成项:
- 抖/红/闲鱼与设备端联调:在 开发文档/5、接口/接口规范.md 增加 §1.5「服务端与设备端联调契约」— 下发格式、设备端 response 格式、send_message/get_messages/batch_send_message 的 data 约定。
- AI Agent 设备端联调:agent.py 的 _execute_agent_task 接入 SkillExecutor;含「微信」走 execute_wechat_task、「抖音」走 execute_douyin_task,其余走 execute_command;ImportError 时降级返回「任务引擎未加载」。
- 微信 E2E:SDK 健康 200、无设备时 message/send 返回 200+设备离线;E2E 脚本已就绪,全绿需本地「SDK+Agent+模拟器微信」后执行 test_wechat_e2e.py。
- 完整测试与验收:开发进度总表更新为 100%;M5/M12 标为 100%;验收与项目说明、多端拆解摘要已更新;待完成调整为「E2E 全绿可选、M6 抓包按需」。
下一步: 维护与迭代;可选:本地跑通 E2E 全绿、M6 抓包按需。
2026-02-07 | 开发优先:发消息超时可配置 + E2E + 机擎 Skill 开发优先节
执行人: 机擎(开发目标驱动) 目标: 以开发项目、推进功能为主;吸收并优化 Skill 内容服务开发。
完成项:
- 发消息超时可配置:
config.MESSAGE_SEND_TIMEOUT(默认 60s),环境变量可覆盖;_send_via_sdk使用该配置 - 超时返回明确:设备响应超时返回 HTTP 200 +
data.success=false+data.error="timeout",不无限挂起 - 关键日志:
[message/send]入参与通道、[_send_via_sdk]下发与超时、[ws_hub]设备响应超时 - E2E:
test_wechat_e2e.py在 error=timeout 时判 API 行为正确;微信消息E2E验证指南 增加「超时与可观测性」节 - 机擎 Skill:增加 § 〇.六「开发优先」— 下一步开发项、关键代码路径、发消息超时说明、E2E 命令、启动命令;原则为「做开发、推进项目,不是为了整理」
- 开发进度总表:总进度 98%→99%;M5 88%→90%;待完成中「发消息超时可配置」标为已完成
下一步: 抖/红/闲鱼 与设备端联调、微信 E2E 全绿、AI Agent 设备端联调、完整测试与验收。
2026-02-07 | 执行整理+学习安排落地、开发文档入口改为机擎
执行人: 机擎(阿表/阿机) 完成项: 快速读取(README、进度总表、工作日志)、adb/health 检查(模拟器在线、8899 返回 200);开发文档 README 与工作日志管理 Skill 改为机擎;本对话按 § 〇.二~〇.五 执行与学习。 下一步: 抖/红/闲鱼联调、微信 E2E、AI Agent 联调、完整验收。
2026-02-07 | 发消息超时问题转交火炬处理并建任务单
执行人: 卡若AI(转交) 对话主题: 工作手机微信给吉咪宇发消息接口超时 → 通知负责人、处理问题、学习优化、新功能开发清楚 任务:
- 将问题与改进要求通知到指定管理人员(火炬)
- 建立可执行任务单,包含处理动作、学习与优化、新功能开发清单
完成项:
- 创建火炬待办任务文档:
卡若AI/04_卡火(火)/火炬/存客宝项目管理/工作手机业务/references/待办-火炬-发消息超时与可观测性优化.md - 任务内容:问题描述与根因分析、必须完成的处理动作、学习与优化要求、新功能开发清单(F1 超时可配置、F2 可观测性、F3 to_id 文档、F4 E2E 验证、F5 异步可选)
- 工作手机业务 SKILL 增加「待办」小节,索引该任务文档,便于火炬优先处理
下一步:
- 火炬按任务单完成:复现与定位 → 修复 → 学习沉淀 → 完成 F1~F4(高/中优先级)→ 更新状态与工作日志
提示词摘要: "然后把这个通知到指定的相应的那个管理的人员,然后把这个问题处理掉,然后让他学习并且优化一下新的一个功能,帮我开发清楚"
2026-02-07 | 开发进度同步存客宝 + 闲鱼服务端 Skill + 持续开发与测试约定
执行人: 火炬(存客宝项目管理) 对话主题: 开发进度同步到存客宝、存客宝具备该技能、继续开发直至完整完成并完成测试 任务:
- 每次开发完成后将进度同步给存客宝(存客宝需具备该技能)
- 继续开发直至项目完整完成并完成测试
完成项:
- 存客宝侧新增「工作手机开发进度」文档:
cunkebao_v3/开发文档/5、接口/02-存客宝与工作手机对接/工作手机开发进度.md(由工作手机项目同步更新) - 存客宝项目管理 Skill 增加「每次对话结束 → 同步进度到存客宝」步骤(2.3 第 4 条);存客宝每一次均可在此查看最新进度
- 服务端闲鱼 Skill:新建
sdk/app/skills/xianyu/(skill.py + init.py),与设备端闲鱼对应,供 unified 路由与 ADB 占位 - 开发进度总表更新:总进度 97%→98%,M5 85%→88%,闲鱼服务端路由标记已完成
- 本次进度已同步到存客宝侧文档
进度变化:
- 总进度: 97% → 98%
- M5 脚本引擎: 85% → 88%
下一步:
- 服务端抖/红/闲鱼与设备端联调;微信消息 E2E 验证;AI Agent 设备端联调
- 完整测试与验收(按 9、手册 与 验收清单 执行至 100%)
提示词摘要: "继续开发,把开发进度同步给存客宝,每一次存客宝都需要有这个技能,继续往下开发直到完整完成整个项目并完成测试"
2026-02-07 | 中间层抽象为 Skill,完成度 100%
执行人: 火炬(工作手机中间层 Skill) 对话主题: 中间层抽象成 Skill,负责功能模块开发及与服务端/设备端交付 任务:
- 将中间层抽象为卡若AI Skill,负责各功能模块开发与 unified/设备端契约对齐
- 继续开发至 100% 并汇报进度
完成项:
- 新增「工作手机中间层」Skill:
存客宝项目管理/工作手机中间层/SKILL.md - 新增 references:
工作手机中间层抽象.md(职责、功能模块、协作关系、交付物) - 存客宝项目管理 SKILL 增加中间层分配与触发词、文件索引
- 多端拆解 §3 标明负责 Skill,中间层与当前 unified 契约 100% 对齐
- PHP/TS SDK 已覆盖消息/好友/群/标签/朋友圈/设备/AI/批量/快捷方法(含 batchAddFriend、xianyuSend、soulSend)
进度变化:
- 中间层(与当前契约对齐): 100%
- 未完成百分比: 0%
下一步:
- unified 新增或变更接口时,由工作手机中间层 Skill 在两 SDK 中同步更新
- 新中间层(如触客宝专用 API)按产品排期单独交付
提示词摘要: "把中间层也抽象成一个 skill,负责各功能模块开发、跟服务端/设备端 skill 的交互都通过你来安排跟交付,继续往下开发直到完成百分百"
2026-02-06 20:00 | 第1次对话 - SDK核心开发
执行人: 火炬 对话主题: 工作手机SDK完整开发 任务:
- 创建SDK核心服务(FastAPI + WebSocket)
- 开发统一API路由(消息、好友、群聊、标签、朋友圈)
- 开发PHP SDK客户端
- 开发TypeScript SDK客户端
- 创建存客宝对接文档
完成项:
- SDK服务端框架(FastAPI)
- WebSocket Hub设备管理
- 统一API路由(unified.py)全部接口
- PHP SDK(WorkPhoneClient.php)含所有功能
- TypeScript SDK(typescript-sdk/)含所有功能
- 存客宝对接文档
进度变化:
- 服务端API: 0% → 75%
- 存客宝对接: 0% → 55%
- 基础设施: 0% → 95%
遇到的问题: 无 下次计划: 完善微信技能实现、部署测试 提示词摘要: "把SDK开发出来让存客宝直接使用工作手机的各个接口"
2026-02-06 20:15 | 第2次对话 - Agent端技能开发
执行人: 火炬 对话主题: 完善设备端Agent技能实现 任务:
- 完善微信Agent端技能(群聊、标签、朋友圈等)
- 创建抖音Agent端技能
- 创建小红书Agent端技能
完成项:
- 微信技能全功能(群管理、标签、朋友圈、批量操作)
- 抖音技能(私信、粉丝、评论、视频互动)
- 小红书技能(私信、粉丝、评论、笔记互动、笔记发布)
进度变化:
- 微信技能: 40% → 75%
- 抖音技能: 0% → 50%
- 小红书技能: 0% → 50%
- 设备端Agent: 30% → 65%
遇到的问题: 无 下次计划: 服务端路由补全、真机测试 提示词摘要: "创建抖音和小红书技能实现"
2026-02-06 20:30 | 第3次对话 - 本地部署和项目管理
执行人: 火炬 对话主题: 本地Docker全量部署 + 创建项目管理Skill 任务:
- 启动工作手机SDK服务
- 创建存客宝Docker部署配置
- 创建存客宝PHP集成(WorkPhoneSDK.php)
- 创建项目管理Skill
- 创建开发进度总表
- 端口规划登记
完成项:
- SDK服务启动(Docker, 端口8899)
- 存客宝docker-compose.yml(MySQL + Redis + Server + 前端)
- Server Dockerfile(PHP 7.4 + Nginx)
- Cunkebao Dockerfile(Node 20 + Nginx)
- Touchkebao Dockerfile(Node 20 + Nginx)
- PHP SDK集成到存客宝后端(WorkPhoneSDK.php)
- SDK配置文件(config/workphone.php)
- 一键启动脚本(start.sh)
- 启动说明文档
- 项目管理Skill创建
- 开发进度总表创建
- 端口规划完成
进度变化:
- 本地部署: 0% → 35%
- 存客宝对接: 40% → 55%
- 开发文档: 40% → 55%
遇到的问题:
- Apple Silicon (M4 Pro) 不兼容x86 Android Docker镜像,需改用AVD方案
下次计划:
- 配置Android Studio AVD虚拟机
- 启动MySQL并导入存客宝数据
- 构建并启动存客宝前端
- 补全开发文档各子目录
提示词摘要: "创建项目管理Skill、本地部署、开发文档展开、虚拟手机、端口管理"
2026-02-06 20:45 | 第4次对话 - Skill创建+文档展开+虚拟机+部署
执行人: 火炬 + 卡资 对话主题: 创建存客宝项目管理Skill + 开发文档全面展开 + 红米13虚拟机 + 本地部署
完成项:
- 创建存客宝项目管理Skill(SKILL.md + 检查脚本)
- 创建开发进度总表(含所有模块百分比)
- 创建工作日志系统(自动记录每次对话)
- 端口规划登记表(避免冲突)
- 安装Android模拟器(SDK + ARM64系统镜像)
- 创建红米13 AVD虚拟机(1080x2400, Android 14)
- 启动模拟器成功(emulator-5554在线)
- 系统状态检查脚本(check_system.sh)
- 展开开发文档:6、后端/SDK服务端实现文档.md
- 展开开发文档:6、后端/Agent端技能实现文档.md
- 展开开发文档:7、数据库/数据库设计文档.md
- 展开开发文档:8、部署/本地Docker部署指南.md
- 展开开发文档:9、手册/系统使用手册.md
- 展开开发文档:10、项目管理/开发进度追踪.md
- MySQL + Redis Docker配置并开始下载
- 修复端口冲突(8080→8081,微信占用)
- 注册Skill到卡若AI总索引
进度变化:
- 开发文档: 55% → 70%
- 本地部署: 35% → 50%
- 总体: 42% → 48%
遇到的问题:
- Apple Silicon不兼容x86 Android Docker镜像 → 改用AVD方案 ✅
- 端口8080被微信占用 → 后端改用8081 ✅
- MySQL镜像下载较慢(网络限制)→ 后台下载中
下次计划:
- 等MySQL下载完成并初始化数据
- 构建并启动存客宝后端服务
- 验证完整闭环(前端→后端→SDK→手机)
提示词摘要: "创建Skill管理存客宝项目、展开开发文档、部署虚拟手机、本地Docker全量部署"
2026-02-07 | 第5次对话 - 设备端功能补全(存客宝 Skill 检查 + 开发文档)
执行人: 火炬 对话主题: 按存客宝项目管理 Skill 检查开发文档,完成设备端(手机端)剩余功能
任务:
- 用存客宝 Skill 检查整体开发文档
- 完成设备端剩余功能(闲鱼 Skill、抖音/小红书补全)
- 按整体开发需求继续研发设备端
完成项:
- 新建闲鱼 Skill(
agent/skills/xianyu/):__init__.py+skill.py - 闲鱼实现:send_message、get_messages、get_contacts、add_friend、follow_user、unfollow_user、batch_send_message(包名 com.taobao.idlefish)
- 在
skills/__init__.py注册 xianyu(get_skill + SKILL_REGISTRY) - 在 skill_executor 中增加闲鱼包名映射(com.taobao.idlefish → xianyu)
- 抖音/小红书设备端补全:send_message 增加 @retry、@with_error_handling(与微信一致)
- 闲鱼 send_message 增加相同错误处理装饰器
- 更新开发进度总表(M5 85%、M8 100%,总进度 97%)
- 更新多端并行开发模块拆解(设备端闲鱼/抖/红标为已完成)
- 工作日志本条记录
进度变化:
- M5 脚本引擎: 75% → 85%
- M8 Agent 端: 95% → 100%
- 总进度: 96% → 97%
遇到的问题: 无
下次计划:
- 服务端抖音/小红书/闲鱼 unified 路由补全(routers/unified.py、app/skills/xianyu/)
- 微信消息 E2E 端到端验证
- 可选:M6 抓包、M12 AI Agent 集成
提示词摘要: "存客宝 skill 检查开发文档、完成设备端剩余功能、按整体开发需求继续研发设备端"
2026-02-07 | 第6次对话 - 存客宝 AI 下服务端/设备端 SDK 抽象与 event/device_request
执行人: 火炬 对话主题: 在存客宝 AI 底下写服务端与设备端 SDK 抽象;设备端需通知服务端时通过 event/device_request;解决与验证问题
任务:
- 在存客宝 AI(卡若AI 存客宝项目管理)下把服务端、设备端 SDK 写成抽象文档
- 设备端能力与依赖抽象,需要服务端时通知服务端 SDK 来操作
- 实现 event/device_request 协议并验证
完成项:
- 新建
存客宝项目管理/references/工作手机服务端SDK抽象.md:服务端职责、入口、设备端→服务端/服务端→设备端消息类型、统一接口与 Skill 路由、验证要点 - 新建
存客宝项目管理/references/工作手机设备端SDK抽象.md:设备端职责、能力抽象(连接/Skill/通知服务端)、依赖、开发与验证要点 - 在存客宝项目管理 SKILL.md 九、相关文件索引 中增加上述两个 SDK 抽象文档引用
- 服务端 ws_hub:处理
event、device_request、status_report;实现_handle_device_request(get_config、log_result),回device_request_ack - 设备端 agent:
_send_event(event, data)、_send_device_request(action, params);技能执行完成后自动发event(skill_done);处理device_request_ack - 服务端 SDK 抽象文档增加「验证要点」小节
进度变化: 无模块百分比变更(文档与协议补全)
遇到的问题: 无
下次计划:
- 服务端 unified 抖/红/闲鱼路由补全
- 可选:event/device_request 落库(MongoDB)或转发业务
提示词摘要: "存客宝 AI 底下把服务端设备端 SDK 写上、设备端抽象出来、需要交互服务端时通知服务端 SDK、继续开发、解决所有问题和验证"
2026-03-16 | 第7次对话 - 设备端 Frida + AI Brain 自主运行架构
执行人: 火炬(阿机主力、全员参与) 对话主题: 设备端 Frida Hook + AI Brain 自主决策引擎 — 脱离服务器独立运行
任务:
- 创建设备端 AI Brain 模块(卡若AI API 集成 + 心跳驱动 + 离线自主运行)
- 改造 Agent v3.0 → v3.1(Frida 优先通道 + AI Brain + 离线模式)
- 更新配置支持 AI 配置项
- 沉淀需求到业务需求文档
完成项:
- 新建
sdk/agent/ai_brain.py:AIBrain 类(卡若AI API 调用 + 心跳决策 + 任务队列 + 离线缓冲 + 自主运行循环 + 常驻指令) - 改造
sdk/agent/agent.pyv3.0 → v3.1:- 集成 AI Brain(在线循环 + 离线自主模式切换)
- Frida 优先执行通道(Hook → u2 降级链路)
- 连接断开自动切换离线自主模式,重连后上传缓冲结果
- 新增消息类型:ai_task、standing_order
- 设备能力上报增加 frida/ai_brain 状态
- 配置解析支持 AI 环境变量(WP_AI_*)
- 更新
sdk/agent/config.json:新增 ai_brain 配置块(api_url/api_key/model/brain_interval/standing_orders) - 工作日志本条记录
- 业务需求沉淀(对话沉淀需求章节)
架构变更:
v3.0: Server → WebSocket → Agent → 执行(被动模式)
v3.1: Agent 内置 AI Brain → 心跳驱动自主决策 → Frida优先/u2兜底
服务器断连 → AI Brain 离线自主运行 → 结果缓冲待上传
AI 通过卡若AI API 获取 LLM 决策能力
新增文件:
sdk/agent/ai_brain.py— AI 大脑模块
修改文件:
sdk/agent/agent.py— Agent v3.1 增强版sdk/agent/config.json— 新增 AI 配置
进度变化:
- M12 AI Agent: 100% → 100%(架构升级,不改百分比)
- 新增能力:设备端自主运行、Frida 优先通道、离线模式
遇到的问题: 无
下次计划:
- 真机验证 AI Brain 离线自主模式
- Frida 优先通道 E2E 验证
- 卡若AI API 在手机端的网络连通性测试
- standing_orders 常驻指令实际业务场景设计
提示词摘要: "设备-hook/frida 用frida的模式操作,脱离USB直接操控手机,把卡若AI的API装到手机里,通过心跳机制自动动起来"
2026-03-16 | 第8次对话 - 服务端 AI Brain 支持 + API 端点 + 常驻指令
执行人: 火炬(阿机+阿桥主力、全员参与) 对话主题: 补全服务端对 AI Brain 的支持 — 事件处理、REST API、常驻指令业务场景
任务:
- 服务端 ws_hub 增加 AI Brain 事件处理(ai_brain_acted / offline_buffer_upload)
- 新增 REST API 端点:推送 AI 任务 / 常驻指令 / 查状态 / AI 执行
- standing_orders 业务场景设计与默认配置
- 验证卡若AI API 连通性
完成项:
- ws_hub.py 增强:_handle_ai_brain_acted / _handle_offline_buffer / push_ai_task / push_standing_order / get_ai_brain_status
- ws_hub.py agent_started 事件:提取 frida_available / ai_brain_enabled 到设备信息
- ws_hub.py get_config:支持返回 AI_BRAIN_CONFIG
- devices.py 新增 4 个 API 端点:
- GET /devices/{id}/ai/status — AI Brain 状态
- POST /devices/{id}/ai/task — 推送 AI 任务
- POST /devices/{id}/ai/standing-order — 推送常驻指令
- POST /devices/{id}/ai/execute — AI Agent 同步执行
- config.json 新增 3 条默认 standing_orders(检查未读消息、自动通过好友、保活微信)
- 验证卡若AI API 连通性:✅ 通过(Cerebras加速,~4s)
- 验证 SDK 服务端新方法可导入:✅ 通过
新增 API 端点汇总:
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/v3/devices/{id}/ai/status | 查询设备 AI Brain 状态 |
| POST | /api/v3/devices/{id}/ai/task | 推送 AI 任务到设备 |
| POST | /api/v3/devices/{id}/ai/standing-order | 推送常驻指令(离线自动执行) |
| POST | /api/v3/devices/{id}/ai/execute | AI Agent 同步执行自然语言任务 |
进度变化: 无百分比变更(功能增强,不新增模块)
遇到的问题: 无
下次计划:
- 真机部署测试 Agent v3.1 + AI Brain
- Frida 优先通道 E2E 验证
- 存客宝侧对接 AI Brain API
- 工作台 hub.html 增加 AI Brain 面板
提示词摘要: "下一步"
2026-03-16 | 第9次对话 - 机擎飞书绑定 + AI Brain 工作台面板
执行人: 火炬(全员参与) 对话主题: 绑定机擎飞书 Webhook + 工作台 hub.html 增加 AI Brain 面板
任务:
- 创建
机擎/scripts/send_feishu_review.py飞书推送脚本 - 绑定飞书 Webhook:
https://open.feishu.cn/open-apis/bot/v2/hook/d0f607da-ae26-43a0-9dbe-2c2c0b90743d - 工作台 hub.html 新增 AI Brain 完整面板
完成项:
- 创建
机擎/scripts/send_feishu_review.py(支持 requests / urllib fallback) - 飞书 Webhook 测试成功,消息已推送到群
- hub.html 导航新增 🧠 AI Brain 项
- hub.html renderAIBrainPanel():自主决策引擎说明 + 控制台(查状态/推任务/推常驻指令/AI执行) + 常驻指令说明 + 执行通道优先级 + API 速查
- hub.html 首页总览增加 AI Brain 快捷按钮和状态统计卡
- JS 括号匹配检查通过、HTML 解析通过
新增文件:
| 文件 | 说明 |
|---|---|
| 机擎/scripts/send_feishu_review.py | 机擎专用飞书复盘推送脚本 |
修改文件:
| 文件 | 说明 |
|---|---|
| sdk/app/static/hub.html | 新增 AI Brain 面板、导航项、首页快捷入口、统计卡 |
进度变化: 无百分比变更(UI 增强)
下次计划:
- P0:真机部署 Agent v3.1 + AI Brain 实测
- P0:Frida 优先通道 E2E 验证
- P1:存客宝侧对接 AI Brain API(工作手机页面增加 AI 控制面板)
- P1:AI Brain 面板接入真实设备数据展示
提示词摘要: "继续下一步完成,绑定飞书webhook到机擎"
2026-03-16 | 第10次对话 - 全链路收尾:部署脚本+Docker+存客宝对接+E2E+文档
执行人: 火炬(全员参与:阿机-部署脚本/Docker,阿桥-存客宝对接,阿端-E2E测试,阿服-Docker/部署,阿表-进度更新) 对话主题: 一次性解决所有剩余待办项
任务:
- D1-D3:部署脚本完善(Agent安装+批量部署)
- D4:Docker 配置更新(AI Brain 环境变量)
- 存客宝前端对接 AI Brain API
- E2E 测试脚本补全(Hook + AI Brain)
- 进度总表与架构文档更新
完成项:
- D2 install.sh v3.1:增加 --ai-url/--ai-key/--frida 参数,config.json 自动生成 AI Brain 配置段
- D3 batch_deploy.sh:批量部署脚本,自动检测 ADB 设备、打包推送、Frida 安装、配置生成
- D4 Dockerfile v3.1:增加 curl、HEALTHCHECK、AI Brain 环境变量
- D4 docker-compose.yml v3.1:增加 AI Brain 环境变量、日志限制、workphone_logs 卷
- 存客宝 api.ts/api.js:新增 fetchAIBrainStatus / pushAITask / pushAIStandingOrder / executeAITask
- 存客宝 index.tsx:新增 AI Brain 控制台面板(状态查询、任务推送、快捷指令、AI执行、结果展示)
- test_hook_e2e.py:Hook E2E 测试(健康检查 → Frida状态 → Hook发消息 → 降级测试)
- test_ai_brain_e2e.py:AI Brain E2E 测试(API连通 → 状态查询 → 任务推送 → 常驻指令 → 同步执行)
- 进度总表 v3.1:整体 97%→98%,D1-D4 全标 ✅,Phase 4 进度 50%,M12 更新描述
- 系统架构:M12 → AI Agent + AI Brain v3.1 ✅ 100%,设备控制层描述更新
新增文件:
| 文件 | 说明 |
|---|---|
| sdk/scripts/batch_deploy.sh | 批量部署脚本(多设备 ADB 推送) |
| sdk/tests/test_hook_e2e.py | Hook 通道 E2E 测试 |
| sdk/tests/test_ai_brain_e2e.py | AI Brain E2E 测试 |
修改文件:
| 文件 | 说明 |
|---|---|
| sdk/agent/install.sh | v3.1 增加 AI Brain + Frida 参数 |
| sdk/Dockerfile | v3.1 增加 HEALTHCHECK、AI Brain 环境变量 |
| sdk/docker-compose.yml | v3.1 增加 AI Brain 配置、日志 |
| cunkebao_v3/.../workphone/api.ts | 新增 4 个 AI Brain API |
| cunkebao_v3/.../workphone/api.js | 同步 |
| cunkebao_v3/.../workphone/index.tsx | 新增 AI Brain 控制台面板 |
| 开发文档/10、项目管理/开发进度总表.md | 更新 D1-D4 状态、M12 描述、验证方式 |
| 开发文档/2、架构/系统架构.md | M12 + 设备控制层更新 |
进度变化: 整体 97% → 98%(D1-D4 完成)
下次计划:
- 仅剩真机相关:D7 真机测试验证、H24 微信多版本适配、H33 Hook E2E(真机)
- Phase 3B 独立管理端(规划中,非紧急)
- D5-D6-D8 依赖 Phase 3B 或真机
提示词摘要: "下一步,直到,完全解决"
2026-03-16 | 第11次对话 - 手机端连接提示静默化
执行人: 火炬(全员参与:阿机-Android服务层排查,阿端-手机端体验收口,阿桥-状态文案链路核对,阿服-真机连接状态检查,阿表-日志记录) 对话主题: 处理 Type-C 连接手机不定时弹出设备ID与停用提示
任务:
- 排查手机端反复出现的设备 ID / 删除停用提示来源
- 禁用工作手机 Agent 在系统界面暴露设备 ID 与错误详情
- 检查当前真机与服务端连接状态
完成项:
- 排查
sdk/android-app/app/src/main/java/com/workphone/agent/AgentService.kt,确认前台服务通知会直接展示连接状态文案 - 新增通知文案净化:连接中/已连接/重连中/已断开/连接异常统一映射为通用文案
- 通知改为静默模式:
setOnlyAlertOnce(true)+setSilent(true)+PRIORITY_MIN,降低系统界面打扰 - 屏蔽设备 ID、后端错误详情,以及包含“删除/停用”的原始提示直接显示到手机界面
- 检查服务端健康:
/health正常 - 检查真机连接:当前 USB 设备仍为
unauthorized,暂无法直接下发禁用旧组件命令
修改文件:
| 文件 | 说明 |
|---|---|
| sdk/android-app/app/src/main/java/com/workphone/agent/AgentService.kt | 手机端前台通知静默化与状态文案净化 |
验证结果:
- IDE lint:
AgentService.kt无报错 - Android 构建:未通过,原因是工程当前 Kotlin 编译输入路径被错误转义为 unicode 形式,属于既有构建环境问题,非本次改动引入
进度变化: 无百分比变更(体验修复)
下次计划:
- 真机在手机上确认 USB 调试授权后,直接执行禁用旧奥创组件/通知的设备命令
- 如需彻底收口旧弹窗,优先处理
org.xeslciw.manager/top.zzz.vivwxjz等残留组件
提示词摘要: "禁用手机上不定时弹出的设备ID和停用提示"
2026-03-16 | 第11次对话 - H24版本适配 + H33测试增强 + Phase 3B管理端完成
完成项:
-
H24 微信多版本适配
- 创建
sdk/agent/hook/wechat_version_compat.json— 6版本(8.0.44~8.0.60)偏移表+default兜底 wechat_hook_v2.js新增 §0 版本兼容系统:_VERSION_TABLE、_resolveVersionCompat()、getCompat()- 初始化时自动检测微信版本 → 精确匹配/近似匹配/default全候选
- 消息发送
_sendMessageInternal改用getCompat('send_message')替代硬编码候选类 - rpc.exports 新增
getVersionCompat()接口 - Node.js 语法校验通过
- 创建
-
H33 Hook E2E 测试增强
test_hook_e2e.py增加test_wechat_version()+test_version_compat()两个版本兼容测试用例- Python 语法校验通过
-
Phase 3B 独立管理端确认
- 确认
sdk/admin/已有完整 Next.js 项目:F1-F14 全部页面骨架就绪 lib/api.ts补充aiBrainApi(status/pushTask/pushStandingOrder/execute 四个方法)npx next build成功,所有 11 个页面编译通过
- 确认
新文件: sdk/agent/hook/wechat_version_compat.json
修改文件: wechat_hook_v2.js、test_hook_e2e.py、admin/src/lib/api.ts、开发进度总表
进度变化: 98% → 99%(H24+H33+Phase3B 全完成,仅剩 Phase4 D5-D8 需真机)
下次计划:
- D5-D8:真机部署验证(连接设备 → batch_deploy → E2E 真机测试)
提示词摘要: "H24微信多版本适配 + H33 Hook E2E真机测试 + Phase 3B独立管理端"
2026-03-13 | 自动注册引擎 + Gadget 工具链 + 110 Actions
任务:
- 构建微信全自动注册引擎(检测登录→获取SIM手机号→注册→短信验证→设置资料→发消息)
- Frida Gadget 注入工具链准备
- 统一操作数从 96→110(含 auto_register / check_login_state / get_sim_phone)
- 新增 API 端点:自动注册 / 检查登录状态 / 获取SIM手机号
完成项:
- 新建
sdk/app/services/auto_register.py— WeChatAutoRegister 自动注册引擎- check_wechat_login_state(): 检测登录/注册/未安装状态
- get_sim_phone_number(): 5种方式获取SIM卡手机号
- read_sms_verification_code(): 自动读短信验证码(inbox + 通知栏)
- auto_register(): 全自动注册主流程
- full_auto_setup(): 一键完成设备初始化
unified.py新增 3 个 API 端点(auto-register/full, check-state, get-sim-phone)hook_executor.py新增 3 个 ACTION_TO_RPC 映射(autoRegister, checkLoginState, getSimPhone)wechat_hook_v2.js新增 3 个 rpc.exports(autoRegister, checkLoginState, getSimPhone)- checkLoginState: 从 DB 检测是否已登录
- getSimPhone: 通过 TelephonyManager 获取 SIM 手机号
- 安装 lief 0.17.5 + frida-tools 17.8.1(Gadget 注入全链路工具就绪)
- 所有代码通过语法检查(Python + JS)
- 操作数统一更新为 110 个 / 24 模块
修改文件:
| 文件 | 说明 |
|---|---|
| sdk/app/services/auto_register.py | 新建 — 微信全自动注册引擎 |
| sdk/app/routers/unified.py | 新增自动注册 API 端点 + 操作数更新 |
| sdk/agent/hook/hook_executor.py | 新增 3 个 RPC 映射 |
| sdk/agent/hook/wechat_hook_v2.js | 新增 3 个 rpc.exports + 版本号更新 |
验证结果:
- Python 语法: auto_register.py ✅ / hook_executor.py ✅
- JS 语法: wechat_hook_v2.js ✅
- 工具链: apktool 3.0.1 ✅ / lief 0.17.5 ✅ / frida 17.8.1 ✅ / keytool ✅ / jarsigner ✅
阻塞项: 设备 dc9c23e00510 仍 unauthorized — 需用户手动在手机上点击"允许USB调试"
进度变化: Phase 8 Frida全功能维持 100%,新增 Phase 9: 自动注册 → 85%(代码完成,待真机验证)
下次计划:
- 用户授权设备后:执行 Frida Gadget 注入 → 真机 110 操作验证 → 自动注册实测
- 自动注册流程真机调试(注册页导航 + 验证码读取)
2026-03-13 | 卡若AI Gateway v2.0 — 全量集成工作手机 SDK
任务:
- 将工作手机 SDK 的 110 个微信操作全量集成到卡若AI Gateway
- 新增自然语言指令解析(中文→action映射)
- 新增自动注册/批量操作/快捷API 端点
完成项:
- Gateway v2.0 — 全量重写工作手机代理层
POST /v1/workphone/execute— 110 个操作统一执行POST /v1/workphone/command— 自然语言指令(说中文控制微信)POST /v1/workphone/auto-register— 全自动微信注册POST /v1/workphone/check-login— 检查微信登录状态POST /v1/workphone/sim-phone— 获取SIM卡手机号POST /v1/workphone/batch— 批量操作(带间隔防封)POST /v1/wechat/send— 快捷发消息GET /v1/wechat/profile— 快捷获取资料GET /v1/wechat/contacts— 快捷获取联系人POST /v1/wechat/moments— 快捷发朋友圈POST /v1/wechat/add-friend— 快捷加好友GET /v1/wechat/groups— 快捷获取群列表
- 自然语言解析引擎:支持 30+ 中文指令模式(发消息给X、获取联系人、注册微信、扫码 等)
- 连接池优化:单例 httpx.AsyncClient 复用
- 语法检查通过 + 无 linter 错误
修改文件:
| 文件 | 说明 |
|---|---|
| 卡若AI/运营中枢/scripts/karuo_ai_gateway/main.py | Gateway v2.0 全量重写工作手机集成 |
进度变化: Phase 10: 卡若AI集成 → 100%(Gateway 代码完成)
2026-03-16 连接守护技能 + 增强心跳(ConnectionGuard)
背景: 设备端 Agent 需确保与服务器始终保持连接,USB 授权弹窗、权限请求等系统弹窗可能阻断设备控制链路。
完成内容:
- 新建
skills/connection_guard.py(ConnectionGuardSkill)- 9 类弹窗自动识别+点击(USB调试、ADB权限、安装请求、权限访问、系统更新、电池优化、后台运行、Termux、ANR)
- 5 大检测能力:dismiss_popups / ensure_screen_on / check_u2_alive / check_network / check_adb_connection
- full_guard_cycle() 一轮完整守护
- agent.py 心跳循环升级为六层守护模式
- 每次心跳:弹窗扫描(异步,不阻塞)
- 每 3 次心跳:完整守护(网络+u2+屏幕+ADB)
- 异常自动上报 guard_alert 事件
- 心跳包含守护报告(guard 字段)
- 新增
_connection_guard_loop常驻守护任务(5 秒高频弹窗扫描,独立于心跳) - 注册到技能系统 SKILL_REGISTRY(10 个技能)
- 更新能力上报(connection_guard / popup_auto_dismiss)
- 更新 package.sh 打包脚本
- 端到端全链路验证 12/12 通过(100%)
- 飞书复盘推送成功
修改文件:
| 文件 | 说明 |
|---|---|
| sdk/agent/skills/connection_guard.py | 新建:连接守护技能(9类弹窗+5大检测) |
| sdk/agent/skills/init.py | 注册 ConnectionGuardSkill |
| sdk/agent/agent.py | 增强心跳(六层守护)+ 常驻守护循环 + 能力上报 |
| sdk/agent/package.sh | 打包加入 connection_guard.py |
进度变化: 设备端 Agent 连接稳定性 → 完成(守护+心跳+弹窗全链路)
2026-03-16 连接守护全面升级(多机型弹窗 + 服务端可视化 + unauthorized修复)
背景: 真实设备 dc9c23e00510 处于 unauthorized 状态;弹窗规则仅覆盖通用场景需扩展到全品牌;服务端无法看到守护事件。
完成内容:
- 诊断 unauthorized 问题:MIUI「USB调试(安全设置)」未开启 + ADB key 更新
- 创建
wait_and_start.sh自动等待设备授权→启动 Agent - 弹窗规则 9 → 19 类:覆盖小米/华为/OPPO/vivo/三星/一加/荣耀/realme
- 服务端新增 3 个守护事件 API:
GET /api/v3/devices/{id}/guard-events— 查询设备守护事件POST /api/v3/devices/{id}/guard-events— 上报守护事件GET /api/v3/guard-events/all— 全局守护事件
- ws_hub 心跳处理:自动提取 guard 数据存入事件库
- 控制面板新增「🛡️ 连接守护」面板(计数+事件时间线+状态 badge)
- 端到端验证:WebSocket 心跳 guard → ws_hub 存储 → API 查询,4/4 通过
- 飞书复盘推送成功
修改文件:
| 文件 | 说明 |
|---|---|
| sdk/agent/skills/connection_guard.py | 弹窗规则 9→19 类,覆盖 8 大品牌 |
| sdk/agent/wait_and_start.sh | 新建:等待设备授权后自动启动 Agent |
| sdk/app/routers/devices.py | 新增 3 个守护事件 API 端点 |
| sdk/app/services/ws_hub.py | 心跳 guard 数据自动存储 |
| sdk/app/static/index.html | 新增连接守护可视化面板 |
进度变化: 连接守护全链路(设备→传输→服务端→可视化)→ 完成
2026-03-16 真机验证 + 服务端事件循环阻塞修复
目标: Redmi Note 11 真机全链路验证,解决服务端 ADB 阻塞事件循环导致 WS 超时
发现的核心问题:
- 服务端所有 ADB 操作(
subprocess.run)是同步调用,直接阻塞 FastAPI 事件循环 health_check()、设备列表 API、connection_priority.evaluate()都会触发- ADB 36.0.0 缓存已删除的旧 key 路径,导致 unauthorized 反复出现
修复内容:
| 文件 | 修改 |
|---|---|
| sdk/app/services/adb_device.py | 新增 _adb_executor 线程池 + async_scan_devices/async_scan_all_devices/async_list_devices,所有 subprocess.run 加 env=_adb_env(自动注入 ADB_VENDOR_KEYS) |
| sdk/app/services/connection_priority.py | 新增 async_evaluate(),将 ADB 操作放入 run_in_executor |
| sdk/app/services/ai_heartbeat.py | _update_health_from_info 改为 async,调用 async_evaluate |
| sdk/app/main.py | health_check 和 _build_workbench_overview 改用 async_scan_devices |
| sdk/app/routers/devices.py | 设备列表和详情 API 的 ADB 调用改为异步 |
| sdk/app/routers/connection.py | 连接模式 API 改用 async_evaluate + async_scan_devices |
| ~/.zshrc | 永久化 ADB_VENDOR_KEYS 环境变量 |
验证结果:
- 修复前: WS 握手超时 10s+, 健康检查阻塞 10s+, 心跳 ACK 全部丢失
- 修复后: WS 注册 38ms, 健康检查 88ms, 设备列表 43ms, 心跳 ACK 3/3 成功
- 真机 ConnectionGuard: u2 连接 ✅, 弹窗扫描平均 100ms, 守护周期全 ok
进度变化: 服务端事件循环阻塞 → 已修复,真机全链路 → 已验证
2026-03-16 | 第12次对话 - 真机完全控制全链路验证
完成项:
-
H24 微信多版本适配框架
- 创建
wechat_version_compat.json(6版本偏移表 8.0.44~8.0.60) wechat_hook_v2.js植入 §0 版本兼容系统:自动检测 → 精确匹配/近似匹配/全候选- rpc.exports 新增
getVersionCompat()
- 创建
-
H33 Hook E2E 测试增强
test_hook_e2e.py增加版本兼容测试用例
-
Phase 3B 独立管理端确认
sdk/admin/F1-F14 全完成,api.ts补充 AI Brain API,build 成功
-
真机部署与完全控制验证 ← 本次重点
- 设备: Redmi 21121119SC, Android 11, arm64, 无Root
- Termux 安装成功 → Agent v3.1 部署到 ~/cloud-sync/
- config.json 生成(device_id=dc9c23e00510, 卡若AI API, AI Brain 开启)
- Agent 启动成功(PID 31597),WebSocket 连接 SDK 服务器
- AI Brain 自主运行模式已激活(离线循环)
- SDK 检测到双设备在线(新Agent + 旧版App v2.0)
- 微信 8.0.63 已安装(待登录)
- SDK API 真机控制验证通过:
POST /adb/devices/{serial}/screenshot✅GET /adb/devices/{serial}/app/current✅POST /adb/devices/{serial}/app/start✅POST /adb/devices/{serial}/click✅GET /adb/devices/{serial}/ui-tree✅
硬件问题: USB 连接不稳定,ADB 周期性 unauthorized(建议更换 USB 线或使用 WiFi ADB)
新文件: sdk/agent/hook/wechat_version_compat.json
修改文件: wechat_hook_v2.js、test_hook_e2e.py、admin/src/lib/api.ts、开发进度总表
进度变化: 98% → 99%(真机控制链路验证通过)
下次计划:
- 微信登录后验证 Hook 消息收发
- WiFi ADB 模式避开 USB 不稳定
- Frida Gadget 注入(无Root 方案)
提示词摘要: "连接真机 → batch_deploy → E2E全链路真机测试,完全控制"
2026-03-16 (续) 服务端性能修复 + MongoDB 非阻塞 + ADB 缓存
问题诊断与修复:
| 问题 | 原因 | 修复 | 效果 |
|---|---|---|---|
| WS 握手超时 10s+ | ADB subprocess.run 同步阻塞事件循环 |
线程池 + async_scan_devices |
76ms |
| 心跳 ACK 全丢 | dm.update_heartbeat() 阻塞在 MongoDB 认证失败 |
register/heartbeat 先回 ACK 再 fire-and-forget 落库 | 5/5 ✅ |
| 浏览器轮询打爆线程池 | 控制面板每秒轮询 overview/connection | scan_devices 加 3s TTL 缓存 + 线程池扩至 4 |
不再卡 |
| 手机 Agent 抢占 device_id | 真机 Agent 每 5s 连接断开覆盖测试 WS | 发现真机 Agent 已在 Termux 运行 | 需修复 u2 |
修改文件:
| 文件 | 变更 |
|---|---|
| sdk/app/services/adb_device.py | 线程池 4 workers + TTL 缓存 + _adb_env 自动注入 ADB key |
| sdk/app/services/ws_hub.py | register/heartbeat 先回 ACK 再 fire-and-forget MongoDB |
| sdk/app/services/connection_priority.py | async_evaluate() |
| sdk/app/services/ai_heartbeat.py | _update_health_from_info async |
| sdk/app/main.py | 健康检查 + 工作台异步化 |
| sdk/app/routers/devices.py | 设备 API 异步化 |
| sdk/app/routers/connection.py | 连接模式异步化 |
| ~/.zshrc | ADB_VENDOR_KEYS 永久化 |
重要发现: 手机上的 Agent 已在 Termux 中运行(从 192.168.110.236 连入),每 5 秒循环注册+断开。u2 未连接导致所有微信操作返回 503。下一步需修复手机端 Agent 的 u2 连接。
E2E 验证结果: WS 注册 76ms + ACK 5/5 + 守护事件 5 条 + ADB 检测 ✅ = 4/4 全部通过
2026-03-16 (续) 接码平台调研注册 & 微信注册准备
目标: 为工作手机微信注册获取虚拟手机号,调研并注册多家接码平台
完成内容:
| 步骤 | 内容 | 结果 |
|---|---|---|
| SMS-Activation.net 注册 | 用 mail.tm 临时邮箱注册,邮箱验证通过 | ✅ API Key 已获取并验证 |
| API 测试 | getBalance、getPrices 全通 | ✅ 微信服务 wc/wx 可用,12万+号可用 |
| GrizzlySMS 注册 | Cursor 浏览器注册成功 | ✅ 已登录,支持微信 |
| 多平台连通性测试 | 测试 Tiger-SMS/Hero-SMS/SMS-Man/Vak-SMS/5SIM 等 | Hero-SMS/SMS-Man 被墙,Tiger-SMS 有 CF 验证 |
| 性价比排行文档 | 7 家平台对比排行(价格/API/直连/支付) | ✅ 写入卡若AI 接收短信目录 |
| 自动化脚本 | sdk/scripts/wechat_register.py — 全自动购号+ADB填写+收码 |
✅ 就绪 |
文档输出:
卡若AI/02_卡人(水)/水桥_平台对接/接收短信/接码平台账号与排行.md— 账号/密码/API Key/排行sdk/scripts/wechat_register.py— 微信自动注册脚本
下一步: 用户充值 ¥30 到 SMS-Activation.net → 运行 wechat_register.py → 微信注册 → Hook E2E 测试
2026-03-17 微信自动注册脚本 dry-run 全流程验证
目标: 真机自动注册微信账号(卡若AI)
完成内容:
| 步骤 | 内容 | 结果 |
|---|---|---|
| SIM 卡检测 | 中国移动,ICCID 8986005…,但已停机无服务 | ⚠️ SIM 失效,需换卡或用接码平台 |
| 设备信息确认 | Redmi Note 11 4G / Android 11 / MIUI 12.5.2 / 128GB | ✅ |
| Frida Gadget 重新验证 | 微信启动后 37694 端口监听正常 | ✅ |
| 自动注册脚本编写 | sdk/scripts/wechat_auto_register.py — 接码平台+ADB自动化 |
✅ |
| Dry-run 全流程测试 | 设备检测→余额检查→注册页导航→填写表单→勾选协议→服务协议页 | ✅ 7步全通 |
发现的问题与修复:
- SIM 卡已停机(中国移动 135****2431,余额 0.36 元,停用超 15 个月)→ 改用接码平台
- ADB 中文输入不可用 → 先用英文昵称 KaruoAI,注册后改名
- 工作管理 app (com.grvjfe.mqfruz) 弹窗覆盖 → 需先关闭/点击消除
- uiautomator dump 超时 → 增加等待时间
阻塞项: SMS-Activation.net 余额 ¥0,需充值 ¥30 后可一键注册
下一步: 充值 → python3 sdk/scripts/wechat_auto_register.py --nickname "卡若AI" → 完成注册
2026-03-20 | Frida Hook 全链路打通 + 经验沉淀 + 服务端集成
目标: Root → Frida 部署 → Hook 脚本适配 → 10/10 功能验证 → 经验沉淀 → 服务端上报
完成内容:
| 阶段 | 内容 | 结果 |
|---|---|---|
| Root 获取 | 卸载 stub Magisk → 安装完整 Kitsune Mask Manager v31.0 → 授权 Shell | ✅ uid=0 |
| Frida 部署 | frida-server 17.8.1 Java桥失效 → 降级 16.5.6 → root 启动 | ✅ |
| 脚本适配 | WCDB 加密适配 + SQL列兼容 + Profile ID修正 + 版本表 + 进程名兼容 | ✅ |
| E2E 验证 | 10/10 全部通过(ping/版本/联系人/搜索/详情/profile/群/消息/hook状态/版本兼容) | ✅ |
| 飞书复盘 | 完整复盘推送飞书群(Root全流程+Hook全功能+安装经验) | ✅ |
| 经验沉淀 | 机擎/references/快速入机部署_Root_Frida_Hook.md — 含一键脚本+踩坑清单 |
✅ |
| 服务端集成 | 新增 GET /hook/probe/{device_id} 端点 → 自动探测+写入 device_modules.json |
✅ |
| 阿机 SKILL | 新增 §二.五 Hook 模块详解(架构图+关键文件+已验证功能) | ✅ |
| 机擎 SKILL | 更新开发目标为四层通道 + 新增 Hook 模块能力表 | ✅ |
| 设备状态 | dc9c23e00510 已写入 supports_hook=true, frida_version=16.5.6 | ✅ |
关键修改文件:
sdk/app/routers/unified.py— 新增/hook/probe+ 重构_get_frida_manager+_probe_device_fridasdk/agent/hook/frida_manager.py— 进程名兼容 + snake_case RPC 转换sdk/agent/hook/wechat_hook_v2.js— WCDB + SQL列 + Profile ID + 版本表开发文档/8、部署/设备端Hook安装部署.md— 实战踩坑经验 + 版本兼容矩阵机擎/阿机/SKILL.md— Hook 模块详解章节机擎/SKILL.md— Hook 模块能力表sdk/app/data/hook/device_modules.json— dc9c23e00510 状态更新
三通道就绪: ADB ✅ / WebSocket/u2 ✅ / Frida Hook ✅
进度: Frida Hook 通道 100%
2026-03-20(续)| FridaManager 死锁修复 + 发送消息 E2E 12/12
目标: 修复 FridaManager 线程竞争 + 发送消息 Frida 通道 E2E 验证
完成内容:
| 项目 | 内容 | 结果 |
|---|---|---|
| 死锁诊断 | start() 持 _lock → _load_script() → Frida 线程 _on_session_detached 也获取 _lock → 死锁 |
✅ 定位 |
| 修复方案 | detach 回调不获取 _lock(CPython GIL 保证引用赋值原子性);分离 _nullify_refs(回调用)和 _do_cleanup(主动断开用) |
✅ |
_detaching 守卫 |
防止 detach 回调 → _do_cleanup → 重复 session.detach() |
✅ |
call_rpc 线程安全 |
获取锁拿 rpc 引用后立即释放,RPC 调用在锁外执行 | ✅ |
| 12/12 E2E 验证 | 连接/ping/版本/资料/联系人/搜索/群/消息/HookStatus/VersionCompat/发消息(rpc)/发消息(call_rpc) | ✅ 全通过 |
关键修改: sdk/agent/hook/frida_manager.py
进度: FridaManager 100% + 发送消息 Frida E2E 100%
下一步: 批量入机测试 + Hub 面板集成 Hook 状态展示
续15:控制台深度整合——导航精简+功能融合+未来扩展(2026-03-20)
目标: 将控制台从 6 个独立导航合并为 5 个结构化导航,消除重复功能,建立可扩展的多App管控架构。
核心变更:
| 变更项 | Before | After | 说明 |
|---|---|---|---|
| 导航数量 | 6 个(总览/微信号管理/设备控制/智能引擎/对接网关/知识库) | 5 个(总览/设备管理/智能引擎/对接网关/知识库) | 合并微信→设备 |
| 设备管理子标签 | 无 | 📱设备 / 💬微信 / 💜Soul / 📕小红书 / 🎵抖音 | 一个入口管所有App |
| 智能引擎子标签 | AI Brain / Hook / Events | + 🔌连接监控 + 💓心跳 | 合并原infra面板 |
| WS/ADB状态 | 仅顶部状态栏 | 设备管理头部实时徽章显示 | 随时可见 |
| API文档 | 分散在各面板 | 微信子标签底部API速查+Swagger链接,未来App预留API展示 | 可点击可复制 |
| URL兼容 | ?tab=wechat 独立页面 | ?tab=wechat → 自动重定向到 ?tab=devices+微信子标签 | 向后兼容 |
| 未来App | 无 | Soul/小红书/抖音 预留快捷操作+API端点+架构说明 | 可扩展 |
代码重构:
renderWechatPanel()→renderWechatContent()(内容函数,不含独立header)renderDevicePanel()→ 重写为master panel,含5个子标签路由renderInfraPanel()→ 拆分合并到Engine panel(连接+心跳标签)- 新增
renderFutureAppContent(appId)通用未来App模板 - 新增
renderDeviceOverviewContent()设备总览内容提取 - 导航路由:
navigate('wechat')→ 自动路由到devices+wechat子标签 - URL解析:
_resolvedTab处理旧URL兼容 - 状态:新增
state.deviceTab跟踪设备面板子标签
验证结果: 浏览器截图确认,0个JS错误
- ✅ 5个导航标签正确渲染
- ✅ 设备管理5个子标签切换正常
- ✅ 微信管理三列布局+API速查正常
- ✅ Soul/小红书/抖音未来App模板正常渲染
- ✅ 智能引擎连接监控/心跳标签正常
- ✅ WS 0 / ADB 2 实时状态徽章可见
进度: 控制台整合 100%
2026-03-21 | Hook 修复 + 数据 API + Hub 面板集成
完成内容:
-
修复 2 个失败 RPC 方法(
wechat_hook_v2.js)getDeviceInfo:Build.VERSION需要用Build$VERSION内部类访问,已修复getFavorites: 改为多名称搜索(Favorite.db / favorite.db / EnFavorite.db)+ 回退主库查询
-
新增 Hook 数据查询 API(
unified.py)GET /api/v3/hook/data/{device_id}?modules=profile,contacts,groups,labels,messages,device_info- 支持 15 种模块:profile / contacts / groups / messages / labels / moments / accounts / hook_status / device_info / wechat_version / process_info / storage_info / network_info / login_state / favorites
- 自动通过 Frida USB 模式连接设备并批量查询
- 修复
_get_frida_manager默认模式为usb
-
Hub 面板新增「Hook 数据」标签(
hub.html)- 智能引擎面板新增 📊 Hook 数据 子标签
- 三栏顶部统计卡:微信资料 / 数据统计 / 设备信息
- 联系人列表(带搜索过滤)+ 群聊列表(带搜索过滤)
- 标签展示(pill 样式)+ 最近消息流
- 支持 URL 参数直达:
?tab=engine&engineTab=hookdata
真机验证数据(设备 dc9c23e00510):
| 模块 | 数据量 | 状态 |
|---|---|---|
| 微信资料 | wxid_gb5mi6ijhzxk22 / 8.0.69 | ✅ |
| 联系人 | 200 个 | ✅ |
| 群聊 | 1 个 | ✅ |
| 标签 | 58 个 | ✅ |
| 消息 | 20 条 | ✅ |
| 设备信息 | 21121119SC / Android 11 / SDK 30 | ✅ |
下一步: 批量入机测试 + 完善 Hub 面板交互(发消息/管理操作)
2026-03-21 微信全功能 E2E 全量测试 + 性能优化 + WiFi Agent
一、性能优化(BaseSkill)
| 优化项 | 修改文件 | 效果 |
|---|---|---|
| Speed 乘数 0.3x | sdk/agent/skills/base.py |
sleep 时间缩短 70% |
| UI 缓存层 | get_ui_tree(max_age=2.0) |
2 秒内复用 dump_hierarchy |
| 防护方法兼容修复 | human_click / natural_behavior_* |
移除不存在的 can_operate/get_delay_multiplier/report_success 调用 |
二、WiFi Agent 配置
config.json的server_url改为ws://192.168.0.5:8899/ws/device(LAN IP)- Agent
_init_u2()和_try_reconnect_u2()改为u2.connect(self.device_id),修复多设备 ADB 冲突
三、API 端点修复
| 修复 | 文件 | 说明 |
|---|---|---|
recall_message 端点 |
unified.py |
从 query params 改为 RecallMessageRequest body |
| E2E 测试 POST 兼容 | test_wechat_full_e2e.py |
422 时自动切 query params 重试 |
batch_send 参数名 |
test_wechat_full_e2e.py |
targets → to_ids |
like_moments/comment_moments 参数 |
test_wechat_full_e2e.py |
补 user_id + post_index |
四、E2E 测试结果(29 个安全测试)
总计: 29 | 通过: 14 | 失败: 15 | 成功率: 48.3% WebSocket/u2 通道全程稳定,所有通过的测试均走 websocket/u2
| 模块 | 结果 | 通道 |
|---|---|---|
| 好友(get_contacts / search / info) | 3/3 ✅ | websocket/u2 |
| 群聊(get_groups / members) | 2/2 ✅ | websocket/u2 |
| 标签(get_tags) | 1/1 ✅ | websocket/u2 |
| 朋友圈(get_moments) | 1/1 ✅ | websocket/u2 |
| 个人(get_profile) | 1/1 ✅ | websocket/u2 |
| 安全(status / restrictions) | 2/3 ✅ | websocket/u2 |
| 收藏(get_favorites) | 1/1 ✅ | websocket/u2 |
| 视频号(video_list) | 1/1 ✅ | websocket/u2 |
| 支付(wallet) | 1/3 ✅ | websocket/u2 |
| 消息(get_messages) | 1/5 ✅ | websocket/u2 |
失败分析:
- 超时 (60s): safety_center / set_chat_top / set_mute_chat / my_qr / payment_code / send_card(u2 操作复杂+凌晨设备慢)
- 时段限制: send_message(凌晨 00:00 不在 7:00-23:00 操作时段)
- WS 断开后 JSON 错误: transactions / wechat_search / top_stories / get_steps / stickers / hook_actions
- UI 交互: forward_message / recall_message(微信自定义控件找不到转发/撤回选项)
五、下一步
- 白天跑全量 E2E(7:00-23:00 内,可解锁 send_message 等写操作)
- 启用 Frida Hook 通道(需手机端 Magisk 授权),性能提升 10-100 倍
- 优化 forward/recall/send_card 的 u2 导航逻辑
2026-03-21 | Gitea 门户落地(代码推送 + 百科 API 同步)
完成项:
- 仓库根
README.md:项目入口、Hub/Swagger 说明、Gitea 各板块索引、安全提醒 .gitea/workflows/sdk-ci.yml:push/PR 时compileall sdk/app(Actions 需实例配置 act_runner 方执行)docs/wiki-gitea/6 页百科源:Home、快速开始、架构一览、Hook与Frida、下载中心、更新动态docs/gitea/:RELEASES / PACKAGES / PROJECTS / WIKI_SYNC 说明 +publish_wiki.py(Authorization: token调 Wiki API)开发文档/8、部署/README.md增加 Gitea 门户路径说明- 已执行:
git push gitea main;已执行:Wiki 全量创建/更新(6 页)
说明: 软件包/项目看板/带附件的 Release 需在 Gitea Web 按 docs/gitea/*.md 继续操作;大二进制勿入库,用 Release 附件或 Generic 包。
2026-05-24 | 2、架构 目录分层重组 + 开发文档结构 Skill
完成项:
开发文档/2、架构/按大类重组:01-总览/02-技术基座/03-通道与设备/04-交互图/05-规范/- 12 张 PNG 迁入
images/01-整体总览/~04-防封/四类子目录 2、架构/README.md重写:目录树、图片索引、Obsidian 配色表- Obsidian:
.obsidian/snippets/workphone-devdoc.css目录配色;各层 README 带obsidian-color sdk/app/main.py:_DOC_PAGE_MAP、_scan_arch_assets路径对齐新结构- Skill 新增:
机擎/阿表/开发文档结构规范/SKILL.md(开发时实时归类、images 规则、Obsidian) - 联动更新:
机擎/SKILL.md、机擎/阿表/SKILL.md、开发文档/README.md、手册 HTML、资料目录旧路径
进度: 99.5%(文档结构无功能阻塞)
下一步: 新功能文档当场按 Skill 归类;Gitea NAS 在线后 bash docs/gitea/sync_when_online.sh
2026-05-24 | 5、接口 目录分层重组
完成项:
- 根目录 8+ 文件迁入
01-规范与统一层/~05-交互图/ - 各层 README +
images/占位;sdk/app/main.pyHub 路径对齐 - 机擎/开发文档 Skill/资料/手册 引用路径批量更新
进度: 99.5%
2026-05-24 | 6、后端 顶层轻量分层
完成项:
- 三主文档迁入
01-服务端/02-设备端/03-规范汇总/ docs/、github-repos/未动;各层 README + images 占位
进度: 99.5%
2026-05-24 | 8、部署 + 10、项目管理 分层
完成项:
8、部署→01-本地环境/02-设备Hook/03-运维同步/10、项目管理真源三文件留根目录;报告/计划迁入02/03/- 机擎阿服、手册、wiki、local-mount-sync 路径更新
进度: 99.5%
2026-05-24 | 1、需求 分层
完成项: 01-概述/ 02-业务/ 03-调研/;机擎对话沉淀路径 → 02-业务/业务需求.md
进度: 99.5%
2026-05-24 | 9、手册 分层(主手册留根)
完成项: 主手册/HTML 留根;操作/验证/专项迁入 02/ 03/ 04/;手册内链与 HTML 更新
进度: 99.5%
2026-05-24 | Obsidian 打不开修复
完成项:
- 根因:整仓 252872 文件 + 空 core-plugins.json + workspace 失效路径
.obsidianignore+ 轻量 vault(~/Documents/workphone-devdoc)+ open-obsidian.sh- 排除 github-repos;清 IndexedDB / macOS savedState;本机双 vault 验收通过
- 手册:
9、手册/02-操作指南/Obsidian打开说明.md
进度: 99.5%(Obsidian 文档入口已恢复)
2026-05-24 | 开发文档顶层仅 1~10(Phase B)
完成项:
- 取消顶层
6、测试00-项目总览5、开发日志5、接口文档平台分析 - 真机验收 →
8、部署/05-测试验收/;接口矩阵+开发日志 →5、接口/06-验收与矩阵/ - 项目总览 →
2、架构/01-总览/项目目录总览.md;平台分析 →1、需求/03-调研/平台分析/ - 全仓路径 sed +
validate_doc_paths.sh/ CI 更新;Obsidian CSS/workspace 同步
进度: 99.5%
2026-05-24 | 卡若复盘规则强制化(每轮 + Skill/规则同步)
完成项:
.cursor/rules/workphone.mdc§5 扩为「每轮回复 + 对话结束」,对齐 v5.1 五块模板.cursor/rules/persistent-chat.mdc新增「卡若复盘 · 每轮强制」(先于 wait_for_user_input)机擎/SKILL.md§3.2 改为「每轮回复与对话结束:卡若复盘 + 写日志」
进度: 99.5%
2026-05-24 | 外网访问复验(继续)
完成项:
- kr SSH:
127.0.0.1:8889/health与 Nginxworkphone.quwanzhi.com本机 200 - Mac 外网 curl 80/8889 → Empty reply;DNS 解析 198.18.0.22(Clash fake-ip)
- 腾讯云安全组脚本 SignatureFailure(凭证待更新);
deploy_home_station.sh补充公网 URL 与 Clash 说明
下一步: 更新腾讯云 SecretKey → 重跑安全组脚本;Clash 加 DIRECT;HTTPS 待 80 外网通
进度: 99.5%
2026-05-24 | 公网 HTTPS 开通(继续)
完成项:
- kr Nginx
workphone.quwanzhi.com增加 443(复用*.quwanzhi.com通配证书),80→301 HTTPS - Mac
--resolve验收:https://workphone.quwanzhi.com/health→ healthy - 根因:本机 HTTP:80 Empty reply(Clash/网络),HTTPS:443 正常
主入口: https://workphone.quwanzhi.com/hub
进度: 99.5%
2026-05-24 | 全链路 HTTPS 验收 + 手册 §6.4
完成项:
/hub200(199KB)、/docs200、/api/v3/gateway/infoJSON 正常- 主手册 v2.3 新增 §6.4 家里 NAS 生产环境(HTTPS 主入口)
- 已
open https://workphone.quwanzhi.com/hub供浏览器验收
进度: 99.5%
2026-05-24 | 存客宝联调配置(继续)
完成项:
- cunkebao
Server/.env.local.example、.env.docker增加生产SDK_URL=https://workphone.quwanzhi.com - 对接手册 §3.4 生产环境;新增
sdk/scripts/verify_production_urls.sh全绿 - 线上 ckbapi 需在服务器
.env写入 WORKPHONE 并 reload(本机无 SSH 权限)
进度: 99.5%
2026-05-24 | ckbapi 生产部署 workphone BFF(继续)
完成项:
- SSH 42.194.245.239 部署
WorkPhoneSDK.php、控制器、config、路由 .env写入SDK_URL=https://workphone.quwanzhi.com- 验收
GET /v1/workphone/status→ 401(路由通,需登录 Token,非 404)
进度: 99.5%
2026-05-24 | workphone.env 读取修复(继续)
完成项:
Server/config/workphone.php改为env('workphone.sdk_url')对齐 ThinkPHP[WORKPHONE]段WorkPhoneSDK.php优先config('workphone.*');已 redeploy ckbapi + reload php-fpm- ckb 服务器 curl
https://workphone.quwanzhi.com→ healthy + workbench overview OK
进度: 99.5%
2026-05-24 | 开发文档标签与关联(Obsidian 图谱)
完成项:
机擎/阿表/开发文档结构规范/SKILL.md新增 §四B 标签与关联规范- 脚本
8、部署/05-测试验收/scripts/apply_doc_tags_links.py批量处理 158 篇 MD(tags/related/parent + 🔗 关联导航) .obsidian/graph.json开启showTags;机擎/SKILL.md与开发文档/README.md同步说明
进度: 99.5%
2026-05-24 | ws_hub 命令响应修复 + 生产 Hook ping E2E
完成项:
- 修复
sdk/app/services/ws_hub.py:send_command发送后误删pending_commands导致 Agent 响应无法匹配 Future - 已 pipe 部署至 NAS,经
start.sh重启 uvicorn - 真机 Agent 验收
POST /api/v3/hook/executeping hook_only → 200 success pong;health ws=1
| Hook E2E ping(生产) | 200 pong | ✅ | ws_hub Future 修复 + NAS 部署 |
进度: 99.8%
2026-05-24 | 项目落地执行表乱码修复 + 实时看板
完成项:
03-计划与专项/项目落地执行表.mdcp1252 双重编码乱码全文修复- 新增 §零 实时进度看板(Sprint/验收维度/下一步)
- 旧路径
6、测试/wikilink 纠偏至8、部署/05-测试验收/与5、接口/06-验收与矩阵/
进度: 99.8%
2026-05-24 | 存客宝 workphone Hook 发消息面板(P0 Sprint #1)
完成项:
cunkebao_v3/Cunkebao/.../workphone/index.tsx新增 Hook 发消息验收 卡片(设备选择 · to_id · 经 BFF 发送 · JSON 回显)api.js补齐sendWorkPhoneMessage/executeWorkPhoneHook(与api.ts对齐)- 本地 SDK
curl message/send路由通;当前 ADB 设备192.168.110.80:5555返回Frida 连接失败(待 Agent Frida 在线后页面真机可见) - 同步 项目落地执行表 Sprint #1 🟡、2026-05-24_微信真机可见验收_单项确认 §四
进度: 99.8%(P0 前端接线 ✅ · 真机可见待 Frida)
2026-05-24 | 卡洛发消息+朋友圈(阻塞 ADB)
需求: 微信给「卡洛/卡若」发「你好」+ 发朋友圈 + 成功截图回传
结果: ❌ 未完成 — 无线 ADB 192.168.110.80:5555 Connection refused;USB 无设备;云端 WS Agent 已掉线
已做: 后台脚本 sdk/scripts/run_kaluo_msg_moments.sh(等 ADB 600s 后自动 oneclick→发消息→朋友圈→截图到 5、接口/images/)
待卡若: 手机开「无线调试」或 Type-C 插线授权 + 打开微信前台 → 脚本自动续跑
2026-05-24 | Frida 一键 + Hook 探测 BFF + 页面诊断条
完成项:
- 执行
sdk/scripts/frida_workphone_oneclick.sh -d 192.168.110.80:5555:反检测 frida-server ✅ · Agent WS 在线 1 台 - 卡点:真机 微信未在前台运行,Agent 日志
微信未运行,Remote 模式无法 spawn→ Hook send 仍失败 - 存客宝 BFF 新增
GET /v1/workphone/hook/probe;前端 Hook 卡片展示探测状态与修复提示 WorkPhoneSDK.php增加hookProbe()
进度: 99.8%(P0 待你在真机手动打开微信后页面点发送)
2026-05-24 | WeChatNavCache get_page 修复 + ADB 双通道
完成项:
- 修复
wechat_adb_engine._find_text误调nav_cache.get_page→ 改用get_element_coord/get_tab_coord - ADB
channel=sdk_control已从 get_page 崩溃变为 UI 自动化执行(当前 30s 超时,需解锁+微信前台) - 存客宝 workphone 页增加 ADB 备用 按钮;BFF/SDK 支持
channel参数
进度: 99.8%
2026-05-24 | Frida 真机验收证据包迁入开发文档
完成项:
卡若Ai的文件夹/工作手机_Frida真机验收_20260524→5、接口/06-验收与矩阵/2026-05-24_Frida真机验收/(35 文件 · 约 5.8MB)- PNG 统一进子目录
images/(总览图 2 张 + adb 截屏);矩阵 JSON/CSV 保留01_/02_/04_/05_分层 - 新增证据包
README.md(Obsidian frontmatter + 目录说明 + 诚实口径) - 更新
06-验收与矩阵/README.md索引;2026-05-24_微信真机可见验收_单项确认.md路径改为开发文档相对路径 - 原卡若Ai 文件夹留
已迁入开发文档.txt指向真源
进度: 99.8%(文档归档 ✅ · 发消息稳定复验待 oneclick)
2026-05-24 | WebSocket + Frida 主控锁定 & 存客宝 BFF 补全
完成项:
- SDK:
WECHAT_WS_HOOK_ONLY=1— 微信仅 WebSocket Agent + Frida,禁止服务端 ADB UI/sdk_control回退 unified.py:message/send、hook/execute经 WSexecute下发;to_id文件传输助手归一- Agent:自动读
phantom_frida_config.json→ remote Frida;ensure_ws_agent.sh+ oneclick 更新 - 存客宝 BFF:
/v1/workphone/connection/status·message/send·hook/execute+ WorkPhoneSDK +api.ts - 验收文档重写:
5、接口/06-验收与矩阵/2026-05-24_微信真机可见验收_单项确认.md(WS 口径)
进度: 99.9%(架构锁定 ✅ · 全矩阵 WS 连跑需 Agent 保活后复验 97/97)
2026-05-24 | 存客宝 3100 本地联调闭环(SDK 三真任务)
完成项:
- 根因:
StatsController读s2_device非ck_device→seed_workphone_dev_bind.sql补 S2 三表,首页 deviceNum=1 - SDK 真任务:好友群发 Job · 获客欢迎语(status=4) · 按号加好友(status=1);
WorkbenchMessageBridge::addFriendByPhone seed_dashboard_scenario.sql→ plan-stats / sevenDay-stats 有数;passRate公式修正 50%- 文档:
cunkebao_v3/开发文档/5、接口/02-存客宝与工作手机对接/README一键验收;验收 doc §七 - GitHub:
cunkebao_v3develop2ffe50146· workphone mainf4da6fa
进度: 100%(存客宝侧 P0 联调 ✅ · cunkebao_doc 子模块 push 403 待 PAT)
2026-05-24 | WS+Frida ping 超时根因 & oneclick 加固
完成项:
- 任务 531161 复盘:WS 在线但
hook/executeping 30s 空响应 — 主因 微信未运行 → Frida lazy attach 挂起 - 次要:重复 Agent 抢连、phantom 端口轮换后旧进程连错端口
frida_workphone_oneclick.sh:启动前杀旧 Agent、再拉微信、等RPC ping: pong再结束ensure_ws_agent.sh:同步拉微信 + 等 RPC 就绪wait_adb_device.sh新建;oneclick 启动前 wait 90sagent.py:Frida 回调call_soon_threadsafe;成功通道websocket/frida
阻塞: 无线 ADB 192.168.110.80:5555 Connection refused(手机 IP 可达,需 USB 或重开无线调试)
进度: 99.9%(脚本加固 ✅ · 真机 matrix 待 ADB 恢复)
2026-05-24 | 微信全量验收汇总 + 自动跑批
完成项:
- 新增
run_full_wechat_acceptance.sh:等 ADB → oneclick → hook 数据 → REST 96 项 → catalog 173 项 → MD/JSON 报告 - 汇总报告:
5、接口/06-验收与矩阵/2026-05-24_微信全量验收_汇总报告.md(今日最佳 96/96 + 173/173) - 后台跑批已启动(600s 等 USB/无线 ADB)
阻塞: 真机 ADB 未连接,实时复验待设备恢复
进度: 99.5%(历史全绿 ✅ · 实时复验待 ADB)
2026-05-24 | 开发文档说明头图批量生成
完成项:
- 脚本
8、部署/05-测试验收/scripts/generate_doc_header_banners.py— Pillow 批量生成说明头图 - 141 篇 MD 已插入 frontmatter 后
(跳过工作日志/追加版等 84 篇) - 阿表 SKILL §四C + 根
开发文档/images/doc-headers/+ 总 README 约定更新
进度: 99.9%
2026-05-24 | 开发文档说明头图 · AI 图替换 PIL
完成项:
- 11 张目录级 AI 头图(1~10 + 根 README)+ 7 张主题 AI 头图(系统架构 / Frida验收 / 110验收 / Soul调研 / 存客宝对接 / 五图手册 / 开发进度)
- 147/147 个
doc-headers/*.png已全部替换为 AI 生成图(非 Pillow 扁平条) - 25+ 篇「主文档」已升级为独版 AI 头图(API契约/全量目录/SDK服务端/Agent/微信矩阵/Frida部署/存客宝映射/业务需求/技术选型/前端规范/目录总览/Hook多设备/E2E/一键接入等)
- 修复
README_请先读我.md/_副本.md重复插入 31× 说明图 → 各保留 1 条置顶
进度: 100%(Obsidian 打开任意 MD 可见图标化说明头图)
2026-05-24 | 存客宝回退「仅 BFF 接口层」
卡若要求: 存客宝与工作手机对接只写接口,不改 Job/Bridge/Adapter。
完成项:
- 删 Bridge/SendMessageController/seed 脚本;恢复 Job、Stats、Adapter
- 保留
WorkPhoneSDK+GetWorkPhoneStatusController十条/v1/workphone/* - GitHub
cunkebao_v3develop038024c67
进度: 存客宝接口层 100% · 业务切 SDK 另开需求
2026-05-24 | 存客宝 BFF 复验 · ADB 仍离线
完成项:
- BFF 复验:
POST /v1/auth/login200 →GET /v1/workphone/connection/status200(ws=0 adb=0) POST /v1/workphone/hook/executeping → 200「设备不在线: 192.168.110.80:5555」(透传正常)auto_recover_adb_oneclick.sh增强:ping 通但 5555 关时日志提示开无线调试/USB- 后台
auto_recoverpid 68958 持续轮询;手机.80ping 通,5555/39329 全关,子网无 ADB
卡点: 需手机侧开「无线调试」或 USB 一次 adb tcpip 5555;脚本会自动 oneclick
进度: 接口层 100% · 真机 E2E ~90%(等 ADB)
2026-05-24 | 微信解封·联系客服自动化(需求设备-微信-解封2)
完成项:
- 5 张截图全部读图反推:安全保护中→联系客服→终止使用说明(kf.qq.com)→联系专属客服→允许小程序→微信安全专属客服
- 升级
sdk/agent/skills/wechat/unblock_customer_service.py7 阶段状态机(含 H5/小程序授权弹窗专项处理)+ 文案锚点常量 + 截图归档 + 阻断项解析 - WechatSkill 注册
unblock_via_customer_service;SDK 路由POST /api/v3/account/unblock-customer-service - 批量常规操作:
sdk/scripts/wechat_unblock_batch.py+sdk/config/unblock_targets.example.yaml(多设备×多账号,concurrency 可调) - 用户手册:
9、手册/02-操作指南/微信解封_联系客服批量操作手册.md3 步走 + 6 状态解读 + FAQ - 后端方案:
6、后端/02-设备端/微信解封_联系客服自动化方案.mdv2 含真实链路 + 批量章节 - SUCCESS/REJECT 关键词补 5 条;smoke test 100% 通过
- SDK 实例已重启,
openapi.json6 条 unblock 端点(含新路由);端到端 HTTP 200 通
待真机: ADB 恢复后执行 python3 sdk/scripts/wechat_unblock_batch.py -c sdk/config/unblock_targets.yaml
进度: 代码+批量+手册 100% · 真机验收待 ADB
2026-05-24 | 存客宝回退「仅 BFF 接口层」
卡若要求: 存客宝与工作手机对接只写接口,不改 Job/Bridge/Adapter。
完成项:
- 删 Bridge/SendMessageController/seed 脚本;恢复 Job、Stats、Adapter
- 保留
WorkPhoneSDK+GetWorkPhoneStatusController十条/v1/workphone/* - GitHub
cunkebao_v3develop038024c67
进度: 存客宝接口层 100% · 业务切 SDK 另开需求
2026-05-24 | 存客宝 BFF 复验 · ADB 仍离线(补记)
完成项:
- BFF 复验:
POST /v1/auth/login200 →GET /v1/workphone/connection/status200(ws=0 adb=0) POST /v1/workphone/hook/executeping → 200「设备不在线: 192.168.110.80:5555」(透传正常)auto_recover_adb_oneclick.sh增强:ping 通但 5555 关时日志提示开无线调试/USB- 后台
auto_recoverpid 68958 持续轮询;手机.80ping 通,5555/39329 全关,子网无 ADB
卡点: 需手机侧开「无线调试」或 USB 一次 adb tcpip 5555;脚本会自动 oneclick
进度: 接口层 100% · 真机 E2E ~90%(等 ADB)
2026-05-24 | 管理端统一 8899 · 移除 8880 website
完成项:
docker-compose.yml/docker-compose.nas.yml删除website;删除sdk/website/- 部署脚本与
本地Docker部署指南.md改为 8899/hub 唯一入口 docker rm -f workphone-website;8899/hub验证 200
进度: 部署入口统一 100%
2026-05-24 | 存客宝「工作手机对接」迁入 5、接口
完成项:
- 文档真源:
cunkebao_v3/开发文档/5、接口/02-存客宝与工作手机对接/(含 CodeGraph · 一键验收脚本) - 旧路径
开发文档/工作手机对接/留 README 重定向;全仓交叉引用已更新 bff_acceptance.sh增强登录失败提示;支持CKB_TOKEN跳过登录
验收: SDK :8899 health 200;BFF :8082 在但 MySQL gone away 时脚本明确 FAIL(需起 Docker)
进度: 文档归口 100% · 真机 E2E 仍待 ADB
2026-05-24 20:25 | 局域网无线主控 setup
完成项:
- 新增
sdk/scripts/lan_connect_setup.sh+config/lan.env - Docker
ADB_SERVER_SOCKET→ 5038;宿主机 adb 桥接脚本同步 - 验收:局网
192.168.110.251:8899health ✅;无线 ADB192.168.110.40:5555device ✅;Dockeradb_devices=1
待办: 红米 Termux 跑 Agent → ws://192.168.110.251:8899/ws/device/xgfe65eimrrofyws
进度: 局域网链路 ~85% · WS Agent 待手机侧启动
2026-05-29 | BIND-03 公网主服有序回退(设备Agent寻服)
完成项:
sdk/agent/agent.py+sdk/app/agent/agent.py双份同步:新增_build_server_candidates/_probe_ws_base/_select_reachable_candidate;connect()按候选有序 TCP 探测 + 阶段日志(BIND-07 lan/primary/public/retry);断连轮换下一候选_resolve_config解析WP_PUBLIC_SERVERS(env > CLI--public-servers>config.json.public_servers)- 离线回归
sdk/tests/test_agent_public_fallback.py4/4 通过;py_compile双份 OK
验收: 候选去重/补全 ✅ · 不可达探测 ✅ · 本机 socket 可达探测 ✅;真机「断 LAN 自动连公网」E2E 待红米
进度: BIND-03 代码 100% · 真机待验 · 变活链路 ~80%
2026-05-29 | BIND-07 寻服阶段可视(connect_stage 上报)
完成项:
- Agent 双份:
_get_device_info上报connect_stage/server_url/server_candidate_count;_get_quick_status心跳带connect_stage - SDK
ws_hub.py:心跳_sync_fields增connect_stage(register 经**device_data已带入) routers/connection.py:/api/v3/connection/status设备行暴露connect_stage/server_url- 离线回归扩到 6/6 通过(新增 quick_status / device_info 含 connect_stage 断言);4 文件 py_compile OK
验收: 阶段值 lan/primary/public/retry 全链路上报;真机阶段切换留痕待红米
进度: BIND-07 代码 100% · UI 展示(N1/N2)待前端 · 变活链路 ~85%
2026-05-29 | BR6 / D-T6 Skill 注册表对齐 CI 门禁
完成项:
- 核查
sdk/scripts/skill_registry_audit.py:中台 150 平台 action 与设备端 Skill 类对齐,缺失 0 · complete ✅ - 新增 CI 门禁 pytest
sdk/tests/test_skill_registry_alignment.py:复用审计逻辑,注册表 action 设备端缺失=0 才通过(防漂移) - 回归:
test_skill_registry_alignment+test_agent_public_fallback8/8 passed
验收: python sdk/scripts/skill_registry_audit.py exit 0 · pytest 门禁绿
进度: BR6 ✅ · D-T6 ✅(CI 门禁就绪,可挂 CI workflow)· 本模块代码 ~96%
2026-05-29 | BIND-04/05 APK 自动寻服(UDP beacon + 换网重寻服 + 公网回退)
完成项:
- 新增
sdk/android-app/.../engine/BeaconDiscovery.kt:UDP 8898 监听,与sdk_discovery.py/discovery_service.py协议对齐(magic WORKPHONE_SDK,优先 192.168.110.x) AgentEngine.kt:公网主服有序回退候选buildCandidates/rotateCandidate、connect_stage(lan/primary/public/retry) 上报 register+heartbeat、onNetworkAvailable()换网 beacon 重寻服、心跳丢 3 次轮换候选AgentForegroundService.kt:注册ConnectivityManager.NetworkCallback换网触发重寻服;空 server_url 时 beacon 自动发现;读public_serversprefs 传入 engineBootReceiver.kt:支持auto_discover开机自启(默认关,安全)SetupActivity.kt:扫码 QR 写入public_servers/auto_discover- SDK
qrcode.py:QR 内容支持public_servers/auto_discover字段 gradle.properties:加kotlin.daemon.jvmargsUTF-8 +kotlin.compiler.execution.strategy=in-process,修复中文工程路径下 Kotlin 编译源文件路径被转义找不到 的环境问题
验收: ./gradlew :app:compileDebugKotlin BUILD SUCCESSFUL(仅原有 deprecation 警告,新文件无错);qrcode.py py_compile OK
进度: BIND-04/05 代码 100% · 真机量产 E2E 待验 · 变活链路 ~95% · 本模块代码 ~98%
2026-05-29 | 真机 E2E:中台→微信 Frida 收发打通(V3/D-T1)
完成项(真机·非 mock):
- 红米
xgfe65eimrrofywsWS 在线 · Hook supports=true · 微信 8.0.69 · wechat_hook_v3.0 96 actions - V3 发消息 execute-script send_message → 文件传输助手:
code=200 channel=hook success=true message_id=msg_1780045393669_096072 - 收消息 get_messages channel=hook:返回真实微信消息(chatroom 实际内容)
- 证据归档
开发文档/8、部署/05-测试验收/2026-05-29_设备Agent_真机E2E.md
阻塞/待验:
- V1 自然语言 ai/chat →
卡若AI 无响应(网关 3102 未起,外部依赖,禁 mock) - WS 间歇抖动(send 成功后偶发掉线数秒重连);24h 稳定性 P1
进度: V3 ✅真机 · D-T1 ✅真机(精确下发) · 真机 E2E ~80% · 本模块 ~98%
2026-05-29 16:50 | 四端对接 · 真机 E2E 打通(全自动·无设备前置→自启 frida+agent)
背景: 续四端对接,用户授权全自动跑到底。初始 devices_online:0(agent/frida 未起)。
完成项:
- 真机自启上线(本机 ADB 运维兜底):设备 root 起反检测
fs_301450 -l 0.0.0.0:33891(frida 16.5.6,与本机匹配)→adb forward tcp:33891→ 本机python3 sdk/agent/agent.py(u2+remote frida+WS)→devices_online:1、supports_hook:true - 真机 E2E PASS=11 / BLOCKED=1 / FAIL=0:
- probe
supports_hook:true,微信 8.0.69,ping=「pong from wechat_hook_v3.0 — 96 actions / 26 modules」 - message/send filehelper success,
message_id:msg_1780044632959_897834,channel=frida(CK-D5) - message/list 全量 真实消息(id=861)(CK-T7 验真)
- group/list data=20 真实群、tag/list data=323 真实标签
- 仅 friend-add
服务未启用=U2 CKB 外部凭证(非代码缺陷)
- probe
- 读路径根因定位(§11.4):getMessages 查
message.talker、getContacts 过滤rcontact.type→ filehelper即时回读/个人通讯录空为已知限制(全量/群/标签均真,DB+SQLCipher 正常) - e2e 脚本分类器重写:JSON 精确判 PASS/BLOCKED(修旧版对真实数据误判),朋友圈发布拆
WP_WRITE_MOMENTS防污染真实账号 - 离线复核:TS
tsc --noEmitexit 0(3 新方法)、PHPphp -l通过、OpenAPI↔snapshot diff=0(339/348)
验收: WP_WRITE=1 bash 开发文档/8、部署/05-测试验收/scripts/workphone_4end_e2e.sh → PASS=11 BLOCKED=1 FAIL=0;证据 8、部署/05-测试验收/20260529_四端对接E2E/(JSON+截图+_summary.json)
进度: 四端对接 SDK/中间层/文档 100% · 真机 P0 hook 通道打通(仅 U2 凭证、contacts/moments(P1) 待)· 本模块 ~92%
2026-05-29 17:10 | 守护稳定化(contacts 回退 + ai_brain 429 冷却)
完成项:
sdk/agent/hook/wechat_hook_v2.js:_getContactsFromDB加防御式回退(严格 type/verifyFlag 空→放宽仅排除系统号/群/公众号),node --check 通过;重启 agent 实测该账号 rcontact 仍 0 行→定位为纯群运营账号特征(§11.4)sdk/agent/ai_brain.py:call_ai加 429 限流 120s 冷却闸(getattr_rate_limited_until),命中即跳过 AI 规划调用;修复启动后对本地 LLM 网关(3102)突发重试刷屏:462 条 → 1 条,不影响 hook 通道/连接守护- 重启 Agent 守护稳定:
online=1、supports_hook:true、连接守护✅
验收: py_compile ai_brain.py OK;node --check wechat_hook_v2.js exit0;重启后 /tmp/wp_agent3.log 429 计数=1(冷却日志已现)
进度: 真机守护稳定运行;四端对接 ~93%(余 U2/U3 凭证 + 测试号项)
2026-05-29 17:15 | _intentAction 诚实化(真机铁律合规)+ 调度层发现
完成项:
sdk/agent/hook/wechat_hook_v2.js_intentAction:原 70+ intent 类动作 sendBroadcast 后无条件返success:true(无接收端=假成功,违铁律#3/#14)→ 改为先pm.queryBroadcastReceivers校验,无接收端返success:false/verified:false/no_receiver_registered,有接收端返verified:true/receivers:Nnode --check通过;重启 Agent 加载supports_hook:true;RPC 动作对照get_profile仍真实成功(昵称/wxid)- 新发现:
hook/execute action=generate_my_qr走websocket/u2通道返通用 ack({script,action,frida_connected}),未经 frida_intentAction→u2 通道存在第二处潜在假成功(记 CK-T12) - 文档:§十三变更、§十二 CK-T12/T13 登记
验收: node --check wechat_hook_v2.js exit0;get_profile hook 真实数据;intent 诚实逻辑已载
进度: 真机守护稳定;intent 动作铁律合规改进落地;四端对接 ~93%(余 u2诚实化/逐动作真实现/凭证/测试号)
2026-05-29 17:25 · CK-T12 SDK 端假成功根治(铁律 #3/#14)
根因: sdk/app/routers/unified.py::hook_execute 末尾硬编码 code:200,把 agent 内层 503/success:False 伪装成功(第二处假成功)。
修复: 诚实传播 inner_code,success:False 兜底 503。py_compile 通过。
真机验收: 8899 实由 Docker workphone-sdk(卷挂载 sdk/app→/app)提供 → docker restart workphone-sdk 生效;generate_my_qr(无接收端) code:200→503、get_profile(真RPC) code:200 success:true(游条姐/wxid_5g37snchpv8e22/8.0.69)。
进度: 四端对接 ~94%(余 CK-T13 逐动作真实现 / 凭证 / 测试号)
2026-05-29 17:40 · CK-T9 contacts 根治(8.0.69 缺列读空)
根因: get_contacts._diag 实测 rcontact_total=6130(type=3 友 4991)但 strict/relax/noverify 三查询全 0;_cols SELECT 了 8.0.69 rcontact 不存在的列(signature/sex/country/province/city/imgFlag)→ 整 SELECT 失败返 0。
修复: PRAGMA table_info(rcontact) 动态探测实有列,只 SELECT 存在列;标签列 labelidlist→contactLabelIds。
真机验收: get_contacts count:0→500(limit 命中,共 6130 行),350 带标签;真实好友 wxid_s3z9kr3bfjy022 等。证据 8、部署/05-测试验收/20260529_四端对接E2E/20_contacts_fixed.json。
moments: 同加动态列探测,但 _execSnsSQL 读不到 SnsMicroMsg.db(avail_cols=[]/total=null)→ SNS WCDB 句柄待排查(CK-T9 余项)。
进度: 四端对接 ~95%(contacts 真实读通;余 moments SNS 库 / CK-T13 逐动作 / 外部凭证)
2026-05-30 16:50 · 接口网站动态化 + 对外接口文档同步(persistent-chat 新计划)
计划: 新建 persistent-chat 线程 ct_e8479ae3,计划名“工作手机接口文档与对接网站完善”;实施计划落地到 开发文档/10、项目管理/plans/2026-05-30-工作手机接口文档网站完善.md。
完成项:
sdk/app/static/hub.html:设备管理页“接口文档”从硬编码 150+ 清单切换为实时读取GET /api/v3/integration/manifest;页面展示总端点、模块、消费方、模块折叠、路径点击复制、Swagger/ReDoc。- 实时接口快照:
export_api_catalog.py输出routes_snapshot=362、openapi paths=353、离线浏览 HTML 已刷新。 - 动态集成中心验收:manifest
33模块 /358端点;存客宝视角18模块 /253端点。 - 文档同步:更新
5、接口/07-对外接口统一清单/README.md、01-接口总清单与机器可读API.md、02-三方对接指南.md的规模数字与接口网站入口。 - 图解:新增
5、接口/images/workphone_api_portal_overview.svg,并在接口统一清单 README 引用。
验证: ReadLints(hub.html) 无错误;SVG XML 解析 SVG_OK 4958;实时接口中心数字校验通过。
进度: 接口网站动态清单 100%;对外接口文档同步 100%;图文手册增强进入下一步(约 20%)。
2026-05-30 17:10 · 图文使用手册增强 + 存客宝最佳对接图
完成项:
- 新增
开发文档/9、手册/02-操作指南/工作手机·接口网站与任意项目对接手册.md:覆盖五分钟接入、接口网站、consumer 子集、capability 矩阵、存客宝最佳对接、PHP/TypeScript 示例、真机验收口径、FAQ。 - 新增
开发文档/9、手册/images/cunkebao_best_integration_flow.svg:存客宝前端 → BFF → 工作手机 SDK → WebSocket Agent + Frida → 真机证据。 - 更新
开发文档/9、手册/README.md与开发文档/9、手册/02-操作指南/README.md,把新手册设为新人优先读入口。
检索沉淀: 接口门户采用 OpenAPI/manifest 单一真源、5 分钟 Quickstart、任务优先导航、AI 可读(OpenAPI/Markdown/MCP)与版本变更同步原则。
验证: 两张 SVG 均 XML 可解析;新手册与两级 README 入口存在。
进度: 接口网站与文档完善约 65%;图文手册第一版 100%;后续可补真机截图、llms.txt、Redoc 静态页增强。
2026-05-30 17:18 · AI 可读接口出口 /llms.txt
完成项:
sdk/app/main.py新增/llms.txt根路由,返回sdk/app/static/llms.txt。- 新增
sdk/app/static/llms.txt:列出接口网站、Swagger/ReDoc、OpenAPI、manifest、consumer 子集、capability、health、对接顺序和安全铁律。 - 新增
开发文档/5、接口/07-对外接口统一清单/04-AI可读接口摘要.md,并在 README 登记。
验证: python3 -m py_compile sdk/app/main.py 通过;docker restart workphone-sdk 后 /llms.txt HTTP 200;/api/v3/integration/manifest 仍 HTTP 200、33 模块 / 358 端点。
进度: 接口网站与文档完善约 75%;AI 可读入口 100%;后续可补真机截图与 ReDoc 静态页增强。
2026-05-30 17:25 · ReDoc 静态参考 + 存客宝最佳对接只读核验
完成项:
- 新增
开发文档/5、接口/05-交互图/接口ReDoc静态参考.html,基于04-OpenAPI/openapi_v3.0.json渲染 ReDoc 静态参考页。 07-对外接口统一清单/README.md增加 ReDoc 静态参考入口。- 只读检查
cunkebao_v3:WorkphoneProviderService默认workphone_sdk,可切s2_legacy;SuperAdmin 已有GET/POST /v1/admin/company/workphone-provider;SdkV3Adapter代表方案 A 主路径。 工作手机·接口网站与任意项目对接手册.md新增“当前存客宝只读核验结论”。
发现: 存客宝侧文档仍写旧规模 356/251,工作手机实时真源已是 358/253;后续可同步存客宝文档,不影响工作手机侧接口网站。
进度: 接口网站与文档完善约 82%;ReDoc/AI 可读/图文手册/存客宝最佳形式已完成;余项主要是真机页面截图归档与跨仓文档数字同步。
2026-05-30 17:35 · 页面截图归档 + 存客宝文档数字同步
完成项:
- 使用 Playwright 打开
http://127.0.0.1:8899/static/hub.html,切到“设备管理 → 接口文档(实时)”,生成截图开发文档/9、手册/images/hub_api_docs_20260530.png(510713 bytes)。 - 在
工作手机·接口网站与任意项目对接手册.md中引用截图。 - 本地同步
cunkebao_v3/开发文档/5、接口/02-存客宝与工作手机对接/README.md:工作手机接口规模356→358,存客宝可用251→253。
验证: Playwright 截图成功;rg 复查存客宝对接目录内旧数字已清零。
进度: 接口网站与文档完善约 90%;剩余主要是将 ReDoc/llms 入口进一步挂主手册、按需补更多业务截图。
2026-05-30 17:42 · 主手册入口增强(接口网站 / llms / ReDoc)
完成项:
工作手机·五图总览与使用手册.md§3.1 后新增“接口网站与机器可读入口”,嵌入hub_api_docs_20260530.png。- 主手册交付物索引增加:接口网站与任意项目接入手册、358 端点机器清单、ReDoc 静态参考。
- 主手册明确
/llms.txt、/openapi.json、/api/v3/integration/manifest、/consumers/cunkebao、/capability/{device_id}的用途。
进度: 接口网站与文档完善约 95%;核心闭环完成,后续只剩更多业务截图或 BFF smoke 复验。
2026-05-31 14:45 · 真机全功能与防封续跑(新计划 ct_d00624cf)
范围: 继续完成 Type-C 红米 xgfe65eimrrofyws 的全功能控制与接口检测;不改存客宝/触客宝/AI 数智员工代码,仅工作手机侧与文档登记。
防封沉淀:
- 新增共享文档
开发文档/2、架构/05-规范/防封共享策略与执行基线.md,作为每轮必读基线。 工作手机_微信全量控机与私域_20260529.md新增 §〇点七,登记 2026-05-31 全网防封检索结论与 WBS(AB-01~AB-05)。
检测结果:
- 真机门禁:PASS(ADB + SDK 在线设备)。
- 微信接口审计:rpc.exports=133、ACTION_TO_RPC=130、Catalog=176、缺失 RPC=0。
- 核心 pytest:17/17 PASS。
- 四端只读 E2E:修复脚本后
PASS=10 BLOCKED=1 FAIL=0。
代码修复:
workphone_4end_e2e.sh:启动前等待 SDK/WS 指定设备在线;http=000/WS 未连接/Hook 抖动自动重试;SNS/WCDB2 已知缺口标 BLOCKED。sdk/app/routers/unified.py:/moments/list加 30s 超时保护,超时返回blocked_reason=sns_wcdb2_timeout,避免拖死整轮验收。
已知剩余:
moments/list仍为唯一 BLOCKED:SnsMicroMsg.db 是 WCDB 2.xcore.Database,当前 Hook 只支持 1.xrawQuery,需后续适配 2.x 查询 API。- 量产防封红灯仍需处理:Shamiko/Root 隐藏、Frida 默认路径、Magisk 可见、ADB running。
证据: 开发文档/8、部署/05-测试验收/20260531_真机全功能与防封续跑/
进度: 真机控制与接口完善约 96%;防封基线 100%;当前阶段 FAIL=0。
2026-05-31 14:25 · 真机控制迭代启动 + 微信退出登录路由修复(阿机)
真机基线探针(serial xgfe65eimrrofyws / 红米 2312DRAABC / USB):
- SDK
/healthhealthy,devices_online=1;Agent v3.1.0 已连 ws://127.0.0.1:8899;frida-server-16 root 运行。 - 微信 8.0.69 前台;Hook probe 通:
get_profile返回真实昵称「游条姐-…」、wxid_5g37snchpv8e22;ping→pong (wechat_hook_v3.0 — 96 actions/26 modules)。
发现的真机 BUG(待修复清单):
- BUG-1 微信退出登录占位:
logout/login_by_sms/register/switch_account经 Frida 仅_intentAction广播,设备无接收端→返回no_receiver_registered,且被should_force_hook_only判为强制 hook_only=True,无 u2 兜底→功能不可用。本轮已修。 - BUG-2 脚本 staleness:本地
wechat_hook_v2.js已 v3.1/110 actions,设备实际加载 v3.0/96——设备跑旧脚本,待重载验证。 - BUG-3 设备状态字段冲突:
/api/v3/devices返回status:"offline"但 health 与 fingerprint_info 为 online。 - BUG-4
hook/probe返回root_status:false,但 frida-server 实为 root 运行——root 探测口径错。 - BUG-5 action 计数口径:actions 目录广告 110/24,设备实际 96/26。
本轮修复(阿机):
sdk/app/services/device_transport.py:WECHAT_U2_ONLY_ACTIONS增补logout/switch_account/login_by_sms/register_account/auto_register,使其 hook_only=False,放行设备端 Agent 的真实 u2 UI 兜底(sdk/agent/skills/wechat/skill.py:2975 logout我→设置→退出登录→确定)。lint 通过。- 部署:SDK 经 docker(
./app:/app挂载,无 --reload),改动需重启容器生效,留 execute 阶段连同更多修复一起部署 + 真机验收(logout 为破坏性操作,验收前确认再登录凭证)。
进度: 真机控制迭代 P0 启动;微信退出登录路由修复完成(待重启验收)。下一步:①防封全网检索写入共享文档 ②重启部署 ③BUG-2~5 修复 ④微信素材/控制接口逐项真机验收。
2026-05-31 14:40 · 防封检索入文档 + logout 路由真机验证(阿机/阿端)
防封检索(②段·全网+GitHub): 写入真源 机擎/references/防封策略_全平台全层级.md §十(v3.0.0)+ 需求 工作手机_微信全量控机与私域_20260529.md §16B:
- 2026 实践:stealth Frida(strongR-frida 17.9.1 / phantom-frida
90补丁16向量改名改端口)、泊松延迟(均值650ms)+正态坐标(间隔禁<200ms)、频率≤180200/日+间隔≥2.5min+模板<15%、设备指纹68参数+传感器噪声、风控熔断暂停72h。 - 本项目 4 缺口:G1 frida-server 明文名 / G2 设备指纹为空(hash=空串MD5) / G3 延迟分布待核验 / G4 养号阈值对齐。
logout 修复部署+验证(③段):
- 重启
workphone-sdk容器(docker,~4s)→ /health healthy devices_online=1;probe get_profile 真机返回真实账号「游条姐…」=Hook 恢复。 - 路由修复验证 PASS:
check_login_state真机返回channel_used:"websocket/u2"——证明 U2 集动作(含 logout)现可正确降级到设备端真实 u2,修复前会被强制 hook_only 直接失败。logout 真退已具备真实链路(待用户确认可破坏性退「游条姐」后做真机留痕)。
新增发现: ①微信停留 SnsUploadUI(上轮朋友圈残留页)非主界面;②u2 版 check_login_state 准确度弱(已登录却 logged_in:false,应优先 frida SQL 版);③probe 单次耗时 ~38s 偏慢(性能优化项)。
进度: 微信退出登录子项 85%(路由验证通过,待破坏性真机留痕);防封缺口 G1G4 已登记。下一步:修 G2 设备指纹空 + BUG status/root 口径 + check_login_state 优先 frida。
2026-05-31 14:50 · BUG 诚实复核 + 核心素材真机验收(阿端/阿机)
BUG 复核(避免修不存在的 bug):
- BUG-3 devices.status:重启稳定后
/api/v3/devices返回top_status=online——确认为重连窗口 DB 状态瞬态滞后,非持久 bug,list_merged_local_devices逻辑本身正确(ws 在线即置 online),不改码。 - BUG-4 root_status:false:Agent 在 WeChat 沙箱内无法可靠验证 root,按真机铁律「未验证不造假」属诚实行为;frida-server 实为 root 仅 Mac 侧 adb 可证。暂不强改(避免造假),如需展示真 root 应走 host adb 探测(与无线主控解耦)。
核心微信素材真机验收(hook_only 直调 Frida):
get_profile✅:真实昵称「游条姐-…」/wxid_5g37snchpv8e22(前轮)。get_contacts✅ PASS:channel=websocket/hooksuccess=True,limit=5 返回 5 个真实联系人(真实 wxid,如 wxid_s3z9kr3bfjy022)。check_login_state🟡:经 u2 返回(websocket/u2),但已登录却报 logged_in:false——u2 启发式弱,应优先 frida SQL 版(userinfo)。
实质待修: G2 设备指纹空(compute_fingerprint 键齐全但注册时 Agent 未上报 brand/model/imei/mac 等硬件字段→空串 MD5)——需 Agent 注册 payload 补硬件指纹,列下轮 P0。
进度: 真机控制迭代 ~32%;核心读类素材(profile/contacts)真机通过;退出登录路由就绪。下一步:G2 Agent 硬件指纹上报 + check_login_state 优先 frida + 二维码/群/标签素材验收 + hub.html UI。
2026-05-31 18:58 · AB-05 防封看板 UI + 防封检索增量(阿机/阿端)
用户要求: 每轮继续全网搜索最佳防封方案,并沉淀到需求文件和共享文档;继续全功能真机控制与页面细节检测。
全网检索增量:
- 微信/社交账号防封 2026 共识:黄金 72 小时、前 15 天观察期、稳定移动 IP、一机一卡一微信、触发风控后静置 24-48h。
- Android Root/Frida 反检测建议:ZygiskNext/ReZygisk + Shamiko/TreatWheel + HMA-OSS + PlayIntegrityFix/TrickyStore;本项目继续用
device_guard.redlight标出 Shamiko 未装、Magisk 可见、ADB running 等量产红灯。
代码/UI:
sdk/app/static/hub.html:智能引擎新增 🛡️ 防封 Tab,读取/api/v3/antiban/status?device_id=。- 页面展示:操作时段、微信限流、设备红灯、RiskSentinel、长暂停、高危动作互斥、AB-02/03/04 WBS。
- 修复页面模板字符串误用反引号导致的 JS 错误。
文档:
防封共享策略与执行基线.md新增 §1.4 续检索增量,并将 AB-05 标 ✅。20260531_Frida修复与标签闭环留痕.md新增 §二点八 防封看板 UI。
验证:
ReadLints(sdk/app/static/hub.html)无错误。- Playwright 打开
hub.html?tab=engine&engineTab=antiban:PAGE_ERRORS=0,正文包含“防封风控”。 - 截图:
开发文档/8、部署/05-测试验收/20260531_真机全功能与防封续跑/hub_antiban_20260531_fixed.png(462448 bytes)。
进度: 防封看板 AB-05 100%;真机控制迭代约 54%;下一步继续占位真实现(sendLink/A 类系统分享)或 BUG-8 用户开启 MIUI 安全设置后验 u2 UI 类。
2026-05-31 15:02 · G2 指纹修复 + Agent frida-spawn 破坏性 BUG(重要)+ 真机恢复(阿机)
G2 设备指纹修复:
- 服务端
device_manager.compute_fingerprint:无硬件字段时回退 device_id(杜绝全设备空串 MD5 误撞),兼容嵌套 display;验证 PASS fingerprint_hash 从空串d41d8cd9…427e→ 真实非空3b516e59…。 - Agent
_get_device_info:增 getprop 采集 manufacturer/model/brand/sdk_version/cpu_abi/serial/build fingerprint/android_id(try/except 非阻断)。 - G2 真根因:Agent 先连服务器 register、u2 还没连上就注册(
model: Unknown (u2未连接)),硬件采集在if self.d:内未跑 → 需「u2 连上后重新上报 device_info」(下轮修)。
⚠️ 重要稳定性 BUG(BUG-7,真机实证):
- 现象:重启 Agent → 微信进程
process-terminated→ Agent 反复frida spawn com.tencent.mm失败(timed out) → 在 ActivityManager 留下 5 条(null)pid / oom_adj=-10000 幽灵进程记录(dumpsys 实证 #405/#404/#149/#23/#414)→ 微信被 AM 视为"正在启动"拒绝新启,am start/monkey 均无效;另微信包一度enabled=0。 - 排错:Settings app 可正常启动→非系统级 zygote 损坏;frida-server 死后微信仍不启→确认是 AM 幽灵记录。
- 恢复:
pm enable com.tencent.mm+ reboot 设备(清幽灵记录)→ adb kill/start-server 重连 USB → 微信 4 进程正常起。 - frida-server 端口坑:Agent Phantom 配置期望 24781,须
su -c 'setsid /data/local/tmp/frida-server-16 -l 0.0.0.0:24781 ... &'启动;用默认 27042 启动会attach 失败: connection closed。 - 恢复验证 PASS:probe
supports_hook:true+ get_profile 真实「游条姐…」/wxid + 微信 8.0.69,Hook 全链路恢复。 - 待修:Agent 应「微信未运行→am start 温和拉起 + 仅 attach,禁止反复 frida-spawn-loop」,避免幽灵记录(登记需求 WX-11)。
进度: 真机控制迭代 ~33%;G2 服务端已修+验证、Agent 侧待 u2-后置重注册;BUG-7 已恢复并定位修复方案。下一步:①Agent u2 就绪后重注册(完成 G2) ②Agent frida-spawn 防破坏(BUG-7/WX-11) ③素材续验。
2026-05-31 15:09 · WX-11 frida-spawn 防破坏 + G2 完全修复验证(阿机)
WX-11 修复(frida_manager.py):
_do_attachremote+usb 两处删除frida spawn,改_launch_wechat_gently()(仅 am start + 轮询 pid 最多 18s),失败 return False 交重连循环重试 —— 杜绝 frida-spawn 失败留 AM 幽灵进程(null pid) 需 reboot 的问题。- 验证:重启 Agent 时微信运行中 →
已 attach 到微信进程 pid=25109(直接 attach 无 spawn),全程无崩溃级联 = WX-11 防护路径有效。lint 通过。
G2 设备指纹完全修复并验证 PASS:
- Agent
_try_reconnect_u2成功后触发一次_register()重注册(注册常早于 u2 就绪,补真实硬件指纹)。 - 本次重启 u2 启动即就绪 → 首次注册即报真实 2312DRAABC(非 Unknown)。
- fingerprint_hash 演进:空串
d41d8cd9…427e→ device_id 兜底3b516e59…→ 真实硬件a9c50e558ca3d6fe6c1724ae892a606c。 - 真实采集:model=2312DRAABC / brand=Redmi / manufacturer=Xiaomi / cpu_abi=arm64-v8a / serial=xgfe65eimrrofyws / android_id=22641ddcfe1c1110。防封 G2 缺口关闭。
hook 健康:get_profile code=200 channel=websocket/hook(probe 已证完整 profile)。
进度: 真机控制迭代 ~36%;G2 关闭、WX-11 部署验证、退出登录路由就绪、核心素材(profile/contacts)真机可用。下一步:①素材续验 get_groups/二维码/get_labels ②check_login_state 优先 frida ③hub.html UI+性能优化 ④进度总表口径校正。
2026-05-31 15:16 · 微信素材真机验收 4/5 通过 + 二维码缺口(阿端/阿机)
素材获取真机验收(hook_only 直调 Frida):
| 素材 | 结果 | 证据 |
|---|---|---|
| get_profile | ✅ | 真实「游条姐…」/wxid_5g37snchpv8e22 |
| get_contacts | ✅ | channel=websocket/hook,真实 wxid |
| get_groups | ✅ | 真实群「BL-卡若私域…」14870924812@chatroom |
| get_labels | ✅ | 323 个真实标签(手游黑科技/客户/抖音升级…) |
| generate_my_qr_code | 🟡 | frida no_receiver(占位) + u2 兜底未真正调到 show_my_qr |
二维码缺口(WX-13):generate_my_qr_code 经 frida 返回 no_receiver(占位),落 u2(channel=websocket/u2) 但 agent 未实际执行 show_my_qr(无 QR 日志,响应仍 frida 字段)。已在 agent.py u2 分发加 _U2_ACTION_ALIASES(generate_my_qr_code→show_my_qr 等),但根因更深:agent 对 intent 类动作的 frida→u2 兜底链对该 action 未触发,需在 agent 命令处理层确保 intent-占位动作落 u2 skill;且 show_my_qr 仅导航不截图,完整素材需 +截图返回图片。留 WX-13。
进度: 真机控制迭代 ~38%;微信素材 4/5 真机可用(profile/contacts/groups/labels),二维码待 WX-13;G2 关闭、WX-11 部署、退出登录路由就绪。下一步:①WX-13 二维码 frida→u2 兜底接线+截图 ②check_login_state 优先 frida ③hub.html UI+性能优化。
2026-05-31 15:23 · WX-13 二维码 u2 放行 + 发现 BUG-8 系统级输入注入被禁(关键阻塞·需用户操作)
WX-13 进展:
- 服务端
device_transport.WECHAT_U2_ONLY_ACTIONS增补generate_my_qr_code/show_my_qr/generate_group_qr_code/show_payment_code(UI展示类,放行 u2 兜底)。 - agent.py u2 分发加
_U2_ACTION_ALIASES(generate_my_qr_code→show_my_qr 等)。 - 验证:二维码现确实落 u2 并调到
show_my_qr(别名+放行均生效)。
⚠️ BUG-8(关键阻塞·需用户真机操作):
- 现象:
generate_my_qr_code经 u2 调 show_my_qr 点击时报java.lang.SecurityException: Injecting input events requires the caller ... INJECT_EVENTS permission;连adb shell input tap 540 1200也报同样错 → 系统级输入注入被禁,非 u2/agent 代码问题。 - 根因:MIUI/红米 开发者选项 「USB调试(安全设置)」/「允许通过USB调试修改权限或模拟点击」 未开(重启后被重置,开启通常需登录小米账号 + 插 SIM)。
- 影响:所有 u2 UI 点击类动作(logout 真退、二维码导航、UI 发消息/加好友)被此权限卡住;Frida Hook 通道不受影响(不需注入),故 profile/contacts/groups/labels 等取材料全可用。很可能重启前即如此(项目一直以 Frida 为主控)。
- 需用户操作:真机 设置→更多设置→开发者选项→打开「USB调试(安全设置)」(如灰置需先登录小米账号/插SIM)。开启后 u2 UI 类动作(logout/QR/UI发消息)方可真机验收。
- 旁证项目设计:铁律 §〇.八「主控=Frida,u2 为兜底」,故核心能力以 Frida 为主不受 BUG-8 影响。
进度: 真机控制迭代 ~40%;Frida 主控链路(取材料 4/5 + 控制)健康;u2 UI 类动作受 BUG-8(MIUI 输入注入权限)阻塞待用户开启。下一步:①待用户开「USB调试(安全设置)」后验 logout/QR u2 ②check_login_state 优先 frida ③hub.html UI+性能优化(纯前端,不依赖注入)。
2026-05-31 15:26 · frida-server 启动固化(setsid) + 进度总表真机校正 + check_login_state 诊断(阿机/阿服/阿表)
输入注入无关项(BUG-8 阻塞期间并行推进):
- frida-server 启动固化(阿服):
sdk/scripts/frida_workphone_oneclick.sh第 183 行nohup &→setsid ... </dev/null &,彻底脱离 adb shell 会话,防本会话踩的「shell 退出→frida-server 被 SIGHUP 杀→attach connection closed」。脚本已含 stealth(随机名+随机端口 10000-60000) 对应防封 G1。 - 进度总表真机校正(阿表):
开发进度总表.md新增「一B、真机实测校正」节,诚实区分「代码就绪度(顶部99.8%)」vs「真机 E2E 实测口径」:Frida主控/取材料✅、G2✅、WX-11✅、u2 UI类⛔BUG-8、二维码🟡、check_login_state🟡。 - check_login_state 诊断(阿机):frida 版 hook_only 真机 超时 58s(checkLoginState 的 SQL
SELECT value FROM userinfoWCDB 加密读阻塞)→ 故之前落 u2。frida 实现需异步/超时保护,列后续;非快速修。
进度: 真机控制迭代 ~41%;Frida 主控健康、防封 G1 脚本含 stealth、frida-server 启动加固、进度口径校正诚实化。待用户开 MIUI「USB调试(安全设置)」解除 BUG-8 后验 u2 UI 类(logout/QR/UI发消息)。下一步:hub.html UI+性能优化(纯前端)。
2026-05-31 15:58 · 无 USB 无线主控全链路打通(WiFi adb + 本机 stealth Frida + WS)(阿机·重大)
背景:USB 线材/接口物理不稳反复掉线,按卡若指示转无 USB 无线主控(WebSocket + Frida Hook)。
Agent 连接开发(device_id ↔ adb_serial 分离):
sdk/agent/agent.py新增self.adb_serial = WP_DEVICE_SERIAL or device_id;u2.connect / frida 传输 / getprop / 截图全改用adb_serial,WS 身份仍用 device_id(SDK/hub 设备身份不变)。- 效果:设
WP_DEVICE_SERIAL=192.168.110.80:5555即可 u2/frida 走 WiFi adb,逻辑 device_id 保持 xgfe65eimrrofyws。
无线主控链路(已真机打通·无需 USB):
adb tcpip 5555+adb connect 192.168.110.80:5555→ WiFi adb 稳定 4/4(替代抖动 USB)。- 设备本机 stealth frida
fs_38da9d@11616(root, setsid 脱离会话;防封 G1 随机名+端口,phantom_frida_config.json 真源)。 adb -s 192.168.110.80:5555 forward tcp:11616 tcp:11616。WP_DEVICE_SERIAL=192.168.110.80:5555 python3 agent.py -d xgfe65eimrrofyws -s ws://127.0.0.1:8899/...。
- 验证 PASS:u2 连通(gold);get_profile code=200 channel=websocket/hook;get_contacts success=True count=2。全程无 USB 数据控制(USB 仅一次开 tcpip)。
意义:彻底绕开不稳 USB,控制+取材料经 WiFi 无线 Hook 真机可用;BUG-8(u2 输入注入)仍需 MIUI 安全设置(仅影响 UI 点击类,不影响 Hook 取材料)。
进度: 真机控制迭代 ~46%;无 USB 无线主控打通(Frida Hook 取材料真机可用);下一步:①固化无线 bootstrap 脚本(tcpip+stealth frida+agent 一键) ②BUG-8 解除后验 u2 UI 类 ③hub.html UI。
2026-05-31 16:02 · 无线主控一键脚本 + 无线素材覆盖验证(阿机/阿服/阿端)
无线一键脚本固化:sdk/scripts/wireless_master_oneclick.sh(阿服)—— tcpip+connect+WiFi稳定校验+读 phantom 配置起 stealth frida(setsid)+forward+am start 拉微信+WP_DEVICE_SERIAL 启 agent+get_profile Hook 验证;bash -n 语法 OK。换网/IP 变化重跑即可。
无线素材覆盖验证(经 WiFi Hook · 阿端):
| 素材类 | 结果 | 说明 |
|---|---|---|
| account/contact/group/label | ✅ 真实数据 | profile/contacts/groups/labels(323) 经 websocket/hook |
| message(get_recent_messages) | 🟡 hook通空 | success=True count=0;既有 §13.2 已知(消息DB读空/需入站,非本次引入) |
| moments(get_moments) | 🟡 hook通空 | success=True count=0;朋友圈本地缓存空,需打开页填充(app状态相关) |
结论:无线主控链路全 code=200 channel=websocket/hook 稳定;联系人/群/标签/资料类素材无线真机可用;消息/朋友圈类为既有 DB 读空问题(WCDB 路径/app 状态),列后续 frida DB 读专项。
进度: 真机控制迭代 ~48%;无 USB 无线主控打通+脚本固化+素材覆盖验证;下一步:①BUG-8 解除后验 u2 UI 类 ②消息/朋友圈 frida DB 读专项 ③hub.html UI+性能。
2026-05-31 16:07 · 消息读写闭环真机验证(§13.2 澄清)+ 无线控制确认(阿机/阿端)
消息 DB 读空根因澄清(§13.2):
- 设备查证:EnMicroMsg.db 含
message表(frida success=True count=0=表存在但空),微信 8.0.69 消息仍在该表,空因无消息活动(非代码/解密 bug;get_contacts 同库 rcontact 有数据证解密 OK)。
消息读写闭环 PASS(全经无线 WiFi Hook · 无 USB):
send_message→filehelper:code=200 channel=websocket/hook success=True,真实 message_id=msg_1780214825489_216911 method=hook。微信发消息控制无线可用。get_messages(filehelper):count=1,精确读回{content:'无线主控自检 16:05', is_send:True, id 同上}。消息素材端到端可用(发后即可读)。
- 结论:§13.2「收消息空」是无入站活动所致,非缺陷;有活动即读写闭环正常。
无线主控完整能力矩阵(真机验证·无 USB):
| 能力 | 状态 |
|---|---|
| 取材料 profile/contacts/groups/labels | ✅ 真实数据 |
| 控制 send_message | ✅ 真实 message_id |
| 消息材料 get_messages(发后读回) | ✅ 端到端 |
| u2 UI 点击类(logout/QR/UI发消息) | ⛔ BUG-8 待 MIUI 设置 |
进度: 真机控制迭代 ~52%;无 USB 无线主控「控制+取材料+消息读写」闭环真机验证通过;下一步:①BUG-8 解除后验 u2 UI 类 ②hub.html UI+性能 ③更多写类控制(加好友/群发)真机。
2026-05-31 16:50 · 性能优化:probe 并行化 38s→9s + 接口覆盖扩至 11+(阿机/阿端)
性能优化(probe 并行化):
sdk/app/routers/unified.py_probe_device_via_ws:get_wechat_version 与 get_profile 改asyncio.gather并行(独立只读,墙钟取 max 而非 sum)。- 另 hook_execute 加
_SLOW_ACTION_TIMEOUTS{check_login_state:20}快速失败。 - 真机验证 PASS:probe 耗时 ~38s → 9s(~4x 提速),supports_hook=True 微信8.0.69。
无线接口覆盖扩至 11+(全 code=200 channel=websocket/hook):
profile/contacts/groups/group_members(28)/labels(323)/messages(发后读回闭环)/send_message/check_account_status/get_friend_requests/get_favorites/search_contacts(50)。证据 8、部署/05-测试验收/20260531_无USB无线主控真机验收.md。
进度: 真机控制迭代 ~55%;无USB无线主控+11+接口+性能优化(probe 4x)+消息闭环全真机验证;剩余 u2 UI类(BUG-8 待MIUI开关)/hub.html具体优化(待方向)。
2026-05-31 19:05 · BUG-8 root 输入绕过方案(无需 MIUI 设置·自主解决)(阿机·关键)
全网检索结论:MIUI INJECT_EVENTS SecurityException 非 root 设备无软件绕过,但本设备已 Root。
自主方案:root 上下文 su -c 'input tap/swipe/keyevent' 绕过 InputManager 的 INJECT_EVENTS 限制。
底层验证 PASS:self.d.shell("su -c id") → uid=0(root) context=u:r:magisk:s0;su -c 'input tap 540 1200' → 成功无异常。
代码实现(base.py + skill.py):
base.py新增 root 输入层:_root_input_available()(缓存检测)、_root_tap/_root_swipe/_root_key、_element_center(u2取bounds只读)、_click_selector(root tap元素中心);click/human_click/click_text/click_contains/click_id/click_desc/human_swipe/press/long_click全部 root 优先、u2 兜底。skill.py批量替换:self.d.click(→self.click((19处)、self.d.press(→self.press((3处)、self.d.long_click(→self.long_click((5处)——根因是_goto_personal_info等用裸self.d.click(W*0.3,H*0.12)(≈324,288 正是 SecurityException 坐标)绕过 base 重写。- lint 通过。
意义:无需用户开 MIUI「USB调试(安全设置)」即可解 BUG-8,u2 UI 类动作(logout/QR/UI发消息/加好友等)经 root 输入可真机执行。
阻塞(硬件):设备 USB/WiFi adb 反复掉线(device not online / offline 交替),最终 qr 端到端验证被连接抖动阻塞;需更稳的 USB 线/口或稳定 WiFi。root 输入代码已就位,连接稳定即可验证。
进度: 真机控制迭代 ~58%;BUG-8 root 输入绕过代码完整+底层验证;待连接稳定验 u2 UI 类端到端。下一步:①连接稳定后验 QR/logout u2 ②微信功能封装 skill+可视化流程(用户新需求)。
2026-05-31 19:12 · BUG-8 root注入定义性验证PASS + WeChat 8.0.69 UI非无障碍发现(阿机/阿端·关键结论)
BUG-8 root 注入定义性验证 PASS:
su -c 'input keyevent 3'(HOME) 经 WiFi adb → 前台从com.tencent.mm/.ui.LauncherUI→com.miui.home/.launcher.Launcher(回桌面)。证明 root 输入注入真实生效(不止 exit 0,而是 UI 真响应)。BUG-8 已解,无需 MIUI 安全设置。
关键发现:WeChat 8.0.69 UI 非无障碍:
- u2
dump_hierarchy中找不到底栏 tab(微信/通讯录/发现/我 无 text/content-desc)→ WeChat 8.0.69 底栏用自定义渲染(Surface/Compose)不暴露无障碍节点。 - 影响:
click_text("我")等元素查找失败,故 u2 UI 导航(show_my_qr/logout 的 我→设置→…)不可靠——与 BUG-8 无关,是 UI 可达性限制。 - 正解:① Frida 内部 API(项目 110 action 主路径,可靠,logout/QR 应改真 Frida RPC 而非 _intentAction 占位);② 按版本硬编码坐标 + root tap(可行但脆,需 8.0.69 坐标表)。
能力矩阵更新(真机):
| 路径 | 状态 |
|---|---|
| Frida Hook 取材料/控制(11+) | ✅ 无线可用 |
| root 输入注入(BUG-8) | ✅ 验证(HOME) |
| u2 元素点击(click_text) | ⛔ WeChat 8.0.69 UI 非无障碍 |
| u2 坐标 tap | ✅ 可注入(需准确坐标) |
进度: 真机控制迭代 ~60%;BUG-8 root 注入已验证解决;明确 logout/QR 正解=Frida 内部 API(非 u2 UI);下一步:①logout/show_my_qr 改 Frida 内部 RPC 真实现 ②或按 8.0.69 坐标表 root tap。全程未动存客宝/AI数智员工/触客宝代码。
2026-05-31 19:20 · WeChat 8.0.69 UI 控制深度探索结论(阿机)
深链 am start 探索:
su -c 'am start -n com.tencent.mm/.plugin.setting.ui.setting.SettingsUI'✅ 直达设置页(root 可启非导出 Activity,绕过非无障碍底栏 tab 导航)。- 但 SettingsUI 列表内容仍非无障碍(u2 仅读到状态栏「晚上7:19」「100」,
退出登录不可见)。 - QR
GetQRCodeInfoUI深链未直达(需 extras/被 SettingsUI 拦回)。
WeChat 8.0.69 UI 控制最终结论:
| 路径 | 可行性 |
|---|---|
| Frida 内部 API/RPC | ✅ 可靠(项目 11+ action 已验,logout/QR 正解) |
| root am start 深链 Activity | ✅ 可达页面(SettingsUI),但页内元素非无障碍 |
| root input tap/key | ✅ 注入生效(HOME 验证),但需准确坐标 |
| u2 元素查找 click_text | ⛔ WeChat 8.0.69 全面非无障碍 |
logout/QR 实质正解:Frida 内部 RPC(调微信 logout/QR 生成内部方法)——属深度 WeChat 逆向工作;logout 为破坏性(需再登凭证),不做投机/破坏性测试。其余控制(发消息/取材料/消息读写)经 Frida 已全可用。
进度: 真机控制迭代 ~60%(口径:Frida 控制/取材料链全可用;UI-only 的 logout/QR 待 Frida 内部 RPC 深度实现);全程未动存客宝/AI数智员工/触客宝代码。
2026-05-31 19:24 · logout 经 root am start 深链可靠导航(非破坏验证 PASS)(阿机·关键)
突破 WeChat 8.0.69 非无障碍 UI 控制:用 root am start 深链 + root 输入 替代失效的 u2 click_text。
skill.logout 改造:
- 入口改
su -c 'am start -n com.tencent.mm/.plugin.setting.ui.setting.SettingsUI'直达设置页(绕非无障碍底栏 tab 导航,老版本回退我→设置)。 - root swipe 滚到底 → 截图返回 → 默认 confirm=False 非破坏(导航到退出区域不点击);confirm=True 才 root tap 真退。
- confirm=True 坐标按截图校准:退出按钮 H0.89、确认对话框 H0.60。
非破坏验证 PASS(无线 WiFi):
logout {confirm:false}→ code=200 ch=websocket/u2 success=True navigated_to=SettingsUI + 截图(253KB);note=已到退出区域未点击。- 截图证据
8、部署/05-测试验收/images/20260531_logout_settings_bottom.png:清晰显示设置底部「切换账号」「退出」按钮 → 证明 root 深链导航可靠、坐标准确。
意义:logout 从「click_text 全失败(未找到退出登录按钮)」→「root 深链可靠导航 + 截图确认 + 非破坏验证」。真退(confirm=true)代码就绪+坐标校准,待用户确认目标账号+再登凭证后执行。同模式可复用 switch_account/show_my_qr。
进度: 真机控制迭代 ~64%;logout 导航攻克(root am start 深链);下一步:①switch_account/show_my_qr 套用 root 深链模式 ②用户确认后验 logout confirm=true 真退。全程未动存客宝/AI数智员工/触客宝代码。
2026-05-31 19:32 · switch_account root深链部署 + show_my_qr 结论(阿机)
switch_account:套用 root am start SettingsUI 深链 + root tap「切换账号」(H*0.79),code=200 success=True+截图(坐标可依账号页微调)。
show_my_qr 结论(不继续脆弱坐标方案):
- QR Activity
GetQRCodeInfoUI需 extras(uin/类型),裸 root 启回弹 SettingsUI;个人信息 Activity 名混淆未匹配。 - 坐标导航(我→头像→二维码名片)受 非无障碍 UI + 截图旋转双重脆弱;且发现微信曾停留「选择一个聊天」分享页(send_link 残留)。
- 正解=Frida 内部 QR 生成 RPC(深度 RE);不做脆弱多步坐标导航。
WeChat 8.0.69 UI 控制总策略(定稿):
| 动作类型 | 可靠方案 |
|---|---|
| 取材料/读类/发消息(110 action) | ✅ Frida Hook 内部 API(无线已验) |
| 有独立 Activity 的页(设置/logout) | ✅ root am start 深链 + root tap |
| 多步/需 extras/QR | ⏳ Frida 内部 RPC 深度 RE(后续专项) |
进度: 真机控制迭代 ~65%;核心控制(Frida+logout root深链)扎实;QR/logout真退待 Frida 内部 RPC 深度 RE 或用户凭证。全程未动存客宝/AI数智员工/触客宝代码。
2026-06-07 18:35 · Type-C Frida Agent 驻留与存客宝链路复验(卡若AI)
需求真源复核:按卡若AI/机擎流程重读 开发文档/ 架构、存客宝 BFF 映射、Agent 技能实现、微信 Frida 契约、真机铁律;Mongo karuo_site 检索工作手机相关会话 218 个,主线聚焦 Type-C 真机、WS 主控、Frida Hook、自研替代第三方控件。
脚本修复:sdk/scripts/frida_workphone_oneclick.sh 修掉 3 个启动门禁问题:旧 agent.log 误判、先 probe 后 Agent 的时序问题、非交互 shell 下后台 Agent 不驻留。现在 Agent 用 start_new_session=True 脱离式启动,ready 条件为当前 PID 存活 + RPC ping: pong + 服务器确认注册,probe 轮询到 supports_hook=true 才通过。
真机结果:
- 设备
xgfe65eimrrofywsType-C ADB online;Rootuid=0(root);WeChat 8.0.69。 - SDK
:8899 /health:devices_online=1。 - Hook probe:
supports_hook=true,transport=websocket。 message/send到 filehelper:code=200,channel_used=websocket/frida,真实消息下发成功。- 截图:
1080x2400PNG;real_device_gate:通过。 - 接口矩阵:manifest 359 endpoints / 34 modules;存客宝 consumer 253 endpoints / 18 modules。
BFF 边界:本机 :8082 /v1/workphone/status 历史证据曾返回 401(缺 JWT);2026-06-08 15:xx 复核变为 Docker 端口监听但 HTTP 超时,需先恢复 Docker/BFF,再带登录态跑完整 E2E。
留痕目录:开发文档/8、部署/05-测试验收/20260607_TypeC_Frida_Agent_E2E/README.md。
差距:BFF JWT E2E、4 项防封黄色风险、AI Brain 网络 none 自修复冷却、filehelper 消息回读映射、24h 驻留稳定性。
2026-06-07 19:10 · 无 USB 无线主控 + 微信 P0 全绿 + 防风控 SDK 默认值(卡若AI)
无线链路:修复 sdk/scripts/wireless_master_oneclick.sh,固定 ADB 5038,WS URL 改为 /ws/device 基础路径,强制重启 phantom Frida,Agent 改为 start_new_session=True 脱离式驻留,并等待 RPC ping: pong + 服务器确认注册。
真机结果:
- ADB 当前为 WiFi serial
192.168.110.80:5555,不依赖 USB serial。 - SDK
/health:devices_online=1。 hook/probe:supports_hook=true,WeChat 8.0.69。- 微信三项 P0 无线验收:发消息、收消息、发朋友圈 PASS=3 / FAIL=0。
SDK/接口修复:
sdk/typescript-sdk/index.ts:补hook/frida/websocket/*通道类型;sendMessage默认channel=hook。sdk/php-sdk/WorkPhoneClient.php与 TS SDK:批量发消息默认 65s;批量加好友默认 180s。- 新增
sdk/scripts/run_wechat_safe_batch_acceptance.sh:白名单批量验收,默认 dry-run,最多 20 个测试联系人。
文档:
- 新增计划:
开发文档/10、项目管理/plans/2026-06-07-工作手机无线微信全功能落地.md。 - 新增留痕:
开发文档/8、部署/05-测试验收/20260607_Wireless_Wechat_P0_E2E/README.md。 - 更新微信需求、项目落地执行表和五图总览手册。
下一步:推进手机端 Termux/APK Agent 自启动,彻底去掉 Mac 侧 Agent;带 JWT 跑存客宝 BFF;按白名单跑 20 测试客户真实验收。
2026-06-07 22:31 · 微信安全矩阵全绿 + 占位清零路由补齐(卡若AI)
持续对话修复:persistent-chat 绑定 ct_c56d3c94 ↔ 工作手机 正常;中断根因是 Codex goal 跨轮返回 null。已把“每轮 gate + get_goal;goal 丢失按本地计划恢复”写入执行口径,本地计划/工作日志作为续跑账本。
代码修复:
check_login_state从强制 u2 改为 Frida/DB 优先,低风险矩阵从 20s timeout 变为 100ms 级通过。sdk/agent/agent.py/sdk/app/services/device_transport.py:补齐必须 UI 的微信动作强制 u2 路由,避免 Hook_intentAction占位被误判成功。sdk/agent/skills/wechat/skill.py:补至 133 个设备端方法;新增/补齐资金闸门、转账/红包 dry-run、小程序分享 dry-run、登录设备、账号保护、视频号取消关注、批量转发、公众号文章、评论回复等 wrapper。WP_AI_ENABLED=0现在可强制关闭 AI Brain,解决验收期间 AI Brain 误判 network none 后抢 u2 的干扰。
真机结果:
- 安静模式重启 Agent:
WP_AI_ENABLED=0 bash sdk/scripts/wireless_master_oneclick.sh xgfe65eimrrofyws 127.0.0.1:8899 5555。 hook/probe:supports_hook=true,WeChat 8.0.69。- 最终安全矩阵:
safe_matrix_20260607-223048.json,passed=21 failed=0 gated=20,含send_message → filehelper真机写入。 - API 抽验:
share_mini_program、receive_red_packet、receive_transfer均返回success=true且dry_run/confirm_required结构正确。
仍需授权/材料:20 个白名单测试联系人、测试群、测试朋友圈 sns_id、存客宝 JWT、资金类测试账号与金额确认;未拿到这些前不做真实批量加好友/群发/支付确认。
2026-06-07 23:30 · APK Agent 自启动与无线 Frida 能力上报闭环(卡若AI)
本轮目标:推进 W5 手机端 Agent 自启动,减少对 Mac 侧 Python Agent 的依赖;验证 APK 能通过 WiFi 连接 SDK,并复用设备侧 stealth Frida。
代码修复:
SetupActivity.kt:ADB intent 注入支持device_id、frida_port;补onNewIntent,可重复绑定。FridaBridge.kt/FridaServerManager.kt:Frida 端口改为配置化,优先复用已有监听,避免无 asset 时误判失败。ShellExecutor.kt:Root 检测改为多 su 路径,适配真机/product/bin/su。AgentForegroundService.kt:启动时等待 Frida ready 后再注册能力,服务端不再误判无 Hook。sdk/app/agent/sdk_discovery.py:补_pick_best_ip。
真机结果:
- APK 覆盖安装成功,设备
xgfe65eimrrofyws以platform=android独立上线。 - Magisk policy:UID
10277→policy=2;日志确认Runtime root detection: hasRoot=true。 - Frida:复用
fs_96272b/15715,日志确认FridaBridge ready (TCP 127.0.0.1:15715)。 /api/v3/connection/status:能力包含frida、hook、frida_rpc。- BootReceiver:普通 shell 广播被系统拒绝;root 广播
BOOT_COMPLETED成功,广播后设备仍在线。
留痕目录:开发文档/8、部署/05-测试验收/20260607_APK_Agent_Autostart_E2E/README.md。
诚实限制:APK 端 Agent/Root/Frida ready 已闭环;但 APK 内 HookExecutor 仍未等价迁移 Python Agent 的完整微信 RPC,微信全量读写矩阵当前仍以 Python Agent + Frida 主链为已验链路。
2026-06-08 07:40 · Hub 设备管理按钮修复 + Hook 数据面板闭环(卡若AI)
持久对话:ct_c56d3c94 ↔ 工作手机 校验通过,继续沿用同一任务,不新建会话。
本轮修复:
/hook/data/{device_id}改为 WS-first,在线设备直接通过 Agent Hook 拉资料、联系人、群、标签、消息。/api/v3/adb/devices/{id}/*对逻辑设备 ID 增加 WS Agent fallback,修复页面截图、UI 树、返回、主页、开微信等按钮。- Hub 前端
get_unread_messages映射到/message/list;未知微信 action 改走/hook/execute,避免误落/message/send。 - 设备列表按 WS 主身份去重,隐藏同一手机的 WiFi ADB 别名和旧 synthetic ID,页面只显示 1 台在线主设备。
- 修复知识库文档路径,14 个文档全部存在。
真机结果:
- 设备
xgfe65eimrrofyws在线,型号2312DRAABC。 - Hook:
supports_hook=true,微信版本8.0.69,设备 MD5ed25814d9c92b3430696dc96c2142b5f。 - 联系人 5/5、群列表 5/5、标签 323、消息 5、搜索联系人 30/消息 1,均走
websocket/hook。 - Hook 数据面板早期汇总:联系人 200、群 26、标签 323、消息 20(旧预览口径;15:42 已改为总数+预览+分页)。
- 设备按钮:截图
1080x2400、UI 树 XML 8146、返回/主页/开微信均code=200。
运行方式调整:Docker 版 workphone-sdk 的宿主机 8899 端口出现连接抖动;已停止容器并改用本机 uvicorn 直接监听 0.0.0.0:8899,页面和 SDK 直接访问本机服务。
Mongo 状态:27017 端口可达,但 mongosh 连接 karuo_site 超时,容器内 mongosh 也挂起。本轮未伪造聊天摘要,记录为未闭环环境项。
留痕:开发文档/8、部署/05-测试验收/20260608_Hub_Devices_Hook_E2E/README.md。
2026-06-08 19:12 · Docker/Mongo 恢复 + Mongo 对话汇总 + 存客宝 BFF 真机读写 E2E
- Docker Desktop 因磁盘空间不足异常;清理可再生缓存并执行 builder prune,回收
17.36GB,Docker Engine 恢复。 datacenter_mongodb因旧 containerd task 目录无法启动;仅重建容器壳,保留/Users/karuo/数据库/mongodb/data,WiredTiger recovery 成功,Mongo ping=1。karuo_site严格工作手机主线汇总:35 条对话、830 条消息、42 个工作手机持久会话、1119 条持久消息;摘要落盘到开发文档/10、项目管理/03-计划与专项/工作手机_Mongo对话汇总_20260608.md。- SDK 真机分页复验:联系人第 2 页返回 200/总数
6199(raw6339);消息第 2 页返回 100/总数2476;has_more=true。 - 存客宝 BFF JWT E2E:登录成功;状态、连接状态、Hook probe 均
code=200;message/send -> filehelper返回success=true、channel_used=websocket/frida、真实message_id,并从真机消息接口回读。 - 私域默认验收脚本本轮出现单项长耗时,超过 3 分钟无输出后终止;下一步给逐项请求补进度与总超时,再跑全量安全矩阵。
2026-06-08 22:18 · Hub 全按钮实点 + Node 长跑恢复 + 私域验收扩展(卡若AI)
持久对话:继续沿用 ct_c56d3c94 ↔ 工作手机,卡若AI gate 校验通过。
控制台修复与真机实点:
- 修复
sdk/app/static/hub.html设备动作日志没有显示在“操作日志”区域的问题,设备信息、UI 树、截图现在均有明确成功/失败反馈。 - 页面实点通过:设备信息保持 Android
13、微信8.0.69、MD5ed25814d9c92b3430696dc96c2142b5f;UI 树真实返回8146字符;截图1080x2400。 - 微信读按钮逐项实点通过:资料、联系人
6200/raw 6340、标签323、群27、消息2497,全部走websocket/hook;控制台无8899页面错误。
验收与稳定性:
- 新增 Node 私域验收入口
sdk/scripts/run_wechat_private_domain_acceptance.mjs,最新报告25 PASS / 0 FAIL / 4 gated。 - 安全批量脚本改用
jq,真实filehelper白名单发送返回code=200、success=true、channel_used=websocket/frida。 - 宿主新启动 Python 进程出现
SIGKILL/137,长跑已切换为 Node 22 LaunchAgent,并从现有 JSONL 恢复累计统计;截至 22:18 为80样本、76成功、4失败、2离线、2恢复,当前在线。
下一步:继续补超管 provider 页面可视点验;保持长跑至满 24h;真实群发/加友/朋友圈写类只在测试白名单材料具备后执行。
2026-06-08 22:30 · 超管项目工作手机页与 provider 可视闭环(卡若AI)
- 复现:超管全局设备管理显示项目
2778 / 卡若私域为1/7 在线,项目详情“工作手机”标签页却显示“暂无设备”。 - 根因:
GET /v1/admin/company/devices?projectId=2778返回array_merge(): Expected parameter 1 to be an array, object given。 - 修复:
GetCompanyDevicesForProfileController在控制器内统一把 ThinkPHP Model 查询结果规范化为数组;未修改全局ArrHelper。 - API 验收:
code=200、设备5台、在线1台、在线机型2312DRAABC。 - 浏览器实点:项目“工作手机”标签页展示 5 行设备;在线真机可见;“对接配置”页显示并选中“方案 A · 工作手机 SDK / 当前:工作手机 SDK”。
- 留痕:
开发文档/8、部署/05-测试验收/20260608_超管工作手机项目页E2E/README.md。
2026-06-09 19:20 · Hook 热重载 + 读类分页修复 + 假成功门禁(卡若AI)
持久对话:继续沿用 ct_c56d3c94 ↔ 工作手机,卡若AI gate 校验通过。
本轮修复:
wechat_hook_v2.js:get_groups增加limit/offset/total_count/returned_count/has_more;get_labels改为真表contactlabel分页读取。- Python Agent:新增
frida_reload命令;FridaManager.reload_script()支持在线卸载并重载当前 Hook 脚本。 - SDK Hook 模块路由:
/devices/{device_id}/modules/reload在线时下发frida_reload到真实 Agent。 .gitignore:新增sdk/.runtime/,避免本地 Python 依赖入库。
真机结果:
- Agent 前台启动成功,Frida remote
127.0.0.1:13507连接成功,attach 微信 pid12278,微信版本8.0.69。 /api/v3/connection/status:WS 在线1,设备 MD5ed25814d9c92b3430696dc96c2142b5f,能力含frida/hook/frida_rpc。- 群列表:
limit=1返回total_count=27、has_more=true。 - 标签列表:
limit=1返回total_count=323、source_table=contactlabel、has_more=true。 - 联系人:
limit=1返回total_count=6209、raw_total_count=6349。 - 消息:
limit=1返回total_count=2634。 - 写类无接收器探针:
set_friend_remark对不存在对象返回 JSONcode=503、frida_error=no_receiver_registered、receivers=0,不再假成功。 - Hook 热重载:
agent_reload.code=200、agent_reloaded=true;重载后get_groups继续通过。
留痕:开发文档/8、部署/05-测试验收/20260609_Hook重载与读类分页_E2E/README.md。
24h 长跑:
- 上一轮长跑样本包含开发期间主动重启和离线,不能作为干净 24h 接收口径。
- 已新建
开发文档/8、部署/05-测试验收/20260609_24h稳定性长跑/,并把com.workphone.stability-longrunLaunchAgent 输出目录切到 20260609。 - 已停止前台残留 runner,仅保留 LaunchAgent 单实例持续写入。
- 首样本:
ok=true、sdk_healthy=true、ws_online=true、adb_online=true、hook_ok=true、微信8.0.69。
量产黄灯处理:
- 旧
fs_e05af4进程监听默认 Frida 端口127.0.0.1:27042,已停止该旧进程。 - 当前主控端口
0.0.0.0:13507仍由fs_e05af4监听,WS/Hook 能力未受影响。 - 剩余黄灯:Magisk 可见、ADB running、Shamiko 缺失;联调态不阻断,量产前继续处理。
下一步:继续跑满 24h 稳定性;在测试白名单材料具备时验收群发、加友、朋友圈点赞/评论等写类;量产前清理 Frida 默认端口、Magisk 可见、ADB running 等黄灯。
2026-06-09 21:46 · 纯客宝 BFF 对接续跑 + 读类总数校正 + 持久对话规则固化(卡若AI)
持久对话:ct_c56d3c94 ↔ 工作手机 校验通过;本轮按用户最新要求固化“工作手机/存客宝长期任务不使用 Codex 内置计划或定时计划”,续跑依赖持久对话、本地脚本、开发文档和项目管理记录。
本轮代码/配置:
sdk/app/routers/unified.py:群列表、标签列表、客户画像聚合补limit/offset,返回真实total_count/has_more。sdk/launchagents/com.workphone.python-agent.plist与本机 LaunchAgent:补WP_DEVICE_SERIAL=192.168.110.80:5555,Agent 固定无线真机,不再误连空设备。- 存客宝
WorkPhoneSDK.php、WorkPhoneGatewayController.php、route.php:补齐 BFF 到 SDK 的资料、联系人、群、标签、消息、朋友圈、批量发送、稳定性等包装接口;BFF 不伪造成功。
真机/接口结果:
GET /api/v3/connection/status:WS 在线1,ADB192.168.110.80:5555,设备 MD5ed25814d9c92b3430696dc96c2142b5f。GET /api/v3/hook/probe/xgfe65eimrrofyws:supports_hook=true,微信8.0.69,frida_available_reported=true,connect=ok。- 联系人:
limit=1&offset=1返回total_count=6211、raw_total_count=6351、has_more=true,不再是 200 条预览口径。 - 群列表:
total_count=27;标签:total_count=323、source_table=contactlabel;资料汇总:profile/contacts/groups/tags/messages 全部websocket/hook。 - 存客宝 BFF
:8082 /v1/workphone/contacts无 JWT 返回401,说明路由进入鉴权层;下一步带登录态跑全量按钮回归。
当前可交付比例:微信读类 99%;微信写类 83%;存客宝/纯客宝 BFF 92%;24h 稳定性/量产口径 76%;本轮总可交付 89%。
下一步:带 JWT 跑 BFF 全量验收;补纯客宝页面按钮回归;用测试白名单验收群发、加友、朋友圈互动;继续 24h 稳定性长跑。
2026-06-10 00:25 · 微信发送链路恢复 + 存客宝 BFF 27/27 验收通过(卡若AI)
持久对话:继续沿用 ct_c56d3c94 ↔ 工作手机,卡若AI gate 校验通过;本轮未使用 Codex 内置计划/定时计划。
本轮修复:
- 工作手机 SDK
message/send:Hook 失败为no_receiver_registered时允许同一真机 Agent 走 u2 真实 UI 兜底;同时修复 WS 返回code=200但data.success=false被误判成功的问题。 - Python Agent
BaseSkill.input_text:补root input text兜底,解决 MIUI 普通 ADB/u2 输入被INJECT_EVENTS或 ADBKeyboard 安装失败卡住的问题。 - 微信发送技能:搜索联系人和消息内容统一走
input_text,不再直接依赖d.send_keys。 - 真机输入法:启用并设为默认
com.android.adbkeyboard/.AdbIME;保留搜狗输入法可用。 - 存客宝 BFF
GetWorkPhoneStatusController::sdkResponse:透传 SDK 顶层channel_used/action/transport,对带message_id的成功发送补verified=true,避免 BFF 丢失验收元信息。
真机结果:
- SDK 健康:
:8899 /health返回devices_online=1、ADB192.168.110.80:5555。 - 稳定性采样:
ws_online=true、adb_online=true、hook_ok=true、微信8.0.69,延迟409ms。 - 发送直测:
POST /api/v3/message/send发往filehelper成功,返回message_id=2672,channel_used=websocket/frida。 - 存客宝 BFF 全量验收:
Server/scripts/workphone_bff_acceptance.sh通过PASS=27 FAIL=0;其中message/send返回success=true、verified=true。
当前完成度:
- 微信读类:99%
- 微信写类:86%(filehelper 单发已恢复;群发/加友/朋友圈互动仍需测试白名单逐项跑)
- 存客宝/超管 BFF:96%(接口层 27/27 已过;剩页面业务按钮与 provider 持续回归)
- 24h 稳定性/量产口径:77%
- 总体:91%
下一步:用白名单继续验证群发、加友、朋友圈点赞/评论;补超管/存客宝页面按钮实点;继续 24h 长跑和量产黄灯处理。
2026-06-10 12:35 · Fleet 多设备 SDK/BFF 开放接口完成(卡若AI)
持久对话:继续沿用 ct_c56d3c94 ↔ 工作手机,卡若AI gate 校验通过;本轮未使用 Codex 内置计划/定时计划。
本轮代码:
- 工作手机 SDK 新增
sdk/app/routers/fleet.py,开放GET /api/v3/fleet/summary、GET /api/v3/fleet/devices、POST /api/v3/fleet/execute。 - SDK 主服务
sdk/app/main.py注册 Fleet 路由,设备来源统一使用 WS 注册信息与本地设备画像,返回device_id_md5。 - 存客宝
WorkPhoneSDK.php增加fleetSummary/fleetDevices/fleetExecute;WorkPhoneGatewayController.php与route.php增加/v1/workphone/fleet/*。 - 修复 BFF 透传
params:{}时 PHP 空数组编码成[]的问题,保证 FastAPI 接收 JSON object。 - BFF 验收脚本扩展到 30 项,新增 Fleet 三项与内层真机结果校验;当前本机线程上限触发
fork: Resource temporarily unavailable,已另用单进程 Python 完成新增 Fleet 三项回归。
真机/接口结果:
- SDK 健康:
:8899 /health返回devices_online=1,设备xgfe65eimrrofyws在线。 GET /api/v3/fleet/summary:total=1、online=1、by_project.cunkebao=1。GET /api/v3/fleet/devices?online_only=1&capability=frida:返回 Redmi2312DRAABC,微信8.0.69,设备 MD5ed25814d9c92b3430696dc96c2142b5f,Frida remote127.0.0.1:13507在线。POST /api/v3/fleet/execute:wechat/ping真机 Hook 返回pong from wechat_hook_v3.0 — 96 actions / 26 modules,success_count=1。- 存客宝 BFF
/v1/workphone/fleet/summary、/fleet/devices、/fleet/execute带 JWT 回归通过;fleet/execute内层真机结果success=true。
当前完成度:
- 微信读类:99%
- 微信写类:86%(单发恢复;群发/加友/朋友圈互动仍待白名单实写矩阵)
- 存客宝/超管 BFF:97%(单台与多台 Fleet API 已开放;页面按钮与全 30 项脚本需在系统资源恢复后复跑)
- 24h 稳定性/量产口径:77%
- 总体:92%~93%(需求真源按 WP 项统计为 93%)
下一步:继续补白名单写类矩阵;恢复本机线程资源后跑 workphone_bff_acceptance.sh 30/30;同步 API 文档到存客宝接口说明;继续 24h 稳定性长跑。
2026-06-10 13:15 · 实时状态/事件总线开放给存客宝与第三方(卡若AI)
持久对话:继续沿用 ct_c56d3c94 ↔ 工作手机,卡若AI gate 校验通过;本轮未使用 Codex 内置计划/定时计划。
本轮代码:
sdk/app/services/ws_hub.py:真实 Agent WS 的register/status_report/event/disconnect统一写入 Hook 事件总线,事件源标记为ws_agent。sdk/app/routers/integration.py:新增GET /api/v3/integration/realtime/status与GET /api/v3/integration/realtime/events。sdk/app/services/integration_manifest.py:新增fleet模块归类,确保/integration/manifest对存客宝、超管、AI 数字员工和通用第三方均可发现 Fleet 能力。- 存客宝
WorkPhoneSDK.php、WorkPhoneGatewayController.php、route.php:新增/v1/workphone/realtime/status与/v1/workphone/realtime/events包装接口。 workphone_bff_acceptance.sh:追加 realtime/status、realtime/events 两项,资源恢复后可跑 32 项回归。
真机/接口结果:
- SDK 重启后真机 WS 自动回连,
:8899 /health返回devices_online=1、ADB192.168.110.80:5555。 - 真机 Fleet 执行:
wechat/ping返回pong from wechat_hook_v3.0 — 96 actions / 26 modules,success_count=1。 - SDK 实时状态:
/api/v3/integration/realtime/status?consumer=cunkebao返回online_count=1、total_count=1。 - SDK 实时事件:
/api/v3/integration/realtime/events返回真实事件,最近类型含skill_done。 - SDK Manifest:
fleet模块 3 个端点,integration模块 10 个端点;消费方覆盖cunkebao/superadmin/ai_employee/common。 - 存客宝 BFF 实时状态:
/v1/workphone/realtime/status带 JWT 返回online=1/total=1。 - 存客宝 BFF 实时事件:
/v1/workphone/realtime/events带 JWT 返回events_total=5,首条skill_done。
当前完成度:
- 微信读类:99%
- 微信写类:86%
- 存客宝/超管/第三方 BFF:98%(Fleet + Realtime 已开放;页面按钮与完整 32 项脚本待资源恢复后全跑)
- 24h 稳定性/量产口径:78%
- 总体:94%
下一步:继续白名单写类实测;将实时状态接入存客宝/超管页面显示;清理本机线程资源后跑 PASS=32 FAIL=0。
2026-07-14 12:01 · 触客宝 TC 真机恢复分层与 APK 长期任务单(阿表)
本轮目标:根据“游条姐”账号 TC 真机聊天复检与阿服恢复证据,把临时运行态和 APK 长期缺口拆开,形成可直接开发、可真机验收的 P0 任务。
已完成:
- 核对当前证据:真机
xgfe65eimrrofyws、SDK healthy、Agent/WS 在线;Frida 已在127.0.0.1:19886恢复,两轮进程枚举、微信 attach/detach、SDK Hook 探针通过。 - 明确临时边界:Mac Agent + Type-C 只记为 临时可用 70%;本轮尚无触客宝当前会话的真实发送、回读和页面截图,不得写 100%。
- 明确长期缺口:端口存在
19886/14537/27042多真源;APK 缺frida-server-arm64asset;FridaBridge.sendRpc()与手机本地frida -UCLI 均未证明能完成真实 RPC。 - 建立四项 P0:
WP-FRIDA-SSOT-01、WP-APK-RPC-02、WP-BOOT-SELFHEAL-03、WP-MAC-TC-FALLBACK-04。 - 建立六道验收门禁:端口三重启、APK RPC、60 秒自愈、触客宝白名单发送、消息回读、当前页面截图;全部两轮通过后才允许标 100%。
进度变化:
| 项目 | 当前进度 | 状态 |
|---|---|---|
| 需求/根因/验收定义 | 100% | ✅ 已完成 |
| Mac Agent + TC 临时兜底 | 70% | 🟡 临时可用,业务聊天未闭环 |
| 端口单一真源 | 20% | ⬜ 待开发 |
| APK 真实 Frida RPC | 10% | ⬜ 待开发 |
| 开机与崩溃自愈 | 15% | ⬜ 待开发 |
| 触客宝当前聊天闭环 | 0% | 🔴 未验收 |
| 本任务组 | 25% | 🟡 已形成可执行任务,长期能力未完成 |
证据:8、部署/05-测试验收/20260714_触客宝TC真机_Frida环境恢复_阿服.md;触客宝侧 cunkebao_v3/开发文档/8、部署/05-测试验收/20260714_触客宝游条姐_TC真机聊天复检.md。
下一步:工作手机开发先做端口 SSOT 与 APK 真实 RPC,再做 60 秒自愈;期间保留 Mac Agent + TC 诚实兜底。完成后按 V1~V6 真机复跑并补触客宝当前截图。
2026-07-23 19:50 · v5.0.8 React APK 重构、安装与双轮验收(机擎)
本轮完成:
- 新建 React + TypeScript + Vite APK 前端,完成工作台、Agent、设备三页和全套 SVG 图标。
- MainActivity 使用 WebViewAssetLoader 加载本地前端,通过 NativeAgent Bridge 对接真实设备状态和动作。
- 修复 WebView 本地资源 CORS 白屏、状态探测阻塞主线程和旧日志误判 ANR。
- React
typecheck/build与 AndroidassembleRelease全部通过。 - 正式版
5.0.8/code 13覆盖安装到 Type-C 真机xgfe65eimrrofyws。 - 两轮冷启动进程正常,logcat 未出现 Crash、ANR 或输入分发超时。
- APK、SHA-256、截图、日志与验收 README 已归档。
诚实状态:真机当前 Agent 在线、微信运行中;平台连接异常、IMEI不可读按实际显示。APK UI 交付完成,不代表 Root Frida RPC、自愈与 24 小时长跑完成。
下一步:继续 Root 测试机 Frida RPC、三轮 60 秒自愈和 24 小时稳定性验收。
2026-07-23 20:35 · v5.0.9 Agent 与设备页优化(机擎)
完成项:MD5 设备编号唯一化、工作台去重、连续运行字体增强、Agent 六项自动化开关、BootReceiver 自启动控制、健康度评分、服务器配置排版、注入引擎命名、高级维护折叠、WebView 回顶和已绑定启动跳转。
真机结果:5.0.9/code 14 安装成功;手机重启后冷启动自动进入 MainActivity,应用进程正常,logcat 无 Crash、无 ANR。
下一步:继续平台离线原因、Root 注入引擎 RPC 和 24 小时稳定性专项。
2026-07-23 23:24 · 微信红包 Hook 主链修复(机擎)
完成项:
check_device_online()新增Server Frida Bridge放通逻辑,微信非 UI-only 动作不再因 WS 离线被提前挡住。/api/v3/payment/receive-red-packet改成 JSON Body +msg_svr_id主键;receive_red_packet已移出WECHAT_U2_ONLY_ACTIONS。server_frida_bridge.py导包真源修复为agent.hook.*,已消除No module named 'hook'代码根因。- 红包/转账/在线校验相关契约测试补齐并通过:
62 passed in 1.19s。
当前结果:命令行直测已经打进 server/frida 主链,首个真实失败点从 “WS 未连接” 推进到 Server Frida Bridge 导包与实例切换层;红包真实 RPC 还在继续收口。
下一步:清理旧 8899 实例,重启单实例 BFF,继续抓 receive_red_packet 与 receive_transfer 的新回执,再把红包从 intent 升级为真实内部网络场景调用。
2026-07-23 23:31 · 微信红包收发 Hook RPC 落地(机擎)
完成项:收红包已改为 receivewxhb(1581) → openwxhb(1685) 内部网络场景;发红包已改为 requestwxhb(1575) 预下单场景,返回 send_id/reqkey/send_msg_xml/payment_status;send_red_packet/receive_red_packet 均移出 UI-only;Hook 三份同步;FridaManager 远程 PID 识别修复;契约测试扩展到 65+ 条通过。
实时结果:BFF 健康,接口已进入 server/frida 主链;当前手机 Frida 后端断链,返回结构化 hook_unavailable,证据已归档到 开发文档/10、项目管理/02-测试报告/20260723_微信红包Hook主链修复/。
下一步:恢复手机 Frida 后端或 Agent WS 后,直接复跑 send_red_packet、receive_red_packet、receive_transfer 三条 curl,回收真实 raw_rpc_receipt 和 DB 回读。
2026-07-24 00:20|水桥|微信红包无界面Hook验证
- 完成发送红包 q5 构造器兼容,当前微信版本实际回调类型为 2929,已改为
scene.getType()自适配注册回调。 - 发送红包接口获得真实 Frida/微信内部回调
err_type=0, err_code=0,BFF 返回success=true。 - 收红包接口已支持
msg_svr_id精确领取与空参数自动找最近红包;当前真机库未发现红包消息记录,需下一次真实红包入库后直接复跑。 - 契约测试:66 passed。
2026-07-23 23:41 · 平台连接恢复、WP-APK-RPC-02 完成、WP-24H 启动(卡若AI)
目标&结果:公网设备恢复在线 1 台;真实 Frida RPC 四项门禁完成;24小时稳定性任务已启动。
过程:恢复 APK 公网 WSS;复用 Root 机 Frida 16.5.6 并固定 19886;attach 微信完成 ping/profile;向文件传输助手发送消息并数据库回读,取得 message_id=10458。
监测:run_stability_longrun.py 增加环境变量鉴权和 health/device_ids 降级心跳。正式任务 PID 53957,60 秒采样,首样本通过。
诚实边界:线上深度稳定性探针当前读取超时;现阶段持续证明公网 SDK 与 WSS 在线,Hook 深度稳定性仍需修复探针并实际跑满 24 小时。
证据:rpc/05_send_message_readback.json 与 stability/24h/。
2026-07-24 00:45|水桥|实时收款验收
- 用户侧操作后,命令行轮询红包未命中红包 XML;通过消息列表确认最新真实入库对象是微信转账。
- 修复转账
n0构造器签名和回调类型自适配,最终receive_transfer返回code=200/success=true/wechat_err_type=0/wechat_err_code=0。 - 证据目录:
开发文档/10、项目管理/02-测试报告/20260724_微信红包实时领取/。
2026-07-24 00:55|水桥|红包/转账按次数领取反馈迭代
- 纠正上轮只处理一笔及对象描述偏差:真实入库为两笔微信转账,消息ID 10459、10460。
- 两笔分别获得微信内部确认回执:
cgi_func_id=1691、err_type=0、err_code=0。 - 新增
/api/v3/payment/receive-incoming-batch,支持按消息次数逐条判型、执行、反馈和汇总。 - 真机批量验收:请求2次、处理2次、成功2次、失败0次、跳过0次。
- 修复
/message/list错误复用send_red_packet在线检查动作。 - 契约回归:68 passed。
2026-07-24 00:55|水桥|红包/转账按次数领取反馈迭代
- 纠正上轮只处理一笔及对象描述偏差:真实入库为两笔微信转账,消息ID 10459、10460。
- 两笔分别获得微信内部确认回执:
cgi_func_id=1691、err_type=0、err_code=0。 - 新增
/api/v3/payment/receive-incoming-batch,支持按消息次数逐条判型、执行、反馈和汇总。 - 真机批量验收:请求2次、处理2次、成功2次、失败0次、跳过0次。
- 修复
/message/list错误复用send_red_packet在线检查动作。 - 契约回归:68 passed。
2026-07-24 WP-HL-06 资金动作收口(水桥)
- 范围:payment_receive、receive_payment、receive_red_packet、receive_transfer、send_red_packet、send_transfer、transfer 七项。
- 已完成:统一 dry_run/confirm;固定测试对象白名单;小额上限;资金动作频控;Frida RPC 证据门禁;trace_id/raw_rpc_receipt/readback 缺失时返回 payment_readback_missing;移除 send_transfer/receive_payment UI/u2 兜底;sendTransfer/receivePayment Hook 返回明确 frida_rpc 能力状态。
- 验证:
python3 -m pytest sdk/tests/test_message_management_api_contract.py -q→ 76 passed。 - 证据:
开发文档/10、项目管理/02-测试报告/20260724_WP-HL-06_资金动作收口/。 - 状态:契约、错误码、门禁、OpenAPI 快照已完成;真实资金动作仍只在固定测试对象 + confirm=true + dry_run=false + 回读证据满足后开展。
2026-07-24 WP-HL-06 发起转账 RPC 迭代(水桥)
- 目标:修复
/api/v3/payment/transfer对“爱笑的阿猫”1元转账返回send_transfer_internal_rpc_not_ready。 - 已完成:新增
_executeTransferPrepareSend,接入sendTransfer;server_frida_bridge 增加 Hook 文件变更自动热重载;定位微信发起转账 scene 为com.tencent.mm.plugin.remittance.model.v,构造签名int + 8 String;真实 Frida 回调err_type=0, err_code=0。 - 验证接口:
POST http://127.0.0.1:8899/api/v3/payment/transfer,设备xgfe65eimrrofyws,目标爱笑的阿猫,金额1.00,返回code=200 success=true,cgi_func_id=2736,constructor_signature=model_v_int_8strings_scene_user_fee_desc_feeType_receiver_request_ext。 - 证据:
开发文档/10、项目管理/02-测试报告/20260724_WP-HL-06_转账接口_xd2214_爱笑的阿猫/response_model_v_int_8strings_retry.json。 - 注意:当前完成“发起转账准备/提交微信转账 scene”链路,是否需要支付密码/二次确认由微信支付安全策略决定,后续继续补账单回读与最终支付状态识别。
2026-07-24|接口文档说明中文化
- 完成:全量 OpenAPI 接口摘要中文化,覆盖 405 个接口。
- 重点:支付模块英文标题已替换为中文短标题。
- 验证:中文摘要 405/405;pytest 2 项通过;8899 服务已重启。
- 文件:
sdk/app/main.py、sdk/tests/test_openapi_chinese_summary.py、开发文档/功能迭代记录.md。
2026-07-24|接口实现状态视觉区分
- 完成:Swagger 已实现接口彩色亮显,未完成/占位接口自动置灰。
- 自动规则:源码补齐后状态由
placeholder自动切换为implemented。 - 当前统计:408 个已实现、1 个未完成。
- 验证:4 项测试通过;线上状态字段、CSS、JavaScript 均已加载。
- Skill:已更新
机擎/SKILL.md,后续新增接口必须执行状态回归。
2026-07-24|消息管理 9 接口测试
- 已真实调用截图中的 9 个消息管理接口,并保存完整请求、响应、HTTP 状态及耗时。
- 结果:接口回执 9/9;业务成功 0/9;HTTP 2xx 4 个、503 5 个。
- 原因:设备 Agent 离线、Frida Hook 不可用;批量发送同时受新号期防风控限制。
- 回归:消息契约与 OpenAPI 共 88 项测试通过。
- 证据:
开发文档/8、部署/05-测试验收/20260724_消息管理9接口实测/。 - 下一步:设备无线 Agent 与 Hook 恢复后直接运行目录内脚本续测,不重复准备参数。
2026-07-24|消息9接口真机闭环任务分发
- 用户确认:所有接口只有手机真实执行并完成业务回读才算成功;契约测试、HTTP 200、空回执均不算。
- 已分发到
金|金仓×阿服 ·微信无线连接:恢复 Termux Agent、WebSocket、Frida Hook 无线链路。 - 已分发到
火|火炬×阿机 ·微信无界面接口:补齐9接口真实RPC、统一回执与消息回读。 - 已分发到
火|火眼×阿端 ·微信全量验收:独立执行9接口真机E2E,失败项退回继续开发。 - 固定成功门槛:真实手机动作 +
raw_rpc_receipt+message_id/msg_svr_id+ 消息数据库/列表回读一致。 - 固定禁令:禁止 mock、pass、固定成功、USB、主机ADB、ADB input、UI点击或无障碍业务兜底。
2026-07-24|消息9接口接口层接力进展
- 无界面接口对话已补齐消息操作、消息列表、批量消息响应中的
trace_id、raw_rpc_receipt、readback。 - 写消息、列表、增量同步已透传底层回执;底层未返回时保持空值,禁止伪造真机证据。
- 消息相关回归
98 passed,差异检查通过。 - 真机结果仍为0/9,接口文档继续保持灰色“待真机验证”。
- 已同步全量验收对话;等待无线连接对话恢复WSS在线与Hook附着后逐项复跑。
2026-07-24 15:22|Bootstrap修复发布与Agent恢复接力
- Bootstrap已改为配置化生成手机可路由地址,局域网返回
ws://192.168.110.47:8899/ws/device/xgfe65eimrrofyws,不再返回172.18容器私网。 - SDK容器已重建,离线回归
11 passed。 - 发布后仍为
devices_online=0、online_ws_count=0、Hook未附着,消息9接口门禁继续关闭。 - 已分发
金|金仓 ·工作手机-AGENT:恢复Termux Agent持久启动、守护重连与WSS心跳。 - 已通知无线连接对话:Agent上线后立即继续Frida attach、Hook和RPC回执验证。
2026-07-24|全量接口文档与74条存客宝依赖分配
- 全量接口文档完成状态收紧:无真机四证记录一律置灰。
- 当前状态:409个接口操作中,408个待真机验证、1个未完成、0个自动亮显。
- 存客宝74条依赖已逐条补充BFF、SDK、需求、证据、状态和负责对话。
- 盘点结果:18条有旧记录待复核,56条没有精确接口验证记录。
- 六个模块对话已启动并行处理;全量验收对话统一回收,失败项退回继续开发。
2026-07-24|矩阵#30-35/#45-60静态盘点
- 消息、群聊、标签及Hook/AI共22项继续保持灰色。
- 当前门禁:
devices_online=0、supports_hook=false、Hook status HTTP 503。 - OpenAPI已注册消息、Hook、群欢迎语、标签和群发相关路径,但注册不代表真机通过。
- 新缺口:
set_group_welcome未发现 HookExecutor action→RPC 映射。 - 已分发微信RPC内核补齐真实RPC或明确结构化能力状态,并同步全量验收对话。
- 真机顺序:先群/标签/消息只读,再按测试对象执行写类;四证一致后才更新状态。
2026-07-24|入群欢迎语接口层补齐
- 微信RPC内核已提供
set_group_welcome → setGroupWelcome契约。 - 接口层已补
SetGroupWelcomeRequest,支持dry_run/confirm/trace_id、群ID格式422、hook_only=true。 - 能力不足返回结构化503,并透传
raw_rpc_receipt/readback。 - 接口回归
104 passed;OpenAPI保留200/422/503响应声明。 - 当前没有WSS在线、Hook附着和真机四证,矩阵第53项与Swagger继续保持灰色。
2026-07-24|V0 / GitHub / Vercel API 控制闭环
- 新增
sdk/scripts/v0_control.mjs,支持四平台状态回读与向唯一 v0 对话发送增量需求。 - 新增非敏感绑定真源
sdk/config/v0_vercel_binding.json,禁止自动创建重复项目。 - GitHub 真源
fnvtk/workphone-sdk/main、Vercel 生产部署READY、生产地址 HTTP 200。 - v0 对话
llvv3dzaeNB最新版本completed;从 demoUrl 回读其实际绑定项目为workphone-console-ru,与 GitHub 真源 Vercel 项目不一致。 - Vercel 官方 PATCH 不接受已有项目的
gitRepository字段;本轮保留证据,不删除项目。 - 卡若AI
v0前端生成与预览交付Skill 已补 API 优先、自动发现、自动纠错、防重复及完成门禁。