
Jev 聊天助手:先判断再写字,一个装在手机上的"对话副驾
前言
AI 帮你回消息的工具不少,绝大多数的做法是:读对话 → 让大模型编一句回复 → 发出去。听起来顺,用起来心慌——它替你说的每一句话,出了事算谁的?
Jev 聊天助手(jev-chat-jarvis)把顺序和权力都改了:先判断,再写字,绝不发送。一个判断模型先告诉你对方真实意图、危险等级(1-9)、该不该马上回,再让生成模型起草 3 条候选,排序后填进输入框——发送键永远你自己点。开源(MIT),Android 11+,还有 macOS 和 Windows 姊妹版。 " 这个项目值得写的不是"AI 回消息",而是它对边界的处理:不 hook、不改包、不碰账号、不读数据库、不自动发送。每一条都是刻意的克制。
一、项目身份
Jev 聊天助手(jev-chat-jarvis,v1.4)是一个 Android 端的"对话副驾":你在任何聊天 App 里聊天,它在旁边的悬浮窗里读懂对方、给出候选回复,一键填进输入框。
一句话说清楚:
用系统无障碍服务读屏幕上的对话,判断模型一次给意图/危险等级/最佳动作,生成模型起草 3 条候选,悬浮窗展示、一键填入,发送永远手动
项目地址:https://github.com/jev-chat/jev-chat-jarvis 协议:MIT(商用需注明出处) 平台:Android 11+,另有 macOS / Windows 姊妹项目
应用方向:社交对话辅助——识别对方真实意图、给风险提示(1-9 危险等级)、避免说错话;配合本地知识库和联系人档案,让回复符合"你的人和事"。防诈骗场景是危险等级设计的直接对应。
效果:判断约 1 秒返回、带把握度;QQ、X 真机全链路跑通,飞书靠 OCR 兜底;不依赖 root / Xposed,不改聊天软件一个字节。
二、核心思路:判断和生成分工,采集和业务解耦
这个项目有两个关键架构决策。
第一,判断模型和生成模型分工。大多数工具直接让模型编回复,Jev 先让判断模型(Jev 协议)回答一次 7 道题——意图、危险、需求、动作、该不该回——全部是选择/打分/是非题,一次请求约 1 秒。生成模型只管起草 3 条口语化候选,再由判断模型按"最合适"排序。先看清局面,再动笔,这是它和"一键 AI 回复"工具的本质区别。
第二,采集和业务彻底解耦。无障碍采集按"一个 App 一个适配器"组织,适配器只干一件事:把当前窗口变成统一的「标题 + 消息列表(谁说的、说了什么)」。下游的判断、候选、悬浮窗、填入完全通用——新增一个聊天 App 只需写一个几十行的适配器加一行注册。
三、主执行链路

链路里每一步都有兜底:树里没正文走 OCR;填入失败退剪贴板粘贴;OCR 截屏限频且会躲开自己的悬浮窗;面板顶部显示"知识库 N 条 · 历史 M 条",让你确认这次分析到底带了什么上下文。
四、核心模块架构

适配器是采集层灵魂,四个现成的覆盖四种典型情况:
| App | 无障碍树情况 | 适配器做法 |
|---|---|---|
| 节点开放有 id | 正文/标题按 id 取,按气泡贴哪侧头像判谁说的 | |
| X | Compose 无 id,text 为空 | 解析 content-desc(发件人:正文。时间。Read) |
| 飞书 | 正文自绘,树里没文字 | 拿气泡矩形+已读状态,OCR 每个矩形 |
| 微信 | 隐藏消息文字+防截屏 | 已停用——1.4 起不再读取 |
知识库与联系人是"它认识你"的部分:笔记支持常驻(每次必带)和标签命中(出现在会话标题或最近 6 条消息里才带,最多 5 条);联系人匹配姓名或任一别名,忽略群名尾部人数和大小写;悬浮窗长按可把当前会话一键存为联系人。历史记录默认关闭,开启后带最近 30 条并去重——全部只存本机私有目录,一键清空。
三路接口(判断/回复/视觉)地址、密钥、模型分别可配,只有一把密钥也能用(其余自动继承)。内置 OpenRouter、DeepSeek、通义、Vercel、OpenCode Zen、博查 Jev 等预设,每张卡一键连通测试——走你自己的密钥和额度,项目不经手费用也没有自建服务器。
五、数据与状态流

数据流的核心纪律是最小化和瞬时:聊天内容只在触发分析那一刻发给你自己配置的接口,不落盘、不进日志、没有中间服务器;知识库命中是保守的(标签不命中就不带);历史默认关闭。悬浮窗顶部那行"知识库 N 条 · 历史 M 条"是把"带了什么数据"这个通常不可见的状态显式暴露给你。
六、跨端边界
- 平台矩阵(项目最诚实的部分,一张表全交代):
- QQ Android ✅ 全链路(9.3.50 实测群聊)
- X 私信 ✅ 全链路(中文界面实测,英文只做了兜底未验)
- 飞书 ✅ OCR 兜底(真机验证)
- 任意 App ✅ 手动"截屏识别一次"(不区分我/对方)
- 微信 ❌ 已停止支持
- 桌面/网页 ⏳ 规划中
- 微信的死因值得单独记:8.0.52+ 对普通无障碍服务隐藏消息文字,近期又对部分账号开防截屏(FLAG_SECURE)——两条读取路径都被堵死,作者没有硬绕,1.4 起彻底不读微信,进入微信只提示一次。对抗平台时选择退出而不是对抗,这是正确的工程判断
- 平台差异的哲学:同一内核,换采集方式。适配器返回 null 表示不在聊天窗,返回空列表才触发 OCR——状态语义是精心定义的
七、配置边界
- 必配:三张接口卡里至少填"判断接口"(最简单是 OpenRouter 一把 Key,其余两栏自动继承)
- 可选配:判断接口换预设(博查 Jev 限时免费、OpenCode Zen 有免费档、Vercel、TypeSafe 直连)或自填地址;回复模型默认 deepseek-chat-v3.1(README 直说了国内 Gemini/OpenAI 会被区域限制)
- 系统权限三项:无障碍(读消息)、悬浮窗、自启动+省电无限制(小米/HyperOS 必做,否则后台被冻结)
- 知识库开关:历史记录默认关——隐私相关的能力默认最保守,要用自己打开
八、扩展点
- 新 App 适配:实现
ChatAppAdapter(几十行)+ 注册一行,判断/候选/悬浮窗/填入全不用动;README 附了完整教程(用adb shell uiautomator dump看树) - 多平台内核复用:macOS 版(看屏+本地小模型)、Windows 版(窗口截图+离线 OCR)已经存在,同一套判断协议跑三种形态
- 判断模型可校准:
tools/jev/提供题目集与校准脚手架——Jev 主训练语言是英文,用自己的真实对话做标注校准是官方建议 - 知识库扩展:多行文本粘贴批量导入笔记,标签体系自己搭
- 商用路径清晰:MIT 允许集成进自己的产品,保留 LICENSE/NOTICE 并注明来源即可
九、风险点
- 无障碍 + 截屏的天然敏感性。它读的是你屏幕上的一切对话,工作方式与读屏软件相同——但同样的能力,换个目的就是键盘记录器。装它之前想清楚你信任的是什么:开源代码 + 无自建服务器 + 密钥走你自己的接口,这三件事是信任的全部依据
- 聊天内容会发给第三方模型接口。虽然是"你配置的接口",但对话正文终究出了设备——涉及敏感对话时,分析那一刻数据就在别人的服务器上。这是此类工具无法回避的代价,README 没有回避(有 PRIVACY.md),你也不该回避
- 平台对抗是持续性风险。微信的今天可能是任何 App 的明天——无障碍读取本质是平台容忍的灰色地带,随时可能收紧。这个项目的价值随时可能被一次系统更新削掉一半
- 国产 ROM 后台冻结。小米/HyperOS 配齐保活仍可能杀进程,气泡短暂消失要靠交互自愈——不是 bug,是国产 ROM 的生态现实
- 判断准确性有边界:Jev 主训练语言是英文处理中文对话;群聊按一对一分析("对方"和关系设定对群聊不准);飞书 OCR 的我/对方按已读状态判可能反;X 英文界面未验。判断模型的输出是建议不是真理,尤其危险等级这种东西,误报和漏报的代价都真实存在
- OCR 的物理限制:只认屏幕看得见的部分,长消息截断读不到,识别有错字,FLAG_SECURE 窗口截不到;ML Kit 离线模型让包体从 12MB 涨到 27MB
- 合规自担:README 免责声明写明只处理自己有权查看的聊天,但各平台许可协议是否允许无障碍辅助读取,最终是你自己的责任
记住
Jev 聊天助手的核心不是"AI 替你聊天",而是三重边界设计:判断先于生成(先看意图和危险,再动笔)、采集与业务解耦(一个适配器几十行,内核永远通用)、发送权在人(只填入,永不发送,转账红包一律不碰)。
它对微信的处理方式值得所有做同类工具的人记住:两条路都被堵死,就诚实地退出,提示一句"请在别的软件上使用"——不对抗平台,是这类工具能活多久的关键。
至于信任:开源、无服务器、走你自己的 Key——这三件事构成它全部的隐私承诺,也别忘了聊天内容出设备的那一刻,边界就到了。
参考资源
- 项目:https://github.com/jev-chat/jev-chat-jarvis(MIT,含 PRIVACY.md、适配器开发教程、tools/jev 校准脚手架)
- 姊妹项目:jev-chat-mac(macOS)· jev-chat-windows(Windows)· wechat-ink(公众号写作助手)
- 判断协议:TypeSafe Jev(选择/打分/是非,一次前向,约 1 秒)
