টুল ও পারফর্ম্যান্স

Claude Code ও Android CLI-এর মাধ্যমে এজেন্টিক ইঞ্জিনিয়ারিং

স্পিকার

সম্পর্কে

টক সম্পর্কে

AI চ্যাট উইন্ডোতে কপি-পেস্ট করা বন্ধ করুন এবং আপনার এজেন্টকে কাজ ডেলিগেট করা শুরু করুন। এই প্র্যাকটিক্যাল, উদাহরণ-ভিত্তিক সেশন আপনাকে দেখায় যে কীভাবে Claude Code এবং Android CLI ব্যবহার করে আপনার এজেন্টিক ইঞ্জিনিয়ারিং লেভেল আপ করবেন। জটিল ডেভেলপমেন্ট টাস্ক অটোমেট করতে এবং ফিচার দ্রুত শিপ করতে আমরা একটি সম্পূর্ণ ওয়ার্কফ্লো দেখব।

আপনি শিখবেন:

  • Android CLI, Skills, Hooks এবং MCP ব্যবহার করে আপনার হার্নেসের টোকেন দক্ষতা অপ্টিমাইজ করুন।
  • দীর্ঘ সময় ধরে চলা টাস্ক সাব-এজেন্টকে অফলোড ও প্যারালালাইজ করুন।
  • ক্রমাগত যাচাইকরণের লুপ সেট-আপ করুন যা আগেভাগে বন্ধ হওয়া আটকায় এবং টেস্ট পাস না হওয়া পর্যন্ত চলতে থাকে।

সারাংশ

  • Android CLI, কোডিং এজেন্টকে এমুলেটর ও Firebase Crashlytics-এর মতো Android টুলে শেল অ্যাক্সেস দেয়। এটি আপনার শেল স্পেসে থাকে এবং বিভিন্ন এজেন্ট জুড়ে কাজ করে।
  • প্রসঙ্গ যাতে হারিয়ে না যায়, তার জন্য এজেন্টের কথোপকথন প্রায় ১৫০,০০০ টোকেনের মধ্যে রাখুন। কাজকে স্কোপ করা সমস্যাতে ভাগ করুন এবং দীর্ঘ লগ এড়াতে Gradle-কে কোয়াইট মোডে চালান।
  • AGENTS.md ২৫০ লাইনের কম রাখুন এবং আর্কিটেকচার সংক্রান্ত সীমাবদ্ধতার মতো স্থায়ী নিয়মের জন্য এটি রিজার্ভ করে রাখুন। কোনও এজেন্টকে এই ফাইল এডিট করতে দিলে পারফর্ম্যান্স খারাপ হয় এবং খরচ বাড়ে।
  • নির্ধারক হুক এবং প্রসঙ্গ-নির্দিষ্ট দক্ষতা, ছড়িয়ে থাকা ফাইলের চেয়ে এজেন্ট অ্যাকশন আরও ভালোভাবে ম্যানেজ করে। শুধুমাত্র যাচাই করা স্কিল ইনস্টল করুন অথবা বেস Android CLI স্কিল দিয়ে শুরু করুন।
  • যাচাইকরণ লুপ ডেভেলপারদের ম্যানুয়াল QA টেস্টার হিসেবে কাজ করতে বাধা দেয়। প্রথমে দ্রুত ইউনিট টেস্ট এবং শেষে ধীর এমুলেটর রান করার জন্য টিয়ার চেক।

রিসোর্স

Gemini Notebook

বিষয়

  • claude-code
  • android-cli
  • এজেন্টিক-ইঞ্জিনিয়ারিং
  • বেঞ্চমার্কিং
  • পারফর্ম্যান্স

ট্রান্সস্ক্রিপ্ট করা

ভূমিকা ও এনভায়রনমেন্ট সেট-আপ

  • হ্যালো, আমি বেন, Android Developer Relations-এ কাজ করি।

  • আমি স্টিভেন, প্রোডাক্ট ম্যানেজার।

  • আজ আমরা Claude Code এবং Android CLI ব্যবহার করে এজেন্টিকভাবে অ্যাপ তৈরি করার বিষয়ে আলোচনা করব।

  • তাই, আমার মনে হয়, ডেভেলপার হিসেবে আমাদের ভূমিকা কিছুটা পরিবর্তিত হচ্ছে এবং সবকিছু খুব দ্রুত পরিবর্তিত হচ্ছে, এতটাই দ্রুত যে, সত্যি কথা বলতে, এই আলোচনায় যা বলা হচ্ছে তা হয়ত ইতিমধ্যেই পুরনো হয়ে গেছে, বিশেষ করে আপনি যদি অনলাইনে দেখছেন।

  • তাই, আমরা যা লিখেছি এবং যে তথ্য উপস্থাপন করছি, তার মাধ্যমে আমরা একটি প্রগতিশীল দৃষ্টিভঙ্গি গ্রহণ করেছি। তবে, আজ তারা যে ডেমো চালাচ্ছে, তা বাস্তবসম্মত, তাই সেগুলি এখন নির্ভরযোগ্য হওয়া উচিত।

  • আরেকটি বিষয় হল, এই আলোচনার জন্য আমরা Claude Code ব্যবহার করেছি, তবে তথ্যটি এজেন্ট-অ্যাগনস্টিক।

  • এটি আসলে একটি মানসিকতা, তাই আপনার অ্যাপ তৈরি করার সময় আপনি যা ব্যবহার করতে পছন্দ করেন তার সব ক্ষেত্রেই এটি প্রযোজ্য হওয়া উচিত।

  • তাই, আমরা চাই আপনি এমন একটি দুনিয়ার কথা ভাবুন যেখানে আপনি অটোনোমাস এজেন্টের টিম ম্যানেজ করছেন এবং কীভাবে তাদের সফল হওয়ার জন্য রেডি করছেন।

  • যখন তারা কোনও ফিচার বা এই ধরনের কিছু প্রয়োগ করতে ব্যর্থ হয়, তখন হাল ছেড়ে দিয়ে "ওহ, AI এখনও এটি করতে পারে না" বলার পরিবর্তে, আমাদের পিছিয়ে যেতে হবে এবং ভাবতে হবে যে কোন তথ্যটি অনুপস্থিত ছিল এবং আজ আমরা যেভাবে বাগগুলিকে ট্রিট করি সেভাবে এটিকে ট্রিট করতে হবে।

  • আর আপনি যদি Claude Code, Codex, Antigravity-র মতো এজেন্ট হারনেস তৈরি করা টিমের কোনও লেখা পড়ে থাকেন, তাহলে দেখতে পাবেন যে তাদের টিম আসলে এভাবেই হারনেস তৈরি করে। আর আমরা যদি সেগুলিকে ভবিষ্যতের এক ঝলক হিসেবে দেখি, তাহলে সম্ভবত আমরা সবাই সেই দিকেই এগোচ্ছি।

  • তাই, একজন নির্মাতা বা Android ডেভেলপার হিসেবে কাজ করার জন্য এর চেয়ে বেশি উত্তেজনাপূর্ণ সময় আর কখনও আসেনি, তবে আপনি যদি আমার মতো হন, তাহলে ঠিক কোন বিষয়ে ফোকাস করতে হবে তা জানা আপনার পক্ষে কঠিন হতে পারে।

  • এবং ডেভেলপার হিসেবে আমাদের এমন টুল ও ওয়ার্কফ্লো প্রয়োজন যা বুদ্ধিমত্তার সাথে স্কেল করে, যাতে নতুন মডেলের মাধ্যমে সীমানা প্রসারিত হলেও আমাদের কঠোর পরিশ্রম যেন বৃথা না যায়।

  • আমরা চাই যে প্রতিটি মডেলের উন্নতি আমাদের এজেন্টদের জন্য আরও বুদ্ধিমান ওয়ার্কফ্লোর দিকে পরিচালিত করুক, যা শেষ পর্যন্ত আমাদের ব্যবহারকারীদের জন্য আরও ভাল ফলাফলে পরিণত হবে।

  • আজ আমরা চারটি বিষয় কভার করব।

  • প্রথমে, আমরা ব্যাখ্যা করব যে আপনার এজেন্টদের সফল হওয়ার জন্য পরিবেশে সেট আপ করা কেন এত গুরুত্বপূর্ণ।

  • তারপর, আমরা প্রসঙ্গ এবং এটি কীভাবে সবচেয়ে ভালোভাবে ম্যানেজ করা যায় তার একটি ওভারভিউ প্রদান করব।

  • তারপরে, আমরা এজেন্টের মধ্যে কাজ করা Android ডেভেলপারদের জন্য উপলভ্য কিছু সেরা টুল সম্পর্কে আলোচনা করব এবং সবশেষে, আপনার এজেন্টিক ওয়ার্কফ্লোতে লুপ যোগ করার বিষয়ে কথা বলব।

  • ঠিক আছে, আসুন এই বিষয়ে বিস্তারিত আলোচনা করা যাক।

  • সুতরাং, পরিবেশ।

  • কিন্তু, এর আসল অর্থ কী?

  • আমি যেমন বলছিলাম, আমরা এমন একটি স্পেস তৈরি করার চেষ্টা করছি যেখানে আমাদের এজেন্ট সফল হতে পারে এবং আপনাকে সেখানে বসে ক্রমাগত প্রম্পট না দিয়ে এবং এটিকে ট্র্যাকে ফিরিয়ে না এনেও সফল হতে পারে, কারণ আপনি যখন এটি করেন, তখনই আপনি সমান্তরাল এজেন্ট চালাতে সক্ষম হন এবং সেখানেই, যেমন, প্রকৃত উৎপাদনশীলতা বৃদ্ধি পায়, যখন আপনার কাছে এজেন্টদের এই টিমগুলি আপনার জন্য আপনার সমস্ত কাজ করতে পারে।

  • তবে, কোডে অ্যাক্সেস থাকার চেয়েও অনেক বেশি কিছু করতে হয়।

  • তাদের সঠিক ডকুমেন্টেশন অ্যাক্সেস করতে হবে, যার মধ্যে প্রোজেক্টের স্পেসিফিকেশন এবং সেই প্রোজেক্টে কীভাবে কাজ করতে হবে তার নিয়ম অন্তর্ভুক্ত রয়েছে।

  • এটা তো খুবই স্বাভাবিক।

  • অন্যান্য কিছু জিনিস যা লোকজন করছেন, লোকজন এখন তাদের এজেন্টকে তাদের টিম চ্যাট স্পেসে যুক্ত করছেন, শুধু এজেন্টদের কিক অফ করার জন্য নয়, আসলে কীভাবে সিদ্ধান্ত নেওয়া হয়েছিল তার প্রসঙ্গ প্রদান করার জন্য যা তাদের ফিচারটি তৈরি করতে সাহায্য করেছে, কারণ একজন ডেভেলপার হিসেবে, আপনি সমস্যা সমাধান করার সময় এই ধরনের অবচেতন তথ্য ব্যবহার করছেন এবং তাই এটি আপনার এজেন্টের জন্যও সহায়ক হতে পারে।

  • এছাড়াও, আগের সিদ্ধান্তের ইতিহাস এবং পুল রিকোয়েস্টের মতো।

  • আপনার পুল রিকোয়েস্টে আপনি যে কমেন্ট পাচ্ছেন, যে ধরনের জিনিসের জন্য তাদের পিং করা হচ্ছে, এই ধরনের জিনিস তারা দেখতে পাবেন এবং তারপর আপনি দেখতে পাবেন যে তারা কাজ করতে এবং তা ঠিক করতে পারবেন।

  • এছাড়াও, আপনি কোনও ডিভাইস বা এমুলেটরে অ্যাক্সেস না থাকলে Android কোড লিখতে পারবেন বলে আশা করেন না, তাই আপনার এজেন্টও তা করতে পারবে বলে আশা করা উচিত নয়।

  • আমি জানি যে এগুলি দেখে মনে হয় যে এগুলি অসাধারণ এবং যেকোনও কিছু করতে পারে, তবে এমুলেটর সত্যিই সাহায্য করে।

  • প্রোফাইলারের ক্ষেত্রেও একই কথা প্রযোজ্য।

  • আপনি যদি চান যে তারা পারফর্ম্যান্সের উপর কাজ করুক, তাহলে তাদের প্রোফাইল করতে সক্ষম হতে হবে, যার মধ্যে একটি আসল ডিভাইসে অ্যাক্সেস থাকা অন্তর্ভুক্ত।

  • আপনার অ্যাপ ব্যবহার করে এমন যেকোনও ব্যাক-এন্ড পরিষেবা, আদর্শগতভাবে আপনার এজেন্টও তাদের সাথে কথা বলতে পারবে।

  • আর এখানেই Android CLI-এর ভূমিকা।

  • আপনি যদি এর ব্যাপারে না শুনে থাকেন, তাহলে এটি'টুলসে নতুন কী আছে' টকেও ছিল, তবে Android CLI হল ইন্টারফেস করার জন্য আমাদের নতুন CLI, শুধু বিভিন্ন Android টুলের সাথে।

  • এটি নিজে কোনও AI প্রোডাক্ট নয়, এটি শুধু একটি CLI, অর্থাৎ কমান্ড-লাইন ইন্টারফেস।

  • তাই, এটি আপনাকে Android SDK Manager-এর মতো জিনিস অ্যাক্সেস করার সুবিধা দেয়, এমুলেটর চালু করতে পারে, আরও অনেক কিছু।

  • এছাড়াও, এটি Crashlytics-এর মতো টুল ও ব্যাক এন্ডের সাথে কানেক্ট করে।

  • আপনি যে এজেন্টই ব্যবহার করুন না কেন, এটি কাজ করে, এটি শুধু আপনার শেল স্পেসে থাকে।

  • তাহলে, হ্যাঁ।

  • আপনি এই লিঙ্কে গিয়ে এটি ইনস্টল করতে পারেন, তবে আমার মনে হয় এটি কীভাবে কাজ করে তা দেখলে আরও সুবিধা হবে।

ডেমো: Android CLI-এর মাধ্যমে ANR সংক্রান্ত সমস্যার সমাধান করা

  • ঠিক আছে।

  • তাই, আপনার এজেন্টদের সাফল্যের জন্য সেট আপ করা কেন এত গুরুত্বপূর্ণ তা ব্যাখ্যা করার পরিবর্তে, আমরা এই নীতিটি Sideline নামক একটি প্রোডাকশন অ্যাপ্লিকেশনে প্রয়োগ করতে চেয়েছিলাম।

  • এবং Sideline হল টেনিস প্লেয়ারদের জন্য একটি Android অ্যাপ্লিকেশন যা তাদের বলের লোকেশন, প্লেয়ারের লোকেশন, কোর্টের লোকেশন সম্পর্কে রিয়েল-টাইম ফিডব্যাক প্রদান করে।

  • এটি ভিডিও রিপ্লের মাধ্যমে অফলাইন কোচিং ফিডব্যাক প্রদান করে এবং এটি দ্রুততম গতি, অতিক্রান্ত দূরত্ব এবং দীর্ঘতম র‍্যালির মতো জিনিসের জন্য ফিটনেস ডেটা প্রদান করে।

  • এইসব কিছু কাস্টম TF Lite মডেলের মাধ্যমে পরিচালিত হয় যা সরাসরি Android ডিভাইসে রান করে।

  • এবং প্রথমেই আমি বলতে চাই যে, আমরা অবশ্যই এমন সমস্যার সমাধান করতে পারি না যা আমরা জানি না।

  • তাই, Android CLI ব্যবহার করে, আমরা আমাদের ডেভেলপার এনভায়রনমেন্টে Firebase Crashlytics যোগ করেছি, যা আমাদের এমন কিছু সমস্যা খুঁজে পেতে সাহায্য করেছে যেগুলি ঘটছে বলে আমরা জানতামই না।

  • প্রথমটি হল, Pixel 11 Pro Fold ডিভাইসে 'অ্যাপ্লিকেশন সাড়া দিচ্ছে না' বা ANR সংক্রান্ত সমস্যা হচ্ছিল, যা এমুলেটরে দেখা যায়নি।

  • তাই, সৌভাগ্যবশত, Android CLI-তে Android ডিভাইস স্ট্রিমিংয়ের জন্য সহায়তা রয়েছে।

  • এবং আমরা যখন এজেন্টকে এই সমস্যাটি সমাধান করতে বলেছিলাম, তখন এটি সেই ডিভাইসের সাথে একটি কানেকশন তৈরি করেছিল যেখানে ANR হচ্ছিল, যা আমার জন্য বিশেষভাবে উপযোগী ছিল কারণ সেই সময়ে, আমার কাছে Pixel 11 Pro Fold ছিল না যার উপর আমি সমাধানটি যাচাই করতে পারতাম।

  • তাই, এজেন্টকে ডিভাইসে অ্যাক্সেস করার ক্ষমতা দিয়ে, যা সমস্যা সমাধানের জন্য প্রয়োজন ছিল, আমরা শেষ পর্যন্ত যা সম্ভব তার ক্ষমতা সেট প্রসারিত করতে পেরেছি।

  • আর সময় বাঁচাতে, আমি আগেই সব পরীক্ষা করে নিয়েছি এবং এখানে তার সারসংক্ষেপ দিয়েছি।

  • আর খুব বেশি বিস্তারিত না গিয়ে, আমাদের যে সমস্যাটি হচ্ছিল তা হল Android 17-এর সাথে সম্পর্কিত একটি অ্যাফিনিটি কল।

  • এটি ছিল দুই লাইনের একটি দ্রুত সমাধান, যা আমার কাছে ভালো লেগেছে।

    setenv("KMP_AFFINITY", "disabled", 1);
    setenv("KMP_INIT_AT_FORK", "false", 1);
  • তাই, আমি পুল রিকোয়েস্ট তৈরি করে, সেটি মার্জ করেছি এবং Play-তে জমা দেওয়া নতুন বিল্ডের সাথে আপডেট করেছি।

  • তাই, সফল হওয়ার জন্য প্রয়োজনীয় ক্ষমতা সহ কোডিং এনভায়রনমেন্ট সেট-আপ না করলে, আমরা আসল সমস্যা শনাক্ত করতে পারতাম না এবং কোনও সমাধানও যাচাই করতে পারতাম না।

  • তাই, ১.০ বিল্ডের মাধ্যমে আপনি দেখতে পাবেন যে সমস্যার সমাধান হয়ে গেছে।

  • তবে, নতুন সমস্যা দেখা দিয়েছে এবং আমরা পরে সেগুলি সমাধান করব।

কন্টেক্সট ও টোকেন সীমা ম্যানেজ করা

  • ঠিক আছে।

  • পরবর্তী: প্রসঙ্গ।

  • তাই, প্রায় ১.৫, ২ বছর আগে, যা খুব বেশি সময় নয়, কিন্তু AI-এর ক্ষেত্রে তা অনেক সময়, তখন আরও বড় কন্টেক্সট উইন্ডো তৈরি করার প্রতিযোগিতা চলছিল এবং তত্ত্বটি ছিল, আমরা মডেলকে যত বেশি তথ্য দেব, তত ভাল ফলাফল পাব এবং আমরা developer.android.com-এর সম্পূর্ণ তথ্য প্রম্পটে অন্তর্ভুক্ত করার মতো পাগলামি করছিলাম, যা আসলে কাজ করেনি।

  • তবে, কন্টেক্সট উইন্ডো মূলত একই রকম থাকলেও, মডেলের ক্ষমতা এখনও বাড়ছে।

  • সুতরাং, এটি হল Android Bench 1.0।

  • Android Bench হল আমাদের বেঞ্চমার্ক যা Android কোড লেখার ক্ষেত্রে AI-এর ক্ষমতাকে বেঞ্চমার্ক করে।

  • এতে উল্লেখ করা টাস্কগুলি বাস্তবসম্মত।

  • আপনি এই ধরনের জিনিস নিয়েই কাজ করেন এবং আমরা দেখতে পাচ্ছি যে কন্টেক্সট উইন্ডো ১ মিলিয়নের সীমায় পৌঁছে গেছে, কিন্তু মডেলের ক্ষমতা ক্রমাগত বৃদ্ধি পাচ্ছে।

  • কিন্তু প্রসঙ্গ হল, এখনও একটি নির্দিষ্ট বাজেট আছে এবং আপনি গুরুত্বপূর্ণ কিছুর জন্য এটি সেভ করতে চান।

  • আপনি যে সমস্যা নিয়ে কাজ করছেন, তার সাথে সম্পর্কিত নয় এমন কোনও কিছু সেখানে দেখতে চান না।

  • এবং অনেক এজেন্ট হারনেস আসলে আপনাকে সেই সম্পূর্ণ ১ মিলিয়ন কন্টেক্সট উইন্ডো দেখাচ্ছে না কারণ তারা মনে করে যে, এটি অর্থহীন।

  • তারা যখন তা করে তখন ফলাফল আরও খারাপ হয়।

  • এবং আসলে একটি সুইট স্পট আছে এবং এটি মডেলের উপর নির্ভর করে পরিবর্তিত হয়, তবে আপনি যদি আপনার কথোপকথন প্রায় ১৫০,০০০ টোকেনে রাখতে পারেন, তাহলে আপনি কোনও প্রসঙ্গ নষ্ট না করেই মডেলের সম্পূর্ণ ক্ষমতা পাচ্ছেন।

  • তবে, আপনি যা টাইপ করছেন শুধু সেটিই প্রসঙ্গ নয়।

    [
      {
        "role": "system",
        "content": "You are an expert Android engineering agent..."
      },
      {
        "role": "workspace_context",
        "content": { "project_root": "/workspace/android-app", "build_system": "Gradle (Kotlin DSL)", "target_sdk": 35 }
      },
      {
        "role": "available_tools",
        "content": [ { "name": "read_file" }, { "name": "edit_file" }, { "name": "bash" }, { "name": "skill_android_cli" } ]
      },
      {
        "role": "user",
        "content": "ProfileViewModelTest is failing when loading errors. Fix the ViewModel and verify with unit tests."
      },
      {
        "role": "assistant",
        "tool_calls": [ { "name": "read_file", "arguments": { "path": "app/src/main/.../ProfileViewModel.kt" } } ]
      },
      {
        "role": "tool",
        "content": "class ProfileViewModel(...) : ViewModel() { ... // full file contents + Gradle output appended here }"
      }
    ]
  • আসলে, পর্দার আড়ালে এমন অনেক কিছু আছে যা আপনি দেখতে পাচ্ছেন না।

  • এটি অনেকগুলি অংশ নিয়ে তৈরি।

  • প্রথমটি হল সিস্টেম নির্দেশাবলী।

  • আপনার এজেন্ট সিস্টেম সংক্রান্ত নির্দেশাবলী প্রদান করে।

  • এটি এক ধরনের প্রম্পট যা এই এজেন্টের সাথে কীভাবে কাজ করতে হবে এবং এটি কেমন আচরণ করবে তা বলে।

  • তবে, এছাড়াও, ওয়ার্কস্পেসের তথ্য, যেমন, আপনার বর্তমান ওয়ার্কিং ডিরেক্টরি, আপনার কাছে কী কী SDK আছে, ইনস্টল করা কোনও স্কিল, আমরা এক সেকেন্ডের মধ্যে সেই সম্পর্কে কথা বলব এবং MCP টুল, আপনার এজেন্টের প্রদান করা যেকোনও টুল।

  • মডেলকে জানতে হবে যে এটি তাদের কল করতে পারে, যাতে এটি প্রসঙ্গ গ্রহণ করে।

  • তবে, সবচেয়ে গুরুত্বপূর্ণ বিষয় হল, আপনার এজেন্টের সাথে প্রতিটি প্রম্পট, আপনার পাঠানো প্রতিটি নতুন মেসেজের সাথে সম্পূর্ণ মেসেজ এবং টুল কল ইতিহাস পাঠানো হয়।

  • এবং এটি, এটি সত্যিই যোগ করতে পারে, বিশেষ করে Gradle-এর সাথে।

  • আমি মনে করি, আমরা সবাই জানি যে Gradle লগগুলি সত্যিই দীর্ঘ, যেমন সত্যিই, সত্যিই দীর্ঘ, খুব ভার্বোস।

  • এর বেশিরভাগই প্রয়োজন নেই।

  • তাই, এই বিষয়ে নজর রাখার জন্য একটি চটজলদি পরামর্শ দেওয়া হল।

  • আপনি Gradle-কে কোয়াইট মোডে চালাতে পারেন।

    ./gradlew assembleDebug --quiet
  • অথবা বড় এজেন্ট হারনেস আপনার জন্য এটি ট্রাঙ্কেট করে।

  • তাই, Claude Code এবং Android Studio, আমরা সম্পূর্ণ Gradle লগ পাঠাচ্ছি না।

  • কিন্তু আপনি যদি মিনিমাল এজেন্টগুলির মধ্যে একটি ব্যবহার করেন, কারণ তাদের পুরো দর্শনটি হল মডেলের কাছে সবকিছু পাঠানো, মডেল সবচেয়ে ভালো জানে, তাই mini-SWE-এজেন্ট, এটি সেই সম্পূর্ণ Gradle লগ পাঠাচ্ছে এবং এটি খুব দ্রুত খুব ব্যয়বহুল হয়ে উঠতে পারে।

  • কিন্তু আমরা কীভাবে এই ১৫০,০০০ ম্যাজিক উইন্ডোর মধ্যে থাকব?

  • তাহলে, ওয়ার্কফ্লো ব্যবহার করা হল মূল বিষয়।

  • আর সেখানে প্রচুর ওয়ার্কফ্লো আছে।

  • ম্যাট পোকক নামের এক ব্যক্তির ভিডিও আমার খুব ভালো লেগেছে, এই সেশনগুলি ম্যানেজ করার জন্য তার কাছে বেশ কিছু স্কিল আছে।

  • তাই, এটি "grill-me" নামক স্কিল দিয়ে শুরু হয়।

  • আপনি যা করেন তা হল, আপনি যখন প্রথমবার পুরো প্রোজেক্ট বা প্রোজেক্টের মধ্যে শুধু একটি নতুন ফিচার শুরু করেন, তখন এই স্কিলটি রান করেন এবং এটি আপনার এজেন্টকে আপনার কাছে একগুচ্ছ প্রশ্ন জিজ্ঞাসা করতে বাধ্য করে।

  • তাই, আপনি হয়ত শুধু বলবেন, "আমাকে-গ্রিল-করো।

  • আমি আমার অ্যাপে নতুন টাইম অ্যালার্ম ম্যানেজার তৈরি করতে চাই, তবে কীভাবে করব তা জানি না।"

  • এবং এটি যা করবে তা হল এটি আপনাকে প্রশ্ন জিজ্ঞাসা করা শুরু করবে যেমন আমাদের এটি কীসে প্রয়োগ করা উচিত, এটি কোথায় অন্তর্গত।

  • এবং এটি সমস্যা থেকে এবং আপনার মাথা থেকে সমস্ত অস্পষ্টতা দূর করে একটি সমস্যায় পরিণত করে।

  • তারপর আমরা পরবর্তী স্কিল রান করি, যা এক ধরনের বড় স্পেক ডকুমেন্ট লেখে।

  • আরেকটি স্কিল আছে যা এটিকে সমস্যা হিসেবে ভাগ করে এবং আপনি যে সমস্যা ম্যানেজার ব্যবহার করতে পছন্দ করেন আমরা সেটিতে ফাইল করি।

  • এবং তারপরে ধারণাটি হল যে এই সমস্যাগুলির প্রতিটি মোটামুটি সেই ১৫০,০০০ উইন্ডোতে ফিট করা উচিত।

  • তারপর সেখান থেকে, আপনি একটি সমস্যা বেছে নিন, আপনি টার্মিনালে বা আপনার IDE-তে কাজ করছেন, আপনি যা পছন্দ করেন, তৈরি করুন, লুপ যাচাই করুন, আমরা শেষে প্রসঙ্গটি মুছে ফেলি, আর কোনও কথোপকথনের ইতিহাস নেই এবং আমরা উইন্ডোর মধ্যেই থাকি।

  • ঠিক আছে।

AGENTS.md-এর জন্য পেশাদার পদ্ধতি

  • এরপর, AGENTS.md নিয়ে কথা বলা যাক।

  • AGENTS.md-এ আপনি নিজের এজেন্টের জন্য অতিরিক্ত তথ্য প্রদান করতে পারেন যা এই প্রোজেক্টে বা আপনার সম্পূর্ণ ওয়ার্কস্পেসে যে সমস্যা নিয়ে কাজ করছে তার ক্ষেত্রে প্রযোজ্য, যদি আপনি এটি করতে চান।

  • তবে, যেহেতু এটি প্রতিটি প্রম্পটের সাথে দেওয়া হয়, তাই এটি এমনভাবে সেট করা উচিত যাতে এটি আদর্শভাবে সব সময় প্রযোজ্য হয়।

  • তাই, আর্কিটেকচার ও মডিউল সংক্রান্ত নিয়মই এক্ষেত্রে কাজ করে।

  • এগুলি এমন ধরনের জিনিস যা আপনার এজেন্ট সম্ভবত জানতে পারেনি, বিশেষ করে আপনি যদি কোনও বন্ধ সোর্স অ্যাপে কাজ করেন।

  • তবে এই ফিচারটি কোথায় আছে সেই সম্পর্কে যুক্তি দিয়ে শুরুতেই এটি সেভ করার জন্য বোঝা খুবই গুরুত্বপূর্ণ।

  • তাই, আপনি ডিজাইন সিস্টেম মডিউলে UI কম্পোনেন্টের মতো জিনিস রাখতে পারেন, অথবা অন্য একটি জিনিস যা সত্যিই ভাল কাজ করে তা হল সাধারণ কোড রিভিউ ভুল, বা সাধারণ জিনিস যা আপনি বেছে নিচ্ছেন যা আপনাকে সব সময় টাইপ করতে হবে।

    # AGENTS.md
    
    - UI components belong in :core:designsystem
    
    - Never use java.util.Date;
      always use kotlinx.datetime
    
    ## General guidance
    - Avoid changing public API signatures. Anything under an `internal` directory
      is not part of the public API and may change freely.
    - The SDK code is written for Java 8.
  • তাই, আপনি জানেন যে এই প্রোজেক্টে আমরা kotlinx.datetime-এর মতো জিনিস ব্যবহার করতে পছন্দ করি।

  • আমি সত্যিই এমন কিছু পেশাদার পদ্ধতি প্রদান করতে চেয়েছিলাম যা সবসময় প্রযোজ্য হয়, কিন্তু বাস্তবে প্রতিটি মডেল রিলিজের সাথে সাথে এটি পরিবর্তিত হয়।

  • অতিরিক্ত প্রসঙ্গের ক্ষেত্রে বিভিন্ন মডেলের আচরণ বিভিন্ন রকম হয়।

  • যেমন, Opus 4.6-এর সময়, বড় হাতের অক্ষরে "কখনও এটি করবেন না" লেখাটি খুব সাধারণ ছিল।

  • তারপর Opus 5 রিলিজ হওয়ার পরে Anthropic একটি বিবৃতি প্রকাশ করে বলে, "আসলে, ক্যাপিটাল লেটার আর ততটা ভাল কাজ করে না।

  • শুধু ছোট হাতের অক্ষর ব্যবহার করুন।"

  • আর তাই আমি বলতে চাইছি: আপনাকে এর উপরে থাকতে হবে।

  • তবে, কিছু জিনিস যা সর্বজনীনভাবে প্রযোজ্য তা হল, এটি ছোট রাখা।

  • তাই, এটি ২৫০ লাইনের মধ্যে রাখুন।

  • আর এইটা, এই পরেরটা একটু পোলারাইজিং, কারণ আমি জানি অনেক লোক এটা করতে ভালোবাসে, কিন্তু এই বছরের ফেব্রুয়ারিতে একটি স্টাডি প্রকাশিত হয়েছে যা দেখায় যে আপনি যদি আপনার এজেন্টকে তার নিজস্ব AGENTS.md পরিবর্তন করতে দেন, তাহলে এটি পারফর্ম্যান্স প্রায় ২ থেকে ৩% কমিয়ে দেয়, যা, আপনি জানেন, খুব বড় ব্যাপার নয়।

  • তবে গুরুত্বপূর্ণ বিষয় হল, এর ফলে খরচ ২০% বেড়ে গেছে।

  • তাই, আমরা পারফর্ম্যান্সের সামান্য অংশ হারিয়েছি এবং আমাদের খরচ অনেক বেড়ে গেছে, এই সব হয়েছে এজেন্টকে তার নিজের AGENTS.md লিখতে দেওয়ার কারণে।

  • আমি দেখেছি যে এই সমস্যার সমাধান করার জন্য, আপনি প্রতিটি পুল রিকোয়েস্টের শেষে আপনার এজেন্টকে দিয়ে একটি রেট্রোস্পেক্টিভ লিখিয়ে নিতে পারেন এবং তারপর আপনার টিমের রেট্রোস্পেক্টিভে সেগুলি একসাথে পড়ে নিয়ে কী কী পরিবর্তন করতে হবে তা ঠিক করতে পারেন। কারণ, আপনি যদি এজেন্টের সাথে বড় টিমে কাজ করেন, তাহলে এই ফাইলটি টিমের গুরুত্বপূর্ণ ইনফ্রাস্ট্রাকচারের মূল অংশ হয়ে ওঠে।

  • তাই, খুব দ্রুত, এখানে আমাদের তৈরি করা Sideline অ্যাপ্লিকেশনের AGENTS.md দেওয়া হল।

  • এখানে আমি দুটি বিষয় উল্লেখ করতে চাই।

  • প্রথমত, স্পষ্টভাবে সংজ্ঞায়িত আর্কিটেকচার থাকলে আপনার টোকেন এবং কনটেক্সট দৈর্ঘ্য সাশ্রয় হবে।

  • মূলত, এটি আপনার এজেন্টকে ক্রমাগত আপনার আরও কোডবেস দেখা এবং আরও বেশি অনুমান করা এড়াতে দেয়।

  • এটি অনুসরণ করার জন্য খুব স্পষ্টভাবে সংজ্ঞায়িত নির্দেশিকা প্রদান করে।

  • আর দ্বিতীয় যে বিষয়টি আমি উল্লেখ করতে চাই সেটি হল, বিশেষ করে বন্ধ সোর্স অ্যাপ্লিকেশনের ক্ষেত্রে।

  • অবশ্যই, আপনি যদি বন্ধ সোর্স হন, তাহলে কোনও এজেন্টই আপনার কোডবেসে LLM-কে প্রশিক্ষণ দিতে পারেনি।

  • তাই, এইসব ক্ষেত্রে, অতিরিক্ত সময় ব্যয় করা, ক্রমাগত ক্লিন-আপ, রিভিউ, রিফাইন, আপনার AGENTS.md উন্নত করার জন্য সেইসব সাইকেল ব্যয় করা বিশেষভাবে গুরুত্বপূর্ণ, কারণ এটি দীর্ঘমেয়াদে আপনার উপকারে আসবে।

  • তাহলে, আমরা যদি সবকিছু AGENTS.md-এ না রাখি, তাহলে কীভাবে এজেন্ট বা মডেলের আচরণ পরিবর্তন করব?

  • প্রথমটি হল হুক এবং হুক আসলে সেই ধরনের জিনিসের জন্য খুব ভালো যা লোকজন AGENTS.md-এ রাখে, যেমন, আপনার লেখা শেষ হলে সবসময় লিন্টার চালান।

    // settings.json
    
    "hooks": {
      "Stop": [{
        "command": "./gradlew lintDebug"
      }]
    }
  • এটি একটি হুক হতে পারে।

  • হুক হল এমন একটি জিনিস যার মাধ্যমে আপনার এজেন্ট এইসব ইভেন্ট প্রকাশ করে যেগুলিতে আপনি সাবস্ক্রাইব করতে পারেন এবং আপনি যা কিছু ভাবতে পারেন তার প্রায় সবকিছুর জন্যই এটি আছে, তবে প্রধানগুলি হল সেশন শুরু করা, সেশন বন্ধ করা, ফাইল পড়া ও লেখা।

  • তাই, আপনার AGENTS.md-এর নিচে "সবসময় লিন্টার রান করো" বা "কাজ শেষ হয়েছে বলার আগে সবসময় আমার টেস্ট স্যুট রান করো" লেখার পরিবর্তে, আপনার কাছে একটি স্টপ হুক থাকে যা একটি নির্ধারক স্ক্রিপ্ট রান করতে পারে এবং এটি AI-এর সামান্য এলোমেলো আচরণকে নিয়ন্ত্রণ করতে সাহায্য করে।

  • আরেকটি বিষয় হল, আপনার কাছে যদি এমন ফাইল থাকে যা আপনি সত্যিই চান না যে আপনার এজেন্ট পড়তে বা লিখতে পারুক, অর্থাৎ আপনার কাছে কিছু গোপন ফাইল আছে, আপনি চান না যে সেগুলি কোনও সার্ভারে পাঠানো হোক, অথবা AGENTS.md, আপনি চান না যে আপনার এজেন্ট এতে লিখতে পারুক, তাহলে আপনি তার জন্য একটি হুক রাখতে পারেন।

  • তাই আপনার কাছে রিড বা রাইট হুক থাকলে, যে ফাইলটি এডিট করার চেষ্টা করা হচ্ছে সেটি আপনাকে পাস করা হবে এবং আপনি শুধু বলতে পারবেন, "না, আপনি এটি করতে পারবেন না।"

  • এটি নির্ধারক যোগ করার একটি উপায় মাত্র।

এজেন্টের স্কিল ও আর্কিটেকচার

  • পরেরটি হল স্কিল।

  • আর এখন আপনার AGENTS.md-কে হুকে পরিণত করার জন্য স্কিলও আছে।

  • সেটা সম্পূর্ণ অন্য বিষয়।

  • কিন্তু স্কিল হল প্রাসঙ্গিক হলেই শুধুমাত্র প্রসঙ্গ যোগ করার পদ্ধতি।

  • তাই AGENTS.md হল এমন সব বিষয় যা সবসময় প্রাসঙ্গিক।

  • নির্দিষ্ট কিছু পরিস্থিতিতে প্রাসঙ্গিক বিষয়ের জন্য দক্ষতা ব্যবহার করা হয়, প্রধানত ডকুমেন্টেশন।

  • তাই স্কিল তিনটি অংশ নিয়ে গঠিত: সেগুলির নাম, বিবরণ এবং গুরুত্বপূর্ণ অংশ থাকে, এই বিবরণ ১,০২৪ অক্ষরের মধ্যে সীমিত এবং তারপর সেগুলির বডি থাকে।

    ---
    
    name: android-cli
    description: >
      Loaded into context (≤1024 chars)
    ---
    # Skill Body
  • এবং বডিটি বিশাল হতে পারে, বডিতে এমনকি অন্যান্য স্ক্রিপ্টও অন্তর্ভুক্ত থাকতে পারে, যা খুবই সাধারণ।

  • স্কিলের সাহায্যে আপনি অনেক কিছু করতে পারবেন।

  • আসুন একটি উদাহরণ দেখে নেওয়া যাক।

  • এটি হল Android CLI-এর বিবরণ।

  • আপনাকে এই সব পড়তে হবে না।

  • শুধু জেনে রাখুন যে এটি একটি সংক্ষিপ্ত বিবরণের মতো যা Android CLI কখন প্রাসঙ্গিক তা বর্ণনা করে।

  • আর এটি হল বডি।

  • এটি বিশাল, তাই আমরা সব সময় এই সব লোড করতে চাই না, তাই না?

  • আমরা Android CLI ব্যবহার করার চেষ্টা করার সময় শুধু এটি লোড করতে চাই এবং স্কিল আমাদের এটি করতে দেয়।

  • তবে, আপনি কোন স্কিল ইনস্টল করবেন সেই ব্যাপারে সতর্ক থাকা গুরুত্বপূর্ণ।

  • We don't want to just be blindly installing those repos we see online that are hundreds of agentic engineering skills.

  • প্রথমত, এটি নিরাপত্তা সংক্রান্ত বিশাল ঝুঁকি।

  • এইসব স্কিলে কী আছে সেই সম্পর্কে আপনার কোনও ধারণা নেই, এটি আপনার এজেন্টকে যেকোনও কাজ করার নির্দেশ দিতে পারে।

  • এবং আমাদের কাছে Android দক্ষতার একটি সেট আছে, আমি প্রতিশ্রুতি দিচ্ছি যে আমরা সেগুলি যাচাই করেছি, তারা তা বলে না।

  • কিন্তু, ১,০০০ অক্ষরের ১০০টি বিবরণ মানে হল ১০০,০০০ অক্ষর, যা আপনি কোডিং শুরু করার আগেই যোগ করে ফেলেছেন।

  • তাই আপনি ইতিমধ্যেই সেই উইন্ডোতে হামাগুড়ি দিচ্ছেন।

  • তাই Android স্কিলের ক্ষেত্রে আমরা সাজেস্ট করি যে সবকিছুর জন্য Android CLI বেস স্কিল ইনস্টল করুন এবং সেখান থেকে Android CLI উপলভ্য স্কিল সার্চ করে আপনার অ্যাপের জন্য উপযুক্ত স্কিল ইনস্টল করতে পারবে।

    > android init
    
    ✓ Installed base skill: android-cli
    
    # Audit & add skills only when needed:
    > android skills find compose
    > android skills add edge-to-edge
  • অথবা আপনি যদি একবার দেখে নেন, তাহলে কোন কোন স্কিল উপলভ্য আছে তা জানতে পারবেন, আপনি ম্যানুয়ালি সেইসব স্কিল যোগ করতে পারেন যা আপনার প্রোজেক্টের জন্য উপযুক্ত, যেমন কম্পোজ স্কিল, এজ-টু-এজ স্কিল, এগুলি খুবই সাধারণ।

  • অবশ্যই, দক্ষতা অডিট করার জন্য দক্ষতা আছে।

  • তাই Claude Code-এ /skill-doctor আছে এবং এটি দেখে আপনাকে বলবে যে আপনি এমন কোন কোন স্কিল অন্তর্ভুক্ত করছেন যা কখনই অ্যাক্টিভেট করা হয় না, তাই আপনি শুধু সেই হাজার অক্ষরের বিবরণ নষ্ট করছেন।

  • আর আপনি Claude Code-এ না থাকলে, প্রায় সব এজেন্ট হারনেসেই একই কাজ করার জন্য কোনও না কোনও ধরনের স্ট্যাট স্ক্রিন বা অডিট স্ক্রিন থাকে।

  • সুতরাং, Android CLI, এটিই হল লিঙ্ক।

  • কিন্তু এতে একটি স্কিল লিস্ট কমান্ড আছে এবং তারপরে বলুন যে আপনার প্রোজেক্টে Navigation 3 আছে।

    android skills list
    android skills add navigation-3
  • Navigation 3 হল একটি নতুন লাইব্রেরি, তাই এটিতে এখনও অনেক ট্রেনিং হয়নি, আপনি Navigation 3 স্কিল যোগ করতে পারেন।

  • আমরা প্রায়ই ওহ, দুঃখিত।

  • পরেরটি হল MCP।

  • কিন্তু আমাদের প্রায়ই জিজ্ঞাসা করা হয় যে আমরা Android CLI-কে MCP সার্ভার না করে CLI কেন করেছি?

  • আমরা AI আসার অনেক আগে থেকেই CLI তৈরি করছি, এমনকি মাউস আসারও আগে থেকে। তাই এগুলি দ্রুত কাজ করে, কম্পোজেবল এবং আপনার শেল সেশনে লোকালি রান করে বলে এগুলি রান করার জন্য কোনও খরচ হয় না।

  • এছাড়াও, Terminal Bench-এর মতো বেঞ্চমার্ক সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের ক্ষেত্রে সবচেয়ে বড় বেঞ্চমার্ক হয়ে উঠেছে এবং তাই মডেল নির্মাতারা টার্মিনাল ব্যবহারের বিরুদ্ধে আক্রমণাত্মকভাবে এগিয়ে চলেছেন, তাই তারা আজকাল CLI ব্যবহারে সত্যিই ভাল।

  • তবে এর অর্থ এই নয় যে MCP-এর কোনও জায়গা নেই।

  • আপনি আগে থেকেই ব্যবহার করছেন এমন এক্সটার্নাল পরিষেবার জন্য MCP সার্ভার খুবই উপযোগী, বিশেষ করে যদি তারা আগে থেকেই কোনও MCP পরিষেবা হোস্ট করে থাকে।

  • আপনি সরাসরি এটিতে হুক করতে পারেন এবং এটি আপনার এজেন্টে অতিরিক্ত প্রসঙ্গ যোগ করার একটি ইনস্টল-মুক্ত উপায়।

  • GitHub, Figma, Slack-এর মতো প্ল্যাটফর্ম এখন MCP সার্ভার এক্সপোজ করছে।

  • And then things that we've always run in the shell can stay in the shell, so Android commands through Android CLI, but Perfetto and Gradle as well just make sense to have them local where they have access to everything you use in your development.

  • এবং আমি পারফর্ম্যান্সের উপর কাজ করতাম।

  • আমি সবসময় বলতাম, Perfetto হল এমন একটি টুল যা পারফর্ম্যান্স সংক্রান্ত যেকোনও সমস্যা সমাধান করতে পারে।

  • কিন্তু শেখার কার্ভটি খুব খাড়া ছিল, যেমনটি আমরা রাহুলের শেষ আলোচনায় দেখেছি।

  • AI কীভাবে পারফর্ম্যান্স উন্নত করতে সাহায্য করতে পারে তা দেখে নেওয়া যাক।

AI-এর সাহায্যে অ্যাপ পারফর্ম্যান্স অপ্টিমাইজ করা

  • ধন্যবাদ, বেন।

  • তাই, আমাদের অ্যাপ্লিকেশন, Sideline, কাজ করার জন্য, এটিকে প্রতি সেকেন্ডে ৩০টি ফ্রেমে এবং রিয়েল টাইমে চালাতে হবে।

  • এবং আপনি এখানে এই Pixel 10 Pro Fold-এ দেখতে পাচ্ছেন যে, আমরা প্রতি সেকেন্ডে মাত্র ২০ থেকে ২২টি ফ্রেম পাচ্ছি।

  • এই ড্রপ করা ফ্রেমগুলি একটি সমস্যা হতে চলেছে, কারণ এর অর্থ হল অ্যাপ্লিকেশনটি বিজ্ঞাপনের মতো কাজ করবে না, তাই আমাদের সত্যিই এটি ঠিক করতে হবে।

  • Android CLI-এর সাথে, আমাদের কাছে Android প্রোফাইলার কমান্ড আছে।

  • এবং যখন আমরা এটি আমাদের কোডিং এজেন্টে যোগ করি এবং এটিকে প্রতি সেকেন্ডে ৩০ ফ্রেমের এই প্রয়োজনীয়তা পূরণ করার নির্দেশ দিই, তখন দুটি আকর্ষণীয় জিনিস ঘটে।

  • প্রথমটি হল, এটি Android প্রোফাইলার কমান্ড ব্যবহার করে সমাধান খুঁজে পায়।

  • এটি অ্যাটাচ করা Pixel 10 Pro Fold ডিভাইসে সিস্টেম ট্রেস রেকর্ড করেছে এবং দেখেছে যে এর AI থ্রেড ডিভাইসের সবচেয়ে ধীরগতির কোরে চলছে।

  • আর দ্বিতীয়টি হল, এটি Android ডকুমেন্ট সার্চ ব্যবহার করেছে, মজার ব্যাপার হল, আমরা এটি করার জন্য স্পষ্টভাবে না বলা সত্ত্বেও এটি করেছে এবং পারফর্ম্যান্স হিন্ট API-এর জন্য অফিসিয়াল নির্দেশিকা বের করেছে।

  • এজেন্ট যা শিখেছে তা হল সিস্টেম শিডিউল অপ্টিমাইজ করা এবং এটি করার মাধ্যমে, এটি প্রতি সেকেন্ডে ৩০ ফ্রেমের প্রয়োজনীয়তা পূরণ করতে সক্ষম হয়েছে।

  • সুতরাং, মূলত যা ঘটেছে তা হল নির্দেশিকা অনুসরণ করে সমস্যার সমাধান করা হয়েছে।

  • সুতরাং, Android CLI-এর মাধ্যমে, মূল বিষয়টি হল, আপনি জানেন, আপনার এজেন্টের সাথে এটি হুক আপ করার মাধ্যমে, এটি আপনাকে সঠিক টুল খুঁজে পেতে সাহায্য করে, এমনকি আপনি যদি সেই টুলের সাথে পরিচিত নাও হন, যে কাজই হোক না কেন আপনাকে তা সম্পন্ন করতে হবে।

  • তাই, আমরা এটি রান করার পরে, আপনি দেখতে পাবেন যে Sideline ব্যবহারকারীদের প্রতি সেকেন্ডে ৩০ ফ্রেমের প্রয়োজনীয়তা পূরণ করে এবং এটি এখন Pixel 10 Pro Fold-এ কাজ করে।

টাস্ক যাচাইকরণ লুপ প্রয়োগ করা হচ্ছে

  • ঠিক আছে।

  • এখন, আমরা লুপের মাধ্যমে সব একসাথে নিয়ে আসব।

  • আমি নিশ্চিত যে আমরা সবাই এটি করেছি, আপনি আপনার এজেন্টকে কিছু বড় পরিবর্তন বাস্তবায়ন করতে বলেন এবং এটি ফিরে এসে বলে যে এটি করা হয়েছে।

  • আর আপনি যদি এটি ইনস্টল করেন এবং অ্যাপে ম্যানুয়ালি ক্লিক করেন এবং বাগ টাইপ করেন, তাহলে আমাদের এই ধরনের কাজ করা বন্ধ করতে হবে।

  • আমাদের এজেন্টের QA টেস্টার হিসেবে কাজ করা বন্ধ করতে হবে এবং আমরা কী করতে চাই তা আগে থেকেই নির্ধারণ করতে হবে।

  • তাই, এখানে একটি উদাহরণ দেওয়া হল।

  • আমরা পুরো প্রোজেক্ট Nav3-এ মাইগ্রেট করতে চাই, তারপর এজেন্ট চলে যায়, এতে কিছুটা সময় লাগে, কিন্তু এটি আত্মবিশ্বাসের সাথে ফিরে আসে এবং বলে, "মাইগ্রেশন সম্পূর্ণ হয়েছে।

  • আমিই সেরা।"

  • কিন্তু তারপরে, অবশ্যই, আপনি ফোনটি ঘোরান, অ্যাপটি ক্র্যাশ করে, এটি সমস্ত স্লাইড ট্রানজিশন মিস করে, এটি তার Gradle ফাইলটি পরিষ্কার করেনি।

  • আমরা এখন যে জগতে আছি, এটি অনেকটা সেইরকমই।

  • আদর্শগতভাবে, আমাদের এটি করতে হবে না, তবে এটিই বর্তমান বাস্তবতা।

  • তাই, আমরা কী আশা করি সেই সম্পর্কে আমাদের প্রথমে সব কিছু সংজ্ঞায়িত করা উচিত ছিল এবং এটি এজেন্টকে সেই সমস্ত মানদণ্ড পূরণ না করা পর্যন্ত লুপ করার অনুমতি দিত।

  • যাচাইকরণ লুপ বলতে এটাই বোঝায়।

  • এবং এর কার্যকারিতা সম্পর্কে আমাদের কাছে সত্যিই শক্তিশালী ডেটা রয়েছে।

  • তাহলে, এটি হল Android Bench 2.0, এটি আমাদের AI বেঞ্চমার্কের নতুন ভার্সন যা আমি আলোচনার শুরুতে উল্লেখ করেছি।

  • বর্তমানে পাস রেট প্রায় ৪০%।

  • এইসব টাস্ক খুবই কঠিন এবং সেগুলি অনেক বড় ও বাস্তবসম্মত, তবে এর মধ্যে একটি হল Nav2 থেকে Nav3, এগুলি হল সেই ধরনের জিনিস যা আপনি বর্তমানে আপনার প্রোজেক্টে করছেন।

  • এবং আমরা যদি Fable 5.1 নিই, তাহলে এর পাসের হার হল ২২%, যা এটি শুধুমাত্র ন্যাচারাল প্রম্পট সেট আপের মাধ্যমে পায়, যেমন "Nav2 থেকে Nav3-এ মাইগ্রেট করুন।"

  • কিন্তু আমরা যদি এটিকে আগে থেকেই একটি ব্যর্থ টেস্ট স্যুট দিই, তাহলে এটি উত্তর দিচ্ছে না, আমরা এটিকে Nav3-এ কীভাবে মাইগ্রেট করতে হবে তা বলছি না, আমরা এটিকে শুধু একটি টেস্ট স্যুট দিচ্ছি যা ইতিমধ্যেই ব্যর্থ হচ্ছে এবং এই সব কাজ সম্পূর্ণ হলে পাস করবে, পুরো বেঞ্চমার্কে এর পাসের হার ৯০% পর্যন্ত বেড়ে যায়।

  • এবং এটি আমাদের দেখায় যে এই মডেলগুলি এখন সত্যিই আমরা ভাবতে পারি এমন যেকোনও Android টাস্ক বাস্তবায়নে সক্ষম, তারা শুধু সবসময় জানে না যে "সম্পন্ন" বলতে কী বোঝায়।

  • তাই, আপনাকে আগে থেকে সম্পূর্ণ ব্যর্থ টেস্ট স্যুট লিখতে হবে না।

  • যাচাইকরণ লুপ প্রম্পট যোগ করার মতোই সহজ হতে পারে।

  • সুতরাং, ধরুন আপনি UI-তে কাজ করছেন, আপনি এটিকে কম্পোজ প্রিভিউ রেন্ডার করতে বলতে পারেন এবং এটি Figma স্পেকের সাথে মেলে কিনা তা নিশ্চিত করতে পারেন এবং আমাকে ফলাফল দেখাতে পারেন।

  • "আমি করে ফেলেছি" টেক্সট উত্তর গ্রহণ করার পরিবর্তে, আপনি যখন এটিকে ফলাফল দেখাতে এবং এটি করা হয়েছে তা প্রমাণ করতে বলেন, তখন এটি সত্যিই কাজ করে বলে মনে হয়।

  • আপনি যদি বিজনেস লজিক নিয়ে কাজ করেন, তাহলে আপনি এটিকে আপনার ইউনিট টেস্ট চালাতে বলতে পারেন, অথবা, আমরা শুরুতে যেমন দেখেছি, আপনি যদি কোনও ক্র্যাশ ফিক্স নিয়ে কাজ করেন, তাহলে আপনি এটিকে বলতে পারেন যে রিমোট টেস্ট ল্যাবের মাধ্যমে যে আসল ডিভাইসে ক্র্যাশটি ঘটেছে সেখানে ক্র্যাশটি ঠিক করা হয়েছে কিনা তা যাচাই করতে।

  • Claude Code-এ আসলে একটি স্কিল বিল্ট-ইন আছে যা আপনাকে এখন যাচাইকরণ লুপ তৈরি করতে সাহায্য করে।

  • তাই, অবশ্যই সেটি চেক করে দেখুন।

  • এবং আপনি যদি Android Studio-তে নিজের এজেন্ট নিয়ে কাজ করেন, তাহলে Android Studio এমন অনেক টুল দেখায় যেগুলি আপনি কী নিয়ে কাজ করছেন তার উপর নির্ভর করে লুপ তৈরি করতে পারেন।

  • তাই, লিন্টারের মতো, আপনি এটিকে বলতে পারেন যে সমস্ত লিন্ট ত্রুটিগুলি ঠিক না হওয়া পর্যন্ত থামবেন না, বা আমি যেটি সত্যিই পছন্দ করি তা হল জার্নি, আপনি এটিকে আপনার জার্নি চালাতে বলতে পারেন এবং নিশ্চিত করতে পারেন যে সেগুলি এখনও কাজ করছে।

  • অথবা আপনি যদি কোনও জার্নি লিখে থাকেন, কারণ জার্নি লেখা খুবই সহজ, সেগুলি আপনি যে ফিচার নিয়ে কাজ করছেন তার প্রম্পট মাত্র, আপনি এটিকে সেই জার্নি রান করতে বলতে পারেন এবং এটি সম্পূর্ণ হয়েছে বলে ঘোষণা করার আগে এটি পাস করেছে কিনা তা নিশ্চিত করতে পারেন।

  • তবে, জার্নি রান করতে কিছুটা সময় লাগে।

  • তাই, আপনি যা করতে পারেন তা হল আপনার যাচাইকরণ লুপের লেভেলগুলি টায়ার করা।

  • তাই, আমরা এটিকে প্রথমে ইউনিট টেস্ট এবং কম্পোজ প্রিভিউ সঠিকভাবে রেন্ডার হচ্ছে কিনা তা নিশ্চিত করতে বলতে পারি।

  • এবং তারপরে যখন এটি পাস করে, তখন আমাদের কানেক্ট করা টেস্ট এবং Android জার্নি চালান এবং শুধুমাত্র যখন এটি পাস করে, তখন রিমোট ডিভাইস টেস্ট ল্যাবের মতো সম্পূর্ণ টেস্ট চালান, সম্পূর্ণ টেস্ট স্যুট যা অনেক সময় নেবে।

  • আর আপনি যদি সেই অতিরিক্ত তথ্য দেন, তাহলে আমরা দেখতে পাই যে এটি প্রতিটি রান-এ প্রতিটি ধাপ করার চেষ্টা করার পরিবর্তে প্রতি স্তরে লুপ করে।

  • কারণ মডেলগুলি সত্যিই আত্মবিশ্বাসী।

  • তাই, তারা সবসময় মনে করে যে তাদের কাজ সম্পূর্ণ হয়েছে এবং তারা সবসময় মনে করে যে প্রথমবারেই তারা সব পরীক্ষায় পাস করে যাবে।

  • তাহলে, Sideline-এ সেটি দেখা যাক।

Android XR এবং অটোমেটিক ত্রুটি সমাধান

  • তাই, আসুন এই আইডিয়াটি আমাদের Sideline অ্যাপ্লিকেশনে প্রয়োগ করি এবং শীঘ্রই আসতে চলেছে এমন XR গ্লাসের জন্য বিশেষভাবে একটি নতুন ফিচার যোগ করে এটি করি।

  • এবং যেহেতু আমাদের কাছে এখনও হার্ডওয়্যার নেই, তাই অবশ্যই আমরা XR এমুলেটর ব্যবহার করব এবং আমাদের কোডিং এজেন্টকে নতুন ফর্ম ফ্যাক্টরের জন্য Sideline এক্সটেন্ড করার নির্দেশ দেব।

  • আমরা যখন এটি করি, তখন আমরা বিশেষভাবে আমাদের এজেন্টদের JVM টেস্ট, কম্পোজ প্রিভিউ টেস্ট এবং এমুলেটর টেস্টের মাধ্যমে লুপ করতে বলি।

  • এবং প্রতিটি লুপকে তার আগের লুপের উপর ভিত্তি করে তৈরি করতে বলা হয়।

  • এবং আমরা যখন এটি করি, তখন প্রথম যে জিনিসটি আমরা লক্ষ্য করি তা হল লুপ এক এবং দুইয়ের মধ্যে, এটি JVM টেস্ট যা ছয়টি কম্পোজ প্রিভিউ স্টেট সংজ্ঞায়িত করতে ব্যবহৃত হয়।

  • অবশ্যই, কোনও এমুলেটর কল করা হয়নি, তাই এটি খুব দ্রুত রান করে।

  • এবং তারপরে একইভাবে, লুপ দুই এবং লুপ তিনের মধ্যে, এমুলেটর চালানোর আগেই দীর্ঘ স্ট্রিংয়ের মতো সমস্যাগুলি সামনে আনা এবং সমাধান করা হয়।

  • তাই, অবশেষে, এমুলেটর লুপ রান করলে, এটি অতিরিক্ত সমস্যা খুঁজে পায় যা JVM টেস্ট এবং Compose প্রিভিউ ঠিক করতে পারেনি।

  • তবে মূলত, প্রতিটি লুপের সাথে, আমরা আমাদের অ্যাপ্লিকেশনটিকে আরও শক্তিশালী করছি এবং আমরা প্রথমে দ্রুততম কিন্তু সবচেয়ে কম শক্তিশালী লুপ চালাতে চাই, তারপরে সবচেয়ে ধীর কিন্তু সবচেয়ে শক্তিশালী লুপ চালাতে চাই।

  • আর এই হল ফলাফল।

  • এটি দেখায় যে চশমাটি এখন সুইংয়ের ধরন এবং র‍্যাকেট থেকে বলটি কত স্পিডে আসছে তা দেখায়, যাতে আপনি টেনিস খেলতে পারেন এবং বল থেকে চোখ না সরিয়েই রিয়েল-টাইমে আপনার গেমপ্লে সম্পর্কে মতামত পেতে পারেন।

  • ওহ, আর আমি আগেই উল্লেখ করেছি যে আমরা Crashlytics-এর সেই দুটি সমস্যা নিয়ে আলোচনা করব যা আগে দেখা গিয়েছিল।

  • সুতরাং, যেহেতু আমরা ইতিমধ্যেই যাচাই করতে পেরেছি যে সেই পদ্ধতিটি কাজ করেছে, তাই আমরা Claude Code-এ /schedule কমান্ড ব্যবহার করে এটি লুপ করতে পারি এবং আমরা যে কোনও ক্যাডেন্স সেট করতে পারি, যাতে এখন আমাদের কাছে একটি সেল্ফ-হিলিং অ্যাপ্লিকেশন রয়েছে যা সমস্ত বাগ ঠিক করে এবং সেগুলি ঠিক করা হয়েছে কিনা তা যাচাই করে, আমাদের ইঞ্জিনিয়ারদের দেখার এবং মার্জ করার জন্য পুল রিকোয়েস্ট হিসাবে পাঠায়।

শেখার মূল বিষয় ও রিসোর্স

  • ঠিক আছে।

  • আজকের মতো এই পর্যন্তই।

  • আপনি যদি একটি মূল টেকঅ্যাওয়ে নেন, তাহলে এই বিশ্ব সম্পর্কে চিন্তা করা শুরু করুন যেখানে আমরা আমাদের এজেন্টদের সফল হওয়ার জন্য একটি পরিবেশ তৈরি করছি এবং এটিকে আমরা আজ যেভাবে সফ্টওয়্যার ডেভেলপমেন্ট এবং বাগগুলিকে ট্রিট করি সেভাবে ট্রিট করছি।

  • এইভাবে আমরা প্যারালাল এজেন্ট আনলক করি।

  • আপনি এই বিষয়ে অনলাইনে অনেক পরামর্শ পাবেন এবং তার মধ্যে অনেক পরামর্শই একে অপরের সাথে মিলবে না।

  • আর এই দ্রুত পরিবর্তনশীল পরিবেশের এটাই বাস্তবতা।

  • তাই, আপনার প্রোজেক্টের জন্য নিজের ইভ্যাল লেখা হল সবচেয়ে ভালো উপায়।

  • আর তারপর যখন নতুন কোনও পরামর্শ বা নতুন কোনও মডেল আসে, তখন আপনি আসলে তা পরিমাপ করতে পারেন এবং দেখতে পারেন যে এটি আপনাকে সাহায্য করে কিনা।

  • আর অবশ্যই, সবকিছুর জন্য একটি স্কিল আছে।

  • Claude Code-এ ইভ্যাল তৈরি করতে সাহায্য করার জন্য একটি স্কিল আছে।

    /claude-api build-eval
  • এটি চেক করে দেখার জন্য অবশ্যই সাজেস্ট করব।

  • আমি আজ Android Bench সম্পর্কে কথা বলেছি।

  • Android Bench হল আমাদের মূল্যায়ন।

  • আমরা এইভাবেই পরিমাপ করি যে সবকিছু আরও ভালো হচ্ছে কিনা।

  • আমরা এটি তৈরি করার সময় যে শিক্ষা পেয়েছি, আপনি যাতে একই ভুল না করেন, সেই জন্য Android Bench টক দেখুন।

  • এছাড়াও, দুটি প্যানেল আছে।

  • একটি মার্কিন যুক্তরাষ্ট্রে এবং একটি লন্ডনে আছে।

  • এই ধরনের কনসেপ্ট কমিউনিটিতে কীভাবে প্রয়োগ করা হয় সেই বিষয়ে আলোচনা করে এমন দুটি ভিডিও অনলাইনে আপলোড করা হচ্ছে।

  • তাই, Android Dev কমিউনিটির মেম্বাররা প্যানেলে এসে তাদের কাজে কীভাবে এটি প্রয়োগ করছেন সেই বিষয়ে কথা বলবেন।

  • এছাড়াও, আমরা আপনার মতামত জানতে চাই।

  • আমরা সত্যিই জানতে চাই যে আমরা এমন কিছু তৈরি করছি কিনা যা আপনাকে সত্যিই সাহায্য করছে।

  • তাই, সমীক্ষাটি পূরণ করুন।

  • আমি স্ক্রিনে সেটি রেখে দেবো।

  • আর, হ্যাঁ।

  • শোনার জন্য ধন্যবাদ।

  • ধন্যবাদ।

কোড

কোড স্নিপেট

"ডেমো:Android CLI-এর মাধ্যমে ANR ঠিক করা" ভিডিওর ০৭: ১৮-এ C++ স্নিপেট
setenv("KMP_AFFINITY", "disabled", 1);
setenv("KMP_INIT_AT_FORK", "false", 1);
"কন্টেক্সট ও টোকেন লিমিট ম্যানেজ করা" ভিডিওর ০৯:২২-এ JSON স্নিপেট
[
  {
    "role": "system",
    "content": "You are an expert Android engineering agent..."
  },
  {
    "role": "workspace_context",
    "content": { "project_root": "/workspace/android-app", "build_system": "Gradle (Kotlin DSL)", "target_sdk": 35 }
  },
  {
    "role": "available_tools",
    "content": [ { "name": "read_file" }, { "name": "edit_file" }, { "name": "bash" }, { "name": "skill_android_cli" } ]
  },
  {
    "role": "user",
    "content": "ProfileViewModelTest is failing when loading errors. Fix the ViewModel and verify with unit tests."
  },
  {
    "role": "assistant",
    "tool_calls": [ { "name": "read_file", "arguments": { "path": "app/src/main/.../ProfileViewModel.kt" } } ]
  },
  {
    "role": "tool",
    "content": "class ProfileViewModel(...) : ViewModel() { ... // full file contents + Gradle output appended here }"
  }
]
"কন্টেক্সট ও টোকেন সীমা ম্যানেজ করা" ভিডিওর ১০:১৬-এ শেল স্নিপেট
./gradlew assembleDebug --quiet
"Best practices for AGENTS.md"-এ ১২:৩৪-এ মার্কডাউন স্নিপেট
# AGENTS.md

- UI components belong in :core:designsystem

- Never use java.util.Date;
  always use kotlinx.datetime

## General guidance
- Avoid changing public API signatures. Anything under an `internal` directory
  is not part of the public API and may change freely.
- The SDK code is written for Java 8.
"Best practices for AGENTS.md" ফাইলের 15:24-এ JSON স্নিপেট
// settings.json

"hooks": {
  "Stop": [{
    "command": "./gradlew lintDebug"
  }]
}
"এজেন্ট স্কিল ও আর্কিটেকচার" ভিডিওর ১৬:৪৪-এ মার্কডাউন স্নিপেট
---

name: android-cli
description: >
  Loaded into context (≤1024 chars)
---
# Skill Body
"এজেন্ট স্কিল ও আর্কিটেকচার" ভিডিওর ১৭:৫২-এ Shell স্নিপেট
> android init

✓ Installed base skill: android-cli

# Audit & add skills only when needed:
> android skills find compose
> android skills add edge-to-edge
"এজেন্ট স্কিল ও আর্কিটেকচার" ভিডিওর 18:38-এ শেল স্নিপেট
android skills list
android skills add navigation-3
"গুরুত্বপূর্ণ তথ্য ও রিসোর্স" ভিডিওর ২৯:৩২-এ টেক্সট স্নিপেট
/claude-api build-eval