
پروجیکٹ کا تعارف
jev-chat-jarvis macOS کے لیے تیار کردہ WeChat پیغامات کا معاون ٹول ہے۔ جب WeChat میں ایسا متنی پیغام ظاہر ہو جس کے بارے میں تصدیق ہو کہ وہ دوسرے فریق کی طرف سے آیا ہے، تو یہ اسکرین کے مواد اور مقامی ماڈل کے ذریعے پیغام کا تجزیہ کرتا ہے اور جملے کا اصل مقصد، 0 سے 9 تک خطرے کی سطح، عملی مشورہ اور ممکنہ جوابات دکھاتا ہے۔
یہ ٹول صرف پڑھنے کے انداز میں کام کرتا ہے؛ یہ WeChat میں کوڈ شامل نہیں کرتا، hook نہیں کرتا، ڈیٹابیس کو decrypt نہیں کرتا اور خودکار طور پر پیغام نہیں بھیجتا۔ صارف تیرتے ہوئے پینل میں ممکنہ جواب کاپی کر سکتا ہے یا “داخل کریں” پر کلک کرکے متن کو WeChat کے ان پٹ باکس میں رکھ سکتا ہے۔ آخری ارسال صارف خود دستی طور پر کرتا ہے۔
اہم خصوصیات
- مقصد اور خطرے کا تجزیہ: 8 اقسام کے مقاصد کی zero-shot شناخت، خطرے کی درجہ بندی اور عملی مشورہ فراہم کرتا ہے۔ پروجیکٹ README میں 22 چینی regression نمونوں کی بنیاد پر مقصد کی شناخت کی شرح 86.4% درج ہے۔
- ممکنہ جواب تیار کرنا: 10 قسم کے انداز شامل ہیں۔ ہر انداز کے لیے محتاط اور بے تکلف دو اقسام کے ممکنہ جوابات تیار کیے جاتے ہیں، پھر مقامی ماڈل انہیں درجہ دیتا ہے۔
- متوازی کارروائی: پیغام کی جانچ اور ممکنہ جواب کی تیاری بیک وقت شروع ہو سکتی ہے۔ README کے مطابق M1 Pro پر مقصد کے لیے تقریباً 1.5 سیکنڈ اور ممکنہ جواب کے لیے تقریباً 1.5 سے 2 سیکنڈ درکار ہوتے ہیں۔ اصل رفتار ڈیوائس اور سروس پر منحصر ہے۔
- YOLO detection boxes: اختیاری طور پر WeChat ونڈو میں OCR سے شناخت ہونے والے پیغامات کے گرد خانے دکھاتا ہے، دوسرے فریق اور اپنے پیغامات میں فرق کرتا ہے اور اعتماد کی سطح دکھاتا ہے۔
- مقامی تیرتا ہوا پینل: پینل موجودہ چیٹ، تجزیے کی حالت، زیرِ کارروائی پیغامات، سیاق، مقصد، شناخت کی شرح، خطرے کی سطح، عملی مشورہ اور ممکنہ جوابات دکھاتا ہے۔
تنصیب اور پہلی بار آغاز
طریقہ اول: macOS ایپ ڈاؤن لوڈ کریں
اگر آپ اسے براہِ راست استعمال کرنا چاہتے ہیں تو Releases سے macOS پیکیج ڈاؤن لوڈ کریں، اسے extract کرکے .app کو “Applications” میں کھینچ دیں۔ چونکہ ایپ notarized نہیں ہے، اس لیے پہلی بار Finder میں ایپ پر دائیں کلک کرکے “Open” منتخب کریں، براہِ راست double-click نہ کریں۔
اگر macOS یہ پیغام دکھائے کہ “ایپ خراب ہے، اسے کھولا نہیں جا سکتا، آپ کو اسے Trash میں منتقل کر دینا چاہیے”، تو عموماً اس کی وجہ یہ ہوتی ہے کہ براؤزر سے ڈاؤن لوڈ کیے گئے پیکیج میں quarantine attribute موجود ہے۔ ایپ کو فوراً حذف نہ کریں؛ Terminal میں یہ کمانڈ چلائیں:

sudo xattr -r -d com.apple.quarantine /Applications/jev-jarvis.appاگر ایپ کا نام تبدیل کیا گیا ہو، مثلاً jev-jarvis 2.app، تو کمانڈ میں موجود path کو اصل path سے بدل دیں۔
طریقہ دوم: سورس کوڈ سے چلائیں
سورس سے چلانے سے پہلے یقینی بنائیں کہ WeChat پہلے سے شروع ہے اور Terminal یا شروع کی جانے والی ایپ کو Screen Recording کی اجازت حاصل ہے۔ پروجیکٹ ڈائریکٹری میں جا کر یہ کمانڈ چلائیں:
./start.commandپروجیکٹ Python ماحول کے انتظام کے لیے uv استعمال کرتا ہے۔ اگر سسٹم میں قابلِ استعمال uv موجود نہ ہو تو دونوں startup entries سرکاری installation script ڈاؤن لوڈ کرکے چلانے کی کوشش کریں گے؛ ناکامی کی صورت میں موجودہ Homebrew بھی آزمایا جائے گا۔ تنصیب اور startup logs یہاں موجود ہیں:
~/Library/Logs/jev-jarvis.logmacOS کی اجازتیں دیں
پہلی بار آغاز پر ہدایات کے مطابق “System Settings > Privacy & Security” میں jev-chat-jarvis کے لیے “Screen Recording” کی اجازت فعال کریں، پھر ایپ کو بند کرکے دوبارہ کھولیں تاکہ اجازت مؤثر ہو جائے۔
“داخل کریں” کی خصوصیت کے لیے “Accessibility” کی اجازت بھی درکار ہے۔ پہلی بار “داخل کریں” پر کلک کرنے کے وقت سسٹم عموماً اجازت کی درخواست دکھاتا ہے۔ v0.3.1 اور اس سے پہلے کے ورژنز میں python3.12 کے لیے بھی متعلقہ اجازت فعال کرنا ضروری ہے۔
یہ اجازتیں WeChat ونڈو کا مواد پڑھنے، ان پٹ کنٹرول تلاش کرنے اور داخل کرنے کی کارروائی کے لیے استعمال ہوتی ہیں؛ ان کا مطلب یہ نہیں کہ ٹول خودکار طور پر پیغام بھیجے گا۔
ماڈل اور keys کی ترتیب
پروجیکٹ میں فیصلہ کرنے والی layer اور generation layer شامل ہیں، اور دونوں layers کی key خالی چھوڑی جا سکتی ہے:
- فیصلہ کرنے والی layer: اگر TypeSafe Jev key ترتیب نہ دی جائے تو مقامی
decider-2bماڈل استعمال ہوگا۔ پہلی بار ڈاؤن لوڈ کے لیے تقریباً 7 GB درکار ہے۔ - generation layer: bundled ایپ میں shared key شامل ہے، اس لیے ذاتی key کے بغیر بھی ممکنہ جواب تیار کرنے کی کوشش کی جا سکتی ہے۔
گرافیکل settings استعمال کریں
تیرتی ونڈو کے اوپری دائیں جانب gear آئیکن پر کلک کریں، یا menu bar میں “J > Model Settings…” کھولیں۔ Settings interface میں Jev، OpenAI-compatible اور Anthropic-compatible تینوں سروسز کے address، key اور model میں ترمیم کی جا سکتی ہے۔
سروس کے /models endpoint سے models پڑھنے کے لیے “Get Model List” پر کلک کیا جا سکتا ہے۔ اگر interface تعاون نہ کرے یا request ناکام ہو جائے تو model کا نام دستی طور پر بھی درج کیا جا سکتا ہے۔ Model منتخب کرنے کے بعد “Test Connection” پر کلک کریں؛ test میں محفوظ نہ کی گئی configuration کے ذریعے ایک مقررہ greeting بھیجی جاتی ہے، WeChat کا مواد نہیں پڑھا جاتا، تاہم معمولی سروس فیس لگ سکتی ہے۔
Configuration محفوظ کرنے کے بعد ایپ کو لازماً بند کرکے دوبارہ کھولیں؛ موجودہ run کے دوران configuration فوراً تبدیل نہیں ہوگی۔ Settings window میں edit کی جانے والی default فائل یہ ہے:
$XDG_CONFIG_HOME/jev-jarvis/envاگر XDG_CONFIG_HOME مقرر نہ ہو تو اصل path یہ ہوگا:
~/.config/jev-jarvis/envEnvironment فائل دستی طور پر بنائیں
Configuration فائل Terminal میں بھی بنائی جا سکتی ہے:
mkdir -p ~/.config/jev-jarvis
cat > ~/.config/jev-jarvis/env <<'ENV'
# فیصلہ کرنے والی layer (اختیاری): خالی چھوڑنے پر مقامی decider-2b استعمال ہوگا
export TYPESAFE_API_KEY=""
# generation layer: کوئی بھی OpenAI-compatible endpoint
export OPENAI_API_KEY="sk-آپ کی key"
export OPENAI_BASE_URL="https://api.deepseek.com"
export OPENAI_MODEL="deepseek-chat"
# بعض models میں thinking mode بند کرنا ضروری ہوتا ہے
# export OPENAI_EXTRA_BODY='{"enable_thinking":false}'
ENV
chmod 600 ~/.config/jev-jarvis/envConfiguration کی ترجیح یہ ہے: environment variables، user env فائل سے زیادہ ترجیح رکھتی ہیں؛ user env فائل، پروجیکٹ کی .env سے زیادہ ترجیح رکھتی ہے۔ generation layer میں OpenAI configuration کو Anthropic configuration پر ترجیح حاصل ہے؛ دونوں موجود نہ ہوں تو bundled shared key استعمال ہوگی۔
سروس منتخب کرتے وقت اہم نکات
- DeepSeek میں
deepseek-chatاستعمال کیا جا سکتا ہے؛ README میں اسے تیز تر آزمودہ انتخاب کے طور پر درج کیا گیا ہے۔ - 智谱 میں
glm-4-flashاستعمال کیا جا سکتا ہے، اور پروجیکٹ کے تعاون یافتہ configuration group کے مطابق متعلقہ variables درج کریں۔ - مقامی Ollama کے لیے
http://localhost:11434/v1درج کیا جا سکتا ہے، key کے طور پرollamaاور model کے طور پر مثلاًqwen2.5:7bاستعمال کریں۔ - حتی الامکان thinking models استعمال نہ کریں۔ README کے مطابق thinking process
max_tokensختم کر سکتا ہے، جس سے ممکنہ جواب خالی رہ سکتا ہے؛ DeepSeek استعمال کرتے وقتdeepseek-chatمنتخب کریں۔
پہلی بار استعمال

ایپ شروع کرکے WeChat کھولنے کے بعد WeChat کی چیٹ ونڈو کو قابلِ استعمال حالت میں رکھیں۔ ٹول window contents اور Vision OCR کے ذریعے chat area پڑھتا ہے، سسٹم اسکرین کو براہِ راست capture کرنے کی ضرورت نہیں ہوتی، اس لیے تیرتا ہوا پینل OCR میں خلل نہیں ڈالتا۔
جب دوسرے فریق کی طرف سے آنے والے واضح متنی پیغام کی شناخت ہو جائے تو پینل بالترتیب موجودہ چیٹ اور تجزیے کی حالت، زیرِ کارروائی پیغام اور سیاق، مقصد، شناخت کی شرح، خطرے کی سطح، عملی مشورہ اور انداز کے لحاظ سے گروپ کیے گئے ممکنہ جوابات دکھاتا ہے۔
ہر ممکنہ جواب کے بائیں جانب مقامی ranking probability دکھائی جاتی ہے، جبکہ دائیں جانب “Copy” اور “داخل کریں” کے اختیارات ہوتے ہیں۔ “Copy” دستی paste کے لیے ہے؛ “داخل کریں” متن کو WeChat کے input box میں لکھتا ہے، مگر send button پر خودکار کلک نہیں کرتا۔
استعمال کی مثال
مثلاً اگر دوسرا فریق یہ پیغام بھیجے: “اس کام کو آج follow up کر لینا”، تو ٹول پیغام فیصلہ کرنے والی layer کو دے کر اس کی شناخت کرتا ہے اور خطرے کے نتیجے کے مطابق عملی مشورہ فراہم کرتا ہے؛ اس کے بعد generation layer متوازی طور پر مختلف لہجوں میں ممکنہ جوابات تیار کرتی ہے، جنہیں مقامی ranking کے بعد دوبارہ ترتیب دیا جاتا ہے۔ آپ سیاق کے مطابق ایک جواب منتخب کرکے “Copy” یا “داخل کریں” پر کلک کر سکتے ہیں، پھر خود جانچ کر بھیج سکتے ہیں۔
اگر پیغام کی سمت واضح نہ ہو، مثلاً متن بائیں اور دائیں حصوں میں پھیلا ہوا ہو یا درمیان میں موجود ہو، تو پینل اسے “سمت کی تصدیق نہیں ہوئی” کے طور پر نشان زد کرے گا اور اسے جواب کے ہدف کے طور پر استعمال نہیں کرے گا۔ صرف واضح طور پر دوسرے فریق کا پیغام قرار پانے والے پیغامات ہی فیصلہ اور generation شروع کریں گے۔
اعلیٰ درجے کے استعمال کی تجاویز
YOLO detection boxes فعال کریں
Startup کے وقت environment variable کے ذریعے detection boxes فعال کیے جا سکتے ہیں:
JEV_BOXES=1Startup کے بعد menu bar سے “YOLO Detection Boxes” بھی تبدیل کیے جا سکتے ہیں۔ Detection boxes تقریباً ہر سیکنڈ refresh ہوتے ہیں: نیلی ٹھوس لکیر Accessibility interface سے تلاش کیے گئے input control کو ظاہر کرتی ہے، جبکہ نارنجی نقطہ دار لکیر screenshot boundaries سے اندازہ لگائے گئے input area کو ظاہر کرتی ہے۔ نقطہ دار لکیر اس بات کی ضمانت نہیں کہ قابلِ تحریر control حاصل ہو گیا ہے۔
اپنی گفتگو کے انداز بنائیں
JEV_TONES کے ذریعے انداز شامل یا overwrite کریں۔ ہر انداز کو | سے الگ کریں اور format “نام=وضاحت” رکھیں، مثلاً:
export JEV_TONES='摸鱼大师=ایک تجربہ کار کام ٹالنے والے کی طرح، کام کو خوبصورتی سے اور شائستگی کے ساتھ آگے بڑھاؤ'وضاحت میں مطلوبہ لہجہ اور یہ بات واضح ہونی چاہیے کہ جواب کس انداز میں تبدیل نہیں ہونا چاہیے۔ ترمیم کے بعد ایپ restart کرنا ضروری ہے۔ Settings window فی الحال JEV_TONES، JEV_BOXES اور OPENAI_EXTRA_BODY میں ترمیم نہیں کرتی۔
Layer-wise self-test اور troubleshooting
سورس سے چلاتے وقت perception، فیصلہ، generation اور regression flow کو الگ الگ test کیا جا سکتا ہے:
uv run python src/perception.py
uv run python src/judge.py "这个需求你今天跟一下"
uv run python src/judge_zh_test.py
uv run python src/generate.py --check
uv run python -B -m unittest discover -s tests
uv run python probe/bootstrap_regression.pygeneration layer کا --check صرف credentials parsing کو check کرتا ہے، یہ حقیقی connection test کے برابر نہیں ہے۔ اس بات کی تصدیق کے لیے کہ سروس متن تیار کر سکتی ہے، Settings window کا “Test Connection” استعمال کریں۔
Logs دیکھیں اور ڈسک کی جگہ خالی کریں
اگر startup کے بعد پہلے پیغام پر کارروائی سست ہو تو عموماً اس کی وجہ مقامی model warm-up ہوتا ہے۔ حالیہ logs دیکھنے کے لیے:
tail -40 ~/Library/Logs/jev-jarvis.logLogs میں ہر مرحلے کا وقت شامل ہوتا ہے، مگر پیغام کا متن شامل نہیں ہوتا؛ مسئلہ report کرتے وقت انہیں developer کو فراہم کیا جا سکتا ہے۔
مقامی فیصلہ کرنے والے model کا cache تقریباً 7 GB جگہ لیتا ہے اور یہاں موجود ہے:
~/.cache/huggingface/hub/models--Mapika--decider-2bاسے حذف کرنے کے بعد مقامی فیصلہ استعمال کرنے پر اگلی بار دوبارہ ڈاؤن لوڈ ہوگا۔ Python virtual environment یہاں موجود ہے:
~/Library/Application Support/jev-jarvis/venvایپ حذف کرنے سے یہ environment خودکار طور پر حذف نہیں ہوتا؛ ضرورت پڑنے پر اسے دستی طور پر صاف کیا جا سکتا ہے۔
“داخل کریں” خصوصیت کی حدود
ٹول ترجیحاً macOS Accessibility interface کے ذریعے متن لکھتا ہے اور واپس پڑھ کر تصدیق کرتا ہے۔ اگر WeChat کے کسی ورژن میں input control فراہم نہ کیا جائے تو یہ بصری compatibility path آزمانے کی کوشش کرتا ہے: window، input area اور title کی دوبارہ جانچ، WeChat کو فعال کرنا، input area پر کلک کرنا، متن لکھنا اور OCR کے ذریعے تصدیق کرنا۔
بصری compatibility path استعمال کرتے وقت ٹول mouse منتقل کر سکتا ہے، اس لیے داخل کرنے کے دوران keyboard، mouse استعمال نہ کریں اور چیٹ تبدیل نہ کریں۔ یہ clipboard یا Cmd+V استعمال نہیں کرتا، send key خودکار طور پر نہیں دباتا، اور newline و tab کو space میں تبدیل کر دیتا ہے۔
اگر پہلے سے draft موجود ہو تو compatibility path رک جائے گا اور دستی طور پر “Copy” استعمال کرنے کی ہدایت دے گا؛ window، focus یا session تبدیل ہونے پر بھی یہ رک جائے گا۔ بصری boundaries اور OCR غلط اندازہ لگا سکتے ہیں، اس لیے استعمال سے پہلے موجودہ چیٹ اور input box کے مواد کی جانچ کریں۔
معلوم حدود
- تصاویر اور stickers کا مواد پڑھا نہیں جا سکتا؛ quoted replies کو عام متن کے طور پر process کیا جاتا ہے؛ official account cards کو پیغام کے طور پر analyze کیا جا سکتا ہے۔
- WeChat کا full-screen layout یا WeChat کے ورژن میں تبدیلی شناخت کو ناکام بنا سکتی ہے؛ متعلقہ layout constants
src/perception.pyکے آغاز میں موجود ہیں۔ - متعدد windows کی صورت میں بنیادی طور پر “微信” یا “WeChat” نام والی main window کی شناخت کی جاتی ہے۔
- صرف واضح سمت کی تصدیق والے دوسرے فریق کے پیغامات reply flow شروع کرتے ہیں؛ سمت کی تصدیق نہ ہونے والے پیغامات چھوڑ دیے جاتے ہیں۔
- Dark theme، متعدد displays اور WeChat کے مختلف ورژنز میں بصری compatibility کے ذریعے داخل کرنے والے path کی مزید جانچ درکار ہے۔
رازداری اور استعمال سے متعلق یاددہانی
اس منصوبے کا مقصد صرف آپ کے اپنے آلے اور اپنے اکاؤنٹ کی اسکرین پر موجود مواد پڑھنا ہے؛ یہ کسی چیز کو inject یا hook نہیں کرتا، WeChat ڈیٹابیس کو decrypt نہیں کرتا، اور خودکار طور پر پیغامات نہیں بھیجتا۔ براہِ کرم اسے صرف اپنے آلے پر استعمال کریں اور WeChat کے سافٹ ویئر لائسنس معاہدے کی پابندی کریں۔ WeChat کی اپ ڈیٹس کے باعث لے آؤٹ کی شناخت ناکام ہو سکتی ہے۔ مسئلہ پیش آنے پر پہلے لاگز دیکھیں، پھر پروجیکٹ کے issue کے ذریعے اطلاع دیں۔
خلاصہ
jev-chat-jarvis اسکرین OCR، مقامی ارادے کی تشخیص، خطرے کی درجہ بندی، ممکنہ جوابات کی تیاری اور مقامی فلوٹنگ پینل کو یکجا کرتا ہے۔ یہ ایسے macOS صارفین کے لیے موزوں ہے جو WeChat پیغامات کو تیزی سے سمجھنا اور جواب دینے کا دباؤ کم کرنا چاہتے ہیں۔ انسٹالیشن کے دوران Gatekeeper، اسکرین ریکارڈنگ اور Accessibility کی اجازتوں پر خاص توجہ دیں؛ استعمال کے وقت رازداری، رفتار اور لاگت کے مطابق مقامی ماڈل، OpenAI سے ہم آہنگ سروس یا Anthropic سے ہم آہنگ سروس منتخب کریں، اور بھیجنے سے پہلے ہمیشہ مواد کو دستی طور پر جانچیں۔
