13 اگست 2026 کو، X نے اپنے اوپن سورس x-algorithm repository میں ایک اپڈیٹ جاری کی جسے زیادہ تر کوریج نے ایک ہی سرخی تک محدود کر دیا: For You feed کے پیچھے موجود عین ranking weights اب عوامی ہیں۔ یہ واقعی ایک خبر ہے، لیکن دلچسپ خبر یہ نہیں۔ اسی اپڈیٹ میں دبی ہوئی اصل چیز وہ account-scoring pipeline ہے جسے X یہ طے کرنے کے لیے استعمال کرتا ہے کہ کون سے اکاؤنٹس غیر مستند لگتے ہیں — ایسے models جن کے نام agatha، user-cred-v2، اور واقعی، bdsm ہیں۔ source tree میں یہ لفظی directory name ہے، اور یہ بالکل اپنے پڑوسی systems جیسا ہی کام کرتا ہے: اکاؤنٹ کے بارے میں signals پڑھتا ہے اور ایک score پیدا کرتا ہے جو آگے چل کر اس فیصلے میں شامل ہوتا ہے کہ آپ کی posts دکھائی بھی جائیں گی یا نہیں۔
ایسے systems کی زیادہ تر توضیحات میں عام غلطی یہ ہوتی ہے کہ “bot detection” کو ایک ہی model سمجھ لیا جاتا ہے جو ہاں یا نہیں کا فیصلہ دے دیتا ہے۔ یہاں ایسا نہیں ہے، اور اس پیمانے پر تقریباً کہیں بھی ایسا نہیں ہوتا۔ X نے حقیقت میں جو بنایا ہے — اور جسے ابھی مکمل طور پر inspectable بنا دیا ہے — وہ ایک layered pipeline ہے: مختلف زاویوں سے اکاؤنٹ کو score کرنے والے آزاد models، ایک rule engine جو ان scores کو labels میں بدلتا ہے، اور ایک الگ filtering system جو ہر post اور ہر viewer کے حساب سے طے کرتا ہے کہ اسے دکھانا ہے، tap-through کے پیچھے چھپانا ہے، یا سیدھا حذف کر دینا ہے۔ یہ پوسٹ سمجھاتی ہے کہ یہ پوری pipeline آپس میں کیسے جڑتی ہے۔
آپ یہ سیکھیں گے:
- X کی account-scoring pipeline حقیقت میں کن چیزوں کا احاطہ کرتی ہے، اور یہ ایک classifier کے بجائے کئی آزاد models کیوں استعمال کرتی ہے
agatha،bdsm، اورuser-cred-v2کس طرح مکمل طور پر مختلف signals کے ذریعے اکاؤنٹ کو score کرتے ہیںscarecrowاور اس کاbotmakerrule engine کس طرح raw model scores کو قابلِ نفاذ labels میں بدلتے ہیں- visibility filtering ہر post اور viewer کے حساب سے content کو allow، interstitial، یا drop کرنے کا فیصلہ کیسے کرتی ہے
- اس architecture میں ranking اور safety کو جان بوجھ کر دو الگ systems کیوں رکھا گیا ہے
- عوامی repo سے اب بھی دیانت داری کے ساتھ کیا چیزیں روکی گئی ہیں، اور یہ ایک قابلِ دفاع سمجھوتا کیوں ہے
فہرستِ مضامین
- بنیادی باتیں
- مکمل آرکیٹیکچر
- بنیادی تہوں کی وضاحت
- ابتدا سے انتہا تک واک تھرو
- خصوصی صورتیں
- اسکیلنگ اور پروڈکشن چیلنجز
- کوڈ مثالیں
- عام غلطیاں
- پروڈکشن کی بہترین مشقیں
بنیادی باتیں
یہ pipeline حقیقت میں کن چیزوں کا احاطہ کرتی ہے
X کی x-algorithm repository دو راستوں میں بٹی ہوئی ہے جو تقریباً مکمل طور پر ایک دوسرے سے آزاد چلتے ہیں۔ Request Path ایک feed request کو real time میں سنبھالتا ہے: candidates لاؤ، rank کرو، filter کرو، timeline واپس دو۔ Labeling Path پسِ منظر میں مسلسل چلتا رہتا ہے، اور کسی ایک user کی request سے مکمل طور پر الگ ہوتا ہے — accounts اور posts دن رات score اور label ہوتے رہتے ہیں، چاہے کون scroll کر رہا ہو اس سے قطع نظر۔ bot اور غیر مستند account detection تقریباً مکمل طور پر Labeling Path میں موجود ہے، اور سمجھنے کے لیے یہ پہلی اہم بات ہے: وہ system جو فیصلہ کرتا ہے کہ کوئی account bot جیسا لگتا ہے، وہ آپ کے timeline load کرنے پر trigger نہیں ہوتا۔ وہ پہلے ہی، شاید کئی دن یا ہفتے پہلے، چل چکا ہوتا ہے، اور جب آپ کی feed assemble ہوتی ہے تو صرف ایک stored answer واپس پڑھ لیا جاتا ہے۔
Labeling Path کے اندر، account scoring خاص طور پر تین models سے آتی ہے جو مکمل طور پر مختلف signals پر کام کرتے ہیں: agatha دیکھتا ہے کہ دوسرے لوگ اکاؤنٹ کی posts پر کیسے ردِ عمل دیتے ہیں، bdsm وقت کے ساتھ اکاؤنٹ کے اپنے behavior کو پڑھتا ہے، اور user-cred-v2 follow اور engagement graph میں اکاؤنٹ کی پوزیشن کو پڑھتا ہے۔ ان میں سے کوئی ایک بھی اکیلا “bot detector” نہیں ہے۔ یہ سب مل کر ایک rule engine کو feed کرتے ہیں جو طے کرتا ہے کہ کسی account یا post کو کون سا label، اگر کوئی ہو، ملنا چاہیے۔
اس architecture میں درستگی کیوں ایک نہایت اہم مسئلہ ہے
- داؤ دونوں طرف بلند ہیں۔ false positive ایک حقیقی account کو خاموش کر دیتا ہے؛ false negative ایک coordinated network کو یہ موقع دیتا ہے کہ وہ کروڑوں لوگوں کو دکھائی جانے والی چیزوں پر اثر انداز ہو۔ اس پیمانے پر ان میں سے کوئی بھی ناکامی قابلِ قبول نہیں، اور یہی وجہ ہے کہ پورا فیصلہ کسی ایک model پر نہیں چھوڑا جاتا۔
- اب یہ صنعت میں اپنی نوعیت کا سب سے زیادہ inspectable system ہے۔ Meta، TikTok، اور YouTube نے اپنے ranking systems پر papers اور high-level وضاحتیں شائع کی ہیں؛ مگر کسی نے ranking اور safety دونوں کو cover کرنے والا ایک کام کرنے کے قابل، buildable codebase GitHub پر نہیں رکھا۔ اس سے اس سائز کے platform کے لیے “ہم پر بھروسا کریں” کا مطلب بدل جاتا ہے۔
- یہاں کی design choices ایک واقعی مفید حوالہ ہیں، X سے ہٹ کر بھی، ہر اس شخص کے لیے جو trust-and-safety systems بنا رہا ہے: متعدد weak signals کو کیسے ملایا جائے، real-time اور background processing کے درمیان لکیر کہاں کھینچی جائے، اور اپنی detection logic کا کتنا حصہ عوامی کیا جائے بغیر اس کے کہ attackers کو ایک manual تھما دی جائے۔
مکمل آرکیٹیکچر
LABELING PATH (continuous, background)
Content Understanding (agatha, bdsm, user-cred-v2, grox, ...)
│
▼
Labeling Rules (scarecrow + botmaker, abuse-enforcement-service)
│
▼
Storage
│
▼
REQUEST PATH (per feed request)
Candidate Sources → Scoring/Ranking → Visibility Filtering (reads Storage) → Post-Selection Filters
│
▼
Ranked For You Timeline
رہنمائی کرنے والا اصول، جسے X نے اپنے design notes میں واضح طور پر بیان کیا ہے: ranking اور visibility دو الگ systems ہیں، الگ inputs پڑھتے ہیں، الگ فیصلے کرتے ہیں۔ ranking یہ طے کرتی ہے کہ posts کس ترتیب سے نظر آئیں گی؛ visibility filtering یہ طے کرتی ہے کہ کوئی post بالکل نظر آ بھی سکتی ہے یا نہیں۔ ان دونوں کو خلط ملط کر دینا — یعنی relevance score کو ہی safety score بنا دینا — وہی failure mode ہے جس سے بچنے کے لیے یہ architecture بنایا گیا ہے۔
بنیادی تہوں کی وضاحت
1. agatha — دوسروں کے ردِ عمل کی بنیاد پر account کو score کرنا
یہ کیا ہے: ایک offline batch process جو اکاؤنٹ کو اس بنیاد پر label کرتا ہے کہ دوسرے لوگ اس کی posts پر کیسے ردِ عمل دیتے ہیں — blocks، reports، اور spam reports، جنہیں favorites کے مقابلے میں ناپا جاتا ہے — ساتھ ہی spam-suspension risk اور adult content کے derived labels بھی۔
یہ کیوں اہم ہے: یہ ایک reaction-based signal ہے — یہ دیکھتا ہے کہ جو حقیقی لوگ کسی account کے content سے دوچار ہوتے ہیں، وہ اس پر کیا ردِ عمل دیتے ہیں، نہ کہ یہ کہ account خود کیا کرتا ہے۔ ایسی post جو favorites کے مقابلے میں مسلسل blocks اور reports کھینچتی ہو، ایک مضبوط، انسانوں سے حاصل شدہ signal ہے، جو اس ہر چیز سے آزاد ہے جو model صرف content سے اخذ کر سکتا ہے۔
Production tip: reaction-based signals کے لیے حقیقی exposure اور حقیقی انسانی responses درکار ہوتے ہیں، تب جا کر کوئی pattern بنتا ہے، جس کا مطلب ہے کہ agatha اکیلے کسی خراب account کو اس کی پہلی post پر نہیں پکڑ سکتا۔
2. bdsm — وقت کے ساتھ account کے اپنے behavior کی بنیاد پر score کرنا
یہ کیا ہے: ایک model جو وقت کے ساتھ account کی actions کی sequence کو پڑھتا ہے — کسی ایک action کو تنہائی میں نہیں — تاکہ غیر مستند یا abusive behavior کی علامات کی شناخت کی جا سکے۔
یہ کیوں اہم ہے: یہ وہ چیز پکڑتا ہے جسے reaction-based اور content-based signals ساختی طور پر نہیں پکڑ سکتے۔ ایک اکیلی post، خود میں دیکھی جائے، مکمل طور پر معمول کی لگ سکتی ہے۔ مگر actions کی ایک sequence — posting cadence، timing patterns، follows اور engagements کی rhythm — بالکل ویسی نہیں لگتی جیسے کوئی انسان platform استعمال کرتا ہے، چاہے ہر انفرادی action content check پاس کر جائے۔ یہی وجہ ہے کہ یہ ایک الگ system ہے نہ کہ کسی per-post classifier میں ضم کیا گیا جزو: per-post models pattern کے لیے نابینا ہوتے ہیں، اور pattern اکثر سب سے مضبوط signal ہوتا ہے جو ایک automated account اپنے پیچھے چھوڑتا ہے۔
Production tip: چونکہ یہ content نہیں بلکہ pace اور pattern کے بارے میں ہے، اس لیے یہ کسی account کو اس سے پہلے بھی flag کر سکتا ہے کہ وہ انفرادی طور پر کوئی rule-breaking چیز post کرے — یہ قیمتی ہے، مگر اس کا مطلب یہ بھی ہے کہ threshold بہت احتیاط سے رکھنی پڑتی ہے، کیونکہ جائز power users بھی غیر معمولی high-frequency، patterned usage رکھ سکتے ہیں۔
3. user-cred-v2 — graph میں اپنی پوزیشن کی بنیاد پر account کو score کرنا
یہ کیا ہے: یہ follow graph اور engagement edges پر PageRank چلاتا ہے، اور حاصل ہونے والی mass کو فی-account credibility score میں بدل دیتا ہے۔
یہ کیوں اہم ہے: یہ ایک structural signal ہے، جو اس بات سے آزاد ہے کہ account کیا post کرتا ہے یا لمحہ بہ لمحہ کیسے برتاؤ کرتا ہے۔ ایک account جو واقعی حقیقی، باہمی engagement والے تعلقات میں جڑا ہوا ہو، graph-based credibility جمع کرتا ہے جسے جعلی بنانا مہنگا ہوتا ہے — posts script کرنا آسان ہے، مگر ایک حقیقی social graph کے اندر ایک قابلِ یقین پوزیشن تیار کرنا بڑے پیمانے پر کہیں زیادہ مشکل ہے۔
Production tip: graph-based trust ایسے networks پکڑنے میں بہت مؤثر ہے جو زیادہ تر آپس میں ہی engage کرتے ہیں اور حقیقی clusters سے کٹے رہتے ہیں — مگر ایک بالکل نئے، مگر جائز account کے لیے یہ آہستہ update ہوتا ہے۔ یہی وجہ ہے کہ یہ تین میں سے ایک signal ہے، پوری کہانی نہیں۔
4. scarecrow اور botmaker — scores کو real time میں labels میں بدلنا
یہ کیا ہے: scarecrow events کے ہوتے ہی react کرتا ہے، اور botmaker کو اپنے embedded rule engine کے طور پر استعمال کرتا ہے — rules کے لیے ایک purpose-built language، compiler، اور runtime، جن کی شکل کچھ یوں ہوتی ہے: اس event پر، اگر یہ conditions برقرار ہوں، تو یہ label apply کرو۔ خود rules ایک الگ botmaker-rules directory میں ہوتے ہیں جسے scarecrow load کرتا ہے۔
یہ کیوں اہم ہے: یہ وہ تہہ ہے جو model output کو consequence سے جوڑتی ہے۔ agatha، bdsm، اور user-cred-v2 ہر ایک scores پیدا کرتے ہیں؛ scarecrow live events کو دیکھتا ہے اور ان scores کے خلاف لکھی گئی rules استعمال کر کے فیصلہ کرتا ہے کہ آیا ابھی اسی وقت واقعی کوئی label apply ہونا چاہیے یا نہیں۔
Production tip: hardcoded conditionals کے بجائے ایک dedicated rule language کا مطلب یہ ہے کہ rules میں تبدیلی کے لیے مکمل redeploy درکار نہیں — جب rules کو نئی evasion patterns کے مطابق تیزی سے بدلنا ہو تو یہ ایک حقیقی فائدہ ہے۔
5. abuse-enforcement-service — scores پر براہِ راست عمل کرنا
یہ کیا ہے: ایک الگ system جو کسی account کے بارے میں model scores پڑھتا ہے — live events نہیں — اور account یا اس کی posts کو label کرتا ہے، challenge جاری کرتا ہے، یا اسے suspend کر دیتا ہے۔
یہ کیوں اہم ہے: یہ scarecrow کے متوازی چلتا ہے، انہی model outputs پر، مگر ایک مختلف mechanism کے ذریعے: event-driven نہیں بلکہ score-driven۔ ایک ہی signals پر عمل کرنے والے دو آزاد راستے design کے اعتبار سے redundancy ہیں — ایک system کی coverage میں خلا خودبخود enforcement میں خلا نہیں بن جاتا۔
6. Visibility Filtering — اصل دربان
یہ کیا ہے: ہر post اور viewer کے combination کے لیے، visibility-filtering تین میں سے ایک جواب دیتا ہے: ALLOW، INTERSTITIAL (یعنی tap-through، جو adult یا graphic media کے لیے استعمال ہوتا ہے)، یا DROP۔ یہ اوپر کے تمام systems سے بننے والے labels کے ساتھ viewer کے اپنے blocks، mutes، اور settings بھی پڑھتا ہے۔
یہ کیوں اہم ہے: یہی واحد system ہے جو طے کرتا ہے کہ کوئی post feed میں بالکل موجود ہو گی بھی یا نہیں۔ یہاں دو rule sets چلتے ہیں: سب کے لیے general rules، اور ایک دوسرا set جو صرف اس وقت لاگو ہوتا ہے جب کوئی post ایسے شخص کو recommend کی جا رہی ہو جو author کو follow نہیں کرتا — یہ out-of-network-only rules صرف drop کر سکتے ہیں، اور انہیں جان بوجھ کر high recall کے لیے tune کیا جاتا ہے کیونکہ وہی post ایک حقیقی follower کے لیے پھر بھی visible رہتی ہے۔
Production tip: evaluation پہلی ایسی rule پر رک جاتی ہے جو drop واپس کرے — اس لیے زیادہ پُراعتماد conditions کو ابتدا میں رکھنا درستگی کے لیے بھی اہم ہے اور ان rules پر compute ضائع ہونے سے بھی بچاتا ہے جو کبھی پہنچ ہی نہیں پاتیں۔
7. Under the Hood — شفافیت کے ساتھ چکر مکمل کرنا
یہ کیا ہے: ایک per-account reporting tool، جو اس release کے ساتھ جوڑا گیا ہے، اور وقت کے ساتھ کسی شخص کے اپنے account اور posts پر لگنے والے visibility-impacting labels کو aggregate کرتا ہے۔
یہ کیوں اہم ہے: code شائع کرنے سے اس سوال کا جواب ملتا ہے کہ “یہ system عمومی طور پر کیسے کام کرتا ہے”، نہ کہ “اس نے میرے account کے ساتھ کیا کیا”۔ Under the Hood یہ خلا پُر کرتا ہے — کوئی شخص دیکھ سکتا ہے کہ اس کے account پر کون سے labels لگے، اور چونکہ labeling code عوامی ہے، وہ یہ بھی کھوج سکتا ہے کہ تقریباً کون سے system نے وہ label پیدا کیا۔
ابتدا سے انتہا تک واک تھرو
وقت کے ساتھ ایک واحد account کو پوری pipeline میں follow کریں:
- ایک account بنایا جاتا ہے اور عام انداز میں post اور engage کرنا شروع کرتا ہے، بغیر کسی خاص توجہ کے۔
- Content Understanding پسِ منظر میں مسلسل چلتا رہتا ہے، request path سے ہٹ کر۔
bdsmaccount کی action sequence کے بارے میں اپنی reading بنانا شروع کرتا ہے،user-cred-v2جیسے جیسے edges جمع ہوتی ہیں اپنا graph-based score دوبارہ compute کرتا ہے، اورagathaکی batch jobs دیکھتی رہتی ہیں کہ لوگ اس کی posts پر کیسے ردِ عمل دیتے ہیں۔ - posting cadence خودکار سی لگنے لگتی ہے — تیز، دہرائی جانے والی، اور اس طرح pattern والی جس طرح عام طور پر کوئی انسان platform استعمال نہیں کرتا۔
bdsmکی sequence reading غیر مستند behavior کے دائرے میں داخل ہو جاتی ہے۔ scarecrow، جو live events دیکھ رہا ہوتا ہے، ایکbotmakerrule match کرتا ہے جو اس بڑھتے ہوئے score کا حوالہ دیتی ہے اور ایک label apply کر دیتا ہے۔- اسی دوران،
abuse-enforcement-service، جو triggering event کے بجائے وہی model score پڑھ رہا ہوتا ہے، آزادانہ طور پر اپنی threshold عبور کرتا ہے اور challenge یا suspension جاری کر دیتا ہے۔ - بنے ہوئے labels کو storage میں لکھ دیا جاتا ہے۔
- اگلی بار جب کسی بھی viewer کی feed assemble ہوتی ہے،
visibility-filteringوہ labels پڑھتا ہے اور اپنی rules کو ترتیب سے evaluate کرتا ہے — پہلی drop evaluation ختم کر دیتی ہے، اور post اس viewer کے candidates تک پہنچتی ہی نہیں۔ - ranking اس فیصلے سے آزاد پہلے ہی ہو چکی ہوتی ہے۔ post شاید relevance پر اچھا score لے چکی ہو؛ visibility filtering پھر بھی اسے veto کر دیتی ہے، کیونکہ دونوں systems مختلف inputs سے مختلف سوالوں کے جواب دیتے ہیں۔
- اگر account کو لگے کہ یہ غلطی تھی، تو Under the Hood بالکل دکھاتا ہے کہ کون سے labels لگے ہوئے ہیں — اور چونکہ labeling code عوامی ہے، کوئی بھی تقریباً یہ trace کر سکتا ہے کہ وہ label کس system نے پیدا کیا۔
خصوصی صورتیں
صرف out-of-network کے لیے drop rules۔ کچھ rules صرف ان posts پر لاگو ہوتی ہیں جو ایسے viewer کو recommend کی جا رہی ہوں جو author کو follow نہیں کرتا — discovery surface پر جان بوجھ کر ڈالا گیا ایک high-recall جال، جہاں false positive کی قیمت صرف یہ ہے کہ ایک اجنبی ایک post miss کر دے، نہ کہ account کو اس کے حقیقی audience کے سامنے خاموش کر دیا جائے۔ وہی post followers تک بغیر چھیڑے پہنچتی ہے۔
وہ rules جو جان بوجھ کر عوامی repo سے روکی گئی ہیں۔ X اس بارے میں واضح رہا ہے: کچھ botmaker rules، اور grox کے ذریعے استعمال ہونے والے مخصوص LLM prompts، شائع نہیں کیے گئے، تاکہ اس خطرے کو کم کیا جا سکے کہ code کو system سے بچ نکلنے کی رہنمائی کے طور پر استعمال کیا جائے۔ مکمل transparency اور مؤثر enforcement حاشیوں پر ایک دوسرے کے مخالف سمت کھینچتی ہیں، اور X نے لکیر یہیں کھینچی ہے۔
اسی pipeline سے interstitial بمقابلہ drop۔ وہی labeling machinery دونوں نتائج کو feed کرتی ہے — فرق صرف اتنا ہے کہ کون سی rule fire کرتی ہے اور وہ کس category سے جڑی ہے۔ adult یا graphic content عموماً interstitial کی طرف جاتا ہے؛ inauthentic-behavior labels عموماً drop کی طرف۔
اسکیلنگ اور پروڈکشن چیلنجز
مہنگے analysis کو request path سے دور رکھنا۔ sequence modeling، graph PageRank، اور batch reaction analysis — یہ تینوں واقعی مہنگی operations ہیں — ہر feed request پر ہر account کے لیے یہ سب چلانا اس پیمانے پر ناقابلِ عمل ہوگا۔ انہیں پسِ منظر میں مسلسل چلانا اور request time پر ایک cached، stored result پڑھ لینا ہی وہ چیز ہے جو اس کی معاشیات کو قابلِ عمل بناتی ہے؛ رپورٹس کے مطابق صرف candidate pool ہی ranking شروع ہونے سے پہلے روزانہ کی کئی سو ملین posts سے سکڑ کر فی user تقریباً چند ہزار تک آ جاتا ہے۔
candidate isolation scores کو cacheable رکھتی ہے۔ ranking layer کا ایک دانستہ فیصلہ یہ یقینی بناتا ہے کہ کسی candidate کا score اس بات پر منحصر نہ ہو کہ اسی batch میں اور کون سے candidates ہیں — یہی اصول account labels پر بھی لاگو ہوتا ہے، جن کا مطلب ایک جیسا رہنا چاہیے چاہے انہیں کون سی request واپس پڑھ رہی ہو۔
ایک ہی signals پر دو آزاد enforcement paths۔ scarecrow (event-driven) اور abuse-enforcement-service (score-driven) کو، ایک ہی model outputs پر، متوازی چلانا حقیقی engineering complexity رکھتا ہے — مگر اس کا مطلب یہ ہے کہ ایک path کی timing میں خلا خاموشی سے مجموعی enforcement میں خلا نہیں بنتا۔
surface کے حساب سے recall کا الگ توازن۔ زیادہ سخت، higher-recall rules صرف out-of-network recommendations پر لاگو ہوتی ہیں، جبکہ followers تک in-network delivery چھیڑی نہیں جاتی — اس طرح سب سے aggressive filtering اسی surface پر مرکوز رہتی ہے جہاں platform فعال طور پر کسی اجنبی کا content متعارف کرا رہا ہوتا ہے، بجائے اس کے کہ اسے ہر جگہ یکساں طور پر نافذ کر دیا جائے۔
کوڈ مثالیں
درج ذیل اوپر بیان کردہ تصورات کی وضاحتی reconstruction ہیں، repository سے لفظ بہ لفظ source نہیں — جیسا کہ اوپر ذکر ہوا، اصل rule logic کا کچھ حصہ جان بوجھ کر شائع نہیں کیا گیا۔
ایک سادہ مثال کہ sequence-based account scorer تصوراتی طور پر کیا evaluate کرتا ہے:
def score_action_sequence(actions: list[dict], window_hours: int = 24) -> float:
recent = [a for a in actions if a["hours_ago"] <= window_hours]
if len(recent) < 5:
return 0.0
intervals = [b["ts"] - a["ts"] for a, b in zip(recent, recent[1:])]
regularity = 1.0 - (stdev(intervals) / (mean(intervals) + 1e-6))
return min(regularity * len(recent) / 100, 1.0)
ایک تصوراتی botmaker-style rule، جو اصل rule language کے بجائے pseudocode میں ظاہر کی گئی ہے:
ON post_published
IF account.bdsm_score > 0.85 AND account.user_cred_score < 0.2
THEN apply_label(account, "likely_inauthentic")
visibility filtering میں first-drop-wins evaluation order کی ایک سادہ مثال:
def evaluate_visibility(post, viewer, rules: list[callable]) -> str:
for rule in rules:
result = rule(post, viewer)
if result == "DROP":
return "DROP"
return "ALLOW"
عام غلطیاں
غلطی: bot detection کو ایک ہی model اور ایک ہی score سمجھنا۔ ایک واحد classifier جو reaction patterns، behavior sequences، اور graph position سب کو ایک ساتھ پکڑنے کی کوشش کرے، ان signals کو گڈ مڈ کر دیتا ہے جو حقیقت میں ایک دوسرے سے آزاد ہیں۔ حل: ہر dimension کو الگ الگ score کریں اور انہیں model کے اوپر نہیں بلکہ downstream rule layer میں ملا کر استعمال کریں۔
غلطی: relevance score کو ہی safety score بنا دینا۔ “کیا یہ اچھا content ہے” اور “کیا یہ ایک bad actor ہے” کو ایک ہی number میں سمیٹ دینا پرکشش لگ سکتا ہے۔ حل: ranking اور visibility کو واقعی الگ systems رہنے دیں جو الگ inputs پڑھتی ہوں۔
غلطی: مہنگا account-level analysis request path پر چلانا۔ detection system کو اسکیل پر deploy کرنے کے لیے بہت سست بنا دینے کا یہ تیز ترین طریقہ ہے۔ حل: heavy analysis پسِ منظر میں مسلسل کریں اور request-time read کو سستا رکھیں۔
غلطی: transparency زیادہ سے زیادہ کرنے کے لیے ہر rule شائع کر دینا۔ یہ قابلِ اعتماد لگتا ہے، مگر ساتھ ہی کسی بھی پرعزم شخص کو اس بات کا نہایت درست نقشہ بھی دے دیتا ہے کہ کس چیز سے بچنا ہے۔ حل: صاف صاف بتائیں کہ کیا روکا گیا ہے اور کیوں، بجائے اس کے کہ ایسی مکملیت کا تاثر دیا جائے جو آپ کے پاس ہے ہی نہیں۔
غلطی: کسی ایک flagged action کو کافی ثبوت سمجھ لینا۔ ایک غیر معمولی post، اکیلی دیکھی جائے تو، کسی بھی چیز کا کمزور ثبوت ہے۔ حل: وقت کے ساتھ pattern کے لیے design کریں — یہی تو مکمل وجہ ہے کہ sequence-based model کو ایک الگ system کے طور پر رکھا گیا ہے۔
پروڈکشن کی بہترین مشقیں
- اپنے signals کو ملانے سے پہلے الگ رکھیں۔ reaction-based، behavior-based، اور graph-based signals مختلف failure modes پکڑتے ہیں — انہیں بہت جلد سمیٹ دینے سے وہ معلومات ضائع ہو جاتی ہیں جنہیں downstream rule layer استعمال کر سکتی تھی۔
- safety اور ranking کو الگ systems رکھیں۔ یہ مختلف سوالوں کے جواب دیتے ہیں اور انہیں اختلاف کی گنجائش ہونی چاہیے — ایک انتہائی relevant post پھر بھی ایسی ہو سکتی ہے جسے آپ نہ دکھانے کا فیصلہ کریں۔
- مہنگا scoring request path پر نہیں بلکہ مسلسل کریں۔ background computation اور اس کے ساتھ ایک سستی، cached read ہی وہ چیز ہے جو layered detection system کو اسکیل پر قابلِ عمل رکھتی ہے۔
- جہاں داؤ بلند ہوں وہاں redundant enforcement paths بنائیں۔ مختلف mechanisms کے ذریعے ایک ہی signals پر عمل کرنے والے آزاد systems ایک دوسرے کے blind spots پکڑتے ہیں۔
- جو آپ روکتے ہیں، اور کیوں، اس بارے میں دیانت دار رہیں۔ ایک معتبر transparency effort اپنی حدود کو واضح نام دیتی ہے، ایسی مکملیت کا تاثر نہیں دیتی جو اس کے پاس نہ ہو۔
سمیٹتے ہیں
سرخی والا فریم — “X نے اپنی ranking weights شائع کر دیں” — یہاں واقعی ship ہونے والی چیز کو کم کر کے پیش کرتا ہے۔ اصل قابلِ ذکر حصہ ایک مکمل، inspectable account-scoring اور enforcement pipeline ہے: آزاد models جو reactions، behavior sequences، اور graph position پڑھتے ہیں؛ ایک purpose-built rule engine جو ان scores کو labels میں بدلتا ہے؛ اور ایک visibility layer جو safety کے فیصلے کو relevance کے فیصلے سے مکمل طور پر الگ رکھتی ہے۔ آپ اس platform کے بارے میں جو بھی رائے رکھتے ہوں جس کے لیے یہ بنایا گیا ہے، architecture خود ہر اس شخص کے لیے ایک واقعی مفید حوالہ ہے جو اپنے trust-and-safety systems بنا رہا ہو۔
اگر آپ نے خود اصل repository کو پڑھا ہے، تو pipeline کا کون سا حصہ آپ کے لیے سب سے زیادہ حیران کن تھا — account-level models، یا یہ کہ rule logic کا کتنا حصہ جان بوجھ کر باہر رکھا گیا ہے؟
