আমি কীভাবে আমার AI এজেন্টকে একটি ওয়ালেট দিলাম এবং কেন তার সঙ্গে সঙ্গেই মেমরির প্রয়োজন হল

কিছুদিন আগে আমি open-second-brain প্রকাশ করেছিলাম - AI এজেন্টদের জন্য একটি ফাইল-ভিত্তিক মেমরি স্তর। তারপর থেকেই একটা ভাবনা মাথা ঘোরাচ্ছিল। যদি এজেন্ট কোনো VPS-এ, নিজের সময়সূচিতে, Telegram-এর মাধ্যমে চলে - তবে আগে হোক বা পরে তাকে টাকা খরচ করতেই হবে। একটি API কল কিনতে। একটি ইলাস্ট্রেশন জেনারেট করতে। একটি পেইড সার্চ চালাতে।

পেমেন্ট নিজেই অনেক আগে সমাধান হওয়া সমস্যা। pay.sh সাধারণ একটি HTTP কলকে Solana-র উপর USDC মাইক্রোপেমেন্টের মাধ্যমে পেইড কলে মুড়ে দেয়। এজেন্ট pay-এর মধ্য দিয়ে curl চালায়, ওয়ালেট লেনদেন স্বাক্ষর করে, অপর প্রান্ত একটি রেসপন্স ফিরিয়ে দেয়। হয়ে গেল।

কিন্তু “হয়ে গেল” গল্পের অর্ধেক মাত্র।

ওয়ালেটসহ বিশৃঙ্খলা

কল্পনা করুন: এজেন্ট একটি টাস্কে কাজ করছে, পথে গোটা কয়েক সিদ্ধান্ত নিচ্ছে, তার দুটো পেইড কল। এক ঘণ্টা পর আপনি টার্মিনাল খুললেন, scrollback ততক্ষণে স্ক্রিন ছেড়ে উপরে উড়ে গেছে। কোথাও একটা pay ইনভোকেশন হয়েছিল, কোথাও tx সিগনেচার এসেছিল, কোথাও JSON রেসপন্স ফিরে এসেছিল।

এজেন্ট এটা কেন করল? কীসের ভিত্তিতে? কতটা খরচ হবে বলে আশা করেছিল? আসলে কতটা ডেবিট হয়েছে? ফলাফল কোথায়?

এজেন্টকে স্বয়ংক্রিয় কিছুর জন্য বিশ্বাস করতে চাইলে “scrollback পড়ো” কথাটা চলবে না। টার্মিনাল লগ স্ট্রাকচার্ড নয়, টাস্কের সঙ্গে যুক্ত নয়, ইনডেক্স করা যায় না, রিস্টার্ট টেকে না, এবং Obsidian-এ স্বাভাবিক একটি আর্টিফ্যাক্ট হিসাবে খোলা যায় না।

আমি বেশ দ্রুতই বুঝেছিলাম যে কাজটা “এজেন্টকে পেমেন্ট করতে শেখানো” নয় - বরং “নিশ্চিত করা যে প্রতিটি পেমেন্ট পেছনে অর্থবহ একটি চিহ্ন রেখে যায়”।

একজন AI এজেন্ট একটি ডিজিটাল ওয়ালেট ধরে আছে, আর মাইক্রোপেমেন্টের একটি ধারা পরস্পর সংযুক্ত Markdown রসিদ-কার্ডে গিয়ে মিশছে

এই ইলাস্ট্রেশনটি ঠিক সেই উপায়েই তৈরি, যেটির বর্ণনা পোস্টটি দিয়েছে: pay.sh-এর মাধ্যমে, paysponge/fal x402 গেটওয়ে এবং fal-ai/fast-sdxl এন্ডপয়েন্ট ব্যবহার করে। জেনারেশনের খরচ পড়েছে mainnet ওয়ালেট 64FaukkZDUdFTufXF49H1CrHjDfsmBFqfrUjsAS8XrgP থেকে 0.01 USDC; পাবলিক Solana লেনদেনটি হল 5ZYnkabzLvHqEgXNJfKopiRwbGkriHJ2bps2NnkX7HzqQAyTZYjcyJVCTvZwMquyMviv2juyAdbP9P2depHrJxQW। request id ছিল 019e135a-357b-71f3-8b9d-305e728b05fb, এবং জেনারেট হওয়া asset লোকাল-এ image.png নামে সংরক্ষিত হয়েছে।

আর ঠিক এখানেই open-second-brain নিখুঁতভাবে খাপ খেয়ে গেল।

Pay Memory

0.8.0 সংস্করণে OSB একটি নতুন স্তর পেল - Pay Memory। সংক্ষেপে: টাকার জন্য মেমরি।

প্রতিটি পেইড অ্যাকশনের পর vault-এ একটি সাধারণ Markdown ফাইল হাজির হয়, যার মধ্যে থাকে নিচের ফিল্ডগুলো:

এটি SQLite টেবিল নয়, dashboard-ও নয়। এটি সাধারণ Markdown, যা এজেন্টের daily log-এর একই ফোল্ডারে বসে আছে। চোখ দিয়ে খোলা যায়, মন্তব্য করা যায়, Git-এ commit করা যায়, পরে grep দিয়ে খুঁজে নেওয়া যায়, বা প্রমাণ হিসেবে দেখানো যায়।

OSB এখানে কোনো পেমেন্ট সিস্টেমে পরিণত হয় না - সে ওয়ালেট রাখে না, লেনদেন সাইন করে না, enforcement করে না। যা ভালো পারে তা-ই করে: একটি সৎ, মানুষের পড়ার উপযোগী মেমরি ধরে রাখে। pay.sh এজেন্টকে পেইড সম্পদের অ্যাক্সেস দেয়; Pay Memory মানুষকে এক সপ্তাহ পর vault খুলে শান্তভাবে বুঝে নেওয়ার সামর্থ্য দেয়, আসলে কী ঘটেছিল।

ভালো কথা, একটি প্রকৃত receipt ঠিক এমনই দেখায় - পোস্টের শুরুতে দেখানো সেই ইলাস্ট্রেশনের জন্যই। vault থেকে সরাসরি কাঁচা Markdown, কোনো রকম প্রক্রিয়াকরণ ছাড়া। উপরে তালিকাভুক্ত সমস্ত ফিল্ড সহ frontmatter, এবং তার নিচে “কেন”, “policy কী ফেরালো” এবং “আসলে কতটা ডেবিট হল” নিয়ে মানব-ভাষায় লেখা টেক্সট।

Second Brain-এর ভেতরে সেটি এই পথে থাকে:

AI Wiki/
└── payments/
└── 2026-05-10/
└── fal-generate-a-no-text-fast-sdxl-illustration-for-the-techmeat-d.md

কোনো জাদু নেই: তারিখ → ফোল্ডার, slug → ফাইলের নাম। grep, git diff এবং Obsidian-এ সাধারণ নেভিগেশনের জন্য সুবিধাজনক।

একটি নীতি, যেটি বাকি সবকিছুর চেয়েও বেশি গুরুত্বপূর্ণ হয়ে দাঁড়াল

খসড়া বাস্তবায়ন রিভিউ করার সময় আমার চোখ তৎক্ষণাৎ একটি বিষয়ে আটকে গেল: receipt সবসময়ই লিখছিল “Allowed by the configured spending policy” - এমনকি vault-এ কোনো policy না থাকলেও।

শুনতে ছোট ঘটনা মনে হয়। আসলে এটা পুরো উদ্দেশ্যকেই মেরে ফেলে।

Pay Memory হল একটি audit স্তর। একটি audit স্তর ঠিক ততটাই মূল্যবান, যতটা সে সৎ। যে মুহূর্তে receipt আসল গল্পের বদলে সুন্দর একটি গল্প বলতে শুরু করে, সবকিছু ভেঙে পড়ে। তাই নিয়মটা হয়ে দাঁড়াল সরল: ভুলভাবে আত্মবিশ্বাসে allowed লগ করার চেয়ে not_checked লেখা ভালো। policy চেক না হলে - সেটাই লিখো। policy denied ফেরালেও যদি মানুষ হাতে কলটি পার করে দেয় - সেটাও লিখো।

“সুন্দর বর্ণনার” প্রলোভন audit সিস্টেমের প্রধান শত্রু। আর এটাই সম্ভবত আজকের সবচেয়ে গুরুত্বপূর্ণ শিক্ষা - যেটিকে আমি প্রকল্পের অন্যান্য অংশেও বহন করে নিতে চাই।

প্রোডাকশনে একটি বাস্তব পেমেন্ট

দিনের শেষে এই সব কিছু sandbox ফিক্সচার নয়, বাস্তব টাকায় যাচাই করা দরকার ছিল। আমি একটি একদম নতুন Solana ওয়ালেটে দশ সেন্ট USDC পাঠালাম এবং এজেন্টকে বললাম Google Places-এর মাধ্যমে বেলগ্রেডে তিনটি ক্যাফে খুঁজে আনতে।

এক সেকেন্ড পরে তিনটি সত্যিকারের জায়গা ফিরে এল - Artist Specialty Coffee, Dusha, DRIP। Tx mainnet-এ finalised, $0.001 USDC, ব্যালেন্স 0.10 থেকে 0.099-এ নেমে গেল। Solscan-এ সিগনেচার, ক্লিকযোগ্য।

আর তখনই পুরো Pay Memory চেইন সক্রিয় হল: vault-এ আসল সিগনেচারসহ একটি receipt, তিনটি ক্যাফেসহ একটি আলাদা asset note, একটি দৈনিক পেমেন্ট রিপোর্ট এবং Daily-তে দুই ফাইলের লিংকসহ একটি ছোট এন্ট্রি। আমি Obsidian-এ vault খুলতে পারি, proof-এ ক্লিক করতে পারি, এক্সপ্লোরারে আসল পেমেন্ট দেখতে পারি - আর তার ঠিক পাশে, কেন এজেন্ট এটি করেছে তার একটি স্পষ্ট, মানব-ভাষায় বলা গল্প।

এতসব কেন

আমি নিজের জন্য enterprise compliance তৈরি করতে চাইছি না, blockchain-for-everything-ও না। আর্কিটেকচার নিজেই লজ্জাজনকভাবে সহজ - সঠিক ফোল্ডারে কিছু Markdown ফাইল।

কিন্তু এর পেছনের ভাবনাটাই গুরুত্বপূর্ণ।

এজেন্ট যদি ক্রমেই বেশি স্বয়ংক্রিয়ভাবে কাজ করে, তবে তার মেমরিকে কেবল পাঠ্য ক্রিয়াকলাপ নয়, পরিণতিসহ ক্রিয়াকলাপও কাভার করতে হবে: একটি বাহ্যিক সার্ভিস কল, টাকা খরচ, asset তৈরি, approval-এর অনুরোধ। পেমেন্ট কেবল সবচেয়ে স্পষ্ট উদাহরণ, কারণ বিশ্বাসের প্রশ্ন সেখানে সঙ্গে সঙ্গেই উঠে আসে। একই নীতিগুলো সহজেই অনুবাদ হয়ে যায় পোস্ট প্রকাশ, ইমেল পাঠানো, deploy, একটি জেনারেশন অর্ডার, on-chain অপারেশনে।

সংক্ষিপ্ত সংস্করণ:

pay.sh এজেন্টকে পেইড সম্পদের অ্যাক্সেস দেয়। Pay Memory মানুষকে সামর্থ্য দেয় যে এক সপ্তাহ পরে সে বুঝতে পারে এজেন্ট সেই অ্যাক্সেস কেন ব্যবহার করেছিল।

এজেন্ট যদি শুধু টাকা খরচ করে - সেটা ঝুঁকি। আর এজেন্ট যদি টাকা খরচ করে এবং সৎ, পরস্পর সংযুক্ত, মানব-পাঠ্য একটি চিহ্ন রেখে যায় - সেটা ইতিমধ্যেই এমন একটি workflow, যেখানে ধীরে ধীরে বিশ্বাস রাখা শুরু করা যায়।

Pay Memory প্রকাশিত হয়েছে open-second-brain 0.8.0-এর অংশ হিসেবে।