يشغّل الأمر opencode serve خادما HTTP دون واجهة ويعرض نقطة نهاية OpenAPI يمكن لعميل opencode استخدامها.
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
الخيار الوصف الافتراضي --portالمنفذ الذي يستمع عليه 4096--hostnameاسم المضيف الذي يستمع عليه 127.0.0.1--mdnsتفعيل اكتشاف mDNS false--mdns-domainاسم نطاق مخصص لخدمة mDNS opencode.local--corsأصول (Origins) متصفح إضافية مسموح بها []
يمكن تمرير --cors عدة مرات:
opencode serve --cors http://localhost:5173 --cors https://app.example.com
عيّن OPENCODE_SERVER_PASSWORD لحماية الخادم باستخدام مصادقة HTTP الأساسية. اسم المستخدم افتراضيا هو opencode، أو عيّن OPENCODE_SERVER_USERNAME لتغييره. ينطبق ذلك على كل من opencode serve و opencode web.
OPENCODE_SERVER_PASSWORD = your-password opencode serve
عند تشغيل opencode يبدأ تشغيل واجهة terminal تفاعلية (TUI) وخادما. تكون الـ TUI هي
العميل الذي يتحدث إلى الخادم. يوفّر الخادم نقطة نهاية لمواصفة OpenAPI 3.1.
وتُستخدم هذه النقطة أيضا لتوليد SDK .
تتيح هذه البنية لـ opencode دعم عدة عملاء وتمكّنك من التفاعل مع opencode برمجيا.
يمكنك تشغيل opencode serve لبدء خادم مستقل. إذا كانت واجهة opencode في terminal (TUI)
قيد التشغيل، فسيبدأ opencode serve خادما جديدا.
عند بدء الـ TUI تقوم بتعيين منفذ واسم مضيف عشوائيا. يمكنك بدلا من ذلك تمرير الخيارات --hostname و --port، ثم استخدامهما للاتصال بخادمها.
يمكن استخدام نقطة النهاية /tui للتحكم في الـ TUI عبر الخادم. على سبيل المثال، يمكنك تعبئة الموجّه مسبقا أو تشغيله. يُستخدم هذا الإعداد بواسطة ملحقات OpenCode لـ IDE .
ينشر الخادم مواصفة OpenAPI 3.1 ويمكن عرضها على:
http://<hostname>:<port>/doc
على سبيل المثال: http://localhost:4096/doc. استخدم المواصفة لتوليد عملاء أو لفحص أنواع الطلبات والاستجابات. أو اعرضها في مستكشف Swagger.
يعرض خادم opencode واجهات API التالية.
الطريقة المسار الوصف الاستجابة GET/global/healthالحصول على صحة الخادم وإصداره { healthy: true, version: string }GET/global/eventالحصول على الأحداث العامة (تدفق SSE) تدفق أحداث
الطريقة المسار الوصف الاستجابة GET/projectسرد جميع المشاريع Project[]GET/project/currentالحصول على المشروع الحالي Project
الطريقة المسار الوصف الاستجابة GET/pathالحصول على المسار الحالي PathGET/vcsالحصول على معلومات VCS للمشروع الحالي VcsInfo
الطريقة المسار الوصف الاستجابة POST/instance/disposeالتخلص من المثيل الحالي boolean
الطريقة المسار الوصف الاستجابة GET/configالحصول على معلومات الإعدادات ConfigPATCH/configتحديث الإعدادات ConfigGET/config/providersسرد المزوّدين والنماذج الافتراضية { providers: Provider[] , default: { [key: string]: string } }
الطريقة المسار الوصف الاستجابة GET/providerسرد جميع المزوّدين { all: Provider[] , default: {...}, connected: string[] }GET/provider/authالحصول على طرق مصادقة المزوّد { [providerID: string]: ProviderAuthMethod[] }POST/provider/{id}/oauth/authorizeتفويض مزوّد باستخدام OAuth ProviderAuthAuthorizationPOST/provider/{id}/oauth/callbackمعالجة رد نداء OAuth لمزوّد boolean
الطريقة المسار الوصف الملاحظات GET/sessionسرد جميع الجلسات يعيد Session[] POST/sessionإنشاء جلسة جديدة المتن: { parentID?, title? }، يعيد Session GET/session/statusالحصول على حالة الجلسات جميعها يعيد { [sessionID: string]: SessionStatus } GET/session/:idالحصول على تفاصيل الجلسة يعيد Session DELETE/session/:idحذف جلسة وجميع بياناتها يعيد boolean PATCH/session/:idتحديث خصائص الجلسة المتن: { title? }، يعيد Session GET/session/:id/childrenالحصول على الجلسات الفرعية لجلسة يعيد Session[] GET/session/:id/todoالحصول على قائمة المهام (todo) للجلسة يعيد Todo[] POST/session/:id/initتحليل التطبيق وإنشاء AGENTS.md المتن: { messageID, providerID, modelID }، يعيد boolean POST/session/:id/forkتفريع جلسة موجودة عند رسالة المتن: { messageID? }، يعيد Session POST/session/:id/abortإلغاء جلسة قيد التشغيل يعيد boolean POST/session/:id/shareمشاركة جلسة يعيد Session DELETE/session/:id/shareإلغاء مشاركة جلسة يعيد Session GET/session/:id/diffالحصول على diff لهذه الجلسة الاستعلام: messageID?، يعيد FileDiff[] POST/session/:id/summarizeتلخيص الجلسة المتن: { providerID, modelID }، يعيد boolean POST/session/:id/revertالتراجع عن رسالة المتن: { messageID, partID? }، يعيد boolean POST/session/:id/unrevertاستعادة جميع الرسائل المتراجع عنها يعيد boolean POST/session/:id/permissions/:permissionIDالرد على طلب إذن المتن: { response, remember? }، يعيد boolean
الطريقة المسار الوصف الملاحظات GET/session/:id/messageسرد رسائل جلسة الاستعلام: limit?، يعيد { info: Message , parts: Part[] }[] POST/session/:id/messageإرسال رسالة والانتظار للحصول على رد المتن: { messageID?, model?, agent?, noReply?, system?, tools?, parts }، يعيد { info: Message , parts: Part[] } GET/session/:id/message/:messageIDالحصول على تفاصيل الرسالة يعيد { info: Message , parts: Part[] } POST/session/:id/prompt_asyncإرسال رسالة بشكل غير متزامن (بدون انتظار) المتن: مثل /session/:id/message، يعيد 204 No Content POST/session/:id/commandتنفيذ أمر شرطة مائلة (slash) المتن: { messageID?, agent?, model?, command, arguments }، يعيد { info: Message , parts: Part[] } POST/session/:id/shellتشغيل أمر في shell المتن: { agent, model?, command }، يعيد { info: Message , parts: Part[] }
الطريقة المسار الوصف الاستجابة GET/commandسرد جميع الأوامر Command[]
الطريقة المسار الوصف الاستجابة GET/find?pattern=<pat>البحث عن نص داخل الملفات مصفوفة من كائنات المطابقة تحتوي على path وlines وline_number وabsolute_offset وsubmatches GET/find/file?query=<q>العثور على الملفات والمجلدات بالاسم string[] (مسارات)GET/find/symbol?query=<q>العثور على رموز مساحة العمل Symbol[]GET/file?path=<path>سرد الملفات والمجلدات FileNode[]GET/file/content?path=<p>قراءة ملف FileContentGET/file/statusالحصول على حالة الملفات المتعقّبة File[]
query (مطلوب) — سلسلة البحث (مطابقة ضبابية)
type (اختياري) — حصر النتائج في "file" أو "directory"
directory (اختياري) — تجاوز جذر المشروع لأجل البحث
limit (اختياري) — الحد الأقصى للنتائج (1–200)
dirs (اختياري) — خيار قديم (إرجاع "false" يعيد الملفات فقط)
الطريقة المسار الوصف الاستجابة GET/experimental/tool/idsسرد جميع معرّفات الأدوات ToolIDsGET/experimental/tool?provider=<p>&model=<m>سرد الأدوات مع مخططات JSON لنموذج ToolList
الطريقة المسار الوصف الاستجابة GET/lspالحصول على حالة خادم LSP LSPStatus[]GET/formatterالحصول على حالة المنسّقات FormatterStatus[]GET/mcpالحصول على حالة خادم MCP { [name: string]: MCPStatus }POST/mcpإضافة خادم MCP ديناميكيا المتن: { name, config }، يعيد كائن حالة MCP
الطريقة المسار الوصف الاستجابة GET/agentسرد جميع الوكلاء المتاحين Agent[]
الطريقة المسار الوصف الاستجابة POST/logكتابة إدخال سجل. المتن: { service, level, message, extra? } boolean
الطريقة المسار الوصف الاستجابة POST/tui/append-promptإلحاق نص بالموجّه booleanPOST/tui/open-helpفتح مربع حوار المساعدة booleanPOST/tui/open-sessionsفتح محدد الجلسات booleanPOST/tui/open-themesفتح محدد السمات booleanPOST/tui/open-modelsفتح محدد النماذج booleanPOST/tui/submit-promptإرسال الموجّه الحالي booleanPOST/tui/clear-promptمسح الموجّه booleanPOST/tui/execute-commandتنفيذ أمر ({ command }) booleanPOST/tui/show-toastعرض toast ({ title?, message, variant }) booleanGET/tui/control/nextالانتظار لطلب التحكم التالي كائن طلب تحكم POST/tui/control/responseالاستجابة لطلب تحكم ({ body }) boolean
الطريقة المسار الوصف الاستجابة PUT/auth/:idتعيين بيانات اعتماد المصادقة. يجب أن يطابق المتن مخطط المزوّد boolean
الطريقة المسار الوصف الاستجابة GET/eventتدفق أحداث مرسلة من الخادم (SSE). أول حدث هو server.connected ثم أحداث الحافلة تدفق أحداث مرسلة من الخادم
الطريقة المسار الوصف الاستجابة GET/docمواصفة OpenAPI 3.1 صفحة HTML تتضمن مواصفة OpenAPI