👁 旁观者 · JevBystander

微信里那句「在吗?」到底着不着急、该用什么姿态回?
点一下,让 Jev 判一次 —— 只弹 3 条提示,不生成回复、不替你发消息。

Release Build Android 8.0+ 861 KB 零依赖 MIT

就长这样

① 意图 + 情绪分布意图:催促进度或催回复 86% 情绪:着急 66% · 平静 24% · 焦虑 9%
② 着急程度着急:一般 · 1.37/3
③ 建议姿态建议:正常交流 98%

真实输出(同一个聊天窗口,判读耗时 0.97 秒)。情绪是一次判定的完整概率分布的前几名,不是判了很多次。

三步用起来

  1. 下载 APK 装上 → 打开「旁观者」
  2. 点「打开无障碍设置」→ 启用 旁观者 · 微信判读;回来贴上自己的 Jev 密钥(在这里领,免费注册不用审批)→ 点「测试密钥」
  3. 微信单聊里 → 下拉通知栏点磁贴「旁观一下」(或按无害快捷键),3 条提示就弹出来了

想让它自己动?设置里开「自动判读」,检测到对方新消息就判(带防抖,同一条不会重复判)。

它不做什么(这很重要)

  • 不生成回复文案 —— 一个字都不生成,怎么回是你的事
  • 不填入输入框、不点击、不发送 —— 全代码里没有任何注入/发送能力
  • 不截屏、不做 OCR、不读其它 App、不上传任何东西
  • 不要 root、不装 Xposed、不改微信 —— 只用系统无障碍读当前屏幕
  • 只申请两个权限:联网 + 通知
  • 密钥/关系表/日志全在本机,卸载即消失

关系表:同一句「我爱你」,判读完全不同

设置里一行一个,用会话标题或昵称匹配,命中最长的别名生效:

妈妈,妈,老妈=家人/女/生日三月
张伟,伟哥,老张=同事/男/市场部

备注会作为背景一起送进判定 —— 情侣说的和同事说的,Jev 给的概率分布天然不同。

跟「Jev 聊天助手」是什么关系

思路的启发来源是 jev-chat/jev-chat-jarvis —— 它证明了「无障碍读屏 + Jev 判定」在安卓上跑得通,在此致谢。但本项目是独立实现:代码、文案、命名、界面、图标全部自己写,一行都没抄,产品定位也不一样。

维度Jev 聊天助手旁观者
输出悬浮窗 + 3 条候选回复(要第二个文本模型)只有 3 条 Toast,不生成任何文案
采集无障碍树 + 截图 ML Kit OCR(APK 27 MB)只读无障碍树,不截屏
依赖Kotlin + AndroidX + ML Kit零第三方依赖(手写 JSON + HttpURLConnection + 原生 View)→ 861 KB
关系联系人表 + 知识库 + 历史记录联系人表(别名 → 关系/性别/备注),无知识库
场景微信/QQ/X/飞书,含群聊只做微信单聊

姊妹项目:JevIntent —— 同一个判定口径的 Xposed 插件版(能长按任意消息判读,代价是要 FkWeChat/LSPosed)。两套实现完全独立。

常见问题

为什么只看得到一部分消息?

因为只读屏幕上已经显示出来的文字。长消息被折叠、图片/语音/文件都读不到。想要无死角判读请看插件版 JevIntent。

题目该用中文还是英文?

默认中文。我们跑了 90 次真实调用做 A/B:英文题目的客观分并不更高(0.938 vs 0.945),只是置信度更高(0.905 vs 0.808),代价是标签与中文有 35% 不一致。想自己复现就把设置里的语言档换来换去。

会被微信封号吗?

不修改微信、不注入、不发送、不读取非当前窗口的内容,只做系统级读屏(和读屏软件同一套机制)。风险远低于 hook 类插件,但任何第三方工具都不存在「官方保证」。

国产 ROM 上过一会儿就不动了?

省电策略杀了无障碍服务。去系统设置里给「旁观者」加自启动/后台白名单,并把电池优化设为「不限制」。

密钥要钱吗?

Jev 的密钥在 console.typesafe.ai 免费注册领取(Google 或邮箱验证码登录,不用等审批)。用量与计费以官方为准,本项目与之无隶属关系。

自己编译

git clone https://github.com/Nisaka520/JevBystander.git
cd JevBystander
./gradlew assembleDebug     # app/build/outputs/apk/debug/app-debug.apk
./gradlew testDebugUnitTest # 35 个单测,不用真机

纯逻辑层(JSON/题目/解析/关系匹配/抓屏组装)不依赖 Android SDK,所以整套判定逻辑在电脑上就能测 —— 还带一个真接口端到端冒烟测试。