−25%

Windows-এর বার্ষিক পেমেন্টে, ৩১ অক্টোবর পর্যন্ত। প্ল্যান দেখুন

EQVPS
শুরু করুন

কোড রিভিউ ও PR যাচাইয়ের জন্য স্যান্ডবক্স: অনুমোদনের আগে প্রমাণ করুন প্যাচ কাজ করে

diff পড়লে জানা যায় প্যাচ কী দাবি করে। চালালে জানা যায় দাবিটা সত্যি কি না। pull request একটি একবার-ব্যবহারের microVM-এ আনুন, পরিবর্তনের আগে ও পরে বাগ পুনরায় ঘটান, টেস্ট চালান এবং প্রমাণসহ রিভিউ করুন — প্রতিবার প্রায় আধা সেন্টে।

diff দেখায় প্যাচ কী করার দাবি করে। এটি দেখায় না বাগ সত্যিই চলে গেছে কি না, if-এর নতুন শাখা আদৌ কখনো চলে কি না, বা নির্ভরতার নতুন সংস্করণ পরিষ্কার ইনস্টলেশনে import ভেঙে দেয় কি না। রিভিউয়াররা এটা জানেন, তাই এত রিভিউ শেষ হয় "LGTM, যদি টেস্ট পাস করে" দিয়ে।

AI-এর লেখা প্যাচে এই ফাঁক আরও বড় হয়। মডেল দ্রুত বিশ্বাসযোগ্য দেখতে কোড তৈরি করে, আর বিশ্বাসযোগ্য দেখতে কোডই ঠিক সেই ধরনের যা ক্লান্ত রিভিউয়ারের চোখ এড়িয়ে যায়। সস্তা সমাধান হলো কেউ অনুমোদন দেওয়ার আগেই পরিবর্তনটি চালানো — এমন জায়গায় যেখানে এটি কিছুর ক্ষতি করতে পারবে না।

যাচাই: base, head, টেস্ট

একটি প্যাচ যে সবচেয়ে বিশ্বাসযোগ্য প্রমাণ দিতে পারে, তা হলো এমন পুনরুৎপাদন যা পুরোনো কোডে ব্যর্থ হয় আর নতুন কোডে পাস করে। স্যান্ডবক্স এটিকে 20 লাইনের স্ক্রিপ্টে পরিণত করে। এটি Python 3.12, Node.js 22, git ও curl-যুক্ত একটি Firecracker microVM, যা প্রায় এক সেকেন্ডে চালু হয়:

import os
from eqvps import Sandbox

REPO, BASE, HEAD = os.environ["REPO_URL"], os.environ["BASE_SHA"], os.environ["HEAD_SHA"]

def repro(sb, ref):
    sb.exec(f"cd /root/app && git checkout -q {ref}", timeout=55)
    return sb.exec("cd /root/app && python3 /root/repro.py", timeout=55).exit_code

with Sandbox.create(tariff="standard", ttl=1800) as sb:
    sb.exec(f"git clone -q {REPO} /root/app", timeout=55)
    sb.exec("cd /root/app && pip install -q -r requirements.txt", timeout=55)
    sb.upload("/root/repro.py", open("repro.py").read())
    before, after = repro(sb, BASE), repro(sb, HEAD)
    tests = sb.exec("cd /root/app && python3 -m pytest -q", background=True).wait()
    print(f"repro on base: {before}, on head: {after}; tests: {tests.state}, exit {tests.exit_code}")

repro.py হলো বাগ রিপোর্টের কোড অংশ। এটি যদি base-এ শূন্য ছাড়া অন্য কোডে আর head-এ শূন্যে শেষ হয়, তাহলে প্যাচ সত্যিই তা ঠিক করেছে যা ঠিক করার দাবি করে। সেই লাইন আর টেস্টের সারসংক্ষেপ pull request-এ মন্তব্য হিসেবে দিন, তাহলে রিভিউয়ার তথ্য দিয়ে শুরু করবেন।

টেস্ট স্যুট ব্যাকগ্রাউন্ড টাস্ক হিসেবে চলে, কারণ একটি সিঙ্ক্রোনাস কমান্ড 55 সেকেন্ডে থেমে যায়। 30 মিনিটের TTL ঠিক করে দেয় আটকে যাওয়া রান সর্বোচ্চ কতক্ষণ বিল করতে পারবে।

কোড চালানো রিভিউ এজেন্ট

একই ধারণা AI রিভিউয়ারের জন্যও কাজ করে। MCP সার্ভার-এর মাধ্যমে যুক্ত এজেন্টের কাছে স্যান্ডবক্স টুল থাকে: স্যান্ডবক্স তৈরি, কমান্ড চালানো, ফাইল আপলোড ও ডাউনলোড। "এটি Python 3.8-এর সঙ্গে সামঞ্জস্য ভেঙে দিতে পারে" লেখার বদলে সে ব্রাঞ্চ আনে, কোড চালায় এবং traceback উদ্ধৃত করে — অথবা জানায় যে সব ঠিক আছে।

এমন এজেন্টকে একটি খরচের সীমা ও শুধু-পড়ার টোকেন দিন, এবং ঠিক করুন কোন টুল সে জিজ্ঞেস না করেই ডাকতে পারবে। MCP সুরক্ষা ব্যবস্থা প্রতিটি টুলকে ঝুঁকির মাত্রা অনুযায়ী তালিকাভুক্ত করে।

কোন ট্যারিফ

রিপোজিটরিট্যারিফসাধারণ একবারআনুমানিক খরচ
ছোট লাইব্রেরি, খাঁটি Python বা JSsmall (0.5 vCPU, 1 GB)2 মিনিট$0.0011
টেস্ট স্যুটসহ ওয়েব অ্যাপstandard (1 vCPU, 2 GB)5 মিনিট$0.0055
নেটিভ এক্সটেনশন, কম্পাইল হওয়া নির্ভরতাplus (2 vCPU, 4 GB)15 মিনিট$0.033

অস্থায়ী স্যান্ডবক্সের বিল হয় প্রতি সেকেন্ডে, ন্যূনতম 60 সেকেন্ড। কোনো রিভিউয়ার যদি কয়েক দিন ধরে একই পরিবেশে ফিরে আসতে চান, তাহলে সেটি persistent হিসেবে তৈরি করুন: এটি তার ডিস্ক 30 দিন পর্যন্ত রাখে এবং প্রতিটি শুরু হওয়া ঘণ্টার জন্য বিল হয়, তাই দুই দিনের রিভিউয়ের জন্য রাখা standard স্যান্ডবক্সের খরচ প্রায় $3.17। pull request মার্জ হলে সেটি মুছে দিন।

জানার মতো সীমা

  • প্রতি অ্যাকাউন্টে একই সময়ে দুটি কমান্ড। একের পর এক চলা রিভিউয়ের জন্য যথেষ্ট। একসঙ্গে কয়েক ডজন pull request যাচাই করলে সেগুলো সারিতে দাঁড়াবে।
  • ভেতরে আসার পোর্ট নেই। ব্রাউজারে অ্যাপ খোলা যায় না। ভেতরে চালু করুন এবং দ্বিতীয় কমান্ড থেকে curl localhost দিয়ে টেস্ট করুন।
  • ভেতরে Docker নেই। কনটেইনার চালানো টেস্টের জায়গা VPS-এর runner।
  • বাইরে যাওয়ার ইন্টারনেট খোলা। এ কারণেই pip install কাজ করে। প্যাচের লেখককে দেবেন না এমন কিছু স্যান্ডবক্সে রাখবেন না।

শুরু করা

নতুন অ্যাকাউন্ট $1-এর স্যান্ডবক্স সময় পায়, যা standard ট্যারিফে একশোর বেশি রিভিউয়ের জন্য যথেষ্ট। স্যান্ডবক্স পেজে ট্যারিফ আছে, SDK রেফারেন্সে ওপরে ব্যবহৃত প্রতিটি মেথড, আর 5 মিনিটে Python SDK-এ সেটআপ।

সম্পর্কিত: পুরো পাইপলাইনের জন্য আলাদা CI টেস্ট রান, আর যেসব এজেন্ট কোড লেখে তাদের জন্য AI এজেন্টের জন্য স্যান্ডবক্স।

স্থাপন করতে প্রস্তুত? ক্রিপ্টোতে পরিশোধ করুন, KYC ছাড়াই — প্রায় এক মিনিটে লাইভ।

এখনই ডেপ্লয় করুন →

সাধারণ প্রশ্ন

pull request-এ CI চালানোর সঙ্গে এর পার্থক্য কী?

CI জানায় বিদ্যমান টেস্ট পাস করে কি না। রিভিউ যাচাই জানায় প্যাচ যা বলছে তা করে কি না: বাগ রিপোর্টের পুনরুৎপাদন কোড পুরোনো ও নতুন দুই কোডেই চালায়, রিভিউয়ার যে প্রান্তিক ক্ষেত্র নিয়ে চিন্তিত তা চেষ্টা করে, এবং রিভিউয়ারের নিজে খুঁটিয়ে দেখার জন্য একটি স্যান্ডবক্স রেখে দেয়। দুটো মিলে ভালো কাজ করে।

AI রিভিউ এজেন্ট কি এটি ব্যবহার করতে পারে?

হ্যাঁ, আর সবচেয়ে বেশি লাভ সেখানেই। MCP-এর মাধ্যমে এজেন্ট স্যান্ডবক্স তৈরি, কমান্ড চালানো ও ফাইল পড়ার টুল পায়। কোনো পরিবর্তন কিছু ভাঙবে কি না তা অনুমান না করে, সে কোড চালায় এবং রিভিউতে আউটপুট উদ্ধৃত করে।

অচেনা কারও pull request আনা কি নিরাপদ?

স্যান্ডবক্স ঠিক এই জন্যই। কোড চলে নিজস্ব কার্নেলসহ আলাদা microVM-এ, আর আপনি যা রাখবেন তা ছাড়া ভেতরে আপনার কিছুই থাকে না। আপনার রিপোজিটরিতে লিখতে পারে এমন টোকেন দেবেন না; ব্যক্তিগত রিপোজিটরির জন্য শুধু-পড়ার টোকেনই যথেষ্ট।

pull request-এর অ্যাপ কি ব্রাউজারে খুলতে পারি?

না। স্যান্ডবক্সে ভেতরে আসার পোর্ট নেই, তাই বাইরে থেকে কেউ সংযোগ করতে পারে না। আপনি ভেতরে অ্যাপটি চালু করে অন্য কমান্ড থেকে curl দিয়ে টেস্ট করতে পারেন, অথবা রিভিউয়ারদের ইন্টারফেসে ক্লিক করে দেখতে হলে প্রিভিউ VPS-এ ডিপ্লয় করতে পারেন।

একটি রিভিউয়ের খরচ কত?

একটি সাধারণ রিভিউ — ক্লোন, ইনস্টল, দুবার পুনরুৎপাদন, টেস্ট চালানো — standard ট্যারিফে কয়েক মিনিট নেয় এবং খরচ প্রায় $0.005। আপনি প্রিপেইড ব্যালান্স থেকে প্রতি সেকেন্ডে পরিশোধ করেন, ন্যূনতম 60 সেকেন্ড।

মন্তব্য

এখনো কোনো মন্তব্য নেই। প্রথম হোন।

একটি মন্তব্য দিন

মন্তব্য প্রকাশের আগে মডারেট করা হয়।