> ## 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.

# أدوات الاسترجاع

> مجموعة الأدوات القابلة للاستدعاء من النموذج للبحث والقراءة في كل ما فعله وولفيش أو قاله أو أنتجه أو أنفقه

# كل شيء، على بُعد استدعاء أداة واحد

[نظام السياق الرشيق](/ar/architecture/lean-context) يضع خريطة تغطية في الموجه، لا المحتوى. ما يجعل ذلك ممكنًا هو مجموعة أدوات الاسترجاع: أدوات قابلة للاستدعاء من النموذج، تُقدِّمها قدرة `introspect` الدائمة التحميل عبر جسر CortexHost، وتصل إلى فهرس cortex في أجزاء من الثانية. كلها للقراءة فقط باستثناء `memory_save`.

| الأداة              | ما تفعله                                                                         |
| ------------------- | -------------------------------------------------------------------------------- |
| `memory_search`     | بحث نصي كامل مُرتَّب عبر المصادر الـ 11 المُفهرَسة كلها — يُعيد مقتطفات مع مراجع |
| `memory_get`        | جلب المحتوى المُخزَّن الكامل خلف مرجع                                            |
| `conversation_list` | تعداد المحادثات السابقة عبر كل قناة                                              |
| `conversation_read` | قراءة محادثة واحدة — الرسائل *و* استدعاءات الأدوات — مع تقسيم صفحات              |
| `memory_save`       | حفظ حقيقة واحدة بشكل دائم في ملفات المعرفة طويلة المدى (مع إزالة التكرار)        |
| `usage_report`      | إنفاق وولفيش الخاص على نماذج اللغة من سجل الاستخدام                              |
| `wolffish_recall`   | اسم بديل مستقر فوق الفهرس نفسه — اختصارات الاستعلام/التاريخ/المصدر               |

## memory\_search

أداة الاسترجاع الأساسية: بحث FTS مُرتَّب عبر كل ما هو مُفهرَس. يُعيد مقتطفات مع مراجع — أتبعها بـ `memory_get` أو `conversation_read` للمحتوى الكامل.

| المعامل            | مطلوب | الوصف                                                                                                                                                                   |
| ------------------ | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `query`            | نعم   | كلمات مفتاحية للبحث (مطابقة الكلمة الدقيقة، مدموجة بـ OR)                                                                                                               |
| `sources`          | لا    | مجموعة فرعية مفصولة بفواصل من: `episode`، `knowledge`، `consolidated`، `conversation`، `task`، `feedback`، `usage`، `corpus`، `log`، `artifact`، `doc`. الافتراضي: الكل |
| `after` / `before` | لا    | حدود التاريخ (`YYYY-MM-DD`)                                                                                                                                             |
| `limit`            | لا    | أقصى عدد نتائج (الافتراضي 15، الأقصى 50)                                                                                                                                |

<Tip>
  البحث مبني على الكلمة الدقيقة. إذا أخفق الاستعلام الأول، أعد الصياغة — لا تُكرِّر. العقيدة تتطلب محاولتين إلى ثلاث بصياغات مختلفة قبل الاستنتاج بأن شيئًا لم يُسجَّل قط.
</Tip>

## memory\_get

يجلب المحتوى الكامل خلف مرجع من `memory_search`: يوم حلقات كامل، أو ملف معرفة، أو نص مهمة مع سجلها التفصيلي، أو كل سجلات محادثة.

| المعامل | مطلوب | الوصف                                              |
| ------- | ----- | -------------------------------------------------- |
| `ref`   | نعم   | مرجع من `memory_search` (انظر أشكال المراجع أدناه) |
| `limit` | لا    | أقصى عدد سجلات لمراجع البادئة (الافتراضي 50)       |

مراجع `file:` تُعيد **الملف الفعلي** — محصورًا في مساحة العمل، مع مقتطف من المقدمة والخاتمة بعد تجاوز 12 ألف حرف.

### أشكال المراجع

| شكل المرجع                                      | يُحلّ إلى                                                   |
| ----------------------------------------------- | ----------------------------------------------------------- |
| `conversation:<id>#3`                           | الرسالة 3 من محادثة                                         |
| `conversation:<id>#3.1`                         | استدعاء الأداة 1 داخل الرسالة 3 (الاستدعاء ومخرجه)          |
| `conversation:<id>#`                            | مرجع بادئة — كل سجلات المحادثة، بالترتيب                    |
| `task:<id>`                                     | نص مهمة                                                     |
| `task:<id>#detail2`                             | قسم من سجل المهمة التفصيلي غير المقتطع                      |
| `file:brain/hippocampus/episodes/2026-07-01.md` | ملف من مساحة العمل، يُعاد كما هو                            |
| `file:<path>#<anchor>`                          | جزء من ملف كبير (قسم، نطاق أسطر، أو جزء WhatsApp لكل دردشة) |

## conversation\_list

يُعدِّد المحادثات السابقة، الأحدث أولًا: المعرِّف، القناة، العنوان، عدد الرسائل، آخر تحديث. هذا لم يكن موجودًا قط قبل v1.0.203 — لم يكن للنموذج سابقًا أي وسيلة لرؤية سجل محادثاته كقائمة. يُقدَّم من جدول `conversations` في الفهرس، لذا التعداد فوري.

| المعامل            | مطلوب | الوصف                                                                             |
| ------------------ | ----- | --------------------------------------------------------------------------------- |
| `channel`          | لا    | التصفية لقناة واحدة: `electron`، `telegram`، `whatsapp`، `heartbeat`، `procedure` |
| `query`            | لا    | ترتيب المحادثات حسب مطابقات المحتوى لهذه الكلمات المفتاحية                        |
| `after` / `before` | لا    | فقط المحادثات المُحدَّثة في هذا النطاق الزمني (`YYYY-MM-DD`)                      |
| `limit`            | لا    | أقصى عدد محادثات (الافتراضي 20، الأقصى 100)                                       |

## conversation\_read

يقرأ محادثة محددة — الرسائل *و* استدعاءات الأدوات ونتائجها داخلها — مع تقسيم صفحات. كما أنه **يستعيد أدوار المحادثة الحالية** التي طُويت في ملخص متدحرج ولم تعد في سياق النموذج (انظر [ضغط السياق](/ar/architecture/context-compaction)).

| المعامل       | مطلوب | الوصف                                                                                |
| ------------- | ----- | ------------------------------------------------------------------------------------ |
| `id`          | نعم   | معرِّف المحادثة — لاحقة فريدة تكفي                                                   |
| `from` / `to` | لا    | نطاق فهارس الرسائل (الافتراضي: آخر 15 رسالة)                                         |
| `what`        | لا    | `messages` (النص فقط)، `tools` (استدعاءات الأدوات/نتائجها فقط)، أو `all` (الافتراضي) |
| `detail`      | لا    | `brief` (الافتراضي) أو `full` — الكامل يرفع سقوف المقتطفات لكل عنصر                  |

المخرج مُقتطَف؛ تطبع الأداة مرجع `file:` بجانبه، و`memory_get` على ذلك المرجع يُعيد البايتات الكاملة غير المقتطعة.

## memory\_save

أداة الكتابة الوحيدة: تحفظ بشكل دائم حقيقة واحدة مكتفية بذاتها في [ملفات المعرفة](/ar/memory/knowledge) طويلة المدى، مع إزالة التكرار. استخدمها للتفضيلات أو القرارات أو حقائق المشاريع أو تفاصيل الأشخاص — لا لحالة المهام العابرة. الحلقات وسجلات المهام تُسجَّل تلقائيًا.

| المعامل | مطلوب | الوصف                                                                                               |
| ------- | ----- | --------------------------------------------------------------------------------------------------- |
| `fact`  | نعم   | جملة واحدة دائمة ومكتفية بذاتها                                                                     |
| `type`  | لا    | أي ملف معرفة: `projects`، `people`، `preferences`، `technical`، `decisions` (الافتراضي `technical`) |

## usage\_report

إنفاق وولفيش الخاص على نماذج اللغة، مقروءًا من سجل الاستخدام المنظم: الطلبات، الرموز (إدخال/إخراج/ذاكرة مؤقتة)، والتكلفة — إجمالًا ولكل نموذج.

| المعامل            | مطلوب | الوصف                                                    |
| ------------------ | ----- | -------------------------------------------------------- |
| `period`           | لا    | `today` (الافتراضي)، `yesterday`، `week`، `month`، `all` |
| `after` / `before` | لا    | نطاق تاريخ صريح (`YYYY-MM-DD`) — يتجاوز `period`         |

## wolffish\_recall

أُبقي عليه كاسم بديل مستقر بإرغونومية أبسط — البحث بكلمة مفتاحية و/أو التثبيت على يوم واحد. يركب الآن على نفس فهرس `memory_search` (كان سابقًا مسحًا خطيًا فوق \~80 ملفًا على القرص؛ ذلك المسار اختفى).

| المعامل  | مطلوب | الوصف                                                                               |
| -------- | ----- | ----------------------------------------------------------------------------------- |
| `query`  | لا    | كلمات مفتاحية، غير حساسة لحالة الأحرف (اختيارية إذا أُعطي `date`)                   |
| `date`   | لا    | تثبيت النتائج على يوم واحد (`YYYY-MM-DD`)                                           |
| `source` | لا    | `episodes`، `tasks`، `feedback`، `knowledge`، `conversations`، أو `all` (الافتراضي) |
| `limit`  | لا    | أقصى عدد مطابقات (الافتراضي 8، الأقصى 30)                                           |

<Info>
  قدرة introspect تحمل أيضًا أدوات الحالة — `wolffish_status` و`wolffish_performance` و`wolffish_memory` و`wolffish_list_files` — دون تغيير في إعادة التصميم هذه، بالإضافة إلى `channel_status` لاتصال Telegram/WhatsApp/داخل التطبيق الحي (أُصلحت في v1.0.203؛ كانت سابقًا مُعرَّفة لكن غير قابلة للتوجيه).
</Info>

## مثال: "أرسل لي خطة الرحلة"

إشارة مُعرَّفة إلى شيء ليس في السياق — يبحث النموذج أولًا، ثم يتبع المرجع، ثم يُسلِّم:

```
User: "send me the flight plan"

memory_search   query: "flight plan"
  → conversation:conv-8f21…#42 — "…generated the final flight plan PDF…"

conversation_read   id: "8f21"   from: 40   to: 44
  → message 42 shows the tool call that produced files/flight-plan-riyadh.pdf

send_file   path: "files/flight-plan-riyadh.pdf"
```

أنماط أخرى:

* "ماذا قالت سناء على WhatsApp؟" → `memory_search` — رسائل القنوات الواردة مُفهرَسة أيضًا.
* "ماذا فعلنا يوم 18؟" → `wolffish_recall` مع `date: "2026-06-18"`.
* "هل انتهت مهمة النسخ الاحتياطي تلك؟" → `memory_search` مع `sources: "task"`.
* "كم كلَّف اليوم؟" → `usage_report`.
* "ما رقم التأكيد الذي أعطيتك إياه سابقًا؟" (محادثة طويلة) → `conversation_read` على المحادثة الحالية.

## عقيدة الاستدعاء

الاسترجاع **غير مدفوع بطلب صريح** — عقد التشغيل (`agents.core.md`) يُوجِّه النموذج ليُقرِّر الاستدعاء من نية رسالتك، لا لينتظر "ابحث في ذاكرتك":

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

والقواعد الصارمة: لا يدّعي الجهل بماضيه أبدًا دون **بحثين على الأقل بصياغتين مختلفتين**، وإخفاق البحث — مثل خريطة الذاكرة نفسها — هو بيان تغطية، **وليس دليل غياب أبدًا**.

## ما الذي يُفهرَس

يُفهرِس cortex أحد عشر مصدرًا، بدقة القسم/الرسالة:

| المصدر         | يُغطي                                                                                                                                                   |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `episode`      | سجلات النشاط اليومية ([الحلقات](/ar/memory/episodes))                                                                                                   |
| `knowledge`    | [ملفات المعرفة](/ar/memory/knowledge) طويلة المدى                                                                                                       |
| `consolidated` | الخلاصات الأسبوعية ([التجميع](/ar/memory/consolidation))                                                                                                |
| `conversation` | كل رسالة **وكل استدعاء أداة مع مخرجه**، عبر كل القنوات — بما في ذلك رسائل WhatsApp الواردة (مخزن سجل القراءة لكل دردشة، مُفهرَس بأجزاء لكل دردشة)       |
| `task`         | نصوص مهام motor بالإضافة إلى سجلاتها التفصيلية غير المقتطعة                                                                                             |
| `feedback`     | تغذية نتائج الأدوات الراجعة (basalganglia)                                                                                                              |
| `usage`        | صفوف سجل الاستخدام المنظم: الطابع الزمني، المزود، النموذج، الرموز، التكلفة                                                                              |
| `corpus`       | سجلات الأحداث اليومية                                                                                                                                   |
| `log`          | سجلات التطبيق والإضافة (آخر 16KB من كل منها)                                                                                                            |
| `artifact`     | الملفات المُولَّدة والمرفوعة — `files/` و`uploads/` و`screenshots/` و`speech/` — بيانات وصفية ومصدر: الاسم، الحجم، النوع، وقت التعديل، المحادثة المالكة |
| `doc`          | ملفات الهوية، `heartbeat.md`، `run-history.md`، وغيرها من ملفات Markdown في مساحة العمل                                                                 |

**مُستبعد بالتصميم:** `config.json` (الأسرار)، `whatsapp/auth`، حالة Telegram، `.debug`، المجلدات النقطية، و`node_modules`. الملفات الثنائية تُفهرَس كبيانات وصفية فقط، أبدًا لا المحتوى.

الفهرس مُرقَّم بإصدار المخطط: إعادة البناء الكاملة تحدث **فقط** عند ترقية الإصدار (\~1.3 ثانية لمساحة عمل 2GB)؛ التشغيل العادي يُجري فرق mtime/الحجم تزايديًا في \~22 مللي ثانية.

<CardGroup cols={2}>
  <Card title="نظام السياق الرشيق" icon="feather" href="/ar/architecture/lean-context">
    لماذا يحمل الموجه خريطة بدلاً من المحتوى.
  </Card>

  <Card title="كيف تعمل الذاكرة" icon="brain" href="/ar/memory/overview">
    الحلقات والتجميع والمعرفة — طبقات الذاكرة خلف الفهرس.
  </Card>
</CardGroup>
