> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wolffi.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# حصد الكارما

> ينشر تلقائياً 5 ردود عالية القيمة عبر مجتمعات صغيرة ذات إشراف مرن لبناء الكارما باستخدام جلسة متصفحك المسجَّل دخولها — بدون Reddit API

# نظرة عامة

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

الاستراتيجية مقصودة: المجتمعات الكبيرة (r/LocalLLaMA وr/OpenAI وr/artificial) تبدو مغرية لكنها ترفض بصمت الحسابات منخفضة الكارما بمُرشّحات automod ومتطلبات فلير إلزامية وحدود عمر حساب. المجتمعات الصغيرة التي تضم بضعة آلاف عضو وقواعد مرنة تترك ردك يظهر فعلاً — ورد مرئي في مجتمع صغير يبني كارما حقيقية أسرع من رد مُرشَّح بصمت في مجتمع كبير.

ينضم الوكيل إلى كل مجتمع قبل الرد فيه، ويتحقق أن المجتمع ليس فيه حدود كارما/فلير/عضوية، ويتأكد أن الموضوع قابل للتعليق فعلاً، ويقرأ المنشور وأبرز تعليقاته، ويجد معلومة موثَّقة، ويصيغ ← ينتقد ← يعيد الصياغة ثلاث مرات، يفحص ذاتياً، يرد، يتأكد أن الرد ظهر فعلاً برؤيته في الموضوع وفي ملفك الشخصي، ثم يضبط إيقاعه بانتظار عشوائي قصير قبل التالي.

## شرح بالفيديو

<iframe width="100%" height="400" src="https://www.youtube.com/embed/kgENopR6VXA" title="حصد الكارما — عرض وولف فيش" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen style={{ borderRadius: '8px', marginTop: '1rem', marginBottom: '1rem' }} />

<Warning>
  **اقرأ هذا قبل التشغيل.** "حصد الكارما" بردود مؤتمتة يتعارض تماماً مع [سياسة محتوى Reddit](https://redditinc.com/policies/content-policy) ومعظم قواعد المجتمعات. التلاعب بالتصويت، والترويج غير المُفصَح عنه، وأنماط الردود الشبيهة بالبوتات قد تؤدي إلى حظر حسابك (shadowban) أو حظره نهائياً، ويزيل المشرفون الردود منخفضة الجهد أو خارج الموضوع بسرعة. وضع المصحِّح وhumanize يجعلان النشاط يبدو بشرياً لكنهما **لا** يجعلانه متوافقاً مع القواعد. استخدم هذا فقط في مجتمعات تشارك فيها فعلاً، وأبقِ كل رد جوهرياً، وأفصِح عن أي انتماء تتطلبه القواعد. أنت المسؤول عن كل ما يُنشر من حسابك. نحن لا نؤيّد انتهاك شروط أي منصة.
</Warning>

## الإعداد

هذا السير يعمل **عبر إضافة المتصفح فقط** — لا يلمس Reddit API إطلاقاً. اقرأ دليل [التهيئة للنجاح](/ar/use-cases/setting-up-for-success) العام للصورة الكاملة؛ ما يلي خاص بهذا السير.

### مطلوب

* **وولف فيش مثبَّت ويعمل** — تطبيق سطح المكتب مع مساحة عمل دماغية مُهيأة.
* **إضافة المتصفح مثبَّتة ومتصلة** — يعمل السير بأكمله عبرها. افتح **الإعدادات → الخدمات → إضافة المتصفح**، حمّل الإضافة غير المحزومة في Chrome أو Brave (`chrome://extensions` ← وضع المطوِّر ← تحميل غير محزوم)، وتأكد أن **نقطة الحالة خضراء** قبل أن تبدأ. بلا نقطة خضراء، لا وصول إلى Reddit — وستفشل التشغيلة عند أول إجراء. راجع [توثيق إضافة المتصفح](/ar/integrations/browser-extension).
* **مسجَّل الدخول في Reddit داخل ذلك المتصفح** — تُعيد الإضافة استخدام جلستك الموجودة. تأكد أنك مسجَّل الدخول بالحساب الصحيح واترك المتصفح مفتوحاً. يعمل الوكيل بصفتك — بدون تخزين بيانات اعتماد، بدون عملية تسجيل دخول.
* **وضع المصحِّح (debugger mode)** — يربط الوكيل بروتوكول Chrome DevTools (`ext_debugger_attach`) لكي تُكتب الردود وتُرسَل كأحداث إدخال موثوقة بدلاً من استدعاءات DOM قابلة للكشف. هذا هو "debugger mode" الذي يشير إليه الموجِّه. يربطه الوكيل تلقائياً.
* **مفتاح API سحابي** — مُهيأ في **الإعدادات → النماذج**. هذا هو نموذج اللغة الذي يُشغّل الوكيل — قراءة الموضوع، وصياغة الردود متعددة التمريرات، وقرارات الحكم، وتنسيق استدعاء الأدوات. وهو **لا** يُجري البحث على الويب (تلك قدرة منفصلة — راجع «اختياري» أدناه).

### موصى به

* **DeepSeek V4 Pro في وضع Max.** الخيار الافتراضي الموصى به في وولف فيش للمهام الوكيلية، ويلائم هذا السير جيداً: استدلال من الطراز الأول وموثوقية في استخدام الأدوات لحلقة القراءة ← الصياغة ← الرد ← التحقق، و**نافذة سياق بمليون رمز** تستوعب جلسات قراءة المواضيع الطويلة دون تجاوز، وكتابة حادّة بما يكفي لقراءة أجواء الغرفة و«روست» موفّق حين يكافئ المجتمع ذلك. يُفعّل **وضع Max** الاستدلال العميق المتكيّف الذي يعتمد عليه الموجِّه — فحص المجتمعات بحثاً عن قواعد مرنة، وقراءة ما يقوله الموضوع فعلاً، وحلقة الصياغة ← النقد ← إعادة الصياغة الثلاثية، وبوابة الفحص الذاتي، والتأكد من ظهور كل رد. بسعر **0.44$ / 0.87$ لكل مليون رمز** يكلّف جزءاً بسيطاً من تكلفة النماذج الرائدة — وهذا مهم لأن قراءة المواضيع تستهلك الرموز بسرعة. اضبطه لكل محادثة؛ راجع [DeepSeek](/ar/configuration/deepseek). للتشغيلات الأرخص انزل إلى DeepSeek V4 Flash؛ ولأقصى صقل في الكتابة، [Claude Sonnet 4.6](/ar/configuration/anthropic) — راجع [جدول تكاليف الإضافة](/ar/integrations/browser-extension#cost-why-model-choice-matters).

### اختياري

* **[مفتاح Brave Search API](https://brave.com/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, high-value REPLIES LIVE on recent threads in 5 DIFFERENT, SMALL,
LAX-MODERATION subreddits in the open-source / personal-AI-agent / local-LLM / self-hosted
space. Target subs where replies actually LAND — no karma gates, no flair requirements, no
membership walls. Each reply must add real value, invite a response, and earn karma — while
softly foreshadowing 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) ═══
- TARGET SMALL SUBS WITH LAX RULES. Big subs (r/LocalLLaMA, r/OpenAI, r/artificial,
  r/AI_Agents, r/selfhosted) silently reject low-karma accounts — automod filters,
  required flair, minimum account-age. Those subs return {"success":true} but the reply
  is never created. Skip ALL of them. Find subs roughly under ~50K members with no
  visible automod gates, no flair requirements, and no karma minimums in their rules.
- A reply is LIVE only when you can SEE it after submitting — as a comment by MY username
  in the thread, AND as the newest entry on
  https://old.reddit.com/user/MY_NAME/comments/?sort=new. A tool's {"success":true} is
  NOT proof: a comment submit can return success while it was rate-limited, karma-gated,
  or auto-removed and never actually created.
- If your reply doesn't appear, READ the real reason on the page and SKIP to a backup
  thread — don't fight it, don't retry the same sub.
- 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. Inventing a rate limit just wastes the run.
- Spread replies across different threads/subs and make each one genuinely DISTINCT — never
  paste the same or near-same reply (or reuse the same datapoint) across threads. Duplicate
  comments across threads are the fastest way to get shadowbanned.

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 comment 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 to verify replies.

SELECTORS (verified — use exactly these):
- JOIN a sub: the .fancy-toggle-button toggle in the sidebar (its span reads
  "join"/"subscribe" when you're not a member). ext_click it; if "text=join" isn't found,
  click by that class.
- Open a post from its real link in the listing/search — never invent a post ID (a wrong
  one 404s): https://old.reddit.com/r/SUB/comments/POSTID/
- The TOP-LEVEL reply box is the first <textarea> inside form.usertext in the .commentarea
  (directly under the post — NOT a textarea nested inside an existing comment). Read the
  page first to confirm you're targeting the top box.
- Fill it with ext_set_value (framework-safe; more reliable here than ext_type).
- Submit THAT form: ext_submit_form with selector = the top reply textarea, or ext_click
  "form.usertext button.save" scoped to the top box. A bare ".usertext-buttons button"
  matches every comment's reply form — never use it unscoped or you'll reply in the wrong
  place.
- 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 POOL OF SMALL, LAX SUBS (this is the whole game):
Goal: find 7+ small, lightly moderated subreddits where a plain reply from any account
will actually land. The ideal target sub has:
  - Roughly under ~50K members (small enough that automod is minimal or absent)
  - NO required post/comment flair
  - NO minimum karma or account-age requirement
  - NO membership-only commenting ("you must be a member" / "only approved submitters")
  - NO blanket ban on AI-related or self-promo content
  - At least one recent thread (< 7 days old) with real activity

Known-LAX anchors (good defaults — use ~2 of these): r/ollama, r/opencode.
Known-STRICT — DO NOT REPLY (they silently reject): r/LocalLLaMA (requires flair + bans
LLM-generated content), r/OpenAI, r/artificial, r/AI_Agents (flair + karma + automod),
r/selfhosted (heavy automod on young accounts).
Other candidates to VET: r/LocalLLM, r/aipromptprogramming, r/SideProject, r/IndieDev,
r/selfhostedAI, r/LocalAIServers, r/AIAssisted, r/ChatGPTCoding, r/LLMDevs,
r/PrivateAI, r/AIAgentBuilders, r/OpenSourceAI.

For EACH candidate, before drafting, run a LENIENCY CHECK:
  1. ext_navigate https://old.reddit.com/r/SUB
  2. ext_read_page (full) and scan the sidebar + rules for blockers:
     - a REQUIRED comment flair or post flair
     - "you must be a member" / "only approved submitters" / "requires N karma" /
       "accounts must be at least N days old"
     - rules banning AI-generated content or all self-promo
     - heavy automod rules that mention karma, age, or filtering
  3. Check subscriber count in the sidebar — if it's over ~50K, SKIP. Big subs almost
     always have invisible automod filters even when the visible rules look clean.
  4. Check the sub has recent threads with real comments (not a dead sub with no posts
     in 2 weeks). At least one thread from the last 7 days with >=2 comments.
  5. If ANY blocker is present or the sub is too big → SKIP and move to the next
     candidate. If clean → it's a target. Continue until you have 7+ clean targets.

Then, for EACH vetted sub, pick ONE recent, comment-able thread to reply in.

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

  1. JOIN: ensure you've JOINED the sub before replying in it (skip if already a member).
     Replying in a sub you've never joined is a bot tell.

  2. CHECK COMMENT-ABILITY: open the thread and ext_read_page. Confirm the top-level reply
     box exists and the thread isn't archived/locked, and there's no "you must have N
     karma to comment here" notice. If you can't comment, SKIP to a backup thread in a
     different vetted sub.

  3. PLAN: read the post AND its top comments. Pick an angle that adds real value —
     agree-and-extend, a useful correction, a sharp insight, or a respectful hot take.
     No low-effort "great post" filler.

  4. RESEARCH (mandatory, >=1 web_search before writing): find ONE non-obvious, sourced,
     on-topic fact the reader likely doesn't know — a concrete number, named milestone,
     benchmark crossover, adoption stat, or cost-curve shift. Use a DIFFERENT datapoint per
     thread. The reader should leave smarter.

  5. DRAFT (three passes: draft → critique → final). The final reply must directly engage
     what was actually said, carry the research insight as a payload, end on an opening that
     invites a response, 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.

  6. SELF-CHECK: real research with an additive sourced fact (not generic knowledge)? adds
     real value to THIS thread? accurate? fits the rules? invites a reply/upvotes? distinct
     from your other replies? If any is no, redraft. Don't post until all are yes.

  7. POST + VERIFY (deterministic — do this exactly):
     a. ext_set_value the top reply textarea -> your reply, then submit that form
        (ext_submit_form on the textarea, or ext_click "form.usertext button.save" scoped
        to the top box).
     b. Confirm it's LIVE: ext_read_page the .commentarea and find your comment (by MY
        username + a unique ~8-word snippet). Then navigate
        https://old.reddit.com/user/MY_NAME/comments/?sort=new, ext_read_page #siteTable,
        confirm the newest comment is this reply on this thread, and capture its permalink
        (the comment's a.bylink href).
     c. If it's NOT there -> it didn't post. ext_read_page near the form for the reason:
        * karma/age gate, archived/locked, removed -> this sub is STRICTER than it looked.
          SKIP to a backup sub (re-vet it). Do NOT retry this sub.
        * "doing that too much / try again in N minutes / unofficial client" -> REAL rate
          limit: ext_wait the stated minutes (default 10 if unstated), then retry THIS
          reply ONCE. If rate-limited twice, STOP and report.
        * anything else -> fix what it says, or skip to a backup.
     d. NEVER retype-and-resubmit a reply that already appears live — that double-posts.

  8. WAIT before the next reply: a real ext_wait of a fresh RANDOM 120000-240000 ms
     (2-4 min). Skip the wait after the 5th live reply. (Only the real-rate-limit branch
     above uses a longer wait.)

EXIT CONDITION: 5 replies verified LIVE (each seen on
https://old.reddit.com/user/MY_NAME/comments/ with a captured permalink), across 5
DIFFERENT subs, each sub joined first. Keep a running tally. If you exhaust your vetted
subs before reaching 5, STOP and report what's live plus which subs you skipped and why
— do NOT loop forever or force replies into strict subs hoping they stick.

FINAL OUTPUT: a table — for each LIVE reply: subreddit (with ~member count), the post you
replied to (title), the sourced research insight used, and the direct permalink to your
reply. Then list any subs skipped (with the blocker you saw).
```

<Tip>
  **لماذا تعمل المجتمعات الصغيرة أفضل لحصد الكارما:** المجتمعات الكبيرة تبدو مغرية لكنها تُرشّح الحسابات منخفضة الكارما بصمت. r/LocalLLaMA تتطلب فلير وتحظر المحتوى المُولَّد بالذكاء الاصطناعي؛ وr/AI\_Agents فيها حدود كارما في automod؛ وautomod في r/selfhosted يُوسم الحسابات الجديدة. المجتمعات الصغيرة (\~1K–30K عضو) بدون automod مرئي تترك ردك يظهر فعلاً — ورد *مرئي* في مجتمع صغير يبني كارما حقيقية، بينما رد مُرشَّح بصمت في مجتمع كبير لا يبني شيئاً.
</Tip>

## فهم الموجِّه

نفس الهيكل المستقل الموجود في [التفاعل على Reddit](/ar/use-cases/reddit-engage)، مضبوطاً للردود في مجتمعات صغيرة ومرنة. الفرق الجوهري من النسخة الأصلية هو استراتيجية الاستهداف — كل شيء آخر (إضافة فقط، وضع المصحِّح، المحدِّدات، التحقق، الإيقاع) مطابق.

| القسم                                | ما يفعله                                                                                                                                                                                       | لماذا هو موجود                                                                                                                                                                                                   |
| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **CRITICAL RULES**                   | يسمّي أنماط الفشل: المجتمعات الكبيرة ترفض بصمت، الرد يُحتسب فقط حين تراه (لا حين تُعيد الأداة `success`)، لا تختلق حدّ معدل، أبقِ كل رد مميّزاً.                                               | السبب الأول لفشل تشغيلات حصد الكارما هو استهداف مجتمعات تبدو مفتوحة لكنها تُرشّح بصمت. وضع هذا في المقدمة يجعل الوكيل يتجنبها كلياً.                                                                             |
| **MISSION**                          | 5 ردود مميّزة، كل واحد في مجتمع صغير/مرن مختلف، تكسب كارما وتدعو للتفاعل.                                                                                                                      | المجتمعات الصغيرة المرنة تترك الردود تظهر؛ التوزيع على 5 مجتمعات مختلفة يتجنب أنماط الإزعاج عبر المجتمعات.                                                                                                       |
| **PHASE 0 — فحص التساهل**            | يقرأ الشريط الجانبي والقواعد وعدد الأعضاء لكل مجتمع مرشَّح. يتخطّى أي مجتمع فوق \~50K عضو، أو يتطلب فلير/كارما/عضوية، أو ميت بلا مواضيع حديثة.                                                 | اختيار الهدف *هو* التشغيلة. رد لا تشوبه شائبة في مجتمع محمي بكارما يفشل بصمت؛ أرخص حل هو ألا تستهدفه أبداً. المجتمعات الكبيرة دائماً تقريباً فيها مُرشّحات automod غير مرئية حتى حين تبدو القواعد المرئية نظيفة. |
| **JOIN** (الخطوة 1)                  | الانضمام للمجتمع قبل الرد فيه؛ التخطّي إن كنت عضواً.                                                                                                                                           | الرد في مجتمعات لم تنضم إليها قط علامة بوت كلاسيكية — الانضمام أولاً يُقرأ كمشارك حقيقي.                                                                                                                         |
| **CHECK COMMENT-ABILITY** (الخطوة 2) | تأكيد وجود صندوق الرد وأن الموضوع غير مؤرشف/مقفل/محدود بكارما *قبل* الصياغة.                                                                                                                   | المُرشّح الثاني: حتى المجتمع المرن قد يكون فيه مواضيع مقفلة أو مؤرشفة فردية. لا تُهدر صياغة على موضوع لا يمكنك التعليق فيه.                                                                                      |
| **DRAFT** (الخطوة 5)                 | صياغة ثلاثية، تتفاعل مع ما قيل فعلاً، تنتهي بفتحة، ومميّزة لكل موضوع.                                                                                                                          | الدعوة الختامية تحوّل الرد إلى محادثة؛ والتميّز يُبقيه خارج رادار الإزعاج.                                                                                                                                       |
| **POST + VERIFY** (الخطوة 7)         | `ext_set_value` + إرسال `form.usertext` المحصور، ثم تأكيد التعليق في الموضوع **وفي** ملفك الشخصي مع التقاط الرابط الدائم. إن فشل، المجتمع أكثر صرامة مما بدا — تخطّاه كلياً، لا تُعد المحاولة. | `success:true` ليس دليلاً — *رؤية* التعليق الحيّ هو الدليل. ومجتمع يرفض بصمت مرة سيرفض مرة أخرى، فانتقل.                                                                                                         |
| **WAIT** (الخطوة 8)                  | انتظار حقيقي جديد 2–4 دقائق بين الردود؛ وانتظار طويل فقط حين يُظهر Reddit تهدئة *حرفياً*.                                                                                                      | إيقاع طبيعي يتفادى وسم الردود المزعجة دون إهدار التشغيلة على انتظارات وهمية 5–10 دقائق.                                                                                                                          |

<Tip>
  قاعدة **الانضمام-قبل-الرد** وقاعدة **قراءة-أبرز-التعليقات** هما ما يفصلان هذا عن الإزعاج. رد يتفاعل مع النقاش الفعلي ويضيف معطى موثَّقاً يكسب كارما بشرف؛ أما الرد العام المقتضب فيُزال. وضع Max هو ما يتيح للنموذج أن يقرأ أجواء الغرفة فعلاً.
</Tip>

## كيف يعمل

1. يُحمّل Prefrontal ملف `soul.md` + SKILL.md الخاص بإضافة المتصفح + SKILL.md الخاص بالبحث على الويب في السياق.
2. يربط الوكيل المصحِّح بتبويب Reddit (`ext_debugger_attach`) لكي يُرسَل كل إدخال كأحداث CDP موثوقة.
3. **فحص المجتمعات** — على `old.reddit.com` (HTML بسيط، أسهل بكثير من Reddit الجديد ذي محرّر Shadow-DOM)، يتصفح `ext_navigate` + `ext_read_page` الشريط الجانبي والقواعد لكل مجتمع مرشَّح، ويتحقق من عدد الأعضاء (حد \~50K)، ومتطلبات الفلير/الكارما/العضوية، والنشاط الحديث. المجتمعات الكبيرة جداً أو الصارمة جداً أو الميتة جداً تُتخطّى. يستمر الوكيل حتى يؤكّد 7+ أهداف صغيرة ومرنة.
4. لكل رد، بالتسلسل:
   * **الانضمام** للمجتمع إن لم تكن عضواً (`ext_click` على زر الانضمام)، مع التحقق من العضوية.
   * **فحص قابلية التعليق** — `ext_read_page` للموضوع؛ إن كان مؤرشفاً/مقفلاً أو محدوداً بكارما (لا صندوق رد صالح)، تخطَّ إلى بديل.
   * `ext_read_page` للمنشور وأبرز تعليقاته لفهم النقاش، ثم `web_search` للعثور على معلومة واحدة موثَّقة وذات صلة (معطى مختلف كل مرة).
   * صياغة ← نقد ← إعادة صياغة ثلاث مرات، ثم بوابة الفحص الذاتي.
   * على `old.reddit.com`، `ext_set_value` على `<textarea>` العلوي ضمن `form.usertext` وأرسِل ذلك النموذج المحصور (`ext_submit_form`، أو `ext_click` على `form.usertext button.save`). واختيارياً `ext_humanize` لإيقاع شبيه بالبشري.
   * **تحقق حتمي:** اقرأ `.commentarea` للتأكد أن التعليق ظهر تحت اسم المستخدم، ثم افحص `old.reddit.com/user/<you>/comments/?sort=new` والتقط الرابط الدائم. إن لم يكن هناك، المجتمع أكثر صرامة مما بدا — يتخطّاه الوكيل كلياً (لا إعادة محاولة) وينتقل إلى بديل. فقط عند إشعار حرفي «you're doing that too much» ينتظر مدة التهدئة المذكورة. ولا يعيد إرسال رد يظهر حيّاً بالفعل.
   * انتظار عشوائي جديد **2–4 دقائق** عبر `ext_wait` قبل الرد التالي (توقف حقيقي لا محاكى).
5. بعد الرد الحيّ الخامس، يُصدر الوكيل جدول الملخص ويتوقف. يسجّل Hippocampus التشغيلة كحلقة (episode).

## القيود

* **حتى المجتمعات الصغيرة قد تملك automod غير مرئي.** يقرأ الوكيل الشريط الجانبي والقواعد، لكن بعض المجتمعات تشغّل إعدادات automod لا تظهر هناك. رد يُرشَّح بصمت في مجتمع بدا نظيفاً → يتخطّاه الوكيل وينتقل إلى بديل، لكن ذلك يظل صياغة مُهدَرة.
* **الإزالة الخفية غير مرئية لك وأنت مسجَّل الدخول.** قد يبدو الرد ظاهراً على شاشتك ومخفياً عن الجميع. تتحقق خطوة التحقق من أن التعليق يظهر وأنه موجود في ملفك الشخصي، لكنها لا تكشف دائماً الحظر الخفي.
* **المجتمعات الصغيرة فيها حركة أقل.** رد في r/LocalAIServers (5K عضو) يحصل على مشاهدات أقل من واحد في r/LocalLLaMA (500K). تقايض الوضوح بالموثوقية — الرد يظهر فعلاً بدل أن يُرشَّح بصمت.
* **حدود المعدل حقيقية لكنها نادراً ما تكون العائق** على حساب مُؤسَّس — التعليق مخنوق أقل بكثير من النشر. ينتظر الموجِّه التهدئة **فقط حين يُظهرها Reddit حرفياً**؛ ولن يختلق واحدة ويُهدر التشغيلة بالانتظار. الحساب الجديد أو منخفض الكارما سيصطدم بالجدران رغم ذلك؛ وإن وقع في حد المعدل مرتين متتاليتين يتوقف ويبلّغ بنتيجة جزئية بدل الإلحاح.
* **تصفّح الإخراج.** راجع الردود النهائية دائماً — إحصائية "موثَّقة" خاطئة في رد أكثر ضرراً لسمعتك من الصمت.

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

بمجرد أن تثق في الإخراج، جدوِله. افتح **الإعدادات → Heartbeat** لتشغيل المحرر المدمج — الصق الكتلة أدناه واحفظ. راجع [توثيق Heartbeat](/ar/configuration/heartbeat) لجميع تنسيقات الجدولة (`Daily`، `Weekday`، `Weekly`، `Cron`).

<Warning>
  مهام Heartbeat **توافق تلقائياً على كل استدعاء أداة**. مهمة غير مراقَبة تردّ باسمك عبر مجتمعات عامة عالية المخاطر وأسرع طريقة لاتخاذ إجراء ضد حسابك إن أخطأت. استخدم إيقاعاً بطيئاً، وراجع كل تشغيلة مبكرة، وقلّل عدد الردود (مثلاً 3 بدل 5) للتشغيلات المؤتمتة.
</Warning>

```markdown theme={null}
## Karma Farm | Weekly (Thursday 11: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, high-value REPLIES LIVE on recent threads in 5 DIFFERENT, SMALL,
LAX-MODERATION subreddits in the open-source / personal-AI-agent / local-LLM / self-hosted
space. Target subs where replies actually LAND — no karma gates, no flair requirements, no
membership walls. Each reply must add real value, invite a response, and earn karma — while
softly foreshadowing 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) ═══
- TARGET SMALL SUBS WITH LAX RULES. Big subs (r/LocalLLaMA, r/OpenAI, r/artificial,
  r/AI_Agents, r/selfhosted) silently reject low-karma accounts — automod filters,
  required flair, minimum account-age. Those subs return {"success":true} but the reply
  is never created. Skip ALL of them. Find subs roughly under ~50K members with no
  visible automod gates, no flair requirements, and no karma minimums in their rules.
- A reply is LIVE only when you can SEE it after submitting — as a comment by MY username
  in the thread, AND as the newest entry on
  https://old.reddit.com/user/MY_NAME/comments/?sort=new. A tool's {"success":true} is
  NOT proof: a comment submit can return success while it was rate-limited, karma-gated,
  or auto-removed and never actually created.
- If your reply doesn't appear, READ the real reason on the page and SKIP to a backup
  thread — don't fight it, don't retry the same sub.
- 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. Inventing a rate limit just wastes the run.
- Spread replies across different threads/subs and make each one genuinely DISTINCT — never
  paste the same or near-same reply (or reuse the same datapoint) across threads. Duplicate
  comments across threads are the fastest way to get shadowbanned.

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 comment 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 to verify replies.

SELECTORS (verified — use exactly these):
- JOIN a sub: the .fancy-toggle-button toggle in the sidebar (its span reads
  "join"/"subscribe" when you're not a member). ext_click it; if "text=join" isn't found,
  click by that class.
- Open a post from its real link in the listing/search — never invent a post ID (a wrong
  one 404s): https://old.reddit.com/r/SUB/comments/POSTID/
- The TOP-LEVEL reply box is the first <textarea> inside form.usertext in the .commentarea
  (directly under the post — NOT a textarea nested inside an existing comment). Read the
  page first to confirm you're targeting the top box.
- Fill it with ext_set_value (framework-safe; more reliable here than ext_type).
- Submit THAT form: ext_submit_form with selector = the top reply textarea, or ext_click
  "form.usertext button.save" scoped to the top box. A bare ".usertext-buttons button"
  matches every comment's reply form — never use it unscoped or you'll reply in the wrong
  place.
- 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 POOL OF SMALL, LAX SUBS (this is the whole game):
Goal: find 7+ small, lightly moderated subreddits where a plain reply from any account
will actually land. The ideal target sub has:
  - Roughly under ~50K members (small enough that automod is minimal or absent)
  - NO required post/comment flair
  - NO minimum karma or account-age requirement
  - NO membership-only commenting ("you must be a member" / "only approved submitters")
  - NO blanket ban on AI-related or self-promo content
  - At least one recent thread (< 7 days old) with real activity

Known-LAX anchors (good defaults — use ~2 of these): r/ollama, r/opencode.
Known-STRICT — DO NOT REPLY (they silently reject): r/LocalLLaMA (requires flair + bans
LLM-generated content), r/OpenAI, r/artificial, r/AI_Agents (flair + karma + automod),
r/selfhosted (heavy automod on young accounts).
Other candidates to VET: r/LocalLLM, r/aipromptprogramming, r/SideProject, r/IndieDev,
r/selfhostedAI, r/LocalAIServers, r/AIAssisted, r/ChatGPTCoding, r/LLMDevs,
r/PrivateAI, r/AIAgentBuilders, r/OpenSourceAI.

For EACH candidate, before drafting, run a LENIENCY CHECK:
  1. ext_navigate https://old.reddit.com/r/SUB
  2. ext_read_page (full) and scan the sidebar + rules for blockers:
     - a REQUIRED comment flair or post flair
     - "you must be a member" / "only approved submitters" / "requires N karma" /
       "accounts must be at least N days old"
     - rules banning AI-generated content or all self-promo
     - heavy automod rules that mention karma, age, or filtering
  3. Check subscriber count in the sidebar — if it's over ~50K, SKIP. Big subs almost
     always have invisible automod filters even when the visible rules look clean.
  4. Check the sub has recent threads with real comments (not a dead sub with no posts
     in 2 weeks). At least one thread from the last 7 days with >=2 comments.
  5. If ANY blocker is present or the sub is too big → SKIP and move to the next
     candidate. If clean → it's a target. Continue until you have 7+ clean targets.

Then, for EACH vetted sub, pick ONE recent, comment-able thread to reply in.

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

  1. JOIN: ensure you've JOINED the sub before replying in it (skip if already a member).
     Replying in a sub you've never joined is a bot tell.

  2. CHECK COMMENT-ABILITY: open the thread and ext_read_page. Confirm the top-level reply
     box exists and the thread isn't archived/locked, and there's no "you must have N
     karma to comment here" notice. If you can't comment, SKIP to a backup thread in a
     different vetted sub.

  3. PLAN: read the post AND its top comments. Pick an angle that adds real value —
     agree-and-extend, a useful correction, a sharp insight, or a respectful hot take.
     No low-effort "great post" filler.

  4. RESEARCH (mandatory, >=1 web_search before writing): find ONE non-obvious, sourced,
     on-topic fact the reader likely doesn't know — a concrete number, named milestone,
     benchmark crossover, adoption stat, or cost-curve shift. Use a DIFFERENT datapoint per
     thread. The reader should leave smarter.

  5. DRAFT (three passes: draft → critique → final). The final reply must directly engage
     what was actually said, carry the research insight as a payload, end on an opening that
     invites a response, 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.

  6. SELF-CHECK: real research with an additive sourced fact (not generic knowledge)? adds
     real value to THIS thread? accurate? fits the rules? invites a reply/upvotes? distinct
     from your other replies? If any is no, redraft. Don't post until all are yes.

  7. POST + VERIFY (deterministic — do this exactly):
     a. ext_set_value the top reply textarea -> your reply, then submit that form
        (ext_submit_form on the textarea, or ext_click "form.usertext button.save" scoped
        to the top box).
     b. Confirm it's LIVE: ext_read_page the .commentarea and find your comment (by MY
        username + a unique ~8-word snippet). Then navigate
        https://old.reddit.com/user/MY_NAME/comments/?sort=new, ext_read_page #siteTable,
        confirm the newest comment is this reply on this thread, and capture its permalink
        (the comment's a.bylink href).
     c. If it's NOT there -> it didn't post. ext_read_page near the form for the reason:
        * karma/age gate, archived/locked, removed -> this sub is STRICTER than it looked.
          SKIP to a backup sub (re-vet it). Do NOT retry this sub.
        * "doing that too much / try again in N minutes / unofficial client" -> REAL rate
          limit: ext_wait the stated minutes (default 10 if unstated), then retry THIS
          reply ONCE. If rate-limited twice, STOP and report.
        * anything else -> fix what it says, or skip to a backup.
     d. NEVER retype-and-resubmit a reply that already appears live — that double-posts.

  8. WAIT before the next reply: a real ext_wait of a fresh RANDOM 120000-240000 ms
     (2-4 min). Skip the wait after the 5th live reply. (Only the real-rate-limit branch
     above uses a longer wait.)

EXIT CONDITION: 5 replies verified LIVE (each seen on
https://old.reddit.com/user/MY_NAME/comments/ with a captured permalink), across 5
DIFFERENT subs, each sub joined first. Keep a running tally. If you exhaust your vetted
subs before reaching 5, STOP and report what's live plus which subs you skipped and why
— do NOT loop forever or force replies into strict subs hoping they stick.

FINAL OUTPUT: a table — for each LIVE reply: subreddit (with ~member count), the post you
replied to (title), the sourced research insight used, and the direct permalink to your
reply. Then list any subs skipped (with the blocker you saw).
```

<Tip>
  نسخة Heartbeat أعلاه تُبقي نفس الـ5 ردود؛ اخفضها إلى 3 إن أردت بصمة أخفّ للتشغيلات غير المراقَبة. غيّر `Weekly (Thursday 11:00)` إلى أي جدول، مثل `Weekly (Saturday 12:00)` أو `Cron (0 11 * * 4)`.
</Tip>

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

عند انتهاء التشغيلة، تحصل على جدول ملخص برابط دائم قابل للنقر لكل رد — كل واحد أكّد الوكيل ظهوره في الموضوع وفي ملفك الشخصي:

| # | المجتمع                       | المنشور المُرَدّ عليه                  | المعلومة البحثية المستخدمة                                                      | الرابط الدائم للرد                                                      |
| - | ----------------------------- | -------------------------------------- | ------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| 1 | r/ollama (\~45K)              | "ماذا يشغّل الجميع محلياً في 2026؟"    | نموذج مفتوح الأوزان يتجاوز معياراً استدلالياً بجزء بسيط من تكلفة النموذج المغلق | `https://old.reddit.com/r/ollama/comments/.../comment/...`              |
| 2 | r/opencode (\~8K)             | "وكيلك لا يحتاج 47 أداة"               | معطى عدد الأدوات مقابل الدقة من تقييم وكيلي حديث                                | `https://old.reddit.com/r/opencode/comments/.../comment/...`            |
| 3 | r/LocalLLM (\~12K)            | "أفضل طريقة لتشغيل مساعد محلي؟"        | تحوّل منحنى تكلفة الاستدلال — \$/رمز خلال العام الماضي                          | `https://old.reddit.com/r/LocalLLM/comments/.../comment/...`            |
| 4 | r/selfhostedAI (\~6K)         | "إعدادات بسيطة تعمل فعلاً"             | إحصائية تبنّي الذكاء الاصطناعي المستضاف ذاتياً من استبيان حديث                  | `https://old.reddit.com/r/selfhostedAI/comments/.../comment/...`        |
| 5 | r/aipromptprogramming (\~15K) | "ماذا لو كانت ذاكرة وكيلك مجرد ملفات؟" | إحصائية تبنّي النماذج المفتوحة / نمو النجوم مع المصدر                           | `https://old.reddit.com/r/aipromptprogramming/comments/.../comment/...` |

<Note>
  المجتمعات والمواضيع والمعلومات أعلاه **توضيحية** — يجد الوكيل أهدافاً صغيرة/مرنة جديدة ومعطيات حالية موثَّقة في كل تشغيلة، ويتخطّى أي مجتمع كبير جداً أو صارم جداً أو ميت جداً. عامل الجدول بوصفه *شكل* الإخراج، لا نصاً ثابتاً.
</Note>
