عندما يعمل عدة وكلاء انطلاقًا من الحقائق نفسها، تتغير تلك الحقائق ولا يعلم الوكلاء جميعًا بالتغيير في الوقت نفسه. ويوضح موعد استحقاق الدفع المشكلة بجلاء.

لنفترض أن الفاتورة INV-2041 تنص على أن الدفع مستحق في 22 أكتوبر، ثم نقلت رسالة بريد إلكتروني لاحقة من المورد الموعد إلى 29 أكتوبر. يقرأ وكيل الفاتورة، ويقرأ آخر الرسالة، ويجهز ثالث مدفوعات الأسبوع اعتمادًا على ما يجده. يجيب الأول «22 أكتوبر»، والثاني «29 أكتوبر»، أما الثالث فيجيب بالتاريخ الذي عثر عليه أولًا. لا يوجد في هذا الترتيب ما يحدد التاريخ المعتمد، لذا يتعين على الشخص الذي يدير الوكلاء أن يتحقق بنفسه.

اختلقت مثال هذه الفاتورة بعينها، لكن طريقة العمل التي يمثلها حقيقية. أشغّل [وكلاء في ثلاث أدوات](https://markmhendrickson.com/posts/what-my-agentic-stack-actually-does) على مثيل واحد من [Neotoma](https://neotoma.io/). تحفظ عملية تتفقد البريد الرسائل الواردة مع مصادرها، وتحول ما يحتاج منها إلى إجراء إلى مهام؛ ثم تتناول الجلسات في Claude Code وCodex وCursor [المهام والخطط نفسها](https://markmhendrickson.com/posts/the-swarm-that-runs-my-work). ومن هذا الإعداد، ومن عملي على Neotoma بوصفه نظام سجل شاملًا، نشأت هذه المقالة.

![مستند وظرف يرتبط كل منهما ببطاقة حقيقة منفصلة](/images/posts/neotoma-paper/observation.svg "paper|مثال افتراضي · INV-2041|يذكر مصدران أمرين مختلفين عن فاتورة واحدة: يقول ملف PDF إن الاستحقاق في 22 أكتوبر، وتقول رسالة لاحقة إنه في 29 أكتوبر.")

## الاسترجاع مفيد لمهمة أخرى

يجد الاسترجاع مواد تبدو مرتبطة بالسؤال. ويؤدي الفهرس المتجهي أو سجل المحادثة الطويل هذه المهمة جيدًا، ويكفي ذلك لكثير من الأعمال. لكنه لا [يحسم القيمة السارية](https://markmhendrickson.com/posts/agentic-search-and-the-truth-layer). فإذا سألت عن موعد الاستحقاق، أعاد الاسترجاع الفاتورة والرسالة مرتبتين بحسب مدى شبههما بالسؤال، لا بحسب أيهما يعكس الوضع الحالي.

وتزيد الأدوات وبيئات تشغيل الوكلاء المتعددة الأمر صعوبة. يحتفظ وكيل [بملاحظات في ملف Markdown](https://markmhendrickson.com/posts/the-markdown-memory-ceiling)، ويحتفظ آخر بما تعلمه داخل منتج المحادثة الذي يستخدمه، ويقرأ ثالث مجلدًا مشتركًا. كانت كل نسخة صحيحة حين كُتبت. وعندما تتغير الحقيقة، تتغير النسخ في أوقات مختلفة أو لا تتغير إطلاقًا. ولا يستطيع أي وكيل أن يسأل أي نسخة يُعمل بها، إذ لا يوجد موضع يملك جوابًا عن ذلك. يجب أن يكون نظام السجل خارج أي أداة منفردة، في موضع يمكنها جميعًا الوصول إليه.

في بداية هذا العام وصفت Neotoma بأنه [طبقة ذاكرة وطبقة حقيقة](https://markmhendrickson.com/posts/truth-layer-agent-memory). ثم توقفت، لأنني خلصت إلى أن «الذاكرة» ليست التصنيف المناسب له: فهي [تسبب التباسًا](https://markmhendrickson.com/posts/your-ai-remembers-your-vibe-but-not-your-work)، وظل الناس يقارنون Neotoma بمنتجات الذاكرة. ما أحتاج إلى أن يحتفظ به الوكيل هو بيانات دقيقة عن أنواع كثيرة من الأشياء، بصيغة يمكن تدقيقها. والاسم المباشر للموضع الذي يحفظها هو نظام السجل.

هذا ما أعنيه بنظام السجل: يبين ما يسري الآن، ومن أين جاء، وما الذي حل محله. ولا يستطيع البحث بالتشابه الإجابة عن هذه الأسئلة، لأن التشابه لا يقول شيئًا عن الزمن أو المصدر.

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

## ما يفعله Neotoma اليوم

أبني Neotoma، نظام السجل لوكلاء الذكاء الاصطناعي. وهو مفتوح المصدر بترخيص MIT ويعمل محليًا في دليل بيانات تختاره. وما يلي هو ما تفعله الحزمة المنشورة اليوم (الإصدار 0.25.0 على npm).

تُحفظ كل كتابة كمشاهدة جديدة مرتبطة بالمصدر الذي جاءت منه. وتُضاف القيمة الجديدة إلى جانب القديمة بدلًا من الكتابة فوقها. ويمكن لـ Neotoma حفظ [ملف PDF أو رسالة البريد الأصلية](https://github.com/markmhendrickson/neotoma/blob/v0.25.0/docs/developer/source_storage_by_reference.md) إلى جانب الكيانات المنظمة المشتقة منها، مع إبقاء المشاهدات مرتبطة بمصدرها.

تنتمي المشاهدات إلى كيانات. ويُشتق معرّف الكيان من نوع الكيان وحقوله المعرِّفة. وضمن المثيل نفسه وبقواعد الهوية نفسها، تنتج القيم المعرِّفة نفسها المعرّف نفسه على نحو حتمي؛ لذلك يكتب وكيلان يحفظان الفاتورة نفسها إلى الكيان نفسه.

ويمكن أيضًا ربط الكيانات بعضها ببعض: الفاتورة بموردها، أو مهمة متابعة بالفاتورة التي تتعلق بها. ينشئ الوكيل هذه العلاقات صراحة. وهي تصف كيف تتصل السجلات، بينما تُظهر روابط المصادر ملف PDF أو الرسالة وراء المشاهدة.

يطبق Neotoma تلقائيًا قاعدة الدمج المحددة في المخطط لكل حقل ليحسب قيمته السارية من المشاهدات. وفي معظم الحقول تسود أحدث مشاهدة. وإذا كانت المشاهدات وقواعد الدمج هي نفسها، أنتجت عملية الاختزال لقطة الحالة نفسها، من دون أن يُطلب إلى نموذج أن يختار من جديد عند كل قراءة.

يسمي كل حقل سارٍ المشاهدة التي حددته، وتسمي المشاهدة المحفوظة مصدرها. هذا مسار نحو الدليل، وليس إثباتًا على أن الوكيل قرأ الدليل قراءة صحيحة. والتصحيح مشاهدة أخرى، لا تعديل للمشاهدة السابقة، وتبقى القيمة الأقدم مدرجة. ويمكنك أيضًا قراءة كيان كما كان Neotoma قد سجله في وقت سابق.

لنعد إلى الفاتورة. تقع كتابتا الوكيلين في كيان واحد. ويظهر موعد الاستحقاق الآن 29 أكتوبر، مع الإشارة إلى المشاهدة القادمة من الرسالة. ولا يزال المبلغ يشير إلى المشاهدة الأولى، لأنه لم يتغير. يقرأ وكيل المدفوعات 29 أكتوبر، وتبقى مشاهدة 22 أكتوبر مدرجة مع مصدرها.

![فاتورة ورسالة منفصلتان تصل بين كل منهما خيوط دقيقة وبطاقة سجل مميزة](/images/posts/neotoma-paper/invoice-example.svg "paper|السجل الساري · INV-2041|يظهر موعد الاستحقاق الآن 29 أكتوبر. يشير الحقل المتغير إلى المشاهدة اللاحقة. ولا يزال المبلغ آتيًا من المشاهدة الأولى. وتبقى المشاهدتان في السجل.")

يصل الوكلاء إلى Neotoma عبر خادم MCP وواجهة REST API وواجهة سطر الأوامر. ويشرح دليل التثبيت كيفية توصيل الأدوات وبيئات التشغيل المدعومة. وجّه كل أداة إلى المثيل وملف البيانات نفسيهما، أو إلى مدخل MCP نفسه، لتشارك السجلات؛ وقد تستخدم المداخل المنفصلة قواعد بيانات منفصلة.

ويستطيع الناس فحص سجلاتهم في تطبيق Neotoma المرفق.

يمكن أن يثبت [طلب موقّع](https://markmhendrickson.com/posts/know-which-of-your-agents-wrote-what/) مقبول هوية وكيل موثَّقة. وتحدد المنح النشطة المحددة النطاق الإجراءات المسموح بها؛ فالتوقيع وحده ليس إذنًا.

## إلى أين يتجه الأمر

وصفت حتى الآن نظام سجل يحسم الحقائق السارية للوكلاء. والاتجاه المقصود هو نظام سجل يحافظ عليه الناس والوكلاء معًا، يستطيع فيه أي شخص أن يسأل: أي قيمة تسري، وأي مصدر أدخلها، وهل كانت مشاهدة أم استنتاجًا أم قرارًا، ومن امتلك سلطة تصحيحها، وأي وكلاء اعتمدوا على النسخة السابقة. وتتجاوز قدرات الحوكمة المخطط لها الهوية الموقعة والمنح المحددة النطاق والتطبيق الموجودة اليوم:

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

يوسع Ateles هذا الاتجاه على الجانب التشغيلي. ففي [تصميم موصلات Ateles](https://github.com/markmhendrickson/ateles/blob/a3e4d9ed2c33ac867bb67447221d559cbe8c5810/docs/foundation/adapters.md#L14-L22)، تجلب الموصلات معلومات من أنظمة مثل البريد والتقويمات ومضيفي الشيفرة إلى Neotoma، وتحمل الأفعال المصرح بها إلى تلك الأنظمة. يخزن Neotoma السجلات؛ وتؤدي الأدوات المتصلة العمل.

وترد الرؤية الكاملة، مع حالة كل جزء منها اليوم، في [README](https://github.com/markmhendrickson/neotoma#vision-and-execution-status).

![ملكية المجال: صاحب صلاحية يصل إلى أحد قسمين محدودين](/images/posts/neotoma-paper/vision-domain.svg "paper|ملكية المجال|ستوضح ملكية المجال من يحق له تصحيح كل جزء محدود من نظام السجل.")
![تتبع المواقف: يرتبط ادعاءان محفوظان بملف تظهر فيه وضعية محددة بوصفها المختارة](/images/posts/neotoma-paper/vision-positions.svg "paper|تتبع المواقف|سيحتفظ تتبع المواقف بالادعاءات المتنافسة ويتيح فحص موقف محدد صراحة.")
![التفسيرات: يكشف رفع حقل سارٍ أساسه ومجموعة محدودة من الآثار](/images/posts/neotoma-paper/vision-explanation.svg "paper|التفسيرات|ستوضح التفسيرات سبب سريان قيمة ما، والسلطة التي تستند إليها، وأي قيم مترابطة قد يمسها التغيير.")

## نظام سجل، لا مجرد استرجاع

ليست الإجابة فهرسًا أفضل. يساعد الاسترجاع الوكيل في العثور على ما قيل. أما [نظام السجل فيخبره بما يسري الآن](https://markmhendrickson.com/posts/the-spine-of-the-loop). يحتاج الوكلاء العاملون عبر أدوات عدة إلى الوظيفة الثانية، في مكان تصل إليه جميعًا. ولا يفيد نظام السجل إلا إذا كتب الوكلاء فيه وقرؤوا منه.

إذا كنت تستخدم وكلاء في أكثر من أداة أو بيئة تشغيل، فابدأ بسير عمل ترتبط حقائقه وكياناته بعضها ببعض:

```
npm install -g neotoma
neotoma init
neotoma setup --tool claude-code
```

استخدم خيار الإعداد المناسب لأداتك أو بيئة تشغيلك؛ ويغطي دليل التثبيت التكاملات المدعومة الأخرى. ثم احفظ حقائق سير العمل وكياناته المترابطة من وكيل واحد، واقرأها من وكيل آخر متصل بالمثيل المعدّ نفسه وملف البيانات أو مدخل MCP نفسه.

دليل التثبيت في [neotoma.io/install](https://neotoma.io/install?utm_source=site&utm_medium=blog&utm_campaign=essay-system-of-record). وتوجد الشيفرة ومتعقب المشكلات على GitHub في [github.com/markmhendrickson/neotoma](https://github.com/markmhendrickson/neotoma).

> **الغاية**
>
> **Neotoma هو نظام السجل لوكلاء الذكاء الاصطناعي. والغاية أن نوفر للناس والوكلاء فهمًا مشتركًا يمكنهم فحصه وحوكمته: ما المعروف، ولماذا يُعتقد بصحته، وأين يختلفون، ومن يملك سلطة تغييره. ينبغي أن يبقى هذا الفهم بعد أي نموذج أو أداة أو تطبيق بعينه.**
