LLM এজেন্টের কনটেক্সট উইন্ডো: এতে কী ঢোকে এবং এজেন্ট কেন নিয়ম ভুলে যায়
LLM কনটেক্সট উইন্ডো হলো সেই পুরো লেখা, যা মডেল প্রতিটি উত্তরের সময় দেখে: সিস্টেম প্রম্পট, নির্দেশনা-ফাইল, কথোপকথনের ইতিহাস, পড়া ফাইল এবং টুলের আউটপুট। এর টোকেনে একটি কঠোর সীমা আছে, কিন্তু মনোযোগের মান সেই সীমার অনেক আগেই কমে যায়; তাই দীর্ঘ সেশনে এজেন্ট নিয়ম হারায়। সাহায্য করে ছোট নির্দেশনা, কম্প্যাকশন, ফাইল-পরিকল্পনাসহ নতুন সেশন এবং ভারী কাজ সাবএজেন্টে দেওয়া।
LLM কনটেক্সট উইন্ডো কী
কনটেক্সট উইন্ডো হলো সেই পুরো লেখা, যা মডেল প্রতিটি পরবর্তী উত্তর তৈরির সময় ইনপুট হিসেবে পায়। মডেলের মানুষের অর্থে কোনো স্মৃতি নেই: আপনার কাজ সম্পর্কে সে এই মুহূর্তে যা «জানে», তা এই উইন্ডোর ভেতরেই আছে। উইন্ডোতে যা নেই, মডেলের কাছে তার অস্তিত্ব নেই।
উইন্ডোর আকার টোকেনে মাপা হয় — শব্দের টুকরো। বাংলা বা রুশ লেখায় একটি টোকেন ইংরেজির তুলনায় সাধারণত ছোট, তাই একই নির্দেশনার খরচ বেশি টোকেন লাগতে পারে। আধুনিক মডেলের উইন্ডো লাখো টোকেনের, তাই মনে হয় জায়গা সবকিছুর জন্য যথেষ্ট। বাস্তবে এজেন্টের জায়গা প্রত্যাশার চেয়ে দ্রুত ফুরোয়, এবং সে কাজ খারাপ করা শুরু করে তারও আগে।
এজেন্টের কনটেক্সট উইন্ডোতে কী ঢোকে
কোডিং এজেন্টের তথ্যের উৎস ঠিক তিনটি: কাজের বর্ণনাসহ সিস্টেম প্রম্পট, তার পড়া ফাইলের বিষয়বস্তু, এবং তার কল করা টুলের আউটপুট। তিনটিই একই উইন্ডোতে থাকে এবং জায়গার জন্য প্রতিযোগিতা করে।
| কী | কখন ঢোকে | সাধারণত কতটা খরচ হয় |
|---|---|---|
| এজেন্টের সিস্টেম প্রম্পট ও টুলের বর্ণনা | প্রতিটি সেশনের শুরুতে | নির্দিষ্ট স্থায়ী খরচ, আপনার উপর প্রায় নির্ভর করে না |
| CLAUDE.md, AGENTS.md ও অন্যান্য নির্দেশনা-ফাইল | সেশনের শুরুতে, পুরোটা | শত থেকে দশ হাজার টোকেন — আপনার উপর নির্ভর করে |
| আপনার বার্তা ও এজেন্টের উত্তর | পুরো কথোপকথন জমে | প্রতিটি বার্তায় বাড়ে |
| পড়া ফাইল | যখন এজেন্ট খোলে | বড় ফাইল — একবারে হাজার হাজার টোকেন |
| কমান্ডের আউটপুট: টেস্ট, লগ, বিল্ড, grep | প্রতিটি কলের পরে | প্রায়ই সবচেয়ে বড় ও সবচেয়ে অকেজো অংশ |
মূল কথা: এর কিছুই নিজে থেকে মুছে যায় না। বিশ ধাপ আগের যে ব্যর্থ টেস্টের লগ দরকার ছিল, তা এখনো উইন্ডোতে পড়ে আছে এবং বর্তমান ধাপের মনোযোগ কেড়ে নিচ্ছে। দীর্ঘ সেশন হলো ক্রমাগত বড় হতে থাকা একটি স্তূপ, যেখানে সূঁচ খুঁজে পাওয়া ক্রমশ কঠিন।
কেন দীর্ঘ সেশনে এজেন্ট নিয়ম ভুলে যায়
একটি সাধারণ অভিযোগ: সেশনের শুরুতে এজেন্ট CLAUDE.md-এর নিয়ম যত্ন করে মানে, কিন্তু এক ঘণ্টা কাজের পর ভাঙতে শুরু করে। সে আসলে নিয়ম «ভুলে যায়» না — নিয়মের লেখা তখনো উইন্ডোতে আছে। সমস্যা হলো, মডেল দীর্ঘ লেখার উপর মনোযোগ কীভাবে ভাগ করে।
Lost in the middle
Liu ও সহ-লেখকদের ২০২৩ সালের একটি গবেষণা দেখিয়েছে: ভাষা-মডেল দীর্ঘ কনটেক্সটের শুরু ও শেষের তথ্য মধ্যভাগের তথ্যের চেয়ে অনেক ভালোভাবে ব্যবহার করে। নির্দেশনা-ফাইল সেশনের শুরুতে লোড হয়, কিন্তু কথোপকথন চললে উপরে ও নিচে আরও বেশি লেখা জমে। যে নিয়ম একসময় চোখের সামনে ছিল, তা ধীরে ধীরে সেই অঞ্চলে পড়ে যায় যেখানে মডেল সবচেয়ে কম দেখে।
নিয়মের অংশ উইন্ডোতে কমে
নতুন সেশনে নির্দেশনা কনটেক্সটের বড় অংশ। একশো টুল কলের পরে সেগুলো লগ, ডিফ ও পড়া কোডের বিশাল স্তূপে ছোট একটি টুকরো। সংকেত একই, কিন্তু চারপাশের শব্দ কয়েকগুণ বেশি।
সাম্প্রতিক উদাহরণ পুরোনো নিয়মকে ছাড়িয়ে যায়
মডেল কথোপকথনে সম্প্রতি যা ঘটেছে তার উপর খুব বেশি নির্ভর করে। যদি এজেন্ট কয়েকবার পরপর নিয়মের বাইরে গিয়ে কিছু করে এবং তা পার পেয়ে যায়, সেই প্যাটার্ন ইতিহাসে এমন ওজন পায় যে শুরুর দিকে কোথাও থাকা একটি নির্দেশনার লাইনের চেয়ে বেশি প্রভাব ফেলে।
Context rot: উইন্ডো ভরার সাথে গুণগত মান কমা
Context rot («কনটেক্সটের পচন») — এমন প্রভাব, যেখানে উইন্ডো ভরার সাথে মডেলের উত্তরের মান কমে, যদিও প্রযুক্তিগত সীমা এখনো অনেক দূরে। মডেল formally ২ লাখ টোকেন গ্রহণ করে, কিন্তু ১৫ হাজার টোকেনে যতটা ভালো কাজ করে, ১৫০ হাজারে তার চেয়ে খারাপ: বেশি ভুল করে বিস্তারিত, পুনরাবৃত্তি করে আগে বাতিল হওয়া সমাধান, নির্দেশনা হারায়।
সেশন «পচে গেছে» তার লক্ষণ:
- এজেন্ট এমন পদ্ধতির প্রস্তাব দেয়, যা আপনারা আধঘণ্টা আগে একসাথে বাতিল করেছেন;
- আগে আলোচিত ফাইল বা ফাংশনের নাম গুলিয়ে ফেলে;
- যেসব যাচাই শুরুতে নিজে চালাত, সেগুলো চালানো বন্ধ করে;
- উত্তর লম্বা ও আবছা হয়, অপ্রয়োজনীয় «পাশাপাশি ঠিক করেছি» যোগ হয়।
এর চিকিৎসা হিসেবে আরেকটি নিয়ম যোগ করা অকেজো: নতুন নিয়মও একই শব্দের স্তূপে হারিয়ে যাবে। শব্দের স্তূপ কমাতে হবে।
কনটেক্সট কম্প্যাকশন
কম্প্যাকশন হলো সেশনের ইতিহাস সংকোচন: মডেল ঘটে যাওয়া বিষয়ের একটি সংক্ষিপ্ত সারাংশ লেখে, এবং কথোপকথন পূর্ণ ইতিহাসের বদলে সেই সারাংশ নিয়ে এগোয়। উইন্ডোতে জায়গা খালি হয়, এবং কাজের মূল বিষয় বেঁচে থাকে বলে মনে হয়।
Claude Code-এ এর জন্য আছে /compact কমান্ড, যেখানে সংকোচনের সময় কোন বিষয়ে জোর দিতে হবে তার ইঙ্গিত দেওয়া যায়। উইন্ডো সীমার কাছে গেলে Claude Code নিজে থেকেও কম্প্যাকশন করে। /clear পুরো ইতিহাস মুছে নতুন করে শুরু করে, আর /context দেখায় উইন্ডোর কতটা জায়গা কীসে দখল।
/context
/compact সংরক্ষণ করো: কাজের লক্ষ্য, সিদ্ধান্ত ও তার কারণ, পরিবর্তিত ফাইলের তালিকা, যাচাই বাকি কী আছে
/clear
কম্প্যাকশনের ঝুঁকি
সারসংক্ষেপে সবসময় বিবরণ হারায়। বাদ পড়তে পারে বাতিল হওয়া বিকল্প এবং বাতিলের কারণ, প্রয়োজনীয়তার সুনির্দিষ্ট শব্দবন্ধ, বা কথার ফাঁকে একমত হওয়া কোনো সূক্ষ্ম বিষয়। কম্প্যাকশনের পরে এজেন্ট নিজের সেশনের অন্যের লেখা সারাংশ নিয়ে কাজ করে। তাই গুরুত্বপূর্ণ জিনিস কথোপকথনের ইতিহাসে না রেখে এমন ফাইলে রাখা ভালো, যা যেকোনো কম্প্যাকশন টিকে যায়।
কম্প্যাকশন নাকি নতুন সেশন
| পরিস্থিতি | কী করবেন |
|---|---|
| কাজ প্রায় শেষ, আরেকটু জায়গা দরকার | কী রাখতে হবে তার ইঙ্গিতসহ কম্প্যাকশন |
| একটি কাজ শেষ, এরপর আরেকটি শুরু করছেন | নতুন সেশন, পুরোনো ইতিহাস শুধু বাধা দেয় |
| সেশন «পচে গেছে», এজেন্ট ঘুরছে | অবস্থা পরিকল্পনা-ফাইলে লিখে নতুন সেশন |
| কোড বা লগ নিয়ে দীর্ঘ অনুসন্ধান দরকার | অনুসন্ধানটি সাবএজেন্টকে দিন |
কীভাবে কনটেক্সট উইন্ডো বাঁচাবেন
কনটেক্সট বাঁচানো টোকেনের খরচের বিষয় নয়, কাজের মানের বিষয়। উইন্ডোতে যত কম শব্দের স্তূপ, কাজ ও নিয়মের জন্য তত বেশি মনোযোগ।
১. ছোট রাউটার-নির্দেশনা ফাইল
প্রবেশপথের CLAUDE.md বা AGENTS.md প্রতিটি সেশনে পুরোটা পড়া হয়। ৬০০ লাইনের ফাইল মানে প্রতি সেশনে প্রায় ১০–২০ হাজার টোকেনের স্থায়ী খরচ। এতে রাখুন যাচাইয়ের কমান্ড, কঠোর নিষেধ এবং প্রকল্পের মানচিত্র; বিষয়ভিত্তিক বিস্তারিত আলাদা নথিতে রাখুন, যা এজেন্ট শুধু প্রয়োজনে খোলে।
২. চাহিদামতো লোড হওয়া জ্ঞান
Claude Code skills-এ প্রথমে কনটেক্সটে শুধু তাদের ছোট বিবরণ যায়, আর সম্পূর্ণ নির্দেশনা লোড হয় যখন কাজের জন্য স্কিলটি দরকার হয়। বিরল পদ্ধতি — ডেপ্লয়, মাইগ্রেশন, রিলিজ — হাতের কাছে রাখার এটি সুবিধাজনক উপায়, প্রতি সেশনে এর খরচ না দিয়ে।
৩. ভারী কাজের জন্য সাবএজেন্ট
সাবএজেন্ট নিজের আলাদা কনটেক্সট উইন্ডোতে কাজ করে এবং মূল সেশনে শুধু ফলাফল ফেরত দেয়। বড় কোডে অনুসন্ধান, লম্বা লগ বিশ্লেষণ, অচেনা মডিউল পড়া — সবই সাবএজেন্টকে দেওয়া যায়, আর উত্তরে পাওয়া যায় হাজার লাইনের কাঁচা আউটপুটের বদলে কয়েক অনুচ্ছেদের সিদ্ধান্ত।
৪. নীরব টুল আউটপুট
কমান্ডের আউটপুট উইন্ডোর প্রধান খরচ। যাচাইয়ের কমান্ড এমনভাবে সাজান, যাতে সফল হলে একটি লাইন ছাপে, আর ব্যর্থ হলে শুধু মূল কথা: ব্যর্থ টেস্ট ও তার বার্তা, পুরো বিল্ড লগ নয়।
# শব্দবহুল: প্রতিটি চালনায় হাজার লাইন উইন্ডোতে
pytest -v
# নীরব: সফল হলে এক লাইন, ব্যর্থ হলে শুধু ব্যর্থ টেস্ট
pytest -q --tb=short
# লগ — পুরোটা নয়, শুধু শেষ অংশ ও ত্রুটি
tail -n 50 app.log | grep -i error
৫. এক কাজ — এক সেশন
একটি সেশনে তিনটি সম্পর্কহীন কাজ টেনে নেবেন না। প্রথম কাজের ইতিহাস তৃতীয়টির জন্য অকেজো, কিন্তু জায়গা নেয় এবং এজেন্টকে বিভ্রান্ত করে। শেষ হলে ফলাফল সংরক্ষণ করুন, তারপর নতুন সেশন খুলুন।
৬. ইতিহাসে নয়, ফাইলে অবস্থা
যা কম্প্যাকশন ও নতুন সেশনে টিকে থাকা দরকার, তা রিপোজিটরিতে লিখুন: লক্ষ্য, সিদ্ধান্ত ও তার কারণ, বাতিল বিকল্প, কী করা হয়েছে ও কীভাবে যাচাই হয়েছে, পরের ধাপ। যেমন PLAN.md ও PROGRESS.md-এ। তাহলে নতুন সেশন পুনরাবৃত্তির বদলে সুনির্দিষ্ট নথি দিয়ে শুরু করে, এবং আপনি নির্ভয়ে ইতিহাস পরিষ্কার করতে পারেন।
# PROGRESS.md
## লক্ষ্য
ছাড়ের হিসাব পূর্ণ পয়সায় করা
## করা হয়েছে (যাচাইকৃত)
- app/payments/discount.py: float → int, make test সবুজ
- মাইগ্রেশন 041 যোগ হয়েছে, লোকালি প্রয়োগ হয়েছে
## সিদ্ধান্ত
- রাউন্ডিং — ব্যাংকিং ধরনের, পেমেন্ট প্রোভাইডারের মতো
## বাতিল
- মডেলে Decimal: webhook-এর সিরিয়ালাইজেশন ভেঙে দেয়
## পরের ধাপ
অর্ডার চেকআউটের e2e-স্ক্রিপ্ট আপডেট করা এবং make e2e চালানো
গুরুত্বপূর্ণ নিয়ম শুধু উইন্ডোতে থাকলে চলে না
সবচেয়ে সুসংগঠিত কনটেক্সটও নিয়মের মানা নিশ্চিত করে না: উইন্ডোর লেখা মডেলের উপর প্রভাব, কার্যকর নিষেধ নয়। যদি লঙ্ঘন অগ্রহণযোগ্য হয়, নিয়মটি যান্ত্রিকভাবে যাচাই হওয়া দরকার। Claude Code-এ এর জন্য আছে হুক — এজেন্টের ঘটনায় চলা কমান্ড, যা কাজ আটকাতে পারে — এবং অনুমতির সেটিং, যা নির্দিষ্ট টুল বা কমান্ড নিষেধ করে। লিন্টার, টেস্ট ও CI এজেন্টের উইন্ডোতে কী ঘটছে তার উপর নির্ভর না করে কাজ করে।
হারনেসের একটি ভালো নিয়ম: যা স্বয়ংক্রিয়ভাবে যাচাই করা যায়, তা স্বয়ংক্রিয়ভাবেই যাচাই হোক, আর কনটেক্সটে শুধু সেটুকুই থাকুক যা বিচার-বুদ্ধি দাবি করে।
সারসংক্ষেপ
LLM কনটেক্সট উইন্ডো হলো একমাত্র জায়গা, যেখানে এজেন্ট আপনার কাজ দেখে, এবং তা আপনার ধারণার চেয়ে দ্রুত ভরে ওঠে: নির্দেশনা, ইতিহাস, পড়া ফাইল ও কমান্ডের আউটপুট সেশনের শেষ পর্যন্ত জমে। মান সীমার অনেক আগেই কমে, মাঝখানের নিয়ম হারিয়ে যায়, আর কম্প্যাকশন জায়গা বাঁচায় বিবরণের বিনিময়ে। নির্দেশনা ছোট রাখুন, বিরল জ্ঞান চাহিদামতো লোড করুন, ভারী কাজ সাবএজেন্টকে দিন, অবস্থা ফাইলে রাখুন, আর গুরুত্বপূর্ণ নিয়ম হুক ও যাচাই দিয়ে সমর্থন করুন। এজেন্টের কনটেক্সট নিয়ে কাজ হাতে-কলমে harness engineering কোর্সে আলোচিত হয়।
সাধারণ প্রশ্ন
Claude-এর কনটেক্সট উইন্ডোতে কত টোকেন?
এটি মডেল ও প্ল্যানের ওপর নির্ভর করে; একটি সাধারণ মান প্রায় ২ লাখ টোকেন, কিছু মডেল ও কনফিগারেশনে বেশি। নির্দিষ্ট মডেলের সঠিক মান Anthropic-এর ডকুমেন্টেশনে দেখুন।
বড় উইন্ডো কি ভোলা নিয়মের সমস্যা মেটায়?
আংশিকভাবে: জায়গা বেশি, কিন্তু lost in the middle ও context rot-এর প্রভাব থাকে। বড় উইন্ডো ছোট নির্দেশনা ও পরিষ্কার সেশনের বিকল্প নয়।
এজেন্ট একটি নিয়ম ভাঙলে তা কি বার্তায় আবার লিখতে হবে?
একবারের স্মরণ কাজ করে, কারণ কনটেক্সটের শেষে থাকা তাজা লেখা মডেল ভালো দেখে। কিন্তু বারবার মনে করাতে হলে নিয়মটি যাচাই বা হুক দিয়ে সুরক্ষিত করা উচিত।
Claude Code-এ কী দিয়ে জানব উইন্ডোর কত জায়গা কীসে দখল?
/context কমান্ড দেখায় সিস্টেম প্রম্পট, টুল, মেমরি ফাইল ও বার্তার ইতিহাস কত জায়গা নিচ্ছে। ফুলে ওঠা CLAUDE.md বা দীর্ঘ ইতিহাস উইন্ডো খাচ্ছে কি না, তা দ্রুত দেখার উপায় এটি।
কম্প্যাকশনে সবচেয়ে আগে কী হারায়?
শুধু কথোপকথনে থাকা সমঝোতা: বাতিল বিকল্প, প্রয়োজনীয়তার স্পষ্টীকরণ, ছোট সূক্ষ্ম বিষয়। রিপোজিটরির ফাইলে যা লেখা আছে, এজেন্ট তা আবার পড়তে পারে।
“Harness Engineering: инженерия надёжности AI-агентов” কোর্সে বিষয়টি অনুশীলনসহ বিস্তারিত শেখানো হয়েছে।
- Карта репозитория для AI-агента: структура проекта и состояние без памяти между сессиями
- AGENTS.md: почему большой файл инструкций не работает и как устроить роутер
- Память AI-агента между сессиями: session handoff, PROGRESS.md и bootstrap-контракт