Gateway

Khắc phục sự cố

Trang này là sổ tay vận hành chuyên sâu. Bắt đầu tại /help/troubleshooting nếu bạn muốn xem trước quy trình phân loại nhanh.

Thang lệnh

Chạy các lệnh này trước, theo thứ tự sau:

openclaw status
openclaw gateway status
openclaw logs --follow
openclaw doctor
openclaw channels status --probe

Các tín hiệu khỏe mạnh mong đợi:

  • openclaw gateway status hiển thị Runtime: running, Connectivity probe: ok, và một dòng Capability: ....
  • openclaw doctor báo cáo không có vấn đề cấu hình/dịch vụ nào gây chặn.
  • openclaw channels status --probe hiển thị trạng thái truyền tải trực tiếp theo từng tài khoản và, ở nơi được hỗ trợ, kết quả probe/audit như works hoặc audit ok.

Các bản cài đặt bị tách não và cơ chế bảo vệ cấu hình mới hơn

Dùng mục này khi dịch vụ Gateway bất ngờ dừng sau một bản cập nhật, hoặc nhật ký cho thấy một binary openclaw cũ hơn phiên bản đã ghi openclaw.json lần gần nhất.

OpenClaw đóng dấu các lần ghi cấu hình bằng meta.lastTouchedVersion. Các lệnh chỉ đọc vẫn có thể kiểm tra một cấu hình được ghi bởi OpenClaw mới hơn, nhưng các thao tác thay đổi tiến trình và dịch vụ sẽ từ chối tiếp tục từ một binary cũ hơn. Các hành động bị chặn bao gồm khởi động, dừng, khởi động lại, gỡ cài đặt dịch vụ Gateway, ép cài đặt lại dịch vụ, khởi động Gateway ở chế độ dịch vụ, và dọn dẹp cổng bằng gateway --force.

which openclaw
openclaw --version
openclaw gateway status --deep
openclaw config get meta.lastTouchedVersion
  • Fix PATH

    Sửa PATH để openclaw trỏ tới bản cài đặt mới hơn, rồi chạy lại hành động.

  • Reinstall the gateway service

    Cài đặt lại dịch vụ Gateway mong muốn từ bản cài đặt mới hơn:

    openclaw gateway install --force
    openclaw gateway restart
    
  • Remove stale wrappers

    Xóa gói hệ thống lỗi thời hoặc các mục wrapper cũ vẫn trỏ tới binary openclaw cũ.

  • Anthropic 429 yêu cầu mức sử dụng bổ sung cho ngữ cảnh dài

    Dùng mục này khi nhật ký/lỗi bao gồm: HTTP 429: rate_limit_error: Extra usage is required for long context requests.

    openclaw logs --follow
    openclaw models status
    openclaw config get agents.defaults.models
    

    Tìm các dấu hiệu sau:

    • Mô hình Anthropic Opus/Sonnet đã chọn có params.context1m: true.
    • Thông tin xác thực Anthropic hiện tại không đủ điều kiện cho mức sử dụng ngữ cảnh dài.
    • Yêu cầu chỉ thất bại trên các phiên/lần chạy mô hình dài cần đường dẫn beta 1M.

    Các tùy chọn khắc phục:

  • Disable context1m

    Tắt context1m cho mô hình đó để quay về cửa sổ ngữ cảnh bình thường.

  • Use an eligible credential

    Dùng thông tin xác thực Anthropic đủ điều kiện cho yêu cầu ngữ cảnh dài, hoặc chuyển sang khóa API Anthropic.

  • Configure fallback models

    Cấu hình các mô hình dự phòng để các lần chạy tiếp tục khi yêu cầu ngữ cảnh dài của Anthropic bị từ chối.

  • Liên quan:

    Backend cục bộ tương thích OpenAI vượt qua probe trực tiếp nhưng các lần chạy agent thất bại

    Dùng mục này khi:

    • curl ... /v1/models hoạt động
    • các lệnh gọi trực tiếp nhỏ tới /v1/chat/completions hoạt động
    • các lần chạy mô hình OpenClaw chỉ thất bại ở lượt agent bình thường
    curl http://127.0.0.1:1234/v1/models
    curl http://127.0.0.1:1234/v1/chat/completions \
      -H 'content-type: application/json' \
      -d '{"model":"<id>","messages":[{"role":"user","content":"hi"}],"stream":false}'
    openclaw infer model run --model <provider/model> --prompt "hi" --json
    openclaw logs --follow
    

    Tìm các dấu hiệu sau:

    • các lệnh gọi trực tiếp nhỏ thành công, nhưng các lần chạy OpenClaw chỉ thất bại với prompt lớn hơn
    • lỗi model_not_found hoặc 404 dù /v1/chat/completions trực tiếp hoạt động với cùng id mô hình trần
    • lỗi backend về việc messages[].content mong đợi một chuỗi
    • cảnh báo gián đoạn incomplete turn detected ... stopReason=stop payloads=0 với backend cục bộ tương thích OpenAI
    • backend sập chỉ xuất hiện với số lượng token prompt lớn hơn hoặc prompt runtime agent đầy đủ
    Common signatures
    • model_not_found với máy chủ cục bộ kiểu MLX/vLLM → xác minh baseUrl bao gồm /v1, api"openai-completions" cho các backend /v1/chat/completions, và models.providers.<provider>.models[].id là id cục bộ của provider ở dạng trần. Chọn nó với tiền tố provider một lần, ví dụ mlx/mlx-community/Qwen3-30B-A3B-6bit; giữ mục catalog là mlx-community/Qwen3-30B-A3B-6bit.
    • messages[...].content: invalid type: sequence, expected a string → backend từ chối các phần nội dung Chat Completions có cấu trúc. Cách sửa: đặt models.providers.<provider>.models[].compat.requiresStringContent: true.
    • incomplete turn detected ... stopReason=stop payloads=0 → backend đã hoàn tất yêu cầu Chat Completions nhưng không trả về văn bản assistant hiển thị cho người dùng trong lượt đó. OpenClaw thử lại một lần các lượt trống tương thích OpenAI an toàn khi phát lại; thất bại kéo dài thường có nghĩa là backend đang phát ra nội dung trống/không phải văn bản hoặc đang chặn văn bản câu trả lời cuối.
    • yêu cầu trực tiếp nhỏ thành công, nhưng các lần chạy agent OpenClaw thất bại do backend/mô hình sập (ví dụ Gemma trên một số bản dựng inferrs) → lớp truyền tải OpenClaw có khả năng đã đúng; backend đang thất bại với dạng prompt runtime agent lớn hơn.
    • lỗi giảm sau khi tắt công cụ nhưng không biến mất → schema công cụ là một phần áp lực, nhưng vấn đề còn lại vẫn là dung lượng mô hình/máy chủ upstream hoặc lỗi backend.
    Fix options
    1. Đặt compat.requiresStringContent: true cho các backend Chat Completions chỉ nhận chuỗi.
    2. Đặt compat.supportsTools: false cho các mô hình/backend không thể xử lý đáng tin cậy bề mặt schema công cụ của OpenClaw.
    3. Giảm áp lực prompt khi có thể: bootstrap workspace nhỏ hơn, lịch sử phiên ngắn hơn, mô hình cục bộ nhẹ hơn, hoặc backend có hỗ trợ ngữ cảnh dài mạnh hơn.
    4. Nếu các yêu cầu trực tiếp nhỏ vẫn thành công trong khi lượt agent OpenClaw vẫn sập bên trong backend, hãy xem đó là giới hạn của máy chủ/mô hình upstream và gửi bản tái hiện ở đó với dạng payload đã được chấp nhận.

    Liên quan:

    Không có phản hồi

    Nếu các kênh đang hoạt động nhưng không có gì trả lời, hãy kiểm tra định tuyến và chính sách trước khi kết nối lại bất cứ thứ gì.

    openclaw status
    openclaw channels status --probe
    openclaw pairing list --channel <channel> [--account <id>]
    openclaw config get channels
    openclaw logs --follow
    

    Tìm các dấu hiệu sau:

    • Ghép nối đang chờ đối với người gửi DM.
    • Chặn theo nhắc đến trong nhóm (requireMention, mentionPatterns).
    • Danh sách cho phép của kênh/nhóm không khớp.

    Các dấu hiệu thường gặp:

    • drop guild message (mention required → tin nhắn nhóm bị bỏ qua cho đến khi có nhắc đến.
    • pairing request → người gửi cần được phê duyệt.
    • blocked / allowlist → người gửi/kênh đã bị chính sách lọc.

    Liên quan:

    Kết nối giao diện điều khiển bảng điều khiển

    Khi bảng điều khiển/giao diện điều khiển không kết nối được, hãy xác thực URL, chế độ xác thực và các giả định về ngữ cảnh bảo mật.

    openclaw gateway status
    openclaw status
    openclaw logs --follow
    openclaw doctor
    openclaw gateway status --json
    

    Tìm các dấu hiệu sau:

    • URL probe và URL bảng điều khiển chính xác.
    • Chế độ xác thực/token không khớp giữa client và gateway.
    • Dùng HTTP ở nơi cần danh tính thiết bị.
    Connect / auth signatures
    • device identity required → ngữ cảnh không bảo mật hoặc thiếu xác thực thiết bị.
    • origin not allowedOrigin của trình duyệt không nằm trong gateway.controlUi.allowedOrigins (hoặc bạn đang kết nối từ origin trình duyệt không phải loopback mà không có danh sách cho phép rõ ràng).
    • device nonce required / device nonce mismatch → client không hoàn tất luồng xác thực thiết bị dựa trên thử thách (connect.challenge + device.nonce).
    • device signature invalid / device signature expired → client đã ký sai payload (hoặc dấu thời gian cũ) cho lần bắt tay hiện tại.
    • AUTH_TOKEN_MISMATCH với canRetryWithDeviceToken=true → client có thể thực hiện một lần thử lại đáng tin cậy bằng token thiết bị đã lưu trong cache.
    • Lần thử lại bằng token cache đó dùng lại tập scope cache được lưu cùng token thiết bị đã ghép nối. Các caller dùng deviceToken rõ ràng / scopes rõ ràng giữ nguyên tập scope đã yêu cầu của họ.
    • Bên ngoài đường dẫn thử lại đó, thứ tự ưu tiên xác thực kết nối là token/mật khẩu chia sẻ rõ ràng trước, rồi deviceToken rõ ràng, rồi token thiết bị đã lưu, rồi token bootstrap.
    • Trên đường dẫn giao diện điều khiển Tailscale Serve bất đồng bộ, các lần thử thất bại cho cùng {scope, ip} được tuần tự hóa trước khi bộ giới hạn ghi nhận thất bại. Vì vậy, hai lần thử lại sai đồng thời từ cùng một client có thể hiển thị retry later ở lần thử thứ hai thay vì hai lỗi không khớp đơn thuần.
    • too many failed authentication attempts (retry later) từ client loopback có origin trình duyệt → các lần thất bại lặp lại từ cùng Origin đã chuẩn hóa đó bị khóa tạm thời; origin localhost khác dùng một bucket riêng.
    • unauthorized lặp lại sau lần thử lại đó → token chia sẻ/token thiết bị bị lệch; làm mới cấu hình token và phê duyệt lại/xoay token thiết bị nếu cần.
    • gateway connect failed: → sai đích host/cổng/url.

    Bản đồ nhanh mã chi tiết xác thực

    Dùng error.details.code từ phản hồi connect thất bại để chọn hành động tiếp theo:

    Mã chi tiết Ý nghĩa Hành động khuyến nghị
    AUTH_TOKEN_MISSING Máy khách không gửi mã thông báo dùng chung bắt buộc. Dán/đặt mã thông báo trong máy khách rồi thử lại. Với các đường dẫn bảng điều khiển: openclaw config get gateway.auth.token, rồi dán vào phần cài đặt Control UI.
    AUTH_TOKEN_MISMATCH Mã thông báo dùng chung không khớp với mã thông báo xác thực Gateway. Nếu canRetryWithDeviceToken=true, cho phép một lần thử lại tin cậy. Các lần thử lại bằng mã thông báo đã lưu trong bộ nhớ đệm sẽ dùng lại các phạm vi đã được phê duyệt đã lưu; bên gọi deviceToken / scopes tường minh giữ nguyên các phạm vi đã yêu cầu. Nếu vẫn lỗi, chạy danh sách kiểm tra khôi phục lệch mã thông báo.
    AUTH_DEVICE_TOKEN_MISMATCH Mã thông báo theo thiết bị đã lưu trong bộ nhớ đệm đã cũ hoặc bị thu hồi. Xoay vòng/phê duyệt lại mã thông báo thiết bị bằng CLI thiết bị, rồi kết nối lại.
    PAIRING_REQUIRED Danh tính thiết bị cần được phê duyệt. Kiểm tra error.details.reason để biết not-paired, scope-upgrade, role-upgrade, hoặc metadata-upgrade, và dùng requestId / remediationHint khi có. Phê duyệt yêu cầu đang chờ: openclaw devices list, rồi openclaw devices approve <requestId>. Việc nâng cấp phạm vi/vai trò dùng cùng luồng sau khi bạn xem xét quyền truy cập được yêu cầu.

    Kiểm tra di chuyển xác thực thiết bị v2:

    openclaw --version
    openclaw doctor
    openclaw gateway status
    

    Nếu nhật ký hiển thị lỗi nonce/chữ ký, hãy cập nhật máy khách đang kết nối và xác minh:

  • Wait for connect.challenge

    Máy khách chờ connect.challenge do Gateway phát hành.

  • Sign the payload

    Máy khách ký payload gắn với challenge.

  • Send the device nonce

    Máy khách gửi connect.params.device.nonce với cùng nonce challenge.

  • Nếu openclaw devices rotate / revoke / remove bị từ chối ngoài dự kiến:

    • các phiên mã thông báo thiết bị đã ghép đôi chỉ có thể quản lý thiết bị của chính chúng, trừ khi bên gọi cũng có operator.admin
    • openclaw devices rotate --scope ... chỉ có thể yêu cầu các phạm vi operator mà phiên bên gọi đã có

    Liên quan:

    Dịch vụ Gateway không chạy

    Dùng mục này khi dịch vụ đã được cài đặt nhưng tiến trình không duy trì hoạt động.

    openclaw gateway status
    openclaw status
    openclaw logs --follow
    openclaw doctor
    openclaw gateway status --deep   # also scan system-level services
    

    Tìm:

    • Runtime: stopped kèm gợi ý mã thoát.
    • Cấu hình dịch vụ không khớp (Config (cli) so với Config (service)).
    • Xung đột cổng/listener.
    • Các bản cài launchd/systemd/schtasks bổ sung khi dùng --deep.
    • Gợi ý dọn dẹp Other gateway-like services detected (best effort).
    Common signatures
    • Gateway start blocked: set gateway.mode=local hoặc existing config is missing gateway.mode → chế độ Gateway cục bộ chưa được bật, hoặc tệp cấu hình đã bị ghi đè và mất gateway.mode. Cách sửa: đặt gateway.mode="local" trong cấu hình của bạn, hoặc chạy lại openclaw onboard --mode local / openclaw setup để đóng dấu lại cấu hình chế độ cục bộ mong đợi. Nếu bạn đang chạy OpenClaw qua Podman, đường dẫn cấu hình mặc định là ~/.openclaw/openclaw.json.
    • refusing to bind gateway ... without auth → liên kết non-loopback không có đường dẫn xác thực Gateway hợp lệ (mã thông báo/mật khẩu, hoặc trusted-proxy khi được cấu hình).
    • another gateway instance is already listening / EADDRINUSE → xung đột cổng.
    • Other gateway-like services detected (best effort) → tồn tại các đơn vị launchd/systemd/schtasks cũ hoặc song song. Hầu hết thiết lập nên giữ một Gateway trên mỗi máy; nếu bạn cần nhiều hơn một, hãy tách biệt cổng + cấu hình/trạng thái/workspace. Xem /gateway#multiple-gateways-same-host.
    • System-level OpenClaw gateway service detected từ doctor → tồn tại một đơn vị systemd cấp hệ thống trong khi thiếu dịch vụ cấp người dùng. Gỡ bỏ hoặc vô hiệu hóa bản trùng lặp trước khi cho phép doctor cài đặt dịch vụ người dùng, hoặc đặt OPENCLAW_SERVICE_REPAIR_POLICY=external nếu đơn vị hệ thống là supervisor dự định dùng.
    • Gateway service port does not match current gateway config → supervisor đã cài đặt vẫn ghim --port cũ. Chạy openclaw doctor --fix hoặc openclaw gateway install --force, rồi khởi động lại dịch vụ Gateway.

    Liên quan:

    Gateway từ chối cấu hình không hợp lệ

    Dùng mục này khi khởi động Gateway thất bại với Invalid config hoặc nhật ký hot reload cho biết nó đã bỏ qua một chỉnh sửa không hợp lệ.

    openclaw logs --follow
    openclaw config file
    openclaw config validate
    openclaw doctor
    

    Tìm:

    • Invalid config at ...
    • config reload skipped (invalid config): ...
    • Config write rejected: ...
    • Một tệp openclaw.json.rejected.* có dấu thời gian bên cạnh cấu hình đang hoạt động
    • Một tệp openclaw.json.clobbered.* có dấu thời gian nếu doctor --fix đã sửa một chỉnh sửa trực tiếp bị hỏng
    What happened
    • Cấu hình không vượt qua xác thực trong khi khởi động, hot reload, hoặc một lần ghi do OpenClaw sở hữu.
    • Khởi động Gateway thất bại đóng thay vì ghi lại openclaw.json.
    • Hot reload bỏ qua các chỉnh sửa bên ngoài không hợp lệ và giữ cấu hình runtime hiện tại hoạt động.
    • Các lần ghi do OpenClaw sở hữu từ chối payload không hợp lệ/phá hủy trước khi commit và lưu .rejected.*.
    • openclaw doctor --fix sở hữu việc sửa chữa. Nó có thể xóa tiền tố không phải JSON hoặc khôi phục bản sao last-known-good trong khi vẫn giữ payload bị từ chối dưới dạng .clobbered.*.
    Inspect and repair
    CONFIG="$(openclaw config file)"
    ls -lt "$CONFIG".clobbered.* "$CONFIG".rejected.* 2>/dev/null | head
    diff -u "$CONFIG" "$(ls -t "$CONFIG".clobbered.* 2>/dev/null | head -n 1)"
    openclaw config validate
    openclaw doctor
    
    Common signatures
    • .clobbered.* tồn tại → doctor đã giữ lại một chỉnh sửa bên ngoài bị hỏng trong khi sửa cấu hình đang hoạt động.
    • .rejected.* tồn tại → một lần ghi cấu hình do OpenClaw sở hữu đã thất bại kiểm tra schema hoặc clobber trước khi commit.
    • Config write rejected: → lần ghi đã cố loại bỏ cấu trúc bắt buộc, làm tệp nhỏ đi rõ rệt, hoặc lưu cấu hình không hợp lệ.
    • config reload skipped (invalid config): → một chỉnh sửa trực tiếp thất bại xác thực và đã bị Gateway đang chạy bỏ qua.
    • Invalid config at ... → khởi động thất bại trước khi các dịch vụ Gateway được boot.
    • missing-meta-vs-last-good, gateway-mode-missing-vs-last-good, hoặc size-drop-vs-last-good:* → một lần ghi do OpenClaw sở hữu đã bị từ chối vì mất trường hoặc kích thước so với bản sao lưu last-known-good.
    • Config last-known-good promotion skipped → ứng viên chứa các placeholder bí mật đã che như ***.
    Fix options
    1. Chạy openclaw doctor --fix để doctor sửa cấu hình có tiền tố/bị clobber hoặc khôi phục last-known-good.
    2. Chỉ sao chép các khóa mong muốn từ .clobbered.* hoặc .rejected.*, rồi áp dụng chúng bằng openclaw config set hoặc config.patch.
    3. Chạy openclaw config validate trước khi khởi động lại.
    4. Nếu bạn chỉnh sửa thủ công, hãy giữ cấu hình JSON5 đầy đủ, không chỉ đối tượng một phần mà bạn muốn thay đổi.

    Liên quan:

    Cảnh báo probe Gateway

    Dùng mục này khi openclaw gateway probe tiếp cận được thứ gì đó, nhưng vẫn in một khối cảnh báo.

    openclaw gateway probe
    openclaw gateway probe --json
    openclaw gateway probe --ssh user@gateway-host
    

    Tìm:

    • warnings[].codeprimaryTargetId trong đầu ra JSON.
    • Cảnh báo có liên quan đến dự phòng SSH, nhiều Gateway, thiếu phạm vi, hoặc auth refs chưa phân giải hay không.

    Các dấu hiệu thường gặp:

    • SSH tunnel failed to start; falling back to direct probes. → thiết lập SSH thất bại, nhưng lệnh vẫn thử các mục tiêu được cấu hình/loopback trực tiếp.
    • multiple reachable gateways detected → nhiều hơn một mục tiêu đã trả lời. Thường điều này nghĩa là thiết lập nhiều Gateway có chủ ý hoặc các listener cũ/trùng lặp.
    • Read-probe diagnostics are limited by gateway scopes (missing operator.read) → kết nối hoạt động, nhưng RPC chi tiết bị giới hạn theo phạm vi; ghép đôi danh tính thiết bị hoặc dùng thông tin xác thực có operator.read.
    • Gateway accepted the WebSocket connection, but follow-up read diagnostics failed → kết nối hoạt động, nhưng toàn bộ tập RPC chẩn đoán đã hết thời gian chờ hoặc thất bại. Xem đây là một Gateway có thể tiếp cận với chẩn đoán suy giảm; so sánh connect.okconnect.rpcOk trong đầu ra --json.
    • Capability: pairing-pending hoặc gateway closed (1008): pairing required → Gateway đã trả lời, nhưng máy khách này vẫn cần ghép đôi/phê duyệt trước khi có quyền operator thông thường.
    • văn bản cảnh báo SecretRef gateway.auth.* / gateway.remote.* chưa phân giải → vật liệu xác thực không khả dụng trong đường dẫn lệnh này cho mục tiêu thất bại.

    Liên quan:

    Kênh đã kết nối, tin nhắn không lưu chuyển

    Nếu trạng thái kênh là đã kết nối nhưng luồng tin nhắn đã chết, hãy tập trung vào chính sách, quyền, và các quy tắc phân phối riêng của kênh.

    openclaw channels status --probe
    openclaw pairing list --channel <channel> [--account <id>]
    openclaw status --deep
    openclaw logs --follow
    openclaw config get channels
    

    Tìm:

    • Chính sách DM (pairing, allowlist, open, disabled).
    • Danh sách cho phép nhóm và yêu cầu nhắc tên.
    • Thiếu quyền/phạm vi API kênh.

    Chữ ký phổ biến:

    • mention required → tin nhắn bị bỏ qua bởi chính sách nhắc tên trong nhóm.
    • pairing / dấu vết đang chờ phê duyệt → người gửi chưa được phê duyệt.
    • missing_scope, not_in_channel, Forbidden, 401/403 → vấn đề xác thực/quyền của kênh.

    Liên quan:

    Phân phối Cron và heartbeat

    Nếu cron hoặc heartbeat không chạy hoặc không phân phối, trước tiên hãy xác minh trạng thái bộ lập lịch, rồi đến mục tiêu phân phối.

    openclaw cron status
    openclaw cron list
    openclaw cron runs --id <jobId> --limit 20
    openclaw system heartbeat last
    openclaw logs --follow
    

    Tìm:

    • Cron được bật và có lần đánh thức tiếp theo.
    • Trạng thái lịch sử chạy tác vụ (ok, skipped, error).
    • Lý do bỏ qua heartbeat (quiet-hours, requests-in-flight, cron-in-progress, lanes-busy, alerts-disabled, empty-heartbeat-file, no-tasks-due).
    Common signatures
    • cron: scheduler disabled; jobs will not run automatically → cron bị tắt.
    • cron: timer tick failed → tick của bộ lập lịch thất bại; kiểm tra lỗi tệp/nhật ký/runtime.
    • heartbeat skipped với reason=quiet-hours → nằm ngoài khung giờ hoạt động.
    • heartbeat skipped với reason=empty-heartbeat-fileHEARTBEAT.md tồn tại nhưng chỉ chứa dòng trống / tiêu đề markdown, nên OpenClaw bỏ qua lệnh gọi mô hình.
    • heartbeat skipped với reason=no-tasks-dueHEARTBEAT.md chứa một khối tasks:, nhưng không có tác vụ nào đến hạn ở tick này.
    • heartbeat: unknown accountId → id tài khoản không hợp lệ cho mục tiêu phân phối heartbeat.
    • heartbeat skipped với reason=dm-blocked → mục tiêu heartbeat được phân giải thành đích kiểu DM trong khi agents.defaults.heartbeat.directPolicy (hoặc ghi đè theo từng agent) được đặt thành block.

    Liên quan:

    Node đã ghép đôi, công cụ thất bại

    Nếu một Node đã được ghép đôi nhưng công cụ thất bại, hãy cô lập trạng thái tiền cảnh, quyền và phê duyệt.

    openclaw nodes status
    openclaw nodes describe --node <idOrNameOrIp>
    openclaw approvals get --node <idOrNameOrIp>
    openclaw logs --follow
    openclaw status
    

    Tìm:

    • Node trực tuyến với các khả năng mong đợi.
    • Cấp quyền hệ điều hành cho camera/mic/vị trí/màn hình.
    • Phê duyệt exec và trạng thái danh sách cho phép.

    Chữ ký phổ biến:

    • NODE_BACKGROUND_UNAVAILABLE → ứng dụng Node phải ở tiền cảnh.
    • *_PERMISSION_REQUIRED / LOCATION_PERMISSION_REQUIRED → thiếu quyền hệ điều hành.
    • SYSTEM_RUN_DENIED: approval required → phê duyệt exec đang chờ.
    • SYSTEM_RUN_DENIED: allowlist miss → lệnh bị chặn bởi danh sách cho phép.

    Liên quan:

    Công cụ trình duyệt thất bại

    Dùng phần này khi các hành động của công cụ trình duyệt thất bại dù bản thân gateway vẫn khỏe mạnh.

    openclaw browser status
    openclaw browser start --browser-profile openclaw
    openclaw browser profiles
    openclaw logs --follow
    openclaw doctor
    

    Tìm:

    • Liệu plugins.allow có được đặt và bao gồm browser hay không.
    • Đường dẫn tệp thực thi trình duyệt hợp lệ.
    • Khả năng truy cập hồ sơ CDP.
    • Chrome cục bộ khả dụng cho các hồ sơ existing-session / user.
    Plugin / executable signatures
    • unknown command "browser" hoặc unknown command 'browser' → Plugin trình duyệt đi kèm bị loại trừ bởi plugins.allow.
    • công cụ trình duyệt bị thiếu / không khả dụng trong khi browser.enabled=trueplugins.allow loại trừ browser, nên Plugin không bao giờ được tải.
    • Failed to start Chrome CDP on port → tiến trình trình duyệt không khởi chạy được.
    • browser.executablePath not found → đường dẫn đã cấu hình không hợp lệ.
    • browser.cdpUrl must be http(s) or ws(s) → URL CDP đã cấu hình dùng scheme không được hỗ trợ như file: hoặc ftp:.
    • browser.cdpUrl has invalid port → URL CDP đã cấu hình có cổng sai hoặc ngoài phạm vi.
    • Playwright is not available in this gateway build; '<feature>' is unsupported. → bản cài đặt gateway hiện tại thiếu phụ thuộc runtime trình duyệt lõi; cài đặt lại hoặc cập nhật OpenClaw, rồi khởi động lại gateway. Ảnh chụp nhanh ARIA và ảnh chụp màn hình trang cơ bản vẫn có thể hoạt động, nhưng điều hướng, ảnh chụp nhanh AI, ảnh chụp màn hình phần tử bằng bộ chọn CSS và xuất PDF vẫn không khả dụng.
    Chrome MCP / existing-session signatures
    • Could not find DevToolsActivePort for chrome → phiên hiện có Chrome MCP chưa thể gắn vào thư mục dữ liệu trình duyệt đã chọn. Mở trang kiểm tra trình duyệt, bật gỡ lỗi từ xa, giữ trình duyệt mở, phê duyệt lời nhắc gắn đầu tiên, rồi thử lại. Nếu không cần trạng thái đã đăng nhập, hãy ưu tiên hồ sơ openclaw được quản lý.
    • No Chrome tabs found for profile="user" → hồ sơ gắn Chrome MCP không có tab Chrome cục bộ nào đang mở.
    • Remote CDP for profile "<name>" is not reachable → điểm cuối CDP từ xa đã cấu hình không thể truy cập từ máy chủ gateway.
    • Browser attachOnly is enabled ... not reachable hoặc Browser attachOnly is enabled and CDP websocket ... is not reachable → hồ sơ chỉ gắn không có mục tiêu có thể truy cập, hoặc điểm cuối HTTP đã phản hồi nhưng CDP WebSocket vẫn không mở được.
    Element / screenshot / upload signatures
    • fullPage is not supported for element screenshots → yêu cầu ảnh chụp màn hình đã trộn --full-page với --ref hoặc --element.
    • element screenshots are not supported for existing-session profiles; use ref from snapshot. → các lệnh gọi ảnh chụp màn hình Chrome MCP / existing-session phải dùng chụp trang hoặc --ref từ ảnh chụp nhanh, không dùng CSS --element.
    • existing-session file uploads do not support element selectors; use ref/inputRef. → hook tải tệp lên Chrome MCP cần ref ảnh chụp nhanh, không phải bộ chọn CSS.
    • existing-session file uploads currently support one file at a time. → gửi một lượt tải lên cho mỗi lệnh gọi trên hồ sơ Chrome MCP.
    • existing-session dialog handling does not support timeoutMs. → hook hộp thoại trên hồ sơ Chrome MCP không hỗ trợ ghi đè timeout.
    • existing-session type does not support timeoutMs overrides. → bỏ qua timeoutMs cho act:type trên hồ sơ profile="user" / Chrome MCP existing-session, hoặc dùng hồ sơ trình duyệt được quản lý/CDP khi cần timeout tùy chỉnh.
    • existing-session evaluate does not support timeoutMs overrides. → bỏ qua timeoutMs cho act:evaluate trên hồ sơ profile="user" / Chrome MCP existing-session, hoặc dùng hồ sơ trình duyệt được quản lý/CDP khi cần timeout tùy chỉnh.
    • response body is not supported for existing-session profiles yet.responsebody vẫn yêu cầu trình duyệt được quản lý hoặc hồ sơ CDP thô.
    • ghi đè viewport / dark-mode / locale / offline cũ trên hồ sơ chỉ gắn hoặc CDP từ xa → chạy openclaw browser stop --browser-profile <name> để đóng phiên điều khiển đang hoạt động và giải phóng trạng thái mô phỏng Playwright/CDP mà không cần khởi động lại toàn bộ gateway.

    Liên quan:

    Nếu bạn đã nâng cấp và có thứ gì đó đột ngột hỏng

    Hầu hết sự cố sau nâng cấp là do lệch cấu hình hoặc các giá trị mặc định nghiêm ngặt hơn nay được thực thi.

    1. Auth and URL override behavior changed
    openclaw gateway status
    openclaw config get gateway.mode
    openclaw config get gateway.remote.url
    openclaw config get gateway.auth.mode
    

    Cần kiểm tra:

    • Nếu gateway.mode=remote, các lệnh gọi CLI có thể đang nhắm đến remote trong khi dịch vụ cục bộ của bạn vẫn ổn.
    • Các lệnh gọi --url tường minh không rơi lại về thông tin xác thực đã lưu.

    Chữ ký phổ biến:

    • gateway connect failed: → mục tiêu URL sai.
    • unauthorized → điểm cuối có thể truy cập nhưng xác thực sai.
    2. Bind and auth guardrails are stricter
    openclaw config get gateway.bind
    openclaw config get gateway.auth.mode
    openclaw config get gateway.auth.token
    openclaw gateway status
    openclaw logs --follow
    

    Cần kiểm tra:

    • Các bind không phải loopback (lan, tailnet, custom) cần đường dẫn xác thực gateway hợp lệ: xác thực bằng token/mật khẩu dùng chung, hoặc triển khai trusted-proxy không phải loopback được cấu hình đúng.
    • Các khóa cũ như gateway.token không thay thế gateway.auth.token.

    Chữ ký phổ biến:

    • refusing to bind gateway ... without auth → bind không phải loopback không có đường dẫn xác thực gateway hợp lệ.
    • Connectivity probe: failed trong khi runtime đang chạy → gateway còn sống nhưng không thể truy cập với auth/url hiện tại.
    3. Pairing and device identity state changed
    openclaw devices list
    openclaw pairing list --channel <channel> [--account <id>]
    openclaw logs --follow
    openclaw doctor
    

    Cần kiểm tra:

    • Phê duyệt thiết bị đang chờ cho dashboard/Node.
    • Phê duyệt ghép đôi DM đang chờ sau thay đổi chính sách hoặc danh tính.

    Chữ ký phổ biến:

    • device identity required → xác thực thiết bị chưa được đáp ứng.
    • pairing required → người gửi/thiết bị phải được phê duyệt.

    Nếu cấu hình dịch vụ và runtime vẫn không khớp sau khi kiểm tra, hãy cài đặt lại siêu dữ liệu dịch vụ từ cùng thư mục hồ sơ/trạng thái:

    openclaw gateway install --force
    openclaw gateway restart
    

    Liên quan:

    Liên quan