আমার কোডিং এজেন্ট সেশন মনে রাখছিল, কাজ নয়
একটি কোডিং এজেন্ট একটি থ্রেডকে সচল রাখতে পারে, তবুও এটি ভুলে যাওয়ার প্রবণতা দেখাতে পারে।
CliGate তৈরির সময় আমি এই সমস্যার সম্মুখীন হয়েছিলাম। আমি সেশন কন্টিনিউটি (session continuity) ঠিক করেছি, কিন্তু বারবার করা কাজগুলো তখনও ধীরগতির ছিল।
এজেন্টটি কথোপকথন মনে রাখছিল, কিন্তু কাজ মনে রাখছিল না।
সেশন কন্টিনিউটি একটি সমস্যার সমাধান করে। এটি নিচের মতো ফলো-আপ কমান্ডগুলো ব্যবহারের সুযোগ দেয়:
- continue
- এই ফাইলের জন্যও একই কাজ করো
- ওটা আবার চেষ্টা করো
- ত্রুটিটি ব্যাখ্যা করো
এটি কাজের প্রবাহের (flow) জন্য গুরুত্বপূর্ণ। কিন্তু কয়েক দিন পর যখন আপনি কোনো ওয়ার্কফ্লো পুনরায় করেন, তখন এটি ব্যর্থ হয়।
যদি একটি এজেন্ট শেখে যে কোন বাটনটি কাজ করে বা কোন ধাপটি একটি ডেড এন্ড (dead end), তবে একটি মাত্র ওপেন সেশন যথেষ্ট নয়। গতবার কোন কারণে কাজটি সফল হয়েছিল, তা এজেন্টকে মনে করতে হবে।
প্রথমবার রান করা সবচেয়ে ব্যয়বহুল। তখনই এজেন্ট ক্ষুদ্র ক্ষুদ্র বিষয়গুলো খুঁজে পায়:
- একটি নির্দিষ্ট মেনুর ভেতরে কোনো অ্যাকশন লুকিয়ে থাকে
- একটি এডিটর হলো একটি iframe
- একটি প্রজেক্টের জন্য নির্দিষ্ট রিপ্লাই স্টাইল প্রয়োজন
- একটি এনভায়রনমেন্ট URL প্রোডাকশন থেকে আলাদা
আমার সমাধানের আগে, এই বিবরণগুলো ছিল কেবল র (raw) লগ। এজেন্টের কাছে ইতিহাস ছিল, কিন্তু পুনরায় ব্যবহারযোগ্য মেমরি ছিল না। তাকে প্রতিবার একই তথ্য নতুন করে খুঁজে বের করতে হতো। এটি বুদ্ধিমত্তা নয়; এটি একই কাজের জন্য দুবার খরচ করা।
ভুল পদ্ধতি হলো আরও বেশি ইতিহাস সংরক্ষণ করা এবং মডেলটি সেটি ব্যবহার করবে এমন আশা করা। এটি অপ্রয়োজনীয় তথ্য বা নয়েজ (noise) তৈরি করে।
আমার একটি ছোট, পুনরায় ব্যবহারযোগ্য লেয়ার প্রয়োজন ছিল। আমি সবকিছু সেভ করার পরিবর্তে নিচের বিষয়গুলো সেভ করার দিকে মনোযোগ দিই:
- প্রসিডিউরস (procedures): সেরা ধাপগুলো এবং পরিচিত ডেড এন্ডগুলো
- ফ্যাক্টস (facts): URL, নিয়ম বা সেটিংস
- ডিরেক্টিভস (directives): আপনি কীভাবে কাজ করতে চান
- রেফারেন্স (references): ডকুমেন্টেশন কোথায় আছে
এটি সিস্টেমটিকে বদলে দিয়েছে। একটি বিশাল ট্রান্সক্রিপ্ট পড়ার পরিবর্তে, অ্যাসিস্ট্যান্ট এখন একটি ফাইল-ভিত্তিক মেমরি লেয়ার ব্যবহার করে।
আমি কোনো নিখুঁত রিপ্লে চাইনি কারণ ইন্টারফেস পরিবর্তন হয় এবং বাটনগুলোর অবস্থান বদলে যায়। আমি চেয়েছিলাম একটি লুপ:
- আগের সেরা প্রসিডিউরটি মনে করা
- প্রথমে সেটি চেষ্টা করা
- প্রতিটি ধাপ যাচাই করা
- যদি ব্যর্থ হয়, তবে পুনরায় অনুসন্ধানে ফিরে যাওয়া
- সফল হওয়ার পর মেমরি আপডেট করা
আমি সেশন হিস্ট্রি থেকে স্থায়ী নিয়মগুলোকে আলাদা করেছি। "প্রোডাকশন ডেটা স্পর্শ করবেন না"-এর মতো নিয়মগুলো কথোপকথনের প্রেক্ষাপট (context) নয়। এগুলো হলো অপারেটিং রুলস (operating rules)। এগুলো আলাদা করার ফলে অ্যাসিস্ট্যান্টের কাজ আরও অনুমানযোগ্য (predictable) হয়।
ফলাফল: বারবার করা কাজগুলো এখন দ্রুত সম্পন্ন হয়। অ্যাসিস্ট্যান্ট এখন আরও দ্রুত কাজ করে কারণ সে একটি খালি ট্যাকটিক্যাল মডেল দিয়ে শুরু করে না।
আপনি যদি কোডিং এজেন্ট তৈরি করেন, তবে থ্রেড এবং লার্নিং-এর মধ্যে গুলিয়ে ফেলবেন না।
- একটি সেশন কন্টিনিউটি বা ধারাবাহিকতা বজায় রাখতে সাহায্য করে।
- মেমরি বারবার করা কাজে সাহায্য করে।
সেশন কথোপকথনকে সচল রাখে। মেমরি লেয়ার শিক্ষা বা অভিজ্ঞতাগুলোকে সচল রাখে।
আপনার সিস্টেম কি কেবল থ্রেড মনে রাখছে, নাকি সফল প্রসিডিউরটি মনে রাখছে?
উৎস: https://dev.to/codekingai/my-coding-agent-remembered-sessions-not-work-that-was-the-bug-2fig
