Skip to content

Latest commit

 

History

History
250 lines (185 loc) · 27.6 KB

CLAUDE-CODE-CONFIGURATION.md

File metadata and controls

250 lines (185 loc) · 27.6 KB

Claude Code CLI — Configuration with OmniRoute (বাংলা)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Claude Code CLI (claude)-কে OmniRoute-এর দিকে নির্দেশ করুন—স্থানীয় বা রিমোট VPS— প্রতি-মডেল প্রোফাইলসহ, Codex সেটআপের অনুরূপভাবে।


দ্রুত শুরু

# স্থানীয় OmniRoute-এর সঙ্গে Claude Code চালু করুন (সক্রিয় context স্বয়ংক্রিয়ভাবে শনাক্ত করে)
omniroute launch

# রিমোট OmniRoute-এর সঙ্গে (`omniroute connect <host>`-এর পরে এটি স্বয়ংক্রিয়)
omniroute launch --remote http://192.168.0.15:20128 --api-key oma_live_xxx

# প্রতি-মডেল প্রোফাইল তৈরি করুন, তারপর একটি চালু করুন
omniroute setup-claude            # ~/.claude/profiles/<name>/settings.json-এ লেখে
omniroute launch --profile glm52  # OmniRoute-এর মাধ্যমে glm/glm-5.2 ব্যবহারকারী Claude Code

Claude Code কীভাবে একটি gateway-এর সঙ্গে সংযুক্ত হয়

Claude Code Anthropic Messages API-এর সঙ্গে যোগাযোগ করে এবং environment variable-এর মাধ্যমে একটি custom endpoint-এর দিকে নির্দেশিত হয় (এতে কোনো --base-url flag নেই):

Variable উদ্দেশ্য
ANTHROPIC_BASE_URL Gateway-এর root URL (Claude Code শেষে /v1/messages যোগ করে)। কোনো /v1 suffix নয়।
ANTHROPIC_AUTH_TOKEN Authorization: Bearer … হিসেবে পাঠানো হয়—আপনার OmniRoute access token / API key ব্যবহার করুন
ANTHROPIC_API_KEY বিকল্প: x-api-key হিসেবে পাঠানো হয়। উভয়টি সেট করা থাকলে ANTHROPIC_AUTH_TOKEN অগ্রাধিকার পায়
ANTHROPIC_MODEL একটি নির্দিষ্ট model বাধ্যতামূলক করে (/model picker-এর default-কে override করে)
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY 1 → native /model picker /v1/models থেকে claude*/anthropic* model দেখায়
CLAUDE_CODE_MAX_OUTPUT_TOKENS প্রতি response-এ output token সীমাবদ্ধ করে (যেমন 65536)
CLAUDE_CODE_AUTO_COMPACT_WINDOW auto-compaction-এর জন্য token threshold

Env var-গুলো startup-এর সময় একবারই পড়া হয়—এগুলো পরিবর্তন করার পরে Claude Code restart করুন।

omniroute launch আপনার জন্য এগুলোর সবই সেট করে: এটি সক্রিয় context থেকে base URL + token নির্ধারণ করে (তাই omniroute connect <vps> এবং তারপর omniroute launch সরাসরি কাজ করে), server-এর health check করে এবং claude exec করে।


ডিসকভারি অ্যালিয়াস — /model পিকারে Claude-বহির্ভূত মডেল দেখানো

Claude Code-এর গেটওয়ে মডেল ডিসকভারি শুধুমাত্র সেই আইডিগুলো তালিকাভুক্ত করে যেগুলো claude বা anthropic দিয়ে শুরু হয়, তাই CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 সেট থাকলেও নেটিভ /model পিকারে সাধারণত শুধুমাত্র OmniRoute-এর Claude/Anthropic মডেলগুলোই দেখা যায় — একটি kimi/kimi-k2.6 বা glm/glm-5.2 কখনোই দেখা যায় না, যদিও এটি ঠিকঠাক রাউট হয়।

OmniRoute যেকোনো সক্রিয় মডেলকে (এবং কম্বোকে) একটি claude/… আইডির অধীনে মিরর করতে পারে যাতে এটি ওই ফিল্টার পাস করে এবং পিকারে দেখা যায়:

kimi/kimi-k2.6            →  claude/kimi/kimi-k2.6      "Kimi K2.6 (OmniRoute)"
glm/glm-5.2              →  claude/glm/glm-5.2         "GLM 5.2 (OmniRoute)"
<combo "custo-otimizado"> →  claude/combo/custo-otimizado

আপনি যখন Claude Code-এ এগুলোর একটি বেছে নেন, OmniRoute রাউট করার আগে claude/ র্যাপারটি সরিয়ে আসল আইডিতে ফিরিয়ে দেয় — একটি প্রকৃত claude/<real-claude-model> আইডি (প্রকৃত Claude OAuth প্রোভাইডার) সবসময় অপরিবর্তিত থাকে।

ডিফল্টভাবে শুধুমাত্র বেস আইডিগুলো মিরর করা হয়। অপ্ট-ইন CATALOG_MIRROR_REFINEMENTS_ENABLED ফিচার ফ্ল্যাগ চালু থাকলে, ক্যাটালগে ইতিমধ্যে তালিকাভুক্ত রিজনিং-এফোর্ট ভ্যারিয়েন্টগুলো (যেমন codex/gpt-6-sol-high) অন্য যেকোনো আইডির মতোই মিরর করা হয়, যাতে Claude Code একটি স্পষ্ট এফোর্ট লেভেল বেছে নিতে পারে, এবং বিল্ট-ইন auto/* আইডিগুলো যেগুলো রিকোয়েস্ট পাথ বাস্তবায়ন করতে পারে না সেগুলো মিরর করা হয় না। এফোর্ট ভ্যারিয়েন্টগুলো মোটেই তালিকাভুক্ত হবে কি না তা এখনো OMNIROUTE_DISABLE_THINKING_LEVEL_VARIANTS দ্বারা নিয়ন্ত্রিত হয় — মিরর কখনোই এমন কোনো ভ্যারিয়েন্ট যোগ করে না যা বেস ক্যাটালগে নেই।

এটি ডিফল্টভাবে বন্ধ থাকে এবং একটি তিন-স্তরের গেট দ্বারা নিয়ন্ত্রিত হয় (সবচেয়ে নির্দিষ্টটি জয়ী হয়), যাতে একটি সাধারণ OmniRoute সেই ক্লায়েন্টদের জন্য কখনোই এর ক্যাটালগ দ্বিগুণ না করে যারা Claude Code ব্যবহার করে না:

স্তর কোথায়
মডেল প্রোভাইডার বিস্তারিত পৃষ্ঠা → প্রতি-মডেল "Expose in Claude Code" টগল
প্রোভাইডার প্রোভাইডার বিস্তারিত পৃষ্ঠা → প্রোভাইডার-স্তরের টগল (এর সব মডেলকে কভার করে)
গ্লোবাল Settings → Feature Flags → EXPOSE_CC_DISCOVERY_ALIASES (ডিফল্ট বন্ধ)

EXPOSE_CC_DISCOVERY_ALIASES এনভায়রনমেন্ট ভ্যারিয়েবল গ্লোবাল স্তরটি চালু করে এবং ড্যাশবোর্ড ওভাররাইডের চেয়ে অগ্রাধিকার পায় (যখন তা করে, Feature Flags স্ক্রিনে একটি "active via environment variable" নোট দেখায়)। প্রতি-প্রোভাইডার এবং প্রতি-মডেল টগল সেখান থেকে পরিমার্জন করে — যেমন গ্লোবাল বন্ধ + Kimi প্রোভাইডার চালু করলে শুধুমাত্র Kimi-এর মডেলগুলো প্রকাশ পায়।

⚠️ Claude-বহির্ভূত মডেলে উইন্ডো অমিল। Claude Code যেকোনো আইডির জন্য 200K কনটেক্সট উইন্ডো ধরে নেয় যা এটি চিনতে পারে না (এটি /v1/models থেকে প্রকৃত উইন্ডো পড়তে পারে না)। বড় উইন্ডোওয়ালা মডেলের জন্য (যেমন Kimi K2-এর 256K), CLAUDE_CODE_AUTO_COMPACT_WINDOW মডেলটির প্রকৃত উইন্ডোর চেয়ে কম মানে সেট করুন যাতে অটো-কমপ্যাকশন অকালে ট্রিগার না হয়। উপরের জেনারেট করা প্রোফাইলগুলো ইতিমধ্যে প্রতি মডেলে এটি করে।


ড্যাশবোর্ডে অনবোর্ডিং ব্লক

Claude টুল কার্ডটি (Dashboard → CLI Code) কপি বাটনসহ, ডিসকভারি-অ্যালিয়াস তথ্য বাটনের পাশে, এই ইনস্ট্যান্সের জন্য সঠিক settings.json ফ্র্যাগমেন্টটি রেন্ডার করে:

{
  "env": {
    "ANTHROPIC_BASE_URL": "http://<your OmniRoute>:20128",
    "ANTHROPIC_AUTH_TOKEN": "<your OmniRoute API key>",
    "CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY": "1",
  },
}

বেস URL-টি কার্ড দ্বারা সমাধান করা URL (আপনার টাইপ করা কাস্টম ওভাররাইডসহ), যা ইতিমধ্যেই স্বাভাবিকীকৃত—কোনো /v1 সাফিক্স বা শেষে স্ল্যাশ নেই। কী কখনোই রেন্ডার করা হয় না: ব্লকটিতে একটি প্লেসহোল্ডার থাকে, তাই কোনো স্ক্রিনশট বা পেস্ট করা স্নিপেট থেকে কী ফাঁস হতে পারে না। প্লেসহোল্ডারের জায়গায় আপনার কী পেস্ট করুন।

যে মডেলের প্রকৃত কনটেক্সট উইন্ডো 200K নয়, তার জন্য একই env ব্লকের অধীনে CLAUDE_CODE_AUTO_COMPACT_WINDOW যোগ করুন—Claude Code তার অচেনা প্রতিটি id-এর জন্য 200K ধরে নেয়, ফলে অন্যথায় অটো-কমপ্যাকশন ভুল সময়ে শুরু হয় (আগের বিভাগের সতর্কতাটি দেখুন)। স্নিপেট বিল্ডারটিও এই মান গ্রহণ করে, তাই টার্গেট মডেলের উইন্ডো জানা থাকলে কোনো কলার সরাসরি এটি নির্গত করতে পারে।

সোর্স: src/shared/services/claudeCliConfig.ts::buildClaudeDiscoverySettingsSnippet (বিশুদ্ধ বিল্ডার, ইউনিট-পরীক্ষিত), যা ClaudeGatewayOnboardingBlock দ্বারা রেন্ডার করা হয়।

একটি অ্যাকাউন্ট পিন করুন (ঐচ্ছিক)

প্রতিটি Claude Code অনুরোধ একটি নির্দিষ্ট প্রোভাইডার অ্যাকাউন্টের মাধ্যমে পাঠাতে, একই env ব্লকে ANTHROPIC_CUSTOM_HEADERS ব্যবহার করে x-omniroute-connection হেডারটি যোগ করুন:

"ANTHROPIC_CUSTOM_HEADERS": "x-omniroute-connection: <connection id>"

প্রোভাইডার পৃষ্ঠার কানেকশন সারিতে থাকা xxxxxxxx… চিপ থেকে id-টি কপি করুন। পিনটি শুধু একক-মডেল id (provider/model)-এর ক্ষেত্রে প্রযোজ্য, কম্বোর ক্ষেত্রে নয়। সঠিক ফলব্যাক আচরণের জন্য প্রতি অনুরোধে অ্যাকাউন্ট পিনিং দেখুন।


প্রোফাইলসমূহ (CLAUDE_CONFIG_DIR)

Claude Code-এ কোনো নেটিভ প্রোফাইল ফাইল নেই (Codex-এর ~/.codex/<name>.config.toml-এর বিপরীতে)। প্রচলিত পদ্ধতি হলো CLAUDE_CONFIG_DIR — প্রতিটি প্রোফাইলের জন্য একটি পৃথক কনফিগ ডিরেক্টরি, যার প্রত্যেকটির নিজস্ব settings.json, শংসাপত্র, ইতিহাস ও ক্যাশ থাকে।

omniroute setup-claude লাইভ /v1/models ক্যাটালগ সংগ্রহ করে এবং ~/.claude/profiles/<name>/settings.json-এ প্রতিটি মডেলের জন্য একটি করে প্রোফাইল লেখে, যেখানে setup-codex-এর মতো একই নাম পুনঃব্যবহার করা হয় (glm52, kimi-k27, deepseek-pro, …):

// ~/.claude/profiles/glm52/settings.json
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "model": "glm/glm-5.2",
  "effortLevel": "xhigh",
  "env": {
    "ANTHROPIC_BASE_URL": "http://192.168.0.15:20128",
    "ANTHROPIC_MODEL": "glm/glm-5.2",
    "CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY": "1",
    "CLAUDE_CODE_AUTO_COMPACT_WINDOW": "190000",
  },
}

অথ টোকেন কখনোই প্রোফাইলে লেখা হয় না। চালু করতে omniroute launch --profile <name> ব্যবহার করুন (এটি সক্রিয় কনটেক্সট থেকে ANTHROPIC_AUTH_TOKEN ইনজেক্ট করে), অথবা নিজেই ANTHROPIC_AUTH_TOKEN এক্সপোর্ট করে CLAUDE_CONFIG_DIR=~/.claude/profiles/<name> claude চালান।

মডেল আবিষ্কারের পর স্বয়ংক্রিয় সিঙ্ক (ঐচ্ছিক)। কোনো প্রোভাইডার মডেল সিঙ্ক লাইভ ক্যাটালগ পরিবর্তন করলেই OmniRoute স্বয়ংক্রিয়ভাবে একই ~/.claude/profiles/<name>/settings.json ফাইলগুলো পুনরায় তৈরি করতে পারে — ফলে কমান্ডটি আবার না চালিয়েই নতুন/নাম পরিবর্তিত মডেলের জন্য প্রোফাইল পাওয়া যায়। এটি ডিফল্টভাবে বন্ধ থাকে: CLI Code ড্যাশবোর্ড থেকে এটি টগল করুন ("CLI প্রোফাইল স্বয়ংক্রিয়-সিঙ্ক" → Claude Code), অথবা OMNIROUTE_AUTO_SYNC_CLAUDE_PROFILES=true সেট করুন (এটি CLI_ALLOW_CONFIG_WRITES-ও মান্য করে, যা ডিফল্টভাবে চালু থাকে)। সক্রিয় থাকলে এটি শুধু প্রোফাইল ফাইল লেখে; আপনার সক্রিয়/ডিফল্ট Claude কনফিগ, অথ বা ~/.claude/settings.json কখনো পরিবর্তন করে না।

প্রোফাইল তৈরি + ব্যবহার

# লোকাল OmniRoute
omniroute setup-claude

# রিমোট VPS (প্রতিটি প্রোফাইলে VPS URL অন্তর্ভুক্ত করে)
omniroute setup-claude --remote http://192.168.0.15:20128 --api-key oma_live_xxx

# শুধু কিছু প্রোভাইডার
omniroute setup-claude --only glm,kimi

# এই হোস্টে শনাক্ত না হওয়া লোকাল-CLI প্রোভাইডারগুলোর (zcode, auggie, devin-cli-agentic,
# codex-app-server) জন্যও প্রোফাইল লিখুন (লোকাল টার্গেটের ক্ষেত্রে ডিফল্টভাবে এড়িয়ে যাওয়া হয়)
omniroute setup-claude --include-local

# না লিখে প্রিভিউ দেখুন
omniroute setup-claude --dry-run

# একটি প্রোফাইল চালু করুন
omniroute launch --profile kimi-k27

মডেল স্তরসমূহ (ঐচ্ছিক)

Claude Code সক্ষমতার স্তর অনুযায়ী রুট করে। প্রতিটি স্তরের জন্য ভিন্ন প্রদানকারী ব্যবহার করতে চাইলে env / settings-এর মাধ্যমে সেটিকে একটি OmniRoute মডেলের সঙ্গে ম্যাপ করুন:

export ANTHROPIC_DEFAULT_OPUS_MODEL="glm/glm-5.2"
export ANTHROPIC_DEFAULT_SONNET_MODEL="kmc/kimi-k2.6"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="glm/glm-4.7-flash"

অন্যথায় সবকিছুর জন্য একটি একক ANTHROPIC_MODEL (যা প্রোফাইলগুলো সেট করে) ব্যবহার করা হয়।


রিমোট মোড

একবার omniroute connect <host> চালানোর পর (দেখুন রিমোট মোড), omniroute launch এবং omniroute setup-claude স্বয়ংক্রিয়ভাবে সেই রিমোট সার্ভারকে লক্ষ্য করে এবং সেটির নির্দিষ্ট-পরিসরের অ্যাক্সেস টোকেন ব্যবহার করে — কোনো অতিরিক্ত ফ্ল্যাগের প্রয়োজন নেই। প্রতিটি পৃথক আহ্বানের জন্য --remote / --api-key দিয়ে ওভাররাইড করুন।


সমস্যা সমাধান

Claude Code গেটওয়ে উপেক্ষা করে — নিশ্চিত করুন ANTHROPIC_BASE_URL-এ কোনো /v1 নেই এবং claude পুনরায় চালু করুন (স্টার্টআপের সময় env একবারই পড়া হয়)। omniroute launch আপনার হয়ে এটি পরিচালনা করে।

/model পিকার খালি / গেটওয়ে মডেল অনুপস্থিত — Claude Code v2.1.219+ এবং CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 প্রয়োজন। পিকারে কেবল claude* / anthropic* মডেল ID দেখা যায়; অন্য যেকোনো মডেল ANTHROPIC_MODEL=<id> দিয়ে জোরপূর্বক ব্যবহার করুন (প্রোফাইলগুলো এভাবেই কাজ করে)।

400 Ambiguous model 'claude-…' — Claude Code সর্বদা প্রিফিক্সবিহীন মডেল ID পাঠায় (যেমন claude-opus-4-8), তাই Claude Code (cc/…) এবং Claude (claude/…) উভয় প্রদানকারী সংযুক্ত থাকলে প্রিফিক্সবিহীন ID দুটি রুটের সঙ্গে মিলে যায় এবং OmniRoute অনুমান করতে অস্বীকার করে। যেকোনো একভাবে এটি ঠিক করুন: ANTHROPIC_MODEL=cc/claude-opus-4-8 দিয়ে একটি প্রিফিক্সযুক্ত ID পিন করুন, অথবা প্রিফিক্সবিহীন Claude মডেলের জন্য Claude Code-কে অগ্রাধিকার দিন সক্ষম করুন — Claude প্রদানকারী পৃষ্ঠার টগলটি, অথবা OMNIROUTE_PREFER_CLAUDE_CODE_FOR_UNPREFIXED_CLAUDE_MODELS=true (ডিফল্টরূপে বন্ধ; দেখুন পরিবেশ) — যা প্রিফিক্সবিহীন claude-* ID-গুলোকে পরিবর্তে Claude Code-এ রুট করে। স্পষ্ট প্রদানকারী প্রিফিক্স সবসময় অগ্রাধিকার পায়।

প্রমাণীকরণ ত্রুটি — প্রোফাইলে কোনো টোকেন থাকে না। omniroute launch --profile ব্যবহার করুন (এটি টোকেন ইনজেক্ট করে) অথবা ANTHROPIC_AUTH_TOKEN এক্সপোর্ট করুন।

প্রোফাইলগুলো বিচ্ছিন্ন থাকে না — প্রতিটি প্রোফাইল একটি স্বতন্ত্র CLAUDE_CONFIG_DIR; সেশনের ভেতরে echo $CLAUDE_CONFIG_DIR চালিয়ে যাচাই করুন যে এটি ~/.claude/profiles/<name> নির্দেশ করছে।