ذاكرة الوكيل
افتراضياً، كل استدعاء لوكيلك عديم الحالة: يرى الوكيل الرسالة التي أرسلتها للتو فقط. هذا جيد للمهام لمرة واحدة (التصنيف والاستخراج وإجابات مفردة) لكنه ينهار لأي شيء محادثي.
تتضمن DYPAI ذاكرة مضمّنة حتى يتذكّر الوكيل ما قيل سابقاً — إما ضمن محادثة واحدة أو عبر كل محادثة أجراها المستخدم.
أوضاع الذاكرة
| Parameter | Type | Description |
|---|---|---|
none | default | عديم الحالة. كل طلب مستقل. جيد لاستعلامات المرة الواحدة. |
session | mode | ذاكرة بمفتاح session_id. نافذة دردشة واحدة = جلسة واحدة. استخدم لروبوتات الدردشة القياسية. |
user | mode | ذاكرة بنطاق المستخدم المصادَق. يتذكّر الوكيل المستخدم عبر كل جلساته. |
اختر الوضع في حقل Memory لعقدة الوكيل.
كيف تعمل ذاكرة الجلسة
عندما memory_mode = session:
- تولّد واجهتك (أو تخزّن)
session_idلكل محادثة. - في كل مرة يرسل المستخدم رسالة، تمرّر
session_idنفسه. - يحمّل الوكيل الرسائل السابقة لتلك الجلسة ويضيف رسالة المستخدم الجديدة ويستدعي النموذج ويحفظ رد المساعد الجديد.
session_id جديد = محادثة جديدة، دون ذاكرة محمولة. يتولى خطاف useChat() في SDK هذا تلقائياً.
كيف تعمل ذاكرة المستخدم
عندما memory_mode = user:
- لا حاجة لـ
session_id. يستخدم الوكيل معرّف المستخدم المصادَق من JWT. - تُدمَج كل رسالة من ذلك المستخدم في أي مكان في تطبيقك في سجل متدحرج واحد.
- جيد لتجارب «المساعد الشخصي» حيث تريد استمرارية عبر الأيام والأجهزة.
ذاكرة المستخدم تتطلب مصادقة
تحتاج الذاكرة بنطاق المستخدم مستدعياً مصادَقاً. إذا كان endpoint الوكيل public، تتراجع ذاكرة المستخدم إلى عديمة الحالة.
نافذة الذاكرة
تحميل كل الرسائل إلى الأبد سيفجّر نافذة سياق النموذج وفاتورتك للرموز. تتحكم DYPAI بهذا بمقبضين:
| Parameter | Type | Description |
|---|---|---|
memory_window | number (default 20) | الحد الأقصى للرسائل المحمّلة من السجل. تُسقط الرسائل الأقدم. |
memory_max_tokens | number (default 4000) | حد صارم للرموز المحمّلة. إذا تجاوزت إضافة رسالة أخرى هذا، تُسقط. يمنع المحادثات الطويلة من ملء نافذة السياق بالكامل. |
يُطبَّق الحدان معاً — أيهما يُفعَّل أولاً يفوز. يرى الوكيل دائماً أحدث الرسائل.
أين تُخزَّن الذاكرة
تعيش الذاكرة في قاعدة بيانات مشروعك، في جدولي نظام:
system.ai_chats— صف واحد لكل جلسة دردشة، معidوuser_idوendpoint_idوبيانات وصفيةsystem.ai_messages— صف واحد لكل رسالة، معchat_idوroleوparts(تنسيق رسالة Vercel AI SDK الكامل)
تُنشأ هذه الجداول تلقائياً أول مرة يعمل وكيل بذاكرة. يمكنك الاستعلام عنها بـ execute_sql كأي جدول آخر — مفيد لبناء واجهات سجل دردشة أو لوحات إشراف.
سرد المحادثات السابقة
يعطيك SDK خطافاً لسرد جلسات المستخدم السابقة. يأخذ useChatList كائن خيارات (وليس سلسلة موضعية):
import { useChatList } from '@dypai-ai/client-sdk/react'
function ConversationsSidebar() {
const { chats, isLoading, error, deleteChat, renameChat, refetch } =
useChatList({ endpointId: '<endpoint_id>', limit: 50 })
return (
<ul>
{chats.map(c => (
<li key={c.id}>
<a href={`/chat/${c.id}`}>{c.title ?? 'Untitled'}</a>
</li>
))}
</ul>
)
}
يُرجع useChatList({ endpointId, limit, enabled }):
chats— قائمة المحادثاتisLoading/error— حالة التحميلdeleteChat(chatId)— حذف محادثةrenameChat(chatId, title)— إعادة تسمية محادثةrefetch()— إعادة تحميل القائمة
مدمجاً مع useChat('endpoint', { id })، يعطيك هذا «الشريط الجانبي بكل محادثاتي السابقة» بأسلوب ChatGPT الكلاسيكي مجاناً. (خيار الاستئناف هو id، وليس sessionId.)
مسح الذاكرة
يريد المستخدمون أحياناً بداية جديدة. خياراتك، الأسهل أولاً:
- حذف محادثة (موصى به): استدعِ
deleteChat(chatId)منuseChatList. يزيل الدردشة ورسائلها — دون كود خلفية. وصّله بزر «حذف هذه المحادثة». - محادثة جديدة: ابدأ دردشة جديدة بـ
useChat('endpoint', { id: newId })(أو دونid). تبقى المحادثة القديمة مخزَّنة لكنها لا تُحمَّل. - متقدّم (اختياري): احذف الصف مباشرة من
system.ai_chatsبـ SQL (يتسلسل إلى الرسائل) — مفيد للتنظيف بالجملة أو أدوات الإدارة.
الذاكرة واستدعاءات الأدوات
تُخزَّن استدعاءات الأدوات كجزء من المحادثة. عند تحميل الذاكرة، يرى النموذج:
- رسائل المستخدم
- ردود المساعد
- استدعاءات الأدوات التي أجراها المساعد
- نتائج الأدوات المُرجَعة
يعني هذا أن الوكيل يتذكّر البيانات التي جلبها سابقاً ولا يحتاج استدعاء الأداة نفسها مرتين. إذا سأل المستخدم «ما كانت طلباتي مرة أخرى؟»، يمكن للوكيل الإجابة من الذاكرة دون إعادة الاستعلام عن قاعدة بياناتك.
ملاحظات الخصوصية
- الذاكرة بنطاق المشروع — لا يمكن لوكلاء في مشروع رؤية محادثات في آخر.
- ذاكرة المستخدم بنطاق المستخدم — لا يمكن للمستخدمين رؤية سجل بعضهم.
- تُخزَّن بيانات الذاكرة في قاعدة بيانات مشروعك بجانب جداولك العادية. تنطبق نسخك الاحتياطية الحالية وضوابط الوصول وتدفقات حذف البيانات.
- للحذف بأسلوب GDPR، احذف الصفوف من
system.ai_chatsللمستخدم المعني.