jev-chat / jev-chat-windows
git clone https://github.com/jev-chat/jev-chat-windows.git
v0.1.12 · 24d ago
JevChat-Windows:聊天窗口旁挂的回复辅助。窗口截图 + 本地离线 OCR 读对方消息 → Jev 判断意图 → 3 条候选一键填入,发送永远手动
+1
stars, 24h · #9,295
+~7
stars, 7 days · #9,943
+830
stars, 30 days · #649
833
★ total · +1% this week
183
forks · 32 open issues
Star history (as recorded here)
LanguagePython
License—
Created2026-09-21 (1mo ago)
Last push24d ago
Watchers1
OwnerOrganization
GitHub topics
Links
README excerpt
# JevChat-Windows 本仓库只维护当前这一套识别。有能力的人可以 Fork 后自行适配别的聊天窗口,作者不提供这项适配,也不对 Fork 出去的改动负责。 ## 公众号 反馈和合作走公众号「恸码奇点」。扫左边的码,或者搜一搜这个名字。 聊天窗口旁挂的回复辅助:本地 OCR 读屏上的对话 → Jev 判断意图/情绪 → 给出 3 条候选回复 → 一键填入输入框。**发送永远手动,程序不替你按发送。** 判断内核来自安卓版 Finderchangchang/jev-chat-JARVIS, 这里把采集换成了 Windows 端的窗口截图 + 离线 OCR。 ## 下载即用(推荐) **普通使用直接下载,不用装 Python、不用碰源码。** 后面的「源码运行」是给开发者的。 👉 **下载最新版** 1. 在 Releases 页下载 `jev-chat-windows-vX.Y.Z.zip`(约 146 MB) 2. 解压到一个固定目录(整个文件夹一起,exe 要用旁边那堆文件) 3. 双击 `jev-chat-windows.exe` 要求:Windows 10 1903+ / 11,聊天窗口开着,两个 API key(判断一个、起草一个,见下)。 首次启动会弹设置页填这两个 key。key 写进 Windows 用户环境变量(注册表 `HKCU\Environment`)—— 全程只有 `JEV_API_KEY` 和 `LLM_API_KEY` 这两个,不落任何文件;其余设置写在 exe 旁边的 `config.json`,整个文件夹拷走设置也跟着走。 > exe 没签名,SmartScreen 会拦一下:「更多信息」→「仍要运行」。介意就往下看「自己打包」,自己打的更踏实。 ## 使用说明 **界面语言** 设置页顶部可选择「简体中文 / 한국어」,选择后立即生效并自动保存,无需重启。 切换语言会同步刷新主界面和调试窗口,保留正在填写的设置、聊天记录和回复候选。 如果设置了 `JEVCHAT_LANG` 环境变量,下次启动仍以该变量指定的语言为准。 **第一次启动** 设置页的「模型」卡片分两节,各填一把 key: 1. **判断 · Jev** —— 判断意图、紧张度,并给三条候选排序。来源选 **OpenRouter**(默认,key 在 openrouter.ai 申请)或 **TypeSafe 直连**(key 在 console.typesafe.ai 申请)。填的是哪家的 key 看你上面选了哪家。 2. **起草 · 语言模型** —— 写那三条候选。默认 **DeepSeek 官网**直连,key 在 platform.deepseek.com 申请(很便宜,起草一次几厘钱)。 换别家见下面的表,OpenAI / Anthropic / Gemini 三种接口都支持。 3. 选「你们的关系」(恋人 / 朋友 / 同事 / 家人 / 自定义),保存。可以用了。 两把 key 各管一节,互不相干;同一节里换来源要重填一次 key(只存这一把)。 **为什么起草默认 DeepSeek 官网直连** 起草是两次网络调用里重的那次。OpenRouter 在国外,从国内过去要等好几秒、还时不时抽风; DeepSeek 官方 API(`api.deepseek.com`)国内直连,起草基本就是一次 HTTP 请求的时间,体感差好几倍。 所以起草默认就是它,不用改。 判断那一步比起草轻得多,慢一点无所谓,默认走 OpenRouter 即可;嫌慢就把它也换成 TypeSafe 直连。 两把 key 都只进注册表,不落文件。 **日常怎么用** - 聊天窗口开着、别最小化(用别的窗口盖住没事),把要聊的会话点开 - 对方来一条消息 → 悬浮窗几秒后给判断摘要 + 三条候选(带 Jev 给的胜出概率) - 点「填入」→ 文字进输入框 → **你自己看一眼、改一改、按发送**。程序永远不碰发送 - 你切到哪个会话,悬浮窗就跟到哪个;群聊会带上发言人名,想指定回复给谁去设置里开「群聊指定回复对象」 - 暂时不想让它读聊天:标题栏开关拨到「已暂停」 **花多少钱** 只有对方来新消息才调一次模型:一次起草(DeepSeek Flash)+ 一次 Jev 判断,十分钟没人说话就是十分钟零调用。 思考模式默认关,别开——起草三句话用不上,慢好几倍还贵。 ## 支持的聊天软件 | 软件 | OCR | 自己的气泡 | 窗口 | |---|---|---|---| | 微信 | RapidOCR(中英文模型) | 绿色 | 标题为「微信」的主窗口 | | KakaoTalk(韩国) | Windows.Media.Ocr(系统语言包,离线) | `#FEE500` | 一个对话一个窗口,主列表窗除外 | RapidOCR 自带的只有中英文模型,韩文整段都是乱码:同一个 KakaoTalk 窗口实测 8 条气泡 0 条认对, 一帧 2.0s,而且全被判成对方发的(气泡颜色规则只认微信绿)。韩文界面改走 Windows 自带 OCR 之后 9 条全认对、自己/对方分得清,一帧 0.20s。做法和实测见 docs/KOREAN.md; 新增一个软件只要在 `app/chatapps.py` 里加一行。 ## 截图 回复建议:「当前会话」跟随当前窗口、群聊多一行「回复对象」,3 条候选带 Jev 概率百分比,推荐那条置顶 设置:关系背景、说话风格、参考上下文条数、群聊指定回复对象(往下还有「模型」卡片) 采集暂停:不再读取聊天,已有候选照样能填入、能复制 ## 功能 - **跟着当前会话走**:会话名从面板头部 OCR 出来,记录、上下文、候选都按会话分开存;也可以自己 在下拉框里选另一个会话,翻它的记录和上次的建议(那会儿只能看不能填)。 - **群聊**:每条消息前面的发言人名会一起喂给模型,所以它知道哪句是谁说的;打开「群聊指定回复对象」 还能选回复给谁,三条候选都按 TA 写,填入时可带「@名字 」前缀(纯文本)。 - **3 条候选**:每条带 Jev 给的胜出概率百分比,按概率排序,推荐那条置顶并标「推荐回复」; 每条都有「填入」和复制按钮。 - **判断摘要**:建议动作、可能意图、对方可能需要、紧张度 0–9。 - **采集开关**:标题栏一拨就停,WGC 会话一起停掉(Win10 的黄框跟着消失),已有候选不受影响。 - **实时聊天记录**:底部展开,看 OCR 到底读出了什么,认错了一眼就能发现。 - **调试视图**(可选):另开一个窗口,实时画出截到的画面和每个识别框——绿 = 我、蓝 = 对方、 灰 = 过滤掉的灰字、橙 = 当成发言人名、红 = 当成图片丢掉、黄 = 小字丢掉,外加消息区和头部的框、 OCR 耗时、这一帧读出来的每一行。识别不对时一眼看出是哪一步的锅。只在内存里画,不存图。 - **两个模型都能换**:判断走 OpenRouter 或 TypeSafe 直连;起草有 12 家预设(默认 DeepSeek 官网), Open