الانتقال إلى المحتوى الرئيسي

نظرة عامة

يتولّى وولف فيش حساب Reddit الخاص بك المسجَّل دخوله مسبقاً عبر إضافة المتصفح، ويختار 5 مجتمعات subreddit نشطة في مجال المصادر المفتوحة / وكلاء الذكاء الاصطناعي الشخصيين / النماذج اللغوية المحلية، ويُرسل منشوراً أصلياً واحداً مدعوماً بالبحث ومُحفِّزاً للنقاش إلى كل منها. بدون Reddit API. بدون OAuth. بدون متصفح مؤقت — يعمل داخل جلسة Chrome الحقيقية لديك، بصفتك، عبر وضع المصحِّح (debugger mode) في الإضافة. ينفّذ الوكيل الحلقة الكاملة بنفسه: يفحص المجتمعات المرشَّحة ويُبقي المتساهلة فقط (بلا flair إلزامي، ولا بوابة كارما، ولا جدار عضوية)، يجد معلومة غير بديهية ومُوثَّقة، يصيغ ← ينتقد ← يعيد الصياغة ثلاث مرات، يفحص ذاتياً مقابل القواعد، ينشر، يتأكد أن المنشور ظهر فعلاً عبر فحص الرابط الناتج، ثم يضبط إيقاعه بانتظار عشوائي قصير قبل التالي.

شرح بالفيديو

اقرأ هذا قبل التشغيل. ينشر هذا السير في مجتمعات عامة باسم هويتك، ويضبط إيقاعه ليبدو بشرياً (وضع المصحِّح + humanize)، ويزرع رأياً بلطف. لدى سياسة محتوى Reddit ومعظم المجتمعات قواعد حول الأتمتة والترويج الذاتي والتسويق المُقنَّع — النشر غير المُفصَح عنه نيابةً عن منتج قد يؤدي إلى حظر حسابك (shadowban) أو حظره نهائياً، وتزيل المجتمعات الفردية المنشورات التي تبدو كرسائل مزعجة. استخدم هذا في مجتمعات تشارك فيها فعلاً، وأبقِ القيمة حقيقية، وأفصِح عن الانتماء حيثما تتطلب القواعد. أنت المسؤول عن كل ما يُنشر من حسابك. نحن لا نؤيّد انتهاك شروط أي منصة.

الإعداد

هذا السير يعمل عبر إضافة المتصفح فقط — لا يلمس Reddit API إطلاقاً. اقرأ دليل التهيئة للنجاح العام للصورة الكاملة؛ ما يلي خاص بهذا السير.

مطلوب

  • وولف فيش مثبَّت ويعمل — تطبيق سطح المكتب مع مساحة عمل دماغية مُهيأة.
  • إضافة المتصفح مثبَّتة ومتصلة — هذه هي المحرّك بالكامل. افتح الإعدادات → الخدمات → إضافة المتصفح، حمّل الإضافة غير المحزومة في Chrome أو Brave (chrome://extensions ← وضع المطوِّر ← تحميل غير محزوم)، وتأكد أن نقطة الحالة خضراء قبل أن تبدأ. إن لم تكن متصلة، فلا سبيل للوكيل للوصول إلى Reddit وستفشل التشغيلة فوراً. راجع توثيق إضافة المتصفح للتحميل لمرة واحدة.
  • مسجَّل الدخول في Reddit داخل ذلك المتصفح — تُعيد الإضافة استخدام جلستك الموجودة. افتح Reddit، تأكد أنك مسجَّل الدخول بالحساب الذي تريد النشر منه، واترك المتصفح مفتوحاً. يعمل الوكيل بصفتك — بدون تخزين بيانات اعتماد، بدون عملية تسجيل دخول.
  • وضع المصحِّح (debugger mode) — يربط الوكيل بروتوكول Chrome DevTools (ext_debugger_attach) لكي تُرسَل النقرات والكتابة كأحداث إدخال موثوقة بدلاً من استدعاءات DOM قابلة للكشف. هذا ما يقصده الموجِّه بـ “debugger mode”. لا شيء لضبطه — يربطه الوكيل بنفسه.
  • مفتاح API سحابي — مُهيأ في الإعدادات → النماذج. هذا هو نموذج اللغة الذي يُشغّل الوكيل — حلقة الصياغة ← النقد ← إعادة الصياغة، وقرارات الحكم، وتنسيق استدعاء الأدوات. وهو لا يُجري البحث على الويب (تلك قدرة منفصلة — راجع «اختياري» أدناه).

موصى به

  • DeepSeek V4 Pro في وضع Max. الخيار الافتراضي الموصى به في وولف فيش للمهام الوكيلية، ويلائم هذا السير جيداً: استدلال من الطراز الأول وموثوقية في استخدام الأدوات لحلقة التصفح ← الصياغة ← النشر ← التحقق، ونافذة سياق بمليون رمز تستوعب جلسات التصفح الطويلة عبر مجتمعات متعددة بأريحية، وكتابة حادّة بما يكفي لعنوان يوقف التمرير و«روست» موفّق أحياناً. يُفعّل وضع Max الاستدلال العميق المتكيّف الذي يعتمد عليه الموجِّه — فحص المجتمعات للتساهل، وحلقة الصياغة ← النقد ← إعادة الصياغة الثلاثية، وبوابة الفحص الذاتي، والتأكد من ظهور المنشور. بسعر 0.44/0.87 / 0.87 لكل مليون رمز يكلّف جزءاً بسيطاً من تكلفة النماذج الرائدة — وهذا مهم لأن جلسات المتصفح تستهلك الرموز بسرعة. اضبطه لكل محادثة في وولف فيش؛ راجع DeepSeek. للتشغيلات الأرخص انزل إلى DeepSeek V4 Flash؛ ولأقصى صقل في الكتابة، Claude Sonnet 4.6 — راجع جدول تكاليف الإضافة.

اختياري

  • مفتاح Brave Search API — مُهيأ في الإعدادات → الخدمات → Brave Search. تعمل خطوة RESEARCH عبر web_search التي تعمل افتراضياً، لكن مفتاح Brave يحسّن جودة النتائج بوضوح — معلومات موثَّقة أفضل وأحدث يبني حولها الوكيل كل منشور. اختياري، لكنه موصى به لهذا السير، لأن المعلومة البحثية هي جوهر المنشور كله.

قبل أن تبدأ

اترك متصفحك مفتوحاً على Reddit، مسجَّل الدخول، ونقطة الإضافة خضراء. يستخدم الوكيل نافذتك الموجودة — لا يُشغّل متصفحاً جديداً ولا جلسة headless.

الموجِّه

أرسل هذا إلى وولف فيش في رسالة واحدة. يفحص المجتمعات المتساهلة، ويبحث، ويصيغ، وينشر، ويتحقق أن كل منشور ظهر فعلاً، ويضبط إيقاعه — مستقل بالكامل حتى تُنشر 5 منشورات.
ROLE: You are Wolffish in full autonomous agent mode. Work ONLY through the Wolffish
browser extension (ext_* tools) in my real, already-logged-in Chrome tab. Never use the
Reddit API, Playwright, browser_* tools, a headless browser, or a new window — those
aren't logged in and Reddit returns 403. Don't ask me anything. Don't stop until the
EXIT CONDITION is met.

MISSION: Get 5 ORIGINAL, valuable, discussion-seeding TEXT posts LIVE — one each in 5
DIFFERENT, lenient subreddits in the open-source / personal-AI-agent / local-LLM space.
Softly foreshadow a philosophy (never pitch it, never name it as a product — let it read
as a personal opinion):
- brain-like architecture, but radically minimal and simple
- built for END USERS, not just devs
- does a FEW things extremely well instead of many things badly
- local-first, markdown-as-truth — you can read the agent's whole brain in a text editor

═══ CRITICAL RULES (these are exactly why these runs fail — obey them) ═══
- Most failures come from posting to STRICT subs that require post flair, a minimum
  karma/account-age, or membership. On old.reddit those submits SILENTLY fail: the tool
  returns {"success":true} but the post is never created. So you MUST (a) only target
  lenient subs (Phase 0 vets this) and (b) verify every post for real (step 4).
- A post is LIVE only when, right after submitting, ext_get_url returns a URL containing
  "/comments/". Nothing else counts as success — not a tool's {"success":true}, not the
  profile listing.
- Do NOT assume a rate limit. Only treat it as one if you LITERALLY SEE "you are doing
  that too much" / "try again in N minutes" / "looks like you're using an unofficial
  client" on the page after a submit. Inventing a rate limit just wastes the run.

ENVIRONMENT — extension only, old reddit only:
- old.reddit ONLY (https://old.reddit.com). It's plain HTML and works first try; www/sh
  Reddit build the composer in Shadow DOM + a Lexical editor that will eat the run. If you
  ever land on www.reddit.com, rewrite the URL to old.reddit.com before doing anything.
- Never call browser_launch / browser_navigate / any browser_* (Playwright) tool, and
  never open a headless/throwaway browser or new window — those aren't logged in (403).
- Don't pass a guessed tabId (tabId:1 fails with "No tab with id"). Omit it to use the
  active tab; if you truly need the id, call ext_tabs_list once and reuse it.
- First, confirm I'm logged in and capture my username: ext_query_selector ".user a"
  (returns my name and /user/<name>/ href). You need it for the secondary profile check.

SELECTORS (verified — use exactly these):
- Title field (a TEXTAREA on old.reddit, not an input): textarea[name="title"]
- Body field: textarea[name="text"]
- Fill both with ext_set_value (framework-safe; more reliable here than ext_type).
- Submit with ext_submit_form, selector "textarea[name=\"text\"]" (submits the containing
  form). Only if that returns no success, fall back to ext_click "text=submit".
- ext_query_selector accepts REAL CSS ONLY — no "text=", no :has-text(), no "button=...".
  ("text=" is valid for ext_click only.)

PHASE 0 — BUILD A LENIENT TARGET POOL (this is the whole game):
Goal: 5 subs that accept a plain text/self post with NO required flair, NO minimum
karma/age, NO membership gate, and NO blanket "no AI / no self-promo" rule.

Known-lenient anchors (good defaults — use ~2 of your 5 here): r/ollama, r/opencode.
Known-STRICT — DO NOT POST (they silently reject): r/LocalLLaMA (requires flair + bans
LLM-generated content), r/OpenAI, r/artificial, r/AI_Agents (flair + karma + automod).
Other candidates to VET: r/LocalLLM, r/selfhosted, r/LangChain, r/aipromptprogramming,
r/SideProject, r/IndieDev, r/selfhostedAI, r/LocalAIServers, r/AIAssisted.

For EACH candidate, before drafting, run a LENIENCY CHECK:
  1. ext_navigate https://old.reddit.com/r/SUB/submit?selftext=true
  2. ext_read_page (full) and scan the page + sidebar for blockers:
     - a REQUIRED post flair (a flair selector you must set before it will submit)
     - "you must be a member" / "only approved submitters" / "requires N karma"
     - rules banning AI-generated content or all self-promo
  3. If ANY blocker is present → SKIP this sub and move to the next candidate; don't fight
     it. If clean → it's a target. Continue until you have 5 clean targets (vet a couple
     extra as backups for when one turns out strict).

PER-TARGET LOOP (finish one fully before starting the next):

  1. RESEARCH (mandatory, >=1 web_search before writing): find ONE non-obvious, sourced,
     DATED fact tied to THIS post's angle — a concrete number, named milestone, benchmark
     crossover, adoption stat, or cost-curve shift the reader couldn't get from a generic
     LLM. The reader should leave smarter.

  2. DRAFT — and make EACH post genuinely DISTINCT. Near-identical posts across subs get
     spam-flagged AND flop, so vary the angle, hook format, opening line, and datapoint
     per sub; never reuse one template five times. Three passes: draft → critique → final.
     The final post must:
     - have a scroll-stopping title that invites replies/debate (hook / question / hot
       take / "TIL"-style)
     - carry the research insight as its payload
     - foreshadow the philosophy as a casual personal opinion, never a pitch
     - sound HUMAN: casual, a little messy, an emoji or two, an occasional abbreviation;
       light snark at hype/trends is welcome (roast ideas, never people)
     - obey that sub's rules

  3. SELF-CHECK before posting: real research with an additive sourced fact (not generic
     knowledge)? real value? accurate? fits the rules? sparks discussion? If any is no,
     redraft. Don't post until all are yes.

  4. POST + VERIFY (deterministic — do this exactly; do NOT navigate away first):
     a. ext_set_value textarea[name="title"]  -> your title
        ext_set_value textarea[name="text"]   -> your body
        ext_submit_form selector "textarea[name=\"text\"]"
     b. ext_get_url.
        - URL contains "/comments/"  -> LIVE. Record the full permalink. Done with this
          sub. NEVER resubmit (resubmitting is the only way to create a duplicate).
        - URL still ends in "/submit" -> the post did NOT go through. ext_read_page and
          read the real reason:
            * flair / karma / membership error -> SKIP this sub, pick a backup (re-vet it).
            * "doing that too much / try again in N minutes / unofficial client" -> REAL
              rate limit: ext_wait the stated minutes (default 12 if unstated) as one real
              sleep, then retry THIS sub ONCE. If it rate-limits twice, STOP and report.
            * anything else -> fix what it says, or skip to a backup.
     c. (Optional, once) navigate /user/<MY_NAME>/submitted/?sort=new, ext_read_page
        #siteTable, confirm your captured permalink is the newest entry.

  5. WAIT before the next sub: a real ext_wait of a fresh RANDOM 60000-150000 ms (60-150s).
     That's plenty — there's no aggressive write limit on a normal account, and long 5-10
     min waits just waste the run. ext_wait has NO cap, so one call is fine. Skip the wait
     after the 5th live post. (Only the real-rate-limit branch above uses a long wait.)

EXIT CONDITION: 5 permalinks captured, each containing "/comments/", across 5 distinct
subreddits. Keep a running tally ("LIVE: 3/5 — r/ollama, r/opencode, r/..."). If you
exhaust your vetted candidates before reaching 5, STOP and report what's live plus which
subs you skipped and why — do NOT loop forever or post to a strict sub hoping it sticks.

FINAL OUTPUT: a table — for each LIVE post: subreddit, title, the sourced research
insight, and the direct /comments/ permalink. Then list any subs skipped (with the
blocker you saw).
لماذا تنجح هذه النسخة في إيصال المنشورات: تستهدف المجتمعات المتساهلة فقط (تقرأ صفحة النشر أولاً وتتخطّى أي مجتمع يطلب flair أو كارما أو عضوية — وهي القاتل الصامت)، وتتحقق من كل منشور فعلياً عبر ext_get_url (رابط يحتوي /comments/ هو الدليل الوحيد على ظهور المنشور)، وتباعد عمليات الكتابة بانتظار قصير 60–150 ثانية بدل تخمين حدّ المعدل، وتفرض زاوية مختلفة لكل مجتمع كي لا تُطلق كاشفات الإزعاج عبر المجتمعات. هذه بالضبط أنماط الفشل التي تُعطّل التشغيلة غير الموجَّهة.

فهم الموجِّه

الموجِّه مواصفة مستقلة قائمة بذاتها. إليك ما يفعله كل جزء ولماذا يهم.
القسمما يفعلهلماذا هو موجود
ROLEيثبّت الوكيل في وضع الاستقلال الكامل، والإضافة (لا الـ API)، وجلستك المسجَّل دخولها، وقاعدة صارمة بعدم التوقف حتى الانتهاء.يمنع الوكيل من طلب الإذن في منتصف التشغيل أو الرجوع إلى API يحتاج مفاتيح ويصطدم بحدود المعدل.
MISSION + PHILOSOPHY5 منشورات في 5 مجتمعات متساهلة مختلفة تُحفِّز النقاش وتُلمِّح إلى أربع أفكار دون ترويجها.هدف قابل للعد والتحقق — ومنشورات تُقرأ كرأي حقيقي لا كتسويق (وهو أيضاً ما يمنع إزالتها كترويج ذاتي).
CRITICAL RULESيسمّي الأمور الثلاثة التي تُعطّل التشغيلات فعلاً: المجتمعات الصارمة التي ترفض بصمت، وفحص نجاح حقيقي عبر رابط /comments/، وعدم اختلاق حدّ معدل.هذه أنماط الفشل المرصودة في التشغيلات الحقيقية — وضعها في المقدمة يجعل الوكيل يصمّم حولها بدل اكتشافها بالطريقة الصعبة.
PHASE 0 — فحص التساهليقرأ صفحة النشر + قواعد كل مرشَّح ويتخطّى أي مجتمع يطلب flair أو كارما/عمر حساب أو عضوية قبل كتابة كلمة.اختيار الأهداف هو التشغيلة. منشور مثالي إلى مجتمع يشترط flair يفشل بصمت؛ وأرخص حل ألّا تستهدفه أصلاً.
PER-TARGET LOOPبحث ← صياغة ثلاثية مميّزة ← فحص ذاتي ← نشر ← تحقق حتمي، مجتمع واحد يُنهى تماماً قبل التالي.الصياغة الثلاثية والفحص الذاتي هما محرّك الجودة؛ وقاعدة الزاوية المميّزة تتجنّب كاشفات الإزعاج عبر المجتمعات.
POST + VERIFYيملأ بـ ext_set_value، ويُرسل بـ ext_submit_form، ثم يؤكّد بـ ext_get_url (رابط /comments/ = ظهر فعلاً) ولا يعيد إرسال منشور حيّ أبداً.success:true من الأداة ليس دليلاً — الرابط الناتج وحده هو الدليل. هذا ما يمنع هلوسة “لقد نشرته” والتكرار.
WAITانتظار حقيقي جديد 60–150 ثانية بين المنشورات؛ وانتظار طويل فقط حين يُظهر Reddit تهدئة صراحةً.التباعد يُقرأ كإيقاع بشري دون إهدار التشغيلة على انتظارات وهمية — الحساب المُؤسَّس ليس محدوداً بهذا الإيقاع.
EXIT CONDITION + FINAL OUTPUT5 روابط /comments/ ملتقَطة، وعدّاد جارٍ، وتوقف صارم عند استنفاد القائمة؛ ثم جدول ملخص.يمنحك نتيجة قابلة للتدقيق ويمنع الوكيل من الدوران للأبد أو إقحام منشور في مجتمع صارم.
خطوة RESEARCH هي ما يجعل هذه المنشورات تستحق القراءة. يشغّل الوكيل web_search للحصول على معلومة حالية موثَّقة (إنجاز نموذج صيني مفتوح، تقاطع معياري، تحوّل في منحنى التكلفة) ويبني المنشور حولها. زاوية وولف فيش هي التتبيلة لا الطبق — وهذا متعمَّد.

كيف يعمل

  1. يُحمّل Prefrontal ملف soul.md + SKILL.md الخاص بإضافة المتصفح + SKILL.md الخاص بالبحث على الويب في السياق.
  2. يربط الوكيل المصحِّح بتبويب Reddit (ext_debugger_attach) لكي يُرسَل كل إدخال كأحداث CDP موثوقة، لا استدعاءات DOM قابلة للكشف.
  3. فحص التساهل — على old.reddit.com (HTML بسيط، أسهل بكثير من Reddit الجديد ذي محرّر Shadow-DOM)، يمرّ ext_navigate + ext_read_page على صفحة النشر (/r/SUB/submit?selftext=true) وقواعد كل مرشَّح، ويتخطّى أي مجتمع يطلب flair أو كارما/عمر حساب أو عضوية أو يحظر محتوى الذكاء الاصطناعي/الترويج الذاتي. يستمر حتى يؤكّد 5 أهداف متساهلة (مع مرشَّحَين احتياطيين).
  4. لكل هدف، بالتسلسل:
    • web_search للعثور على معلومة واحدة غير بديهية وموثَّقة مرتبطة بالموضوع.
    • يصيغ النموذج وينتقد ويعيد الصياغة ثلاث مرات — زاوية مميّزة لكل مجتمع — ثم يمرّ ببوابة الفحص الذاتي.
    • يملأ ext_set_value حقلَي textarea[name="title"] وtextarea[name="text"]؛ وext_submit_form ينشر. واختيارياً ext_humanize بين الإجراءات لإيقاع شبيه بالبشري.
    • تحقق حتمي: ext_get_url — رابط يحتوي /comments/ يعني أنه ظهر، فيلتقط الوكيل الرابط الدائم ولا يعيد الإرسال أبداً. وإن بقي على /submit، يقرأ الوكيل الخطأ الفعلي ثم يتخطّى إلى مجتمع احتياطي، أو — فقط عند إشعار حرفي «you’re doing that too much» — ينتظر مدة التهدئة المذكورة.
    • انتظار عشوائي جديد 60–150 ثانية عبر ext_wait قبل المجتمع التالي (توقف حقيقي لا محاكى).
  5. بعد 5 روابط حيّة، يُصدر الوكيل جدول الملخص ويتوقف. يسجّل Hippocampus التشغيلة كحلقة (episode).

القيود

  • المجتمعات الصارمة ترفض بصمت. المجتمعات التي تشترط flair للمنشور أو حداً أدنى من الكارما/عمر الحساب أو العضوية ستقبل الإرسال (تُعيد الأداة success) لكنها لا تنشئ المنشور أبداً. يفحص الموجِّه صفحة نشر كل مجتمع أولاً ويتخطّاها — ما يعني أن بعض المجتمعات الكبيرة وثيقة الصلة (r/LocalLLaMA، r/OpenAI، r/artificial، r/AI_Agents) خارج النطاق للمنشورات النصية. تقايض الوصول مقابل منشورات تظهر فعلاً.
  • الإزالة التلقائية ما زالت صامتة. قد يجتاز المنشور فحص رابط /comments/ ثم يُزيله AutoModerator بعد ثوانٍ في مجتمع شديد التصفية. يلتقط فحص الملف الشخصي الاختياري معظم ذلك لا كله.
  • جدران CAPTCHA / التحقق قد تقاطع التشغيلة. يقلّل وضع المصحِّح هذا لكنه لا يلغيه — إن تحدّى Reddit الجلسة، سيتوقف الوكيل وقد يحتاج منك إلى تجاوزه.
  • حدود المعدل حقيقية لكنها نادراً ما تكون العائق على حساب مُؤسَّس. ينتظر الموجِّه التهدئة فقط حين يُظهر Reddit واحدة صراحةً — لن يختلق واحدة ويُهدر التشغيلة بالانتظار. الحساب الجديد أو منخفض الكارما سيصطدم بحدود أقسى؛ عندها يتوقف الوكيل ويبلّغ بنتيجة جزئية بدل الإلحاح.
  • يجب أن تكون المعلومة حقيقية. النموذج مُوجَّه لتوثيق كل معطى، لكن تصفّح المنشورات النهائية دائماً — إحصائية خاطئة مذكورة بثقة أسوأ من غياب أي إحصائية.

الأتمتة باستخدام Heartbeat

بمجرد أن تثق في الإخراج، جدوِله. افتح الإعدادات → Heartbeat لتشغيل المحرر المدمج — الصق الكتلة أدناه واحفظ. راجع توثيق Heartbeat لجميع تنسيقات الجدولة (Daily، Weekday، Weekly، Cron).
مهام Heartbeat توافق تلقائياً على كل استدعاء أداة — بلا حوارات تأكيد. مهمة غير مراقَبة تنشر في مجتمعات عامة باسمك عالية المخاطر. ابدأ بإيقاع منخفض (أسبوعي)، راجع التشغيلات الأولى، وعندها فقط خفّف الجدول.
## Engage Reddit | Weekly (Tuesday 10:00)

ROLE: You are Wolffish in full autonomous agent mode. Work ONLY through the Wolffish
browser extension (ext_* tools) in my real, already-logged-in Chrome tab. Never use the
Reddit API, Playwright, browser_* tools, a headless browser, or a new window — those
aren't logged in and Reddit returns 403. Don't ask me anything. Don't stop until the
EXIT CONDITION is met.

MISSION: Get 5 ORIGINAL, valuable, discussion-seeding TEXT posts LIVE — one each in 5
DIFFERENT, lenient subreddits in the open-source / personal-AI-agent / local-LLM space.
Softly foreshadow a philosophy (never pitch it, never name it as a product — let it read
as a personal opinion):
- brain-like architecture, but radically minimal and simple
- built for END USERS, not just devs
- does a FEW things extremely well instead of many things badly
- local-first, markdown-as-truth — you can read the agent's whole brain in a text editor

═══ CRITICAL RULES (these are exactly why these runs fail — obey them) ═══
- Most failures come from posting to STRICT subs that require post flair, a minimum
  karma/account-age, or membership. On old.reddit those submits SILENTLY fail: the tool
  returns {"success":true} but the post is never created. So you MUST (a) only target
  lenient subs (Phase 0 vets this) and (b) verify every post for real (step 4).
- A post is LIVE only when, right after submitting, ext_get_url returns a URL containing
  "/comments/". Nothing else counts as success — not a tool's {"success":true}, not the
  profile listing.
- Do NOT assume a rate limit. Only treat it as one if you LITERALLY SEE "you are doing
  that too much" / "try again in N minutes" / "looks like you're using an unofficial
  client" on the page after a submit. Inventing a rate limit just wastes the run.

ENVIRONMENT — extension only, old reddit only:
- old.reddit ONLY (https://old.reddit.com). It's plain HTML and works first try; www/sh
  Reddit build the composer in Shadow DOM + a Lexical editor that will eat the run. If you
  ever land on www.reddit.com, rewrite the URL to old.reddit.com before doing anything.
- Never call browser_launch / browser_navigate / any browser_* (Playwright) tool, and
  never open a headless/throwaway browser or new window — those aren't logged in (403).
- Don't pass a guessed tabId (tabId:1 fails with "No tab with id"). Omit it to use the
  active tab; if you truly need the id, call ext_tabs_list once and reuse it.
- First, confirm I'm logged in and capture my username: ext_query_selector ".user a"
  (returns my name and /user/<name>/ href). You need it for the secondary profile check.

SELECTORS (verified — use exactly these):
- Title field (a TEXTAREA on old.reddit, not an input): textarea[name="title"]
- Body field: textarea[name="text"]
- Fill both with ext_set_value (framework-safe; more reliable here than ext_type).
- Submit with ext_submit_form, selector "textarea[name=\"text\"]" (submits the containing
  form). Only if that returns no success, fall back to ext_click "text=submit".
- ext_query_selector accepts REAL CSS ONLY — no "text=", no :has-text(), no "button=...".
  ("text=" is valid for ext_click only.)

PHASE 0 — BUILD A LENIENT TARGET POOL (this is the whole game):
Goal: 5 subs that accept a plain text/self post with NO required flair, NO minimum
karma/age, NO membership gate, and NO blanket "no AI / no self-promo" rule.

Known-lenient anchors (good defaults — use ~2 of your 5 here): r/ollama, r/opencode.
Known-STRICT — DO NOT POST (they silently reject): r/LocalLLaMA (requires flair + bans
LLM-generated content), r/OpenAI, r/artificial, r/AI_Agents (flair + karma + automod).
Other candidates to VET: r/LocalLLM, r/selfhosted, r/LangChain, r/aipromptprogramming,
r/SideProject, r/IndieDev, r/selfhostedAI, r/LocalAIServers, r/AIAssisted.

For EACH candidate, before drafting, run a LENIENCY CHECK:
  1. ext_navigate https://old.reddit.com/r/SUB/submit?selftext=true
  2. ext_read_page (full) and scan the page + sidebar for blockers:
     - a REQUIRED post flair (a flair selector you must set before it will submit)
     - "you must be a member" / "only approved submitters" / "requires N karma"
     - rules banning AI-generated content or all self-promo
  3. If ANY blocker is present → SKIP this sub and move to the next candidate; don't fight
     it. If clean → it's a target. Continue until you have 5 clean targets (vet a couple
     extra as backups for when one turns out strict).

PER-TARGET LOOP (finish one fully before starting the next):

  1. RESEARCH (mandatory, >=1 web_search before writing): find ONE non-obvious, sourced,
     DATED fact tied to THIS post's angle — a concrete number, named milestone, benchmark
     crossover, adoption stat, or cost-curve shift the reader couldn't get from a generic
     LLM. The reader should leave smarter.

  2. DRAFT — and make EACH post genuinely DISTINCT. Near-identical posts across subs get
     spam-flagged AND flop, so vary the angle, hook format, opening line, and datapoint
     per sub; never reuse one template five times. Three passes: draft → critique → final.
     The final post must be viral-optimized (scroll-stopping title that invites debate),
     deliver the insight as its payload, foreshadow the philosophy as a casual personal
     opinion (never a pitch), sound HUMAN (casual, an emoji or two, an occasional typo;
     light snark at hype/trends welcome — roast ideas, never people), and obey the rules.

  3. SELF-CHECK before posting: real research with an additive sourced fact (not generic
     knowledge)? real value? accurate? fits the rules? sparks discussion? If any is no,
     redraft. Don't post until all are yes.

  4. POST + VERIFY (deterministic — do this exactly; do NOT navigate away first):
     a. ext_set_value textarea[name="title"] -> title; ext_set_value textarea[name="text"]
        -> body; ext_submit_form selector "textarea[name=\"text\"]".
     b. ext_get_url.
        - URL contains "/comments/"  -> LIVE. Record the permalink. Done. NEVER resubmit
          (resubmitting is the only way to create a duplicate).
        - URL still ends in "/submit" -> did NOT post. ext_read_page and read the reason:
            * flair / karma / membership error -> SKIP this sub, pick a backup (re-vet it).
            * "doing that too much / try again in N minutes / unofficial client" -> REAL
              rate limit: ext_wait the stated minutes (default 12 if unstated), then retry
              THIS sub ONCE. If it rate-limits twice, STOP and report.
            * anything else -> fix what it says, or skip to a backup.
     c. (Optional, once) navigate /user/<MY_NAME>/submitted/?sort=new, ext_read_page
        #siteTable, confirm your captured permalink is the newest entry.

  5. WAIT before the next sub: a real ext_wait of a fresh RANDOM 60000-150000 ms (60-150s).
     Skip the wait after the 5th live post. (Only the real-rate-limit branch uses a long
     wait.)

EXIT CONDITION: 5 permalinks captured, each containing "/comments/", across 5 distinct
subreddits. Keep a running tally. If you exhaust your vetted candidates before reaching 5,
STOP and report what's live plus which subs you skipped and why — do NOT loop forever or
post to a strict sub hoping it sticks.

FINAL OUTPUT: a table — for each LIVE post: subreddit, title, the sourced research
insight, and the direct /comments/ permalink. Then list any subs skipped (with the
blocker you saw).
غيّر Weekly (Tuesday 10:00) إلى ما يناسبك — Weekly (Sunday 09:00)، أو cron خام مثل Cron (0 10 * * 2). يُنصح بشدة بالأسبوعي أو أبطأ للنشر العام.

النتيجة المتوقعة

عند انتهاء التشغيلة، تحصل على جدول ملخص تنقر خلاله وتتحقق — كل رابط هو رابط /comments/ حقيقي أكّد الوكيل ظهوره:
#المجتمععنوان المنشورالمعلومة البحثية المستخدمةالرابط المباشر
1r/ollama”Ollama بلغ 52 مليون تنزيل شهري لأنه يُتقن شيئاً واحداً — فلماذا تعجز أطر الوكلاء؟“نمو تنزيلات Ollama (من 100 ألف إلى 52 مليون خلال 3 سنوات) وعدد نجوم GitHub، مع المصدرhttps://old.reddit.com/r/ollama/comments/...
2r/opencode”وكيلك لا يحتاج 47 أداة. يحتاج 5 ومحرّر نصوص.”معطى عدد الأدوات مقابل الدقة + «استدعاءات API الخام أبسط وأرخص» لإعدادات الوكيل المفردhttps://old.reddit.com/r/opencode/comments/...
3r/LocalLLM”كلما بسّطت إعداد الذكاء الاصطناعي المحلي لديّ، زادت موثوقيته. هل لاحظ أحد غيري؟“نموذج رائد مفتوح الأوزان يتجاوز معياراً استدلالياً محلياً بجزء بسيط من تكلفة الـ APIhttps://old.reddit.com/r/LocalLLM/comments/...
4r/LangChain”رأي جريء: ‘البساطة + المحلية’ تتفوّق على ‘الثراء بالمزايا + السحابة’ للوكلاء الشخصيين”معطى تحوّل منحنى التكلفة (سعر الاستدلال لكل رمز خلال العام الماضي) مع المصدرhttps://old.reddit.com/r/LangChain/comments/...
5r/aipromptprogramming”ماذا لو كانت ذاكرة وكيلك مجرد ملفات markdown يمكنك البحث فيها بـ grep؟“إحصائية تبنّي/نمو نجوم نموذج مفتوح مع المصدرhttps://old.reddit.com/r/aipromptprogramming/comments/...
المجتمعات والعناوين والمعلومات أعلاه توضيحية — يفحص الوكيل أهدافاً متساهلة جديدة ومعطيات حالية موثَّقة في كل تشغيلة، ويتخطّى أي مجتمع تطلب صفحة نشره flair أو كارما أو عضوية. عامل الجدول بوصفه شكل الإخراج، لا نصاً ثابتاً.