opencode-rust কী?
opencode-rust হলো Rust-এ তৈরি একটি ওপেন-সোর্স AI কোডিং এজেন্ট। এটি একটি টার্মিনাল ইউজার ইন্টারফেস, একবারে কমান্ড চালানো, একটি HTTP সার্ভার, ওয়েব সাপোর্ট এবং স্থানীয় AI-এজেন্ট ওয়ার্কফ্লোর জন্য ACP ইন্টিগ্রেশন প্রদান করে।
ইঞ্জিনটি সেশন, টুল এক্সিকিউশন, MCP, LSP, প্রোভাইডার রাউটিং, SQLite স্টোরেজ এবং একটি TypeScript প্লাগইন ব্রিজ একত্র করে। এটি Docker বা অন্য কোনো কনটেইনার রানটাইম ছাড়াই চলে। স্ট্রিম করা রিকোয়েস্ট বডি, SQLite-ভিত্তিক কথোপকথনের ইতিহাস, ক্যাশ করা টুল স্কিমা এবং LRU ও TTL উচ্ছেদসহ প্রতি-ডিরেক্টরির পুল করা স্টেটের মাধ্যমে রিসোর্স ব্যবহার সীমাবদ্ধ রাখতে Rust ব্যবহৃত হয়।
একটি ইনস্টলেশন পদ্ধতি বেছে নিন
সমস্ত সমর্থিত ইনস্টলেশন পদ্ধতি opr কমান্ড প্রদান করে, তবে কীভাবে ইনস্টল করা হয়েছে তার ওপর কমান্ডটির আচরণ ভিন্ন হয়।
npm দিয়ে ইনস্টল করুন
npm Linux, macOS এবং Windows সমর্থন করে এবং বর্তমান প্ল্যাটফর্মের জন্য আগে থেকে তৈরি একটি বাইনারি প্যাকেজ ডাউনলোড করে। ইনস্টলেশনের সময় এটি প্রজেক্ট কম্পাইল করে না।
npm install -g opencode-rustnpm লঞ্চারটি একটি Node স্ক্রিপ্ট, যা কমান্ডগুলো ইঞ্জিনে পাঠায়। উপলভ্য প্ল্যাটফর্ম প্যাকেজগুলোর মধ্যে রয়েছে macOS ARM64 ও x64, Linux x64 ও ARM64 GNU বিল্ড, Linux x64 musl এবং Windows x64 MSVC।
Homebrew দিয়ে ইনস্টল করুন
macOS বা Linux-এ Homebrew ফর্মুলাটি ইনস্টল করতে চালান:
brew install vakandi/tap/opencode-rustএটি Homebrew prefix-এ opencode বাইনারি না রেখে opr ইনস্টল করে, তাই এটি upstream OpenCode CLI-কে আড়াল করে না। Homebrew সোর্স থেকে বিল্ড করে, তাই বিল্ড নির্ভরতা হিসেবে একটি Rust toolchain ইনস্টল করে।
সোর্স থেকে বিল্ড করুন
রিপোজিটরি ক্লোন করে ইনস্টলার চালান:
git clone https://github.com/vakandi/opencode-rust.git
cd opencode-rust
./install.shইনস্টলারটি release বাইনারি বিল্ড করে এবং এজেন্ট শর্টকাটসহ opr ইনস্টল করে। এটি Rust সোর্স ও Cargo manifest ফাইলগুলোর fingerprint তৈরি করে, তাই অপরিবর্তিত প্রজেক্টে পুনরায় বিল্ড হয় না। যেকোনো অবস্থায় পুনরায় বিল্ড করতে --force ব্যবহার করুন।
Homebrew বা সোর্স ইনস্টলার ব্যবহার করলে opr নিজেই ইঞ্জিন বাইনারি। ফ্ল্যাগ পাঠানোর সময় একটি স্পষ্ট subcommand ব্যবহার করুন:
opr tui --some-flagnpm-এর ক্ষেত্রে লঞ্চারটি ফ্ল্যাগগুলো TUI-তে পাঠায়, তাই opr --some-flag ভিন্নভাবে ব্যাখ্যা করা হয়।
পরিবেশ প্রস্তুত করুন
ইনস্টলেশন পদ্ধতি যাই হোক, প্লাগইন ব্রিজ এবং npx-এর মাধ্যমে MCP সার্ভার চালু করার জন্য Node.js 18 বা পরবর্তী সংস্করণ প্রয়োজন।
প্রথমবার চালানোর আগে আপনার একটি provider key-ও প্রয়োজন। উদাহরণস্বরূপ, শেলে একটি Anthropic key সেট করুন:
export ANTHROPIC_API_KEY=sk-ant-...আপনার OpenCode সেটআপে সমর্থিত provider এবং credential কনফিগারেশন ব্যবহার করুন। সম্ভব হলে key-গুলো source control ও shell history-এর বাইরে রাখুন।
আপনার প্রথম সেশন চালান
ইন্টার্যাক্টিভ TUI চালু করুন
টার্মিনাল ইন্টারফেস চালু করতে চালান:
oprTUI হলো ডিফল্ট ইন্টার্যাক্টিভ পৃষ্ঠ। এটি সক্রিয় agent ও model দেখায়, assistant-এর আউটপুট স্ট্রিম করে এবং / popup-এর মাধ্যমে কমান্ড completion প্রদান করে।
একটি একক prompt চালান
সম্পূর্ণ হওয়া পর্যন্ত চলা একটি স্বয়ংক্রিয় prompt-এর জন্য run ব্যবহার করুন:
opr run "check this repo for risks"সাধারণ provider call-এর বিপরীতে, run সম্পূর্ণ session prompt loop পরিচালনা করে। টুলগুলো চালানো হয়, অপেক্ষমাণ subagent-গুলো সম্পন্ন হয় এবং process বন্ধ হওয়ার আগে background কাজ শেষ করা হয়।
HTTP সার্ভার চালু করুন
ইঞ্জিনটিকে HTTP সার্ভারের মাধ্যমে প্রকাশ করতে চালান:
opr serve --port 3000সার্ভারটি একই session engine ব্যবহার করে এবং প্রজেক্টের HTTP, streaming ও agent infrastructure সমর্থন করে।
নামযুক্ত agent ব্যবহার করুন
TUI-তে বিল্ট-ইন build ও plan agent রয়েছে। build agent হলো ডিফল্ট পূর্ণ-অ্যাক্সেস development agent, আর plan কেবল-পাঠ বিশ্লেষণ ও অনুসন্ধানের জন্য ব্যবহৃত হয়। TUI-তে agent বদলাতে Tab চাপুন।
সোর্স ইনস্টলার নামযুক্ত agent-এর জন্য শর্টকাটও তৈরি করে:
gilfoyle "fix this failing test"
setbon "write 5 ad hooks"
googlebot "audit my meta tags"এই শর্টকাটগুলো সংশ্লিষ্ট --agent value দিয়ে একটি prompt চালায়। prompt ছাড়া কোনোটি কল করলে standard error-এ ব্যবহারের তথ্য প্রিন্ট হয় এবং status 2 দিয়ে বন্ধ হয়।
আপনার OpenCode configuration এবং ~/.omo/omo.jsonc বা ~/.config/omo/omo.jsonc-এর oh-my-opencode agent store-এ অতিরিক্ত agent কনফিগার করা যায়। এই অবস্থানগুলোর agent configuration কোনো plugin default-কে ওভাররাইড করতে পারে এবং display name ভিন্ন হলেও canonical slug ব্যবহার করে agent মেলানো হয়।
প্রজেক্ট ও সেশন কনফিগার করুন
working directory থেকে ওপরের দিকে অনুসন্ধান করার সময় configuration ফাইলগুলো একত্র করা হয়। সমর্থিত project-level নামগুলো হলো:
opencode.jsoncopencode.json.opencode/opencode.jsonc.opencode/opencode.json
global default configuration ~/.config/opencode/opencode.json বা এর JSONC সমতুল্যে সংরক্ষিত হয়। Agent definition-গুলো ওপরের বর্ণিত oh-my-opencode অবস্থানগুলোতেও সংরক্ষণ করা যেতে পারে।
সেশনগুলো SQLite-এ সংরক্ষিত হয় এবং তৈরি, চালিয়ে যাওয়া, fork, import ও export, এবং parent-child সম্পর্ক সমর্থন করে। ডেটাবেসের অবস্থান দেখতে ব্যবহার করুন:
opr db pathproxy pool দ্বারা ব্যবহৃত data directory-সহ অন্যান্য runtime অবস্থান দেখতে ব্যবহার করুন:
opr debug pathsMCP টুল ব্যবহার করুন
opencode-rust stdio ও HTTP-এর মাধ্যমে MCP সমর্থন করে। MCP সার্ভারগুলো configuration থেকে লোড করা হয়, 90-সেকেন্ডের startup ceiling-এর মধ্যে সমান্তরালভাবে চালু করা হয় এবং agent ব্যবহৃত একই per-turn tool registry-তে নিবন্ধিত হয়।
এর অর্থ হলো, একটি MCP সার্ভার যে টুলগুলো প্রকাশ করে, সেগুলো মডেলে পৌঁছাতে পারে এবং কোনো এজেন্ট টার্নের অংশ হিসেবে কার্যকর হতে পারে। সেশন শুরু করার আগে Node.js এবং প্রয়োজনীয় MCP সার্ভার প্যাকেজগুলো উপলভ্য আছে কি না নিশ্চিত করুন।
প্রকল্পটি MCP stdio পরিবহনের জন্য newline-delimited JSON ব্যবহার করে। এটি LSP-এর Content-Length ফ্রেমিং থেকে আলাদা, তাই MCP সার্ভারের কনফিগারেশনে MCP-সামঞ্জস্যপূর্ণ পরিবহন ও সংজ্ঞা ব্যবহার করা উচিত।
ব্যাকগ্রাউন্ড কাজ সম্পন্ন হওয়া নিশ্চিত করুন
run কমান্ডটি ব্যাকগ্রাউন্ড টাস্ক নিষ্কাশনের জন্য একটি টাইমআউট গ্রহণ করে:
opr run --wait-background-timeout 120 "run the requested task"মূল টার্নের পর ইঞ্জিন সেশনটি নিষ্ক্রিয় হওয়া পর্যন্ত অপেক্ষা করে, oh-my-opencode দ্বারা রেকর্ড করা চাইল্ড ফ্রেমগুলো স্ট্রিম করে এবং ধারাবাহিকতার অবস্থা পরীক্ষা করে। ডিফল্ট টাইমআউট 120 সেকেন্ড।
ড্রেন প্রক্রিয়া আটকে না থেকে ব্যর্থ হলে তা উন্মুক্ত অবস্থায় থাকে: অনুপস্থিত ডেটাবেস, অনুপস্থিত লেজার, ক্ষতিগ্রস্ত JSON এবং পুরোনো সক্রিয় এন্ট্রিগুলোকে অবশিষ্ট কাজ না থাকার মতো বিবেচনা করা হয়। আপনার ওয়ার্কফ্লোতে ভিন্ন সীমা প্রয়োজন হলে ছোট বা বড় টাইমআউট ব্যবহার করুন।
রোটেটিং প্রক্সি কনফিগার করুন
ইঞ্জিনে একটি স্থানীয় HTTP এবং CONNECT ফরওয়ার্ডার রয়েছে, যা আবাসিক প্রক্সি প্রার্থীদের মধ্যে রোটেট করে। এটি আনুমানিক প্রতি 120 সেকেন্ডে সবচেয়ে আগে ব্যবহৃত আপস্ট্রিম নির্বাচন করে, ব্যবহারের আগে প্রার্থীদের পরীক্ষা করে এবং প্রত্যাখ্যাত এন্ট্রিগুলো কোয়ারেন্টাইনে পাঠায়।
ডিফল্ট পুল ফাইলের অবস্থান:
- macOS:
~/Library/Application Support/opencode/proxy-pool.txt - Linux:
~/.local/share/opencode/proxy-pool.txt - Windows:
%LOCALAPPDATA%\opencode\proxy-pool.txt
ডেটার অবস্থান পরিবর্তন করতে OPENCODE_PATHS_ROOT সেট করুন। তখন পুলের পথ হবে $OPENCODE_PATHS_ROOT/opencode/proxy-pool.txt।
এন্ট্রিতে একটি হোস্ট ও পোর্ট থাকে, সঙ্গে ঐচ্ছিক পরিচয়পত্র ও মেটাডেটা থাকতে পারে:
198.51.100.10:8080
203.0.113.24:1080
198.51.100.31:3128:myuser:mypass
203.0.113.77:8000 | note:rotates hourlyফাইলটিতে শুধু বেসিক এন্ট্রি রাখুন। কিছু উদাহরণে # দিয়ে শুরু হওয়া লাইনগুলো মন্তব্য হিসেবে দেখানো হলেও পার্সার মন্তব্যের সিনট্যাক্স বাস্তবায়ন করে না; এ ধরনের লাইনগুলো ভুল এন্ট্রি হিসেবে উপেক্ষা করা হয়। ব্যর্থ প্রার্থী ও মালিকানার তথ্য পাশাপাশি থাকা proxy-quarantine.json এবং proxy-claims.json ফাইলে সংরক্ষিত হয়।
প্রক্সি চালু করতে অবশ্যই ম্যানুয়ালি প্রক্সি ভেরিয়েবল এক্সপোর্ট না করে opencode_proxy::start() ব্যবহার করতে হবে। provider registry তৈরি হওয়ার আগে ক্লায়েন্টকে প্রক্সি কনফিগারেশন দিতে হবে। খালি বা অপাঠ্য পুলের ক্ষেত্রে এমন লিসেনার চালু না করে একটি ত্রুটি ফেরত দেওয়া হয়, যা প্রতিটি অনুরোধে ব্যর্থ হবে।
কমান্ডগুলোর পরিসর দেখুন
CLI-তে ইন্টার্যাক্টিভ ব্যবহার, সেশন, সার্ভিস, কনফিগারেশন, প্রমাণীকরণ, এজেন্ট, ডিবাগিং, MCP, ডেটা স্থানান্তর এবং রক্ষণাবেক্ষণের জন্য কমান্ড রয়েছে:
tui attach run serve web acp models
session stats db config auth agent debug
mcp export import github pr upgrade uninstall
generate versionউপযোগী run অপশনগুলোর মধ্যে রয়েছে --continue, --session, --fork, --agent, --format, --title, --dir, --port, --variant, --thinking এবং --wait-background-timeout।
ডেভেলপমেন্ট ও যাচাই
আপনি যদি রিপোজিটরিতে কাজ করেন, তাহলে ওয়ার্কস্পেসের পরীক্ষা ও যাচাই চালান:
cargo test --workspace
cargo build --release --bin opencode
cargo clippy --workspace --all-targetsরিপোজিটরিটি CLI, সার্ভার, সেশন, এজেন্ট, টুল, provider, MCP, প্লাগইন, LSP, স্টোরেজ, TUI, অনুমতি, পাথ, প্রক্সি এবং সংশ্লিষ্ট ইউটিলিটির জন্য ক্রেটে সংগঠিত। প্রতি-ক্রেট ডকুমেন্টেশন docs/ ডিরেক্টরিতে পাওয়া যায়।
উপসংহার
opencode-rust একটি Rust-ভিত্তিক OpenCode ইঞ্জিন, যাতে ইন্টার্যাক্টিভ TUI, সম্পূর্ণ সেশন এক্সিকিউশন, কনফিগারযোগ্য এজেন্ট, MCP ও প্লাগইন ইন্টিগ্রেশন, SQLite স্টোরেজ এবং HTTP অ্যাক্সেস রয়েছে। npm, Homebrew অথবা সোর্স বিল্ড দিয়ে শুরু করুন, একটি provider key কনফিগার করুন এবং আপনার ওয়ার্কফ্লো অনুযায়ী opr, opr run অথবা opr serve ব্যবহার করুন।
প্রকল্পটি MIT লাইসেন্সের অধীনে প্রকাশিত এবং OpenCode দলের সঙ্গে এর কোনো সম্পর্ক নেই।
