اتصال OpenCode به چابکان
OpenCode چیست؟
OpenCode یک عامل برنامهنویسی متنباز است که در terminal، برنامه دسکتاپ و افزونه IDE قابل استفاده است. این ابزار میتواند پروژه را تحلیل کند، با اشاره به فایلها پاسخ بدهد، در Plan mode برنامه تغییر بسازد و در Build mode کد و تست را اجرا کند. پشتیبانی از provider سفارشی باعث میشود بتوان endpoint و مدل را مستقل از سرویس پیشفرض انتخاب کرد.
در اتصال OpenCode به چابکان، adapter نوع @ai-sdk/openai-compatible درخواستها را به /v1/chat/completions میفرستد. چابکان inference و گزارش مصرف را انجام میدهد؛ OpenCode مسئول context پروژه، permissionها، فایلها، shell و اشتراکگذاری نشست است.
OpenCode برای چه کسانی مناسب است؟
- توسعهدهندگانی که coding agent متنباز و terminal-first میخواهند؛
- تیمهایی که config پروژه،
AGENTS.mdو commandهای تکرارپذیر نیاز دارند؛ - کاربرانی که میخواهند بین چند مدل چابکان جابهجا شوند؛
- کسانی که Plan و Build را از هم جدا و permissionها را دقیق کنترل میکنند.
برای اولین اجرا از یک پروژه آزمایشی بدون secret شروع کنید و پیش از Build mode، اتصال ساده و Plan mode را آزمایش کنید.
۱. نصب OpenCode
با Node.js:
npm install -g opencode-ai
opencode --version
در ویندوز نیز همین روش قابل استفاده است، اما برای تجربه کاملتر استفاده از WSL پیشنهاد میشود.
۲. آمادهکردن کلید
macOS، Linux و WSL:
export CHABOKAN_AI_API_KEY="sk-chbk-کلید-واقعی-شما"
PowerShell:
$env:CHABOKAN_AI_API_KEY = "sk-chbk-کلید-واقعی-شما"
۳. تعریف provider سفارشی
فایل سراسری ~/.config/opencode/opencode.json یا فایل opencode.json ریشه پروژه را بسازید یا ویرایش کنید. فایل پروژه میتواند تنظیم سراسری را override کند؛ پیش از اجرا هر دو را بررسی کنید.
{
"$schema": "https://opencode.ai/config.json",
"model": "chabokan/openai/gpt-4o-mini",
"small_model": "chabokan/openai/gpt-4o-mini",
"share": "disabled",
"permission": {
"*": "ask",
"external_directory": "deny"
},
"provider": {
"chabokan": {
"npm": "@ai-sdk/openai-compatible",
"name": "Chabokan AI",
"options": {
"baseURL": "https://ai.chabokan.net/v1",
"apiKey": "{env:CHABOKAN_AI_API_KEY}"
},
"models": {
"openai/gpt-4o-mini": {
"name": "Chabokan - GPT 4o Mini",
"limit": {
"context": 128000
}
}
}
}
}
}
همه محلهای دارای openai/gpt-4o-mini و مقدار limit.context را با شناسه و context واقعی مدل هماهنگ کنید. پیشوند chabokan/ فقط نام provider داخل OpenCode است و جزو شناسه مدل ارسالی به چابکان نیست.
small_model برای کارهای کمکی OpenCode صریح شده تا ابزار بیخبر به provider دیگری نرود. share: disabled از اشتراکگذاری نشست جلوگیری میکند و تنظیم permission برای عملیات ابزار تأیید میخواهد.
۴. ثبت امن credential بهجای options.apiKey
پیکربندی بالا کلید را از environment میخواند و برای پروژههای تیمی مناسب است. در نسخههایی که جریان /connect را ارائه میکنند، میتوانید این روش را نیز بهکار ببرید:
- OpenCode را اجرا کنید.
- دستور
/connectرا بزنید. - گزینه Other را انتخاب کنید.
- شناسه provider را دقیقاً
chabokanوارد کنید. - کلید چابکان را paste کنید.
در این حالت credential در ~/.local/share/opencode/auth.json نگهداری میشود؛ بخش options.apiKey را میتوانید حذف کنید. از فایل auth و backupهای آن محافظت کنید.
۵. انتخاب و آزمایش مدل
- OpenCode را در پوشه پروژه اجرا کنید.
- دستور
/modelsرا بزنید. - مدل زیر مجموعه Chabokan AI را انتخاب کنید.
- درخواست آزمایشی زیر را بفرستید:
پروژه را بررسی کن و بدون ویرایش فایلها، روش اجرای آن را توضیح بده.
سپس فقط یک ابزار کمخطر را آزمایش کنید:
فقط فایل README.md را بخوان و هدف پروژه را در سه مورد توضیح بده.
هیچ فایل یا تنظیمی را تغییر نده و هیچ فرمانی اجرا نکن.
پاسخ متنی فقط اتصال مدل را ثابت میکند؛ خواندن موفق فایل، مسیر جداگانه tool calling و permission را نیز آزمایش میکند.
۶. تعریف چند مدل
برای مدل سریع و مدل agentic میتوانید چند entry زیر یک provider داشته باشید:
{
"$schema": "https://opencode.ai/config.json",
"model": "chabokan/provider/agent-model-id",
"small_model": "chabokan/provider/fast-model-id",
"provider": {
"chabokan": {
"npm": "@ai-sdk/openai-compatible",
"name": "Chabokan AI",
"options": {
"baseURL": "https://ai.chabokan.net/v1",
"apiKey": "{env:CHABOKAN_AI_API_KEY}"
},
"models": {
"provider/agent-model-id": {
"name": "Chabokan Agent Model",
"limit": { "context": 128000 }
},
"provider/fast-model-id": {
"name": "Chabokan Fast Model",
"limit": { "context": 64000 }
}
}
}
}
}
شناسهها و limitهای بالا placeholder هستند و نباید عیناً استفاده شوند. مقدارهای واقعی را از /v1/models بردارید. برای تغییر مدل داخل TUI از /models استفاده کنید.
۷. اجرای یکباره از CLI
برای بررسی بدون ورود به رابط تعاملی:
opencode run --model chabokan/openai/gpt-4o-mini \
"بدون تغییر فایلها، ساختار این پروژه را توضیح بده"
قبل از استفاده در CI، خروجی، exit code، permissionها و سقف مصرف را در یک repository آزمایشی بررسی کنید.
۸. سناریوی عملی: توضیح، اصلاح، تست و بازبینی
این تمرین را ابتدا روی پروژه disposable انجام دهید.
مرحله اول: توضیح بدون تغییر
فایل totals.py و تستهای آن را بخوان.
باگ را توضیح بده اما هنوز چیزی را تغییر نده.
مرحله دوم: برنامه اصلاح
یک برنامه کوتاه برای اصلاح بنویس.
فایلهایی که تغییر میکنند و دستور تست را دقیقاً نام ببر.
منتظر تأیید من بمان.
مرحله سوم: تغییر محدود
فقط تغییر تأییدشده را اعمال کن.
فایل دیگری را تغییر نده و dependency تازه نصب نکن.
مرحله چهارم: آزمون و بازبینی
تست مرتبط را اجرا کن، سپس diff را خلاصه کن.
اگر تست شکست خورد، علت را گزارش کن و بدون تأیید تغییر تازه نده.
پس از پایان، خودتان git diff و تستها را مستقل اجرا کنید. پاسخ agent جایگزین acceptance test نیست.
۹. فرمانهای سفارشی پروژه
برای کار تکراری، بخش command را به config اضافه کنید:
{
"$schema": "https://opencode.ai/config.json",
"command": {
"review-safe": {
"description": "بازبینی فقطخواندنی تغییرات",
"agent": "plan",
"model": "chabokan/openai/gpt-4o-mini",
"template": "فقط git diff را بررسی کن. فایل تغییر نده، فرمان مخرب اجرا نکن و یافتهها را با نام فایل گزارش بده."
},
"test-target": {
"description": "اجرای تست مشخصشده",
"agent": "build",
"template": "فقط تست مربوط به $ARGUMENTS را اجرا کن، خطا را خلاصه کن و پیش از هر ویرایش منتظر تأیید بمان."
}
}
}
در TUI میتوانید /review-safe یا /test-target نام-تست را اجرا کنید. این بخش را با provider موجود merge کنید و کل فایل config را جایگزین نکنید.
۱۰. تنظیم دقیق مجوزها
برای شروع امن:
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"*": "ask",
"read": "allow",
"edit": "ask",
"bash": "ask",
"external_directory": "deny"
}
}
مقادیر allow، ask و deny را OpenCode اجرا میکند، نه چابکان. استفاده از --auto درخواستهای تأیید را تغییر میدهد؛ در repository واقعی آن را بدون deny ruleهای صریح فعال نکنید.
۱۱. عیبیابی OpenCode
| نشانه | بررسی |
|---|---|
provider در /models نیست | کلید provider.chabokan.models و یکسانبودن ID در /connect و config |
401 | opencode auth list، کلید فعال و environment همان process |
404 | baseURL دقیقاً یک /v1 داشته باشد و adapter برابر @ai-sdk/openai-compatible باشد |
| مدل اشتباه اجرا میشود | config محلی پروژه، model و small_model را بررسی کنید |
| tool call بهشکل متن برمیگردد | مدل دارای tools، adapter و یک read-only tool ساده را جدا آزمایش کنید |
| context error | limit.context را با /v1/models یکسان و نشست را محدود کنید |
| مصرف زیاد | loop عامل، کارهای small model و retryها را در گزارش درخواستها بررسی کنید |
مرز اعتبارسنجی
این راهنما config را با قرارداد فعلی OpenCode و endpoint چابکان تطبیق میدهد، اما سازگاری end-to-end همه نسخهها، مدلها و pluginها را تضمین نمیکند. پیش از استفاده روی repository سازمانی، یک pilot کمخطر انجام دهید.
منابع: نصب OpenCode، Custom provider، Permissions، Config و commandها