Before
Working late tonight, home a bit later
k
Danger 2/9Safe
True intentjust chatting
Needs: nothing
Open source · MIT · Android / Windows / macOS
Jev Chat Assistant is your chat copilot. It reads visible chats, judges intent and danger level, drafts replies, and fills the one you pick into the input box. Whether to send is up to you. Available for Android, Windows, and macOS.
It only fills the reply into the input box. It never sends on its own and never touches transfers, red packets or payments. Where does my chat text go?
Demo animation: the other person writes “You just don't get me.” The Jev overlay rates it danger 8/9, high risk; their true intent is checking whether you care, so it suggests acknowledging the feeling and holding off on substance. It then shows three ranked replies. Tapping Fill on the first one puts it in the input box; you press send yourself.
Tap Fill and the reply lands in the input box. The send button stays untouched: whether and how to send is your call.
Works in
Jev Chat Assistant is an open-source AI chat companion with Android, Windows and macOS versions. It helps you analyze messages, interpret intent and draft reply options. You review the wording and decide whether to send.
Project publisher: Finderchangchang. Find packages, platform documentation and updates on the GitHub project homepage.
01Read first
Most assistants hand you a paragraph right away. Jev first works out what the message actually is, then decides how to answer.
Before
Working late tonight, home a bit later
k
Danger 2/9Safe
True intentjust chatting
Needs: nothing
Before
I forgot our anniversary. I'll make it up tomorrow
k
Danger 7/9Risky
True intentchecking whether you care
Needs an apology · Apologize first
Demo scenario; the chats are simulated.
One request asks seven questions: true intent, danger level (0–9), what they need, whether to reply with substance now, what to do next and more. Every answer comes with probabilities and a confidence score, in about a second. A separate text model writes the replies.
Checking you care · Venting · Asking for action · Wants an explanation · Casual chat · Topic closed
0 is light chat, 9 is an open rupture; the overlay labels it safe, careful, risky or high risk
An apology · Action · An explanation · Your care · Nothing
Should the next line carry real content; the overlay shows “give substance” or “hold off on substance”
Check the history · Apologize · Commit · Explain · Acknowledge · Say less · Make a plan
Meant literally, or a test, sarcasm or a hint
They accepted and are joking again, or still waiting on you
They all “help you reply.” The differences: how much they can read, whether they judge first, and who presses send.
| Capability | Jev Chat Assistant | Keyboard or in-app AI replies | General chatbots (copy and paste) | Auto-reply bots |
|---|---|---|---|---|
| Judges before writing | Yes | No | Partly | No |
| Reads any chat app | Yes | Partly | No | Partly |
| Non-invasive, no client changes | Yes | Yes | Yes | No |
| You press send | Yes | Yes | Yes | No |
| Notes + contact context | Yes | No | Partly | Partly |
| Pick your own API and model | Yes | No | No | Partly |
| Open source and free | Yes | No | No | Partly |
Based on the common, publicly available forms of each approach, not on any specific product.
02How it works
Only these steps in between. Solid steps run on your phone; dashed ones go to the endpoints you configure yourself.
On your phoneSent to your configured API
The accessibility service reads the open chat; if the text isn't there, it takes a screenshot and runs offline OCR
Intent · danger level 0–9 · reply with substance now or not
Three casual replies: a safe follow-up, one with an action or commitment, and a short response. DeepSeek via OpenRouter by default
Reorders them by fit and shows probabilities
The read plus three replies, right next to the chat
Never sends. You press send.
Keep notes and contact profiles (relationship, aliases, notes) on the phone. Pinned notes go with every request; the rest are picked up when their tags or titles match the current chat. Turn on history and the person's recent messages come along too. Replies are prompted to stay consistent with your notes and not to make up facts outside them. A contact can be linked across apps.
When the accessibility tree has no message text, it takes a screenshot and runs ML Kit's offline Chinese OCR. No image is uploaded and no Google services are needed. In any app you can also trigger a one-off screen OCR from the floating-bubble menu.
Set the URL, key and model separately for the judge, reply and vision endpoints. Presets for OpenRouter, Bocha Jev, TypeSafe direct, DeepSeek official and Qwen-compatible APIs, each with a one-tap connection test. One OpenRouter key is enough to start.
Judging, drafting, ranking and filling share one core. Supporting a new app takes one adapter of a few dozen lines; everything else is reused.
03Your data
This is not a “collects nothing” app. Chat text does go to a model endpoint, but you are the one who sets that address. Everything else stays on your phone.
Your phone
Only when it analyzes
The last 10 messages of this chat + your relationship note; matched notes and this person's history only if you turned them on
The model endpoint you configured
OpenRouter · Bocha Jev · TypeSafe · DeepSeek · Qwen · any OpenAI-compatible URL
The author's server
Not in the loop: the author runs no server and never handles your chats
Every point can be checked against the source code on GitHub.
04Supported apps
Based on real-device tests; version numbers are the ones tested.
Androidv1.4
| App | Status | Notes |
|---|---|---|
| QQ Android | Full flow | Tested on 9.3.50 |
| X / Twitter DMs | Full flow | Tested on 12.25, Chinese interface |
| Feishu / Lark | OCR fallback | Verified on a real device; message text via offline OCR |
| Any other app | Manual | One-off screen OCR from the bubble menu |
| Web | Planned | No web version yet |
| iOS | Not yet | — |
05Get started
Choose the platform that fits you. Find installers, setup guides, and updates on the GitHub project page.
Androidv1.4
A chat copilot on your phone: reads messages, drafts replies, and fills the one you pick into the input box.
Android 11+ · arm64-v8a
Get Jev on GitHubWindowsv0.1.11
Captures your own chat window and runs OCR locally. No client changes, no database reads.
Windows 10 1903+ / 11
Get Jev on GitHubmacOSv0.6.0
Watches the screen and uses a small local model to judge intent and risk level, then drafts replies in a chosen style and ranks them locally.
Apple Silicon · macOS 13+
Get Jev on GitHubIf Jev helps you, consider starring the GitHub project to support its maintenance. 6.7k Star
Get the APK from the GitHub project page and install it. Android 11+, arm64-v8a devices only. Or use adb:
adb install -r jev-assistant-v1.4-release.apk
After upgrading from an older version, switch accessibility off and on again in system settings so the service rebinds.
Settings → 接口 (Endpoints) → put an OpenRouter API key in the judge endpoint. Leave the others blank and they inherit it. Each endpoint has a one-tap connection test.
The judge endpoint also has a “Bocha Jev” preset, free for a limited time; get a key at jev.bocha.cn.
Accessibility, display over other apps, autostart and unrestricted battery. On Xiaomi / HyperOS the last two are a must, or the bubble gets frozen.
Setup steps and examples you can refer to when using the project.
A practical Android setup guide covering model endpoints, accessibility, overlay permissions, costs and where chat data goes. Desktop editions have separate instructions.
Use a clearly fictional conversation to check captured text, uncertain interpretations, invented facts and commitments before turning an AI candidate into your own message.
06FAQ
No. It only fills the reply into the input box. It never sends anything on its own and never touches transfers, red packets or payments. Whether to send, and what to change first, is your call.
Only at the moment of judging: the recent messages on screen and your relationship note go to the endpoint you configured (plus matched notes and contact notes if the knowledge base is on, and this person's recent history if history is on). Nothing is written to disk or logs afterwards, and the author runs no server and never handles it. Keys live only in the app's private storage. History is off by default and stays on the phone if you turn it on. OCR uses ML Kit's offline Chinese model; images are never uploaded. Full privacy policy (Chinese, with an English summary)
One OpenRouter API key is enough: put it in the judge endpoint and leave the reply and vision endpoints blank to inherit it. You can also set all three separately, with presets for OpenRouter, Bocha Jev, TypeSafe direct, DeepSeek official and Qwen-compatible APIs, each with a one-tap connection test. The Bocha Jev preset for the judge endpoint is free for a limited time; keys are at jev.bocha.cn.
The app is free and open source. Model calls use your own API keys and are billed by the provider for what you use; the project never handles any money.
No root and no modules. It is non-invasive: it only reads the conversation on screen, doesn't modify any app's package, and doesn't use their APIs or accounts.
No iOS for now. The GitHub project page lists Android, Windows, and macOS; each platform is maintained independently. A web version is planned but doesn't exist yet.
Usually the Android skin froze the app in the background. Check that accessibility, display over other apps, autostart and unrestricted battery are all on, especially the last two on Xiaomi / HyperOS. Reinstalling resets the overlay permission, so turn it on again from the home-screen guide. Tapping anywhere in the chat usually brings it back.
Switch accessibility off and on again in system settings. Version 1.3 added screen capture, and the service has to rebind before it works.
Didn't find your answer? Open an issue or find community options on GitHub.
07Contact
Find the Chinese official account and group chat on the GitHub project page, where group QR codes are updated.
Community and updates on GitHubBugs, an app it can't read, requests for a new app: Issues keep them trackable.
Open an issue