الوثائق · 02

ربط جهاز.

يصل الجهاز إلى CommandAGI عبر مضيف — البرنامج الموجود على الكمبيوتر الذي يُوصَل به الجهاز — أو مباشرة من صفحة المتصفح.

المضيف

المضيف هو البرنامج الذي يمنح منضدة العمل ملفات هذا الكمبيوتر والأجهزة الموصولة به. يوجد مضيف واحد بالضبط لكل كمبيوتر. تطبيق سطح المكتب مضيف؛ وكذلك الخدمة الخلفية التي تُشغَّل بـ commandagi daemon start. عند بدء تطبيق سطح المكتب، يحل محل خدمة تعمل.

يستمع المضيف على 127.0.0.1 فقط (المنفذ 4173 افتراضياً، أو أي منفذ حر)، ويحفظ حالته في ~/.commandagi:

الملفما يحتويه
host.jsonالحساب المرتبط بهذا المضيف ومعرّفه وإعدادات الربط (للمالك وحده)
grants.jsonالتفويضات الدائمة المُنشأة على هذا المضيف (للمالك وحده)
principals.jsonتجزئات بيانات اعتماد الجهات الفاعلة ومفاتيح الحسابات الموثوقة (للمالك وحده)
mcp.jsonنقطة MCP المحلية ورمزها الخاص بكل تشغيل (للمالك وحده)
daemon.jsonالعملية التي تستضيف، وعلى أي منفذ
settings.json، recents.json، devices/، worlds/إعداداتك على مستوى المستخدم وتعريفاتك
daemon.logسجل المضيف

من أين يأتي: يُرفَق المضيف مع تطبيق سطح المكتب، ويُوزَّع وحده كحزمة npm باسم @commandagi/host (npm install -g @commandagi/host، مع Node 22 أو أحدث)، وأمر commandagi فيها هو أمر سطر الأوامر الموصوف أدناه. الحزمة commandagi على npm هي SDK فقط؛ راجع SDK وMCP.

الأمر commandagi

shell
commandagi daemon start [--port N] [--project DIR] [--name X] [--no-platform]
commandagi daemon status | stop | logs
commandagi daemon run   [same flags, in the foreground]
commandagi mcp [--credential-file F]
commandagi grant add | list | revoke …
commandagi threed install | status
commandagi code eval <path> [--input name=value]…
  • يشغّل daemon start المضيف في الخلفية ويكتب سجله في ~/.commandagi/daemon.log. يستضيف --no-platform محلياً دون ربط بحساب.
  • يرفض daemon stop العمل ما دام تطبيق سطح المكتب هو المضيف — أغلقه من التطبيق نفسه.
  • mcp هو موصِّل stdio للوكلاء (راجع SDK وMCP). وgrant ينشئ التفويضات الدائمة ويلغيها (راجع الوكلاء والتفويضات الدائمة).
  • threed يثبّت خدمة التصميم ثلاثي الأبعاد المحلية؛ وcode eval يقيّم جزء كود بلا واجهة ويطبع رسم عملياته كـ JSON.

اربط المضيف بحسابك

يمكن الوصول إلى المضيف المرتبط بحساب من منضدة عمل ذلك الحساب من أي مكان، ويتصرف بوصفه ذلك الحساب. الربط هو تسجيل الدخول:

  • في تطبيق سطح المكتب، سجّل الدخول عندما يطلب ذلك؛
  • في صفحة منضدة العمل التي يقدمها المضيف، سجّل الدخول من الشريط الأيسر — يتحقق المضيف من المفتاح ويحتفظ به؛
  • من الصدفة، اضبط COMMANDAGI_API_KEY على مفتاح API قبل تشغيل الخدمة.

يُحفظ مفتاح الحساب في host.json، وهو ملف عادي للمالك وحده، فتبقى نسخة من ~/.commandagi المنسوخة مسجلة الدخول. يؤدي تسجيل الخروج إلى حذفه.

اقترن المضيفين ببعضهم

يستطيع المضيفون على حواسيب مختلفة أن يقترنوا، في الاتجاهين، بفعل واحد: يعرض أحدهم الاقتران ويقبله الآخر. الاقتران قرار يتخذه شخص دائماً. بعد الاقتران، يستطيع الوكلاء عرض المضيفين الآخرين واستدعاءهم — ضمن التفويضات الموجودة هناك.

مشغّلات الصفحة: USB والبلوتوث من المتصفح

تعمل بعض المشغّلات داخل صفحة منضدة العمل نفسها، باستخدام WebSerial وWeb Bluetooth. لا يفتح المتصفح منفذاً إلا عندما تختاره أنت، لذا لا يستخدم الوكيل أبداً اتصالاً إلا إذا أنشأه شخص، ولا يفتح واحداً من تلقاء نفسه. تُدار الأجهزة الشبكية (واجهة HTTP للطابعة، وFluidNC على TCP) بواسطة المضيف.

المشغّلات التي تستمع لأجهزة تتصل عبر الشبكة المحلية تحتاج إلى الإعداد "devices.lanListener": true.

كتالوج المشغّلات

يذكر كل مشغّل ما تم التحقق منه باستخدامه: none (لا شيء)، أو loopback (مقابل محاكاة برمجية أمينة للبروتوكول)، أو bench (على منضدة الاختبار)، أو hardware (على العتاد). لا يدّعي المشغّل أكثر مما أُنجز. لم يُعتمد أي جهاز على العتاد بعد.

المشغّلالجهاز والبروتوكوليعمل فيمُتحقَّق منه
grbl-serialGRBL 1.1، تسلسل USBالصفحةloopback
grbl-tcpFluidNC / grblHAL، telnet (TCP 23)المضيفloopback
marlin-serialMarlin، تسلسل USBالصفحةloopback
smoothie-serialSmoothieware، تسلسل USBالصفحةloopback
linuxcnc-rshLinuxCNC 2.9 linuxcncrsh (TCP 5007)المضيفloopback
octoprint-httpOctoPrint 1.xالمضيفloopback
moonraker-httpKlipper عبر Moonrakerالمضيفloopback
prusalink-httpPrusaLinkالمضيفloopback
repetier-httpRepetier-Serverالمضيفloopback
duet-httpDuet / RepRapFirmware 3.1+المضيفloopback
feetech-sts-serialناقل المحركات Feetech STS/SCS (SO-100/101)الصفحةloopback
dynamixel2-serialDynamixel Protocol 2.0 (Koch، WidowX)الصفحةloopback
xarm-tcpUFACTORY xArm / Lite 6 (TCP 502)المضيفloopback
host-relayذراع CommandAGI بـ ESP32، HTTP عبر الشبكة المحليةالمضيفloopback
wifi8k-droneمسيّرة WIFI_8K / E99 عبر وصلة ESP32الصفحةloopback
ble-hid-relayمُرحِّل BLE HID (ESP32)الصفحةloopback
openpnp-filesتسليم مهام OpenPnP (ملفات)المضيفloopback
os-inputلوحة المفاتيح والمؤشر في هذا الكمبيوترالمضيفloopback
cdp-tabعلامة تبويب في المتصفح (Chrome DevTools Protocol)المضيفloopback
cdp-screencastفيديو علامة تبويب في المتصفحالمضيفloopback
pty-shellصدفة على هذا الكمبيوترالمضيفloopback
python-kernelنواة Python (دفاتر الملاحظات)المضيفloopback
display-captureالتقاط الشاشةالصفحةnone
uvc-cameraكاميرا USBالصفحةnone
microphoneميكروفونالصفحةnone

تستخدم عوالم المحاكاة مُحاكيَين بدلاً من ذلك: gcode-sim لقنوات G-code، وservo-sim لناقلات المحركات السيرفو.

التالي

امنح وكيلاً صلاحية على جهاز: الوكلاء والتفويضات الدائمة.