
Open Math Harness কী?
Open Math Harness হলো Open Math OS-এর পেছনে থাকা ওপেন-সোর্স রানটাইম। এর প্রথম প্রজন্মের নাম Nucleus; এটি Rust-এ লেখা এবং প্ল্যাটফর্মে ব্যবহৃত কার্নেল, সার্ভিস ও এজেন্ট ধারণ করে।
রানটাইমটি সহযোগিতামূলক গাণিতিক গবেষণার জন্য তৈরি। এটি ওপেন-ওয়েট মডেলে চলা এজেন্ট, Ultramath-এর মাধ্যমে সমান্তরাল সমস্যা অনুসন্ধান, Lean-ভেরিফায়েড প্রমাণ অনুসন্ধান, প্রকল্পের মেমরি, টুল এবং সুরক্ষিত কার্যক্রমের জন্য মানব অনুমোদন সমর্থন করতে পারে।
বর্তমান সীমাবদ্ধতা: সম্পূর্ণ রানটাইম Open Math OS ডিপ্লয়মেন্ট পরিবেশের ওপর নির্ভরশীল। রিপোজিটরিটি সোর্স থেকে বিল্ড করা যায় এবং এতে একটি ছোট স্বয়ংসম্পূর্ণ উদাহরণ রয়েছে, তবে ইন্টার্যাক্টিভ এজেন্ট, Ultramath, মেমরি বা প্রমাণ অনুসন্ধানের জন্য এটি এখনো স্বতন্ত্র স্থানীয় পরিবেশ সরবরাহ করে না।
মূল নকশা ও বৈশিষ্ট্য
ক্যাপাবিলিটি-ভিত্তিক সীমাবদ্ধতা
Open Math Harness একটি ক্যাপাবিলিটি-ভিত্তিক মাইক্রোকার্নেল ব্যবহার করে। প্রতিটি প্রসেস তার কম্পোজিশনের মাধ্যমে অনুমোদিত কর্তৃত্বই পায়, এবং এটি যে প্রসেস চালু করে সেটি অভিভাবক প্রসেস যতটা ডেলিগেট করতে পারে, তার চেয়ে বেশি কর্তৃত্ব পায় না। এটি এজেন্টসহ অন্যান্য প্রোগ্রামের ক্ষেত্রেও প্রযোজ্য।
মডেলের উত্তর, টুলের ফলাফল, রিপোজিটরি ফাইল এবং অন্যান্য টেক্সটকে অবিশ্বস্ত ইনপুট হিসেবে বিবেচনা করা হয়। টেক্সট কোনো অনুমতি দিতে, সুরক্ষিত কার্যক্রম অনুমোদন করতে বা কোনো প্রমাণ বৈধ কি না নির্ধারণ করতে পারে না। ক্রেডেনশিয়ালগুলো মডেল, ট্রান্সক্রিপ্ট বা লগের কাছে প্রকাশ না করে সীমিত-সুবিধাপ্রাপ্ত প্রোভাইডারের মধ্যে রাখা হয়।
এজেন্ট ও গবেষণা টুল
- ওপেন-মডেল এজেন্ট: সেশনগুলো স্ট্রিমিং উত্তর, টুল, সাব-এজেন্ট এবং স্থায়ী ইতিহাসসহ ওপেন-ওয়েট মডেল ব্যবহার করতে পারে।
- Ultramath: একাধিক এজেন্ট একটি কঠিন সমস্যার বিভিন্ন পদ্ধতি নিয়ে অসমসাময়িকভাবে অনুসন্ধান করে, ফলাফল ভাগ করে এবং সমন্বয়কারী এজেন্টের কাছে প্রতিবেদন জমা দেয়।
- প্রমাণ অনুসন্ধান: কর্মীরা সম্ভাব্য Lean প্রমাণের একটি ট্রিতে বিভিন্ন শাখা অনুসন্ধান করে। মূল বিবৃতির বিপরীতে Lean যাচাই করলেই কেবল কোনো প্রার্থী সফল হয়।
- প্রকল্পের টুল: এজেন্টরা রিপোজিটরি ফাইল, শেল, ওয়েব ও PDF টুল, প্রকল্পের স্কিল, MCP সার্ভার এবং প্লাগইন নিয়ে কাজ করতে পারে।
- মানব নিয়ন্ত্রণ: সুরক্ষিত কার্যক্রম অনুমোদন না পাওয়া পর্যন্ত অপেক্ষা করে, আর সেশন রেকর্ড প্রদর্শনের আগে সিক্রেটের জন্য স্ক্যান করা হয়।
প্রকল্পের মেমরি
প্রতিটি প্রকল্পের জন্য মেমরি আলাদাভাবে সংরক্ষিত হয়। কোনো সেশন নিষ্ক্রিয় হলে মেমরি সার্ভিস তার ইতিহাস থেকে উপকারী উপাদান বের করে নির্বাচিত তথ্য MEMORY.md-তে একত্র করতে পারে। পরবর্তী সেশনগুলো এই মেমরিকে প্রসঙ্গ হিসেবে পায় এবং ব্যবহৃত উপাদানের উদ্ধৃতি দেয়।
মেমরি শুধুমাত্র প্রসঙ্গ সরবরাহ করে। এটি কোনো অনুমতি দিতে বা ব্যবহারকারীর বর্তমান নির্দেশনা অগ্রাহ্য করতে পারে না।
পূর্বশর্ত
Open Math Harness বিল্ড করার আগে নিচের নির্ভরতা-সহ একটি সমর্থিত Linux পরিবেশ প্রস্তুত করুন:
- Linux: Windows ও macOS নেটিভ রানটাইম হোস্ট হিসেবে সমর্থিত নয়।
- নেটিভ বিল্ড টুল: নেটিভ নির্ভরতাগুলোর জন্য একটি C কম্পাইলার ও লিঙ্কার ইনস্টল করুন।
- rustup-এর মাধ্যমে Rust: রিপোজিটরির
rust-toolchain.tomlপ্রয়োজনীয় টুলচেইন নির্দিষ্ট করে এবং ফরম্যাটিং ও লিন্টিং কম্পোনেন্ট অন্তর্ভুক্ত করে। - bubblewrap:
bwrapইনস্টল করেPATH-এ রাখুন এবং হোস্টে সুবিধাবিহীন ইউজার নেমস্পেস অনুমোদিত আছে কি না নিশ্চিত করুন।
সীমাবদ্ধ পরিবেশ বাধ্যতামূলক। হোস্টের নিরাপত্তা নীতির কারণে bubblewrap স্যান্ডবক্স তৈরি করতে না পারলে, রানটাইম স্টার্টআপের সময় ব্যর্থ হবে।
সোর্স থেকে Open Math Harness বিল্ড করুন
রিপোজিটরি ক্লোন করে তার ডিরেক্টরিতে প্রবেশ করুন এবং সম্পূর্ণ Rust ওয়ার্কস্পেস বিল্ড করুন:
git clone https://github.com/openmathmodel/open-math-harness.git
cd open-math-harness
cargo build --locked --workspace--locked অপশনটি Cargo-কে লকফাইলে রেকর্ড করা নির্ভরতার সংস্করণ ব্যবহার করতে বাধ্য করে। সফল বিল্ডের পর লঞ্চার ও সার্ভিস বাইনারিগুলো target/debug/-এর অধীনে পাওয়া যাবে।
deploy/vm/-এর ফাইলগুলো পরিচালিত Open Math OS ভার্চুয়াল মেশিনের জন্য তৈরি। এগুলো ব্যক্তিগত কম্পিউটারের জন্য স্বতন্ত্র ইনস্টলার নয়।
স্বয়ংসম্পূর্ণ Slice উদাহরণ চালান
রিপোজিটরিতে examples/slice/-এর অধীনে একটি স্ক্রিপ্ট করা উদাহরণ রয়েছে। এটি ক্যাপাবিলিটি যাচাই ও ডেলিগেশন প্রদর্শনের জন্য একটি এজেন্ট, একটি কর্মী এবং একটি ফাইলসিস্টেম সার্ভিস চালু করে।
এই উদাহরণ কোনো মডেল প্রোভাইডারের সঙ্গে যোগাযোগ করে না এবং মডেল ক্রেডেনশিয়াল বা Open Math OS ডিপ্লয়মেন্টের প্রয়োজন হয় না। এটি ইন্টার্যাক্টিভ চ্যাট, Ultramath, মেমরি বা প্রমাণ অনুসন্ধানও চালু করে না। তবু Linux এবং কার্যকর bubblewrap সীমাবদ্ধতা প্রয়োজন।
ধাপ ১: উদাহরণ শুরু করুন
রিপোজিটরির রুট থেকে চালান:
cargo run --locked --manifest-path cli/Cargo.toml -- run examples/slice/config.jsonধাপ ২: প্রদর্শনটি বুঝুন
চলার সময় স্ক্রিপ্ট করা এজেন্টটি তিন ধরনের গুরুত্বপূর্ণ কাজ করে:
- প্রদত্ত ক্যাপাবিলিটি অনুযায়ী যেসব ফাইল পড়ার অনুমতি রয়েছে, সেগুলো পড়ে।
- একটি ছোট ডিরেক্টরিতে প্রবেশাধিকার তার কর্মীকে ডেলিগেট করে।
- এমন কিছু কার্যক্রমের চেষ্টা করে, যা তার কর্তৃত্বের সীমা অতিক্রম করায় কার্নেল প্রত্যাখ্যান করে।
এতে Slice উদাহরণটি প্রকল্পের কেন্দ্রীয় নিয়মের একটি সংক্ষিপ্ত প্রদর্শনী হয়ে ওঠে: কোনো প্রসেস কেবল তার কাছে থাকা ক্যাপাবিলিটিই ব্যবহার ও ডেলিগেট করতে পারে।
ধাপ ৩: ফলাফল পরীক্ষা করুন
চালানোর পর এজেন্ট ও কর্মীর ট্রান্সক্রিপ্ট পরীক্ষা করুন:
examples/slice/out/agent/transcript.jsonl
examples/slice/out/agent/worker/transcript.jsonlফাইলসিস্টেম সার্ভিসটি আলাদাভাবে প্রাপ্ত কলগুলো রেকর্ড করে:
examples/slice/log/access.jsonlউদাহরণটি এই রিপোর্টটিও তৈরি করে:
examples/slice/data/work/report.txtকোন অপারেশনগুলোর অনুরোধ করা হয়েছে, অর্পণ করা হয়েছে, গ্রহণ করা হয়েছে বা প্রত্যাখ্যান করা হয়েছে তা দেখতে ট্রান্সক্রিপ্টগুলোর সঙ্গে ফাইলসিস্টেম অ্যাক্সেস লগ তুলনা করুন।
উদাহরণটি আবার চালান
তৈরি হওয়া report.txt ফাইলটি পরবর্তী রানগুলোকে প্রভাবিত করে। উদাহরণটি আবার চালানোর সময় রিপোর্ট তৈরি সফল করতে চাইলে আগে এটি মুছে দিন:
rm examples/slice/data/work/report.txt
cargo run --locked --manifest-path cli/Cargo.toml -- run examples/slice/config.jsonরানগুলোর আচরণ তুলনা করার সময় পুরোনো ট্রান্সক্রিপ্ট ও লগ ফাইল রাখা এখনও কার্যকর হতে পারে, তাই অতিরিক্ত আর্টিফ্যাক্ট মুছে ফেলার আগে আউটপুট ডিরেক্টরিগুলো পর্যালোচনা করুন।
টেস্ট স্যুট চালান
ওয়ার্কস্পেস বিল্ড করার পর রিপোজিটরির রুট থেকে ডিফল্ট Rust টেস্ট চালান:
cargo test --workspaceডিফল্ট টেস্ট স্যুটের জন্য পেইড মডেল API বা প্রোডাকশন ক্রেডেনশিয়ালের প্রয়োজন নেই। কিছু ইন্টিগ্রেশন টেস্ট বাস্তব চাইল্ড প্রসেস চালায় এবং bubblewrap ব্যবহার করে, তাই একই Linux কনফাইনমেন্টের প্রয়োজনীয়তা প্রযোজ্য।
যেসব টেস্টের জন্য বাহ্যিক মডেল প্রোভাইডার বা Lean ইনস্টলেশন প্রয়োজন, সেগুলো স্পষ্টভাবে অপ্ট-ইন। রিপোজিটরির CI ওয়ার্কফ্লোতে ফরম্যাটিং, Clippy, Python টুলিং এবং Node.js MCP ইন্টিগ্রেশন চেকও সংজ্ঞায়িত করা আছে।
উন্নত ব্যবহার ও ডেভেলপমেন্ট টিপস
ক্যাপাবিলিটি সীমা বিশ্লেষণে লগ ব্যবহার করুন
JSON Lines ফাইলগুলোকে অডিট ট্রেইল হিসেবে বিবেচনা করলে slice উদাহরণটি সবচেয়ে বেশি কার্যকর হয়। এজেন্ট ট্রান্সক্রিপ্ট, ওয়ার্কার ট্রান্সক্রিপ্ট এবং ফাইলসিস্টেম অ্যাক্সেস লগ একসঙ্গে পর্যালোচনা করুন। এতে দেখা যায়, অর্পিত অ্যাক্সেস কীভাবে আরও সীমিত হয় এবং নির্ধারিত কর্তৃত্বের বাইরে থাকা অপারেশনগুলো কার্নেল কীভাবে প্রত্যাখ্যান করে।
ডিপ্লয়মেন্টের প্রয়োজনীয়তাগুলো আলাদা রাখুন
ওয়ার্কস্পেস বিল্ড করলে স্বয়ংক্রিয়ভাবে সম্পূর্ণ স্থানীয় Open Math OS ইনস্টলেশন তৈরি হয় না। ইন্টার্যাক্টিভ এজেন্টগুলোর জন্য অতিরিক্তভাবে সার্ভিস কনফিগারেশন, মডেল-প্রোভাইডার ক্রেডেনশিয়াল এবং একটি ক্লায়েন্ট প্রয়োজন। প্রুফ সার্চের জন্য কনফিগার করা Lean ও Mathlib পরিবেশও দরকার।
deploy/vm/-এর managed VM কনফিগারেশনকে সাধারণ উদ্দেশ্যের ইনস্টলেশন স্ক্রিপ্ট হিসেবে বিবেচনা করা এড়িয়ে চলুন। রিপোজিটরিতে বর্তমানে slice উদাহরণটিকেই সমর্থিত স্বয়ংসম্পূর্ণ স্থানীয় ডেমোনস্ট্রেশন হিসেবে নথিভুক্ত করা হয়েছে।
পুনরুৎপাদনযোগ্য Cargo রেজোলিউশন বজায় রাখুন
নথিভুক্ত বিল্ড ও রান কমান্ডের সঙ্গে --locked ব্যবহার করুন। এতে ডিপেন্ডেন্সি রেজোলিউশন রিপোজিটরির lockfile-এর সঙ্গে সামঞ্জস্যপূর্ণ থাকে এবং পরিবেশগুলোর মধ্যে অপ্রত্যাশিত পার্থক্য কমে।
শুরুতেই কনফাইনমেন্ট যাচাই করুন
স্টার্টআপ ব্যর্থ হলে উচ্চস্তরের সার্ভিস ডিবাগ করার আগে bubblewrap পরীক্ষা করুন। নিশ্চিত করুন যে bwrap PATH-এ আছে এবং হোস্টের নিরাপত্তা নীতি অনির্দিষ্ট ব্যবহারকারী নেমস্পেসের অনুমতি দেয়। প্রয়োজনীয় কনফাইনমেন্ট ছাড়া রানটাইম ইচ্ছাকৃতভাবেই এগিয়ে যায় না।
প্রুফ যাচাইয়ের সীমা বুঝুন
পূর্ণ আর্কিটেকচারে, কোনো এজেন্টের আত্মবিশ্বাস কোনো উপপাদ্য প্রমাণিত হয়েছে তা প্রতিষ্ঠা করে না। প্রার্থী প্রুফগুলো সময়সীমাসহ সীমাবদ্ধ ওয়ার্কস্পেসে মূল্যায়ন করা হয়, এবং সেগুলো উত্তীর্ণ হয়েছে কি না তা Lean নির্ধারণ করে। সার্চ রেকর্ডগুলো প্রার্থীর কাজ সংরক্ষণ করে, যাতে পরবর্তী রাউন্ডগুলো আগের শাখা থেকে চালিয়ে যাওয়া যায়।
কন্ট্রিবিউশন চেকগুলো অনুসরণ করুন
পরিবর্তনের প্রস্তাব দেওয়ার আগে CONTRIBUTING.md এবং রিপোজিটরির CI ওয়ার্কফ্লো পর্যালোচনা করুন। কন্ট্রিবিউশন গাইডে টেস্টিং, AI রিভিউ এবং পুল রিকোয়েস্টে প্রত্যাশিত তথ্যের বর্ণনা রয়েছে।
উপসংহার
Open Math Harness, Open Math OS-এর জন্য নিরাপত্তাকেন্দ্রিক রানটাইম ভিত্তি সরবরাহ করে। সম্পূর্ণ ইন্টার্যাক্টিভ পরিবেশটি এখনও স্বতন্ত্র স্থানীয় সেটআপ হিসেবে উপলভ্য না হলেও, আপনি Nucleus ওয়ার্কস্পেস বিল্ড করতে, এর স্বয়ংসম্পূর্ণ slice উদাহরণ চালাতে, ক্যাপাবিলিটি এনফোর্সমেন্ট পরিদর্শন করতে এবং ডিফল্ট টেস্ট সম্পাদন করতে পারেন। এই ধাপগুলো রানটাইমের মূল নীতির একটি ব্যবহারিক পরিচয় দেয়: এজেন্টরা স্পষ্ট কর্তৃত্বের মধ্যে প্রস্তাব দেয় ও কাজ করে, আর মানুষ এবং বিশ্বস্ত যাচাইকারীরা নিয়ন্ত্রণ ধরে রাখে।
