loci কী?
loci হলো AI এজেন্টের জন্য একটি টাইপযুক্ত দীর্ঘমেয়াদি মেমরি স্তর। এটি কথোপকথন থেকে স্থায়ী তথ্য বের করে, SQLite-এ সংরক্ষণ করে, পরে মনে করার জন্য সেগুলোর ক্রম নির্ধারণ করে এবং আর উপযোগী নয় এমন তথ্য সরিয়ে দেয়।
প্রকল্পটি এই ধারণার ওপর ভিত্তি করে তৈরি যে স্মৃতির জন্য স্থান ও কাঠামো দুটিই প্রয়োজন। সংরক্ষিত প্রতিটি বক্তব্যকে একইভাবে বিবেচনা না করে, loci পছন্দ, সময়সীমা, লক্ষ্য, সম্পর্ক এবং অন্যান্য তথ্যের ধরন আলাদা করে, যাতে সেগুলো উপযুক্ত জীবনচক্র অনুসরণ করতে পারে।
loci উৎপাদন পরিবেশে Lima-এ ব্যবহৃত মেমরি সিস্টেম থেকে পোর্ট করা হয়েছে এবং নির্দিষ্ট কোনো হোস্ট অ্যাপ্লিকেশনের ওপর নির্ভরশীল না করে পুনর্লিখন করা হয়েছে।
মেমরি সিস্টেম কীভাবে কাজ করে
টাইপযুক্ত মেমরি
প্রতিটি মেমরি আটটি বিভাগের একটির অন্তর্ভুক্ত:
- routine
- study
- preferences
- finance
- goals
- relationships
- constraints
- ephemeral
মেমরির চারটি গুরুত্বস্তর এবং একটি স্ট্যাটাস জীবনচক্রও থাকে। এই কাঠামোর মাধ্যমে সিস্টেম দীর্ঘস্থায়ী কোনো পছন্দকে সাময়িক সময়সীমা বা স্বল্পস্থায়ী তথ্যের চেয়ে আলাদাভাবে পরিচালনা করতে পারে।
দুটি এক্সট্রাকশন পথ
এক্সট্রাকশনে দুটি পদ্ধতি একসঙ্গে কাজ করে। একটি মডেলভিত্তিক এক্সট্রাক্টর অর্থ বোঝার জন্য কথোপকথন পড়ে, আর নিয়মিত-এক্সপ্রেশনভিত্তিক হিউরিস্টিক স্পষ্টভাবে সমর্থিত বাক্যরীতি শনাক্ত করে। ফলাফল একত্র করা হয়, যেখানে মডেলের আউটপুট অগ্রাধিকার পায়।
মডেল প্রদানকারী অনুপলব্ধ থাকলেও regex পথটি চলতে পারে। মডেল কল, প্রদানকারীর SDK এবং API key ইচ্ছাকৃতভাবে হোস্ট অ্যাপ্লিকেশনের ওপর ছেড়ে দেওয়া হয়েছে; হোস্ট অ্যাপ্লিকেশন একটি ModelExtractor ইনজেক্ট করতে পারে।
ফিল্টারিং, র্যাঙ্কিং এবং ক্ষয়
একটি write filter ক্ষণস্থায়ী মনোভাব ও অনুরূপ স্বল্পস্থায়ী বক্তব্যকে স্থায়ী প্রোফাইল ডেটায় পরিণত হতে বাধা দেয়। উদাহরণস্বরূপ, “আজ ক্লান্ত” বক্তব্যটি কয়েক ঘণ্টার জন্য সত্য হতে পারে, কিন্তু কয়েক মাস পরে বিভ্রান্তিকর হতে পারে।
মডেল কনটেক্সটে মেমরি যোগ করার সময় loci ফলাফল বারোটি তথ্যের মধ্যে সীমিত রাখে। প্রথমে গুরুত্ব অনুযায়ী র্যাঙ্ক করা হয়, এরপর সময়সীমা কতটা কাছে এবং সাম্প্রতিকতা বিবেচনা করা হয়। এই সীমা প্রম্পটের আকার অনিয়ন্ত্রিতভাবে বেড়ে যাওয়া ঠেকায়।
দৈনিক একত্রীকরণ ও ক্ষয় স্টোরটিকে কার্যকর রাখে:
- হুবহু ডুপ্লিকেট একত্র করা হয়।
- নিশ্চিত না হওয়া অনুমানগুলো শেষ পর্যন্ত মেয়াদোত্তীর্ণ হয়।
- ক্ষণস্থায়ী তথ্যের ২৪ ঘণ্টার time-to-live থাকে।
- সম্পন্ন লক্ষ্য ৯০ দিন পর মেয়াদোত্তীর্ণ হয়।
একটি ইন্টিগ্রেশন বেছে নিন
loci একটি অভিন্ন কোর এবং দুটি অ্যাডাপ্টার সরবরাহ করে।
MCP সার্ভার
MCP অ্যাডাপ্টার যেকোনো সামঞ্জস্যপূর্ণ MCP ক্লায়েন্টের সঙ্গে কাজ করে। এটি তিনটি টুল প্রকাশ করে: remember, recall এবং forget।
MCP অনুরোধ-ও-উত্তরভিত্তিক, তাই এতে স্বয়ংক্রিয় end-of-turn হুক নেই। এজেন্টকে ইচ্ছাকৃতভাবে remember কল করতে হয়। অনুরোধের ভিত্তিতে মেমরি মনে করে কনটেক্সটে ইনজেক্ট করা যায়।
Hermes প্লাগইন
Hermes অ্যাডাপ্টার একই তিনটি টুল সরবরাহ করে, তবে এটি স্বয়ংক্রিয় এক্সট্রাকশন সমর্থন করে এবং প্রতিটি কলের আগে কনটেক্সট ইনজেক্ট করে। এটি সম্ভব, কারণ Hermes একটি post_llm_call হুক সরবরাহ করে, যা মডেল উত্তর দেওয়ার পর একটি কথোপকথন পরিদর্শন করতে পারে।
সরাসরি Python ইন্টিগ্রেশন
এজেন্ট লুপ আপনার নিয়ন্ত্রণে থাকলে এবং কখন এক্সট্রাকশন, স্থায়ীকরণ, রিকল ও কনটেক্সট ইনজেকশন হবে তা নিজে নির্ধারণ করতে চাইলে কোর লাইব্রেরি সরাসরি ব্যবহার করুন।
ইনস্টলেশন ও সেটআপ
কোর প্যাকেজ ইনস্টল করুন
pip install mowave-lociMCP সাপোর্ট ইনস্টল করুন
pip install mowave-loci[mcp]MCP extra ইনস্টল করার পর আপনার MCP ক্লায়েন্ট কনফিগারেশনে loci যোগ করুন:
{
"mcpServers": {
"loci": {
"command": "python",
"args": ["-m", "loci.adapters.mcp_server.server"]
}
}
}ক্লায়েন্টটি পুনরায় চালু বা রিলোড করুন, যাতে এটি remember, recall এবং forget টুলগুলো শনাক্ত করতে পারে।
Hermes প্লাগইন ইনস্টল করুন
hermes plugins install <you>/loci
hermes plugins enable lociআপনার ইনস্টলেশনের উপযুক্ত প্লাগইন রিপোজিটরি বা সোর্স দিয়ে <you>/loci প্রতিস্থাপন করুন।
স্টোরেজ কনফিগার করুন
ডিফল্টভাবে, loci ~/.loci/memory.db-এ একটি SQLite ডেটাবেসে মেমরি সংরক্ষণ করে। ভিন্ন ফাইল ব্যবহার করতে LOCI_DB এনভায়রনমেন্ট ভেরিয়েবল সেট করুন।
export LOCI_DB=/path/to/memory.dbআলাদা কোনো ডেটাবেস সার্ভারের প্রয়োজন নেই।
Python-এ প্রাথমিক ব্যবহার
কোর ওয়ার্কফ্লো হলো একটি স্টোর তৈরি করা, সম্ভাব্য মেমরি এক্সট্রাক্ট করা, সেগুলো ফিল্টার করা, গৃহীত মেমরি সংরক্ষণ করা এবং সক্রিয় মেমরি সিস্টেম প্রম্পটে যোগ করা।
from loci import Store, extract, should_persist, context_block
store = Store()
for memory in extract(
"eu prefiro respostas curtas",
assistant_text=reply,
):
if should_persist(memory):
store.upsert(memory)
system_prompt += "\n\n" + context_block(store.active())এই উদাহরণে, reply বলতে কথোপকথনের সঙ্গে যুক্ত অ্যাসিস্ট্যান্টের টেক্সট বোঝায়। পর্তুগিজ ব্যবহারকারীর বার্তাটির অর্থ হলো ব্যবহারকারী সংক্ষিপ্ত উত্তর পছন্দ করেন।
Store()কনফিগার করা SQLite মেমরি স্টোর খোলে।extract(...)কথোপকথন থেকে সম্ভাব্য মেমরি তৈরি করে।should_persist(memory)write filter প্রয়োগ করে।store.upsert(memory)গৃহীত মেমরি যোগ বা আপডেট করে।store.active()সক্রিয় মেমরি পুনরুদ্ধার করে।context_block(...)প্রম্পটে ইনজেকশনের জন্য ওই মেমরিগুলো ফরম্যাট করে।
MCP টুল ব্যবহার
MCP সার্ভার কনফিগার করার পর, সংযুক্ত এজেন্ট তিনটি অপারেশন ব্যবহার করতে পারে:
- remember: স্থায়ীভাবে সংরক্ষণ করা উচিত এমন কোনো তথ্য ইচ্ছাকৃতভাবে সংরক্ষণ করুন।
- recall: প্রাসঙ্গিক হলে সংরক্ষিত তথ্য পুনরুদ্ধার করুন।
- forget: আর সংরক্ষণ করা উচিত নয় এমন তথ্য মুছে ফেলুন।
MCP অ্যাডাপ্টার স্বয়ংক্রিয়ভাবে মেমরি আহরণ করে না। তাই এজেন্টের নির্দেশনায় স্পষ্ট করে বলা উচিত, কখন এজেন্টের remember কল করার প্রত্যাশা করা হচ্ছে। প্রতিটি সম্পন্ন কথোপকথনের ধাপ পরীক্ষা করে সংরক্ষণ করা হবে—এমনটা ধরে নেবেন না।
উন্নত ইন্টিগ্রেশন টিপস
প্রোভাইডার-সংক্রান্ত লজিক কোরের বাইরে রাখুন
loci কোরে কেবল Python-এর স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করা হয়। মডেল কল, API কী এবং প্রোভাইডারের SDK আপনার অ্যাপ্লিকেশনের দায়িত্ব। সেমান্টিক এক্সট্রাকশনের জন্য মডেলের প্রয়োজন হলে কোরে প্রোভাইডার-নির্ভরতা যোগ না করে হোস্ট থেকে একটি ModelExtractor ইনজেক্ট করুন।
হোস্ট থেকে লাইফসাইকেল জব চালান
loci মেমরির কাঠামো, কনসলিডেশন এবং ক্ষয় হওয়ার আচরণ নির্ধারণ করে, কিন্তু দৈনিক কাজের সময়সূচি নির্ধারণ করে না। দৈনিক জব চালু করতে হোস্টের cron, s6, systemd বা সমতুল্য শিডিউলার ব্যবহার করুন।
কনটেক্সট সীমা বজায় রাখুন
প্রতিটি প্রম্পটে সম্পূর্ণ ডেটাবেস যোগ করে র্যাঙ্ক করা কনটেক্সট ব্লককে পাশ কাটাবেন না। গুরুত্বপূর্ণ, সময়োপযোগী এবং সাম্প্রতিক তথ্যকে অগ্রাধিকার দেওয়ার পাশাপাশি কনটেক্সটের বৃদ্ধি নিয়ন্ত্রণ করার জন্য বারোটি তথ্যের সীমা রাখা হয়েছে।
উপযুক্ত অ্যাডাপ্টার ব্যবহার করুন
- MCP ক্লায়েন্টগুলোর মধ্যে পোর্টেবিলিটি গুরুত্বপূর্ণ হলে এবং স্পষ্ট মেমরি অপারেশন গ্রহণযোগ্য হলে MCP বেছে নিন।
- মডেল কলের পরে স্বয়ংক্রিয় এক্সট্রাকশন এবং প্রতিটি কলের আগে মেমরি ইনজেকশন চাইলে Hermes বেছে নিন।
- আপনার অ্যাপ্লিকেশন এজেন্ট লুপ পরিচালনা করলে এবং স্থায়িত্ব ও প্রম্পট তৈরির ওপর সূক্ষ্ম নিয়ন্ত্রণের প্রয়োজন হলে সরাসরি Python API বেছে নিন।
ট্রান্সপোর্ট ও সেশন হোস্টের দায়িত্বে রাখুন
এজেন্ট লুপ, টুল ডিসপ্যাচ, সেশন, ট্রান্সপোর্ট এবং প্রমাণীকরণ কোরের দায়িত্বের বাইরে। Hermes, OpenClaw বা Claude Code-এর মতো হোস্টগুলো পারিপার্শ্বিক রানটাইম পরিচালনা করে, আর অ্যাডাপ্টারগুলো হোস্ট-নির্দিষ্ট ট্রান্সপোর্ট ও প্রমাণীকরণ সামলায়।
টেস্ট স্যুট চালান
pytest -qপ্রকল্পটিতে 92টি টেস্ট রয়েছে, যা একটি অস্থায়ী ফাইলে থাকা বাস্তব SQLite স্টোরের বিরুদ্ধে চলে। স্টোরটি মক করা হয়নি, ফলে প্রকৃত ডিপ্লয়মেন্টে ব্যবহৃত একই স্টোরেজ প্রযুক্তির বিরুদ্ধে আচরণ যাচাই করা যায়।
উপসংহার
আলাদা সার্ভারের প্রয়োজন ছাড়াই loci AI এজেন্টগুলোকে একটি সংক্ষিপ্ত, টাইপযুক্ত এবং স্থায়ী মেমরি স্তর দেয়। এর শেয়ার্ড কোর মেমরির কাঠামো ও লাইফসাইকেল পরিচালনা করে, আর MCP, Hermes বা আপনার নিজস্ব Python এজেন্ট পারিপার্শ্বিক রানটাইম সরবরাহ করে। আপনার হোস্টের সঙ্গে সামঞ্জস্যপূর্ণ অ্যাডাপ্টার দিয়ে শুরু করুন, এক্সট্রাকশন ও শিডিউলিংয়ের দায়িত্ব স্পষ্ট রাখুন এবং মেমরি যাতে প্রম্পটকে অতিরিক্ত ভারাক্রান্ত না করে তা নিশ্চিত করতে র্যাঙ্ক করা কনটেক্সট ইনজেকশন ব্যবহার করুন।
