Skip to content

Repository files navigation

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 条候选回复
设置页
设置页:判断 / 回复 / 视觉三路接口分别可配

为什么用它

  • 它先判断,再写字。 大多数工具直接让模型编一句回复。Jev 先用判断模型给出对方真实意图、危险等级、该不该马上回,再据此起草回复。
  • 不动你的聊天软件。 不 hook、不改包、不走任何 App 的接口或账号、不读数据库,只用系统无障碍服务读「屏幕上正在显示的对话」。微信这种混淆节点的也能读到。
  • 发送权永远在你手里。 程序只把回复填进输入框,从不自动发送,不碰转账 / 红包 / 收款。
  • 一套内核,多平台。 微信、QQ、X 真机跑通,飞书靠 OCR 补正文。新增一个 App 只需写一个几十行的适配器。
  • 它认识你的人和事。 本地知识库与联系人档案,分析时自动带上命中的笔记和这个人的历史,回复不会和你的设定打架。
  • 接口自己配。 判断 / 回复 / 视觉三路分别可填,用你自己的密钥和额度,不经过任何中间服务器。
  • 隐私在本机。 密钥存 App 私有空间,聊天内容只在分析那一刻发给你配置的接口,不落盘、不进日志。

平台支持

平台 状态 采集方式 备注
微信 Android ✅ 全链路 伪装系统无障碍服务读气泡节点 8.0.52+ 混淆节点,伪装后 8.0.78 实测可读
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.3-release.apk(Android 11+)。各版本安装包也在 Releases

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

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

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

  • 无障碍(读消息;升级到 1.3 后需要把无障碍关掉再打开一次,截屏能力才生效)
  • 悬浮窗 / 显示在其他应用上层(展示分析)
  • 自启动 + 省电无限制(小米 / HyperOS 必做,否则后台被冻结读不到消息)

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

功能

判断与候选回复

  • 判断模型一次给出:对方真实意图、危险等级(1–9)、对方要什么、该不该马上回、最佳动作。约 1 秒,带把握度。
  • 生成模型起草 3 条口语化候选,判断模型按「最合适」排序并给出占比。
  • 悬浮窗里点一下复制或填入,填入用 ACTION_SET_TEXT,失败自动退到剪贴板粘贴,任何情况下都不发送

知识库与联系人

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

  • 笔记:标题 / 内容 / 标签 / 常驻。常驻笔记每次都带;其它笔记要标签或标题出现在会话标题或最近 6 条消息里才带,最多 5 条。支持多行文本粘贴导入,空行分段,每段首行当标题。
  • 联系人:姓名 / 别名(每行一个)/ 关系 / 备注。会话标题匹配姓名或任一别名时生效,自动忽略群名尾部人数、首尾空白和大小写差异。悬浮窗气泡长按可把当前会话一键存为联系人。
  • 历史:「记录聊天历史(只存本机)」默认关闭;开启后每次分析带上最近 N 条(默认 30),并自动去掉屏幕上已经显示过的部分。
  • 清除:知识库与历史都存在 App 私有目录,设置里「清空知识库与历史」一键删除,不进日志、不进 git。
  • 悬浮窗面板顶部会显示一行「知识库 N 条 · 历史 M 条」,方便确认到底带了什么。

接口与模型

  • 判断 / 回复 / 视觉三路的地址、密钥、模型分别可填。
  • 内置 OpenRouter、TypeSafe 直连、DeepSeek 官方、通义兼容四套预设,每张卡一键连通测试。
  • 只有一把密钥也能用:回复、视觉留空自动继承判断接口的配置。
  • 从旧版本升级时,原来那把密钥会一次性迁移到新的三卡结构。

采集与 OCR

  • 一个 App 一个适配器,服务按前台包名分发,适配器只负责把当前窗口变成「标题 + 消息列表」。
  • 无障碍树里没有正文时,自动截屏并用 ML Kit 中文离线模型识别,不上传图片、不需要 Google 服务。
  • 截屏有限频和失败退避,不会每秒连拍;识别时会躲开自己的悬浮窗。
  • 任何 App 都能在悬浮窗菜单里手动触发「截屏识别一次」。

常见问题

它会替我发消息吗?

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

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

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

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

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

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

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

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

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

要花钱吗?

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

升级到 1.3 之后没反应?

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

它怎么工作

微信 / QQ / X / 飞书 ──(无障碍读节点)──▶ 采集最近消息
                                  │
              ┌───────────────────┴───────────────────┐
              ▼                                        ▼
   Jev 判断(一次 7 道题)                    生成模型起草 3 条候选
   意图 / 危险 / 需求 / 动作 / 该不该回          │
              └───────────────────┬───────────────────┘
                                  ▼
                        Jev 给 3 条候选排序
                                  ▼
                半透明悬浮窗展示 → 复制 / 填入(不发送)
  • 采集:一个 App 一个适配器,服务按前台包名分发。适配器只负责把当前窗口变成「标题 + 消息列表(谁说的、说了什么)」,下游全部通用;树里没有正文时走截屏 + 离线 OCR 兜底(限频、失败退避,不会每秒连拍)。
  • 判断Jev 只回答选择 / 打分 / 是非,一次请求发全部题目,约 1 秒返回;命中知识库时 state 里会带 background(关系 + 联系人备注 + 命中笔记)和 history(历史消息)。
  • 回复:生成模型起草 3 条候选,Jev 排序;提示词要求回复必须与知识库一致,不编造知识库没有的事实。
  • 回填ACTION_SET_TEXT,失败则剪贴板 + ACTION_PASTE,不发送。
适配一个新的聊天 App
  1. capture/ChatAppAdapter.kt 实现 ChatAppAdapterpkg 是包名,extract(root, res) 从无障碍树取出标题和消息列表(Msg(side, text)sideme / other),不在聊天窗时返回 null
  2. capture/ChatCaptureService.ktadapters 加一行。
  3. 判断、候选、悬浮窗、填入都不用动。

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

App 树的情况 适配器怎么做
QQ 节点开放,有 id 正文 id/mjn、标题 id/371,按气泡贴哪侧头像判谁说的
微信 对普通无障碍服务混淆节点 服务类名伪装成系统的 SelectToSpeakService,读 id/bkl 气泡,按左右判
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 包

已知限制

  • 国产 ROM 后台冻结:小米 / HyperOS 会杀后台进程,前台保活、自启动、省电无限制都配了仍可能被杀,气泡短暂消失,在聊天里再交互一下自愈。
  • 飞书正文靠 OCR:飞书正文是自绘控件,无障碍树里只有气泡矩形,1.3 起对每个矩形做离线 OCR;我 / 对方按已读状态判断,判反时请用「存为联系人」并在备注里说明,或关掉自动分析改手动。
  • X 只按中文界面验过:分隔符 上午 / 下午Read 是中文界面实测;英文界面只做了兜底,未验。
  • 群聊:按一对一分析,「对方」与关系设定对群聊不准。
  • 中文:Jev 主训练语言是英文,题目用英文、聊天内容保留中文;建议用自己的真实对话做一批标注校准(见 tools/jev/)。
  • 微信端的读取依赖当前版本的界面结构,微信更新后可能需要跟进适配。
  • 知识库检索是标签/标题包含匹配,不做语义检索,笔记请打好标签才能被命中。历史按「谁说 + 原文」去重,同一个人重复说同一句只记一次。
  • OCR 依赖系统放行截屏:无障碍服务要被系统允许截屏才能用,小米 / HyperOS 可能拒绝(面板会提示失败原因);受保护窗口(FLAG_SECURE)截不到。
  • OCR 只认屏幕上看得见的部分:长消息被截断的部分读不到;识别有错字。
  • 包体变大:ML Kit 中文离线模型让 APK 从约 12 MB 增至约 27 MB,且只打 arm64-v8a。

交流群 / 需求收集

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

公众号二维码

想听真实需求:你在哪个聊天 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 组织下:

  • Jev 聊天助手 macOS 版:微信消息意图识别悬浮窗,看屏 + 本地小模型判断意图和风险,再按话术生成回复候选,纯只读。
  • Jev 聊天助手 Windows 版:微信 Windows 4.x 旁挂的回复辅助,窗口截图 + 本地离线 OCR,3 条候选一键填入,发送永远手动。
  • 微墨 WeChat Ink:微信公众号写作、配图与排版助手,支持资料核验、学术风图文和草稿发布。

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

版权与许可

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

  • 可以商用:个人和公司都可以使用、修改、再分发,或集成进自己的产品,不需要付费或事先授权。
  • 必须注明出处:分发或商用时保留 LICENSE 与 NOTICE,并在产品「关于」页、说明文档或发布页写明来源。推荐写法:基于 Jev 聊天助手(https://github.com/jev-chat/jev-chat-jarvis)二次开发
  • 不要用「Jev 聊天助手」「jev-chat」名称或 chatjevs.com 域名暗示由原作者出品或背书。

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

☕ 请我喝杯咖啡

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

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

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

About

装在手机上的对话副驾:在微信 / QQ / X / 飞书里读懂对方、给出候选回复、一键填入输入框,发不发由你。非侵入,只读屏幕,不 hook 不改包。

Topics

Resources

Stars

4.8k stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages