jev-chat/jev-chat-windows
JevChat-Windows:聊天窗口旁挂的回复辅助。窗口截图 + 本地离线 OCR 读对方消息 → Jev 判断意图 → 3 条候选一键填入,发送永远手动
JevChat‑Windows – AI‑assisted reply helper for desktop chat apps
What it is
- A Windows‑only desktop program that watches a chat window (WeChat, KakaoTalk, etc.), runs offline OCR on the screen, sends the extracted messages to a language model, and returns three suggested replies.
- The suggestions are ranked by a small decision‑making model (Jev) that also gives a short intent/urgency summary.
- The user manually presses Send; the tool only pastes the chosen text into the input field.
Key features
| Feature | What it does |
|---|---|
| Window capture + OCR | Uses Windows Graphics Capture (WGC) to grab the chat window, then RapidOCR (Chinese/English) or the built‑in Windows.Media.Ocr (Korean) to read the text entirely locally. |
| Jev intent analysis | Calls a lightweight decision model (via OpenRouter or TypeSafe) that answers seven predefined questions (intent, need, suggested action, tension level, etc.) and returns a probability for each reply. |
| Three AI‑generated replies | Sends the Jev summary plus recent conversation context to a generative LLM (default DeepSeek‑Flash, but OpenAI, Anthropic, Gemini, Moonshot, etc. are supported) which drafts three candidate replies. |
| Ranking | Jev re‑evaluates the three drafts and assigns a win‑probability; the highest‑scoring reply is highlighted as “recommended”. |
| Floating UI | A small always‑on‑top overlay shows the intent summary, the three candidates, and a button to paste the chosen text. |
| Per‑conversation memory | Each chat session is identified by the OCR‑extracted conversation title; history, context, and generated replies are kept separate per session. |
| Group‑chat support | Detects speaker names, can target a specific participant, and optionally prefixes the reply with @name. |
| Debug view (optional) | Opens a second window that visualises the captured frame and all OCR bounding‑boxes, helping users see why a line was mis‑detected. |
| No automatic sending / no data storage | The program never clicks the send button, never writes screenshots or keys to disk, and only transmits the minimal text needed for inference. |
| Portable executable | A pre‑built jev-chat-windows.exe (≈146 MB) runs without installing Python; developers can rebuild it with PyInstaller. |
How it works (simplified flow)
- Capture – WGC continuously grabs the target chat window.
- Locate message area – Pixel‑based anchors find the region that contains chat bubbles.
- OCR – RapidOCR (or Windows OCR for Korean) reads the text, separates bubbles by colour, filters out timestamps, images, etc.
- Detect new incoming message – When a new message from the other party appears, the pipeline triggers.
- Jev analysis – Sends the recent messages + relationship setting to the Jev decision API; receives intent summary and a win‑probability ranking.
- Draft replies – The Jev summary is fed to the generative LLM, which produces three candidate replies.
- Rank – Jev is called again to rank the three drafts; the UI shows the probabilities.
- User action – The user clicks Fill; the text is copied to the clipboard and pasted into the chat input box. The user decides when (or whether) to send.
Setup & usage
- Download the latest zip from the Releases page, extract the whole folder, and double‑click
jev-chat-windows.exe. - On first run a settings window appears; you must provide two API keys:
JEV_API_KEY– for the Jev decision model (OpenRouter or TypeSafe).LLM_API_KEY– for the generative model (default DeepSeek, others selectable).
- Keys are stored only in the user’s environment variables (
HKCU\Environment); no file contains them. - Choose the relationship context (e.g., “friend”, “colleague”) and optional speaking style.
- Keep the chat window open (do not minimise it). When a new message arrives a floating panel shows the analysis and three reply options.
- Click Fill to paste the chosen reply; edit if needed and press Send yourself.
Supported chat apps (out‑of‑the‑box)
- WeChat – Chinese/English OCR, green‑bubble detection.
- KakaoTalk – Korean OCR via Windows.Media.Ocr, yellow‑bubble detection.
- Adding more apps only requires a one‑line entry in
app/chatapps.py.
Privacy & security
- All screenshot processing stays in memory; no image is written to disk or uploaded.
- Only the text of the most recent N messages (configurable, default 10), the relationship setting, a short sample of your own recent messages, and optional style prompt are sent to the chosen LLM endpoint.
- No telemetry besides an optional single request to GitHub Releases to check for updates.
- The program never hooks into other processes, never reads another app’s memory, and never sends money‑related content.
System requirements
- Windows 10 (version 1903+) or Windows 11 (required for hiding the yellow capture frame).
- For the pre‑built exe: no additional software.
- For building from source: Python 3.10–3.12,
rapidocr,windows-capture,PySide6‑Fluent‑Widgets, and the respective LLM SDKs.
License
- The code is released under the MIT license.
- The bundled UI library (
PySide6‑Fluent‑Widgets) is GPL‑v3, so the distributed executable as a whole is subject to GPL‑v3 for commercial use (a commercial license for that component must be obtained or the component replaced).
Who might find it useful?
- Users who spend a lot of time in desktop chat clients and want quick, context‑aware reply suggestions without leaving the chat window.
- Developers who want a Windows‑native example of OCR‑based screen‑scraping combined with LLM inference and a lightweight decision‑model overlay.
All information above is taken directly from the repository’s README; no additional features have been inferred.
Related
- Project
- Dispatch
- Project
- Dispatch
- Project