jev-chat-jarvis README

The project's README from github.com/jev-chat/jev-chat-jarvis. As one markdown file: README.md.

Jev 聊天助手

Jev 聊天助手

装在手机上的「对话副驾」:你在任何聊天 App 里聊天,它在旁边读懂对方、告诉你该怎么回,一键填进输入框,发不发由你。

Stars Forks Version Android License

官网 · 下载 APK · 历史版本 · 更新日志 · macOS 版 · Windows 版

❤️赞助商

想出现在这里?

点击折叠
博查 感谢 博查 赞助了本项目!博查是一个给 AI 用的搜索引擎,让你的 AI 应用连接世界知识,获得干净、准确、高质量的搜索结果。提供 Web Search API、Bocha Jev API 等多种联网搜索和模型服务。open.bocha.cn
小优店铺 感谢 小优店铺 赞助了本项目!小优店铺是一家数字商品与账号服务店铺,为本项目的用户提供选购渠道。点此前往。
速创猫 Vytal 感谢 速创猫 Vytal 赞助了本项目!速创猫 Vytal 是专业的 AI 视频工作流平台,提供可批量复用的视频工作流,降低内容制作门槛,服务内容创作者、培训机构及中小团队。点此前往。

截图

悬浮窗:聊天上方的 Jev 分析面板
悬浮窗:危险等级、对方真实意图、排好序的 3 条候选回复
设置页
设置页:判断 / 回复 / 视觉三路接口分别可配

为什么用它

平台支持

平台 状态 采集方式 备注
微信 Android ⏸ 已停止支持 — 微信 8.0.52+ 对普通无障碍服务隐藏了消息文字,且近期对部分账号/设备的聊天界面开启防截屏(FLAG_SECURE),两条读取路径都不通,没有干净的读取方式;1.4 起不再读取微信
QQ Android ✅ 全链路 无障碍读节点 9.3.50 实测(群聊);1v1 按同结构推断
X / Twitter 私信 ✅ 全链路 解析 Compose 节点的 content-desc 12.25 实测,中文界面;英文界面未验
飞书 / Lark ✅ OCR 兜底(真机验证) 无障碍读气泡矩形 + ML Kit 离线 OCR 识别正文 正文自绘不在无障碍树里,1.3 起对每个气泡矩形做 OCR;我/对方按已读状态判
任意其它 App ✅ 手动 悬浮窗菜单「截屏识别一次」整屏 OCR 不自动、不分我/对方(全部当作对方所说并在面板标注)
桌面端 / 网页 ⏳ 规划 截图 + OCR / 视觉 同一内核,换采集方式

本项目只读你自己设备上、你自己有权查看的聊天,不针对任何单一平台。

快速开始

1. 装包。 仓库里有签好名的 release 包:apk/jev-assistant-v1.4-release.apk(Android 11+)。各版本安装包也在 Releases。

adb install -r apk/jev-assistant-v1.4-release.apk

2. 填密钥。 打开 App → 设置 →「接口」分三张卡:判断接口 / 回复接口 / 视觉接口。最简单只填「判断接口」一栏的 OpenRouter API Key,其余两栏留空会自动继承这把密钥就能用。想换回复模型(默认 deepseek/deepseek-chat-v3.1,国内 Gemini / OpenAI 会被区域限制)就在「回复接口」选预设(OpenRouter / DeepSeek 官方 / 通义兼容)或自填地址,每张卡都有独立的一键连通测试。

3. 开权限。 按主页向导开三项:

装过 debug 包的要先卸载再装 release(签名不同),卸载会清掉密钥和设置。小米 / HyperOS 重装后悬浮窗权限会被重置,装完按向导再开一次。

功能

判断与候选回复

知识库与联系人

在设置 → 分析 →「知识库与联系人」。

接口与模型

采集与 OCR

常见问题

它会替我发消息吗?

不会。程序只把选中的回复填进输入框,发送键永远由你自己点。转账、红包、收款一律不碰。

需要 root 或 Xposed 吗?会不会封号?

不需要 root,也不用装任何模块。它不修改聊天软件的安装包、不注入进程、不调用对方 App 的接口或账号体系,只读系统无障碍服务暴露出来的界面内容,和读屏软件的工作方式一样。

我的聊天记录会被上传吗?

聊天内容只在你触发分析的那一刻,发给你自己在设置里配置的模型接口。项目没有任何自建服务器,不收集、不落盘、不进日志。历史记录默认关闭,开启后也只存在手机的 App 私有目录里。

悬浮球不见了,或者读不到消息怎么办?

多半是国产 ROM 把后台进程冻结了。先确认无障碍、悬浮窗、自启动、省电无限制四项都开着,小米 / HyperOS 尤其要开后两项。重装后悬浮窗权限会被重置,按主页向导再开一次。在聊天界面里随便点一下通常能自愈。

飞书里读不到正文?其它 App 能用吗?

飞书的消息正文是自绘控件,无障碍树里没有文字,1.3 起改为对每个气泡矩形做离线 OCR。没有专门适配的 App,可以在悬浮窗菜单里点「截屏识别一次」,整屏 OCR 后同样能分析,只是不区分我方和对方。

要花钱吗?

软件本身免费开源。模型调用走你自己的 API Key,按用量在对应服务商那边结算,项目不经手任何费用。

升级之后没反应?

把系统设置里的无障碍开关关掉再打开一次。1.3 起新增了截屏能力,服务需要重新绑定才会生效。

它怎么工作

QQ / X / 飞书 ──(无障碍读节点)──▶ 采集最近消息
                                  │
              ┌───────────────────┴───────────────────┐
              ▼                                        ▼
   Jev 判断(一次 7 道题)                    生成模型起草 3 条候选
   意图 / 危险 / 需求 / 动作 / 该不该回          │
              └───────────────────┬───────────────────┘
                                  ▼
                        Jev 给 3 条候选排序
                                  ▼
                半透明悬浮窗展示 → 复制 / 填入(不发送)
适配一个新的聊天 App
  1. 在 capture/ChatAppAdapter.kt 实现 ChatAppAdapter:pkg 是包名,extract(root, res) 从无障碍树取出标题和消息列表(Msg(side, text),side 为 me / other),不在聊天窗时返回 null。
  2. 在 capture/ChatCaptureService.kt 的 adapters 加一行。
  3. 判断、候选、悬浮窗、填入都不用动。

先用 adb shell uiautomator dump 看目标 App 暴露了什么,已有四个适配器覆盖了四种情况:

App 树的情况 适配器怎么做
QQ 节点开放,有 id 正文 id/mjn、标题 id/371,按气泡贴哪侧头像判谁说的
微信 已隐藏消息文字,部分设备还开启了防截屏 已停用:1.4 起不再接入采集分发,适配器代码保留在仓库中,以便日后微信策略变化时恢复
X Compose,无 id,text 为空 解析 content-desc 发件人:正文。时间。Read,发件人是「你」即我方
飞书 正文自绘,树里没有文字 树上拿 bubble_content_container 矩形与已读状态,OCR 每个矩形的正文

适配器返回 null 表示不在聊天窗,返回空消息列表表示在聊天窗但树里没正文——只有后者会触发 OCR 兜底。

QQ、X 全程只有一个 Activity,判「是不是聊天窗」要看树里有没有该有的节点(如输入框),不能看 Activity 名。

构建与目录结构

JDK 17 + Android SDK(platform 35 / build-tools 35)。

./gradlew assembleDebug      # app/build/outputs/apk/debug/app-debug.apk
./gradlew assembleRelease    # 需要仓库外的签名 properties,路径由 JEV_KEYSTORE_PROPS 指定
  • app/ — Android 应用(Kotlin,传统 View)
    • capture/ 无障碍采集:ChatAppAdapter.kt 各 App 适配器、ChatCaptureService.kt 分发服务、前台保活、ocr/ 截屏与离线识别
    • jev/ Jev 客户端与题目集 · overlay/ 悬浮窗 · core/ 配置与数据模型(含 core/kb/ 知识库存储与上下文构建)
    • KnowledgeActivity 知识库管理页(笔记 / 联系人)
  • tools/jev/ — Jev 题目集与校准脚手架(Python)
  • docs/ — 设计与验收文档
  • apk/ — 签好名的 release 包

已知限制

交流群 / 需求收集

如需联系,请公众号私信。 合作、赞助、反馈、进群失败、二维码过期,都走公众号私信,其它渠道不一定看得到。

公众号二维码

想听真实需求:你在哪个聊天 App 上最想要这个副驾?希望它判断什么、怎么提示、什么绝对不能碰?扫码进群直接说。1 至 7 群已满,不要再扫;8、9 群任选一个,请勿重复加入。

8 群
8 群
9 群
9 群

以下七群已满,请勿再扫:

1 群(已满)
1 群
2 群(已满)
2 群
3 群(已满)
3 群
4 群(已满)
4 群
5 群(已满)
5 群
6 群(已满)
6 群
7 群(已满)
7 群

群二维码 7 天有效(本批到 2026-09-29),过期了公众号私信要新码。

姊妹项目

同在 jev-chat 组织下:

隐私政策见 PRIVACY.md(说明读取了什么、发给谁、存在哪里、怎么删除)。

版权与许可

Copyright © 2026 Finderchangchang 与 jev-chat 贡献者。代码以 MIT 协议开源,另见 NOTICE。

免责声明:本项目只处理你自己设备上、你自己有权查看的聊天。请遵守微信、QQ、X、飞书等各软件的许可协议与当地法律法规,作者不对使用后果负责。

☕ 请我喝杯咖啡

如果你觉得我写的这玩意儿对你有点帮助,欢迎请我喝杯咖啡。咖啡因一到位,脑子就开始冒泡,源源不断地驱动我往前跑;哪天我更新得特别勤,说明这杯续上了 😄

微信赞赏码(姓名已隐去)

随手支持,不用有压力;不支持也没关系,点个 Star 或提条建议同样能让我开心很久。

jev-chat-jarvis (jev-chat/jev-chat-jarvis)

ai-assistant
Searching Database…

What is this?Jev is an Android app that watches the chat screen in apps like QQ, X, or Feishu, judges the other person's real intent and risk level, and drafts three reply candidates you can tap to fill into the input box — you still press send yourself.
Is this a standalone app or something that hooks into my chat apps?It's a standalone Android app written in Kotlin that uses Android's Accessibility Service to read on-screen chat text — it never hooks, patches, or touches the chat app's own data, interfaces, or accounts.
How do I get it running?Install the signed release APK (apk/jev-assistant-v1.4-release.apk, Android 11+) from the repo or GitHub Releases, open Settings and paste an API key into the judgment interface card, then grant accessibility, floating-window, and autostart/no-battery-optimization permissions.
Do I need an API key to use it?Yes — you need a key from OpenRouter, DeepSeek official, or a Tongyi-compatible endpoint for the judgment model (reply/vision interfaces can reuse the same key), or you can use the built-in limited-time-free 'Bocha Jev' preset.
Does it work with WeChat?No — WeChat 8.0.52+ hides message text from accessibility services and some devices now block screenshots on chat screens, so neither reading path works; since v1.4 the app no longer attempts to read WeChat at all.
Which chat apps actually work, and is this the Android version?This repo is the Android app: QQ and X/Twitter work fully via accessibility reading, Feishu falls back to on-device OCR, and any other app can be captured once manually via a screenshot-recognize menu. Sister repos under the same org cover macOS and Windows.
How does Jev decide what to show me?A judgment model first scores the other person's real intent, a danger level from 1-9, and whether to reply immediately; a separate generation model drafts three spoken-style reply candidates that the judgment model then ranks.
Does it remember who I'm talking to?Yes — a local knowledge base lets you save notes and contact profiles (name, aliases, relationship, remarks); matching notes and history are automatically attached to the analysis so replies stay consistent with what you've told it.
Why doesn't it just send the reply automatically?By design it only fills the chosen reply into the input box or clipboard — it never triggers the send action and never touches transfers, red packets, or payments, so you always tap send yourself.
How do I add support for a new chat app?Implement a small ChatAppAdapter in capture/ChatAppAdapter.kt that turns the current window's accessibility tree into a title and message list, register it in ChatCaptureService.kt, and judging, ranking, the overlay, and text-filling all work automatically.
Creator
jev-chat
Size
70.5 MB
Stars
7.9K
Age
26d
Commits · 90 Days