Tools
استكشاف أخطاء المتصفح وإصلاحها
المشكلة: "Failed to start Chrome CDP on port 18800"
يفشل خادم التحكم بالمتصفح في OpenClaw في تشغيل Chrome/Brave/Edge/Chromium مع الخطأ:
{"error":"Error: Failed to start Chrome CDP on port 18800 for profile \"openclaw\"."}
السبب الجذري
على Ubuntu (والعديد من توزيعات Linux)، يكون تثبيت Chromium الافتراضي حزمة snap. يتداخل حصر AppArmor الخاص بـ Snap مع الطريقة التي ينشئ بها OpenClaw عملية المتصفح ويراقبها.
يثبّت الأمر apt install chromium حزمة وسيطة تعيد التوجيه إلى snap:
Note, selecting 'chromium-browser' instead of 'chromium'
chromium-browser is already the newest version (2:1snap1-0ubuntu2).
هذا ليس متصفحًا حقيقيًا - إنه مجرد غلاف.
إخفاقات تشغيل Linux الشائعة الأخرى:
- يعني
The profile appears to be in use by another Chromium processأن Chrome وجد ملفات قفلSingleton*قديمة في دليل الملف الشخصي المُدار. يزيل OpenClaw هذه الأقفال ويعيد المحاولة مرة واحدة عندما يشير القفل إلى عملية ميتة أو عملية على مضيف مختلف. - يعني
Missing X server or $DISPLAYأنه طُلب متصفح مرئي صراحةً على مضيف لا يحتوي على جلسة سطح مكتب. افتراضيًا، تعود الملفات الشخصية المحلية المُدارة الآن إلى وضع headless على Linux عندما يكون كل منDISPLAYوWAYLAND_DISPLAYغير معيّنين. إذا ضبطتOPENCLAW_BROWSER_HEADLESS=0، أوbrowser.headless: false، أوbrowser.profiles.<name>.headless: false، فأزل تجاوز وضع headed هذا، أو اضبطOPENCLAW_BROWSER_HEADLESS=1، أو ابدأXvfb، أو شغّلopenclaw browser start --headlessلتشغيل مُدار لمرة واحدة، أو شغّل OpenClaw في جلسة سطح مكتب حقيقية.
الحل 1: تثبيت Google Chrome (موصى به)
ثبّت حزمة Google Chrome الرسمية بصيغة .deb، وهي غير معزولة عبر snap:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt --fix-broken install -y # if there are dependency errors
ثم حدّث إعدادات OpenClaw لديك (~/.openclaw/openclaw.json):
{
"browser": {
"enabled": true,
"executablePath": "/usr/bin/google-chrome-stable",
"headless": true,
"noSandbox": true
}
}
الحل 2: استخدام Snap Chromium مع وضع الإرفاق فقط
إذا كان لا بد من استخدام snap Chromium، فاضبط OpenClaw للإرفاق بمتصفح يبدأ يدويًا:
- حدّث الإعدادات:
{
"browser": {
"enabled": true,
"attachOnly": true,
"headless": true,
"noSandbox": true
}
}
- ابدأ Chromium يدويًا:
chromium-browser --headless --no-sandbox --disable-gpu \
--remote-debugging-port=18800 \
--user-data-dir=$HOME/.openclaw/browser/openclaw/user-data \
about:blank &
- اختياريًا، أنشئ خدمة مستخدم systemd لبدء Chrome تلقائيًا:
# ~/.config/systemd/user/openclaw-browser.service
[Unit]
Description=OpenClaw Browser (Chrome CDP)
After=network.target
[Service]
ExecStart=/snap/bin/chromium --headless --no-sandbox --disable-gpu --remote-debugging-port=18800 --user-data-dir=%h/.openclaw/browser/openclaw/user-data about:blank
Restart=on-failure
RestartSec=5
[Install]
WantedBy=default.target
فعّل باستخدام: systemctl --user enable --now openclaw-browser.service
التحقق من أن المتصفح يعمل
تحقق من الحالة:
curl -s http://127.0.0.1:18791/ | jq '{running, pid, chosenBrowser}'
اختبر التصفح:
curl -s -X POST http://127.0.0.1:18791/start
curl -s http://127.0.0.1:18791/tabs
مرجع الإعدادات
| الخيار | الوصف | الافتراضي |
|---|---|---|
browser.enabled |
تفعيل التحكم بالمتصفح | true |
browser.executablePath |
المسار إلى ملف تنفيذي لمتصفح قائم على Chromium (Chrome/Brave/Edge/Chromium) | يُكتشف تلقائيًا (يفضّل المتصفح الافتراضي عندما يكون قائمًا على Chromium) |
browser.headless |
التشغيل بدون واجهة رسومية | false |
OPENCLAW_BROWSER_HEADLESS |
تجاوز لكل عملية لوضع headless في المتصفح المحلي المُدار | غير معيّن |
browser.noSandbox |
إضافة علامة --no-sandbox (مطلوبة لبعض إعدادات Linux) |
false |
browser.attachOnly |
عدم تشغيل المتصفح، والإرفاق بالموجود فقط | false |
browser.cdpPort |
منفذ Chrome DevTools Protocol | 18800 |
browser.localLaunchTimeoutMs |
مهلة اكتشاف Chrome المحلي المُدار | 15000 |
browser.localCdpReadyTimeoutMs |
مهلة جاهزية CDP بعد تشغيل Chrome المحلي المُدار | 8000 |
على Raspberry Pi أو مضيفي VPS الأقدم أو التخزين البطيء، ارفع
browser.localLaunchTimeoutMs عندما يحتاج Chrome إلى وقت أطول لكشف نقطة نهاية CDP HTTP
الخاصة به. ارفع browser.localCdpReadyTimeoutMs عندما ينجح التشغيل لكن
openclaw browser start لا يزال يبلغ عن not reachable after start. يجب أن تكون القيم
أعدادًا صحيحة موجبة حتى 120000 مللي ثانية؛ تُرفض قيم الإعدادات غير الصالحة.
المشكلة: "No Chrome tabs found for profile="user""
أنت تستخدم ملفًا شخصيًا من نوع existing-session / Chrome MCP. يستطيع OpenClaw رؤية Chrome المحلي،
لكن لا توجد تبويبات مفتوحة متاحة للإرفاق بها.
خيارات الإصلاح:
- استخدم المتصفح المُدار:
openclaw browser start --browser-profile openclaw(أو اضبطbrowser.defaultProfile: "openclaw"). - استخدم Chrome MCP: تأكد من أن Chrome المحلي يعمل مع تبويب مفتوح واحد على الأقل، ثم أعد المحاولة باستخدام
--browser-profile user.
ملاحظات:
userخاص بالمضيف فقط. بالنسبة إلى خوادم Linux أو الحاويات أو المضيفين البعيدين، فضّل ملفات CDP الشخصية.- تحتفظ ملفات
user/ ملفاتexisting-sessionالأخرى بالقيود الحالية لـ Chrome MCP: إجراءات موجّهة بالمراجع، وخطافات تحميل ملف واحد، ودون تجاوزات لمهلة الحوارات، ودونwait --load networkidle، ودونresponsebody، أو تصدير PDF، أو اعتراض التنزيلات، أو إجراءات دفعية. - تعيّن ملفات
openclawالمحليةcdpPort/cdpUrlتلقائيًا؛ لا تضبط هذه إلا لـ CDP البعيد. - تقبل ملفات CDP البعيدة
http://وhttps://وws://وwss://. استخدم HTTP(S) لاكتشاف/json/version، أو WS(S) عندما تمنحك خدمة المتصفح عنوان URL مباشرًا لمقبس DevTools.