From db5d55df6b352650f8f8ea327b8afa8b7de900fc Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Tue, 14 Apr 2026 09:16:26 +0000 Subject: [PATCH] chore(i18n): refresh id translations --- docs/id/gateway/local-models.md | 77 ++--- docs/id/reference/RELEASING.md | 174 ++++++----- docs/id/tools/browser.md | 498 ++++++++++++++++++-------------- 3 files changed, 429 insertions(+), 320 deletions(-) diff --git a/docs/id/gateway/local-models.md b/docs/id/gateway/local-models.md index 97415ea13..e6260f998 100644 --- a/docs/id/gateway/local-models.md +++ b/docs/id/gateway/local-models.md @@ -1,28 +1,28 @@ --- read_when: - - Anda ingin menyajikan model dari mesin GPU Anda sendiri - - Anda sedang menyiapkan LM Studio atau proxy yang kompatibel dengan OpenAI - - Anda memerlukan panduan model lokal yang paling aman + - Anda ingin menyajikan model dari box GPU Anda sendiri + - Anda sedang menghubungkan LM Studio atau proxy yang kompatibel dengan OpenAI + - Anda membutuhkan panduan model lokal yang paling aman summary: Jalankan OpenClaw pada LLM lokal (LM Studio, vLLM, LiteLLM, endpoint OpenAI kustom) title: Model Lokal x-i18n: - generated_at: "2026-04-13T08:50:45Z" + generated_at: "2026-04-14T09:14:20Z" model: gpt-5.4 provider: openai - source_hash: 3ecb61b3e6e34d3666f9b688cd694d92c5fb211cf8c420fa876f7ccf5789154a + source_hash: 1544c522357ba4b18dfa6d05ea8d60c7c6262281b53863d9aee7002464703ca7 source_path: gateway/local-models.md workflow: 15 --- # Model lokal -Lokal bisa dilakukan, tetapi OpenClaw mengharapkan konteks besar + pertahanan yang kuat terhadap injeksi prompt. Kartu kecil memotong konteks dan membocorkan mekanisme keamanan. Targetkan tinggi: **≥2 Mac Studio dengan spesifikasi maksimum atau rig GPU setara (~$30k+)**. Satu GPU **24 GB** hanya cocok untuk prompt yang lebih ringan dengan latensi lebih tinggi. Gunakan **varian model terbesar / ukuran penuh yang bisa Anda jalankan**; checkpoint yang sangat dikuantisasi atau “small” meningkatkan risiko injeksi prompt (lihat [Security](/id/gateway/security)). +Lokal memungkinkan, tetapi OpenClaw mengharapkan konteks besar + pertahanan kuat terhadap injeksi prompt. Kartu kecil memotong konteks dan melemahkan keamanan. Targetkan tinggi: **≥2 Mac Studio yang dimaksimalkan atau rig GPU setara (~$30k+)**. Satu GPU **24 GB** hanya cocok untuk prompt yang lebih ringan dengan latensi lebih tinggi. Gunakan **varian model terbesar / ukuran penuh yang bisa Anda jalankan**; checkpoint yang dikuantisasi secara agresif atau “kecil” meningkatkan risiko injeksi prompt (lihat [Keamanan](/id/gateway/security)). -Jika Anda menginginkan setup lokal dengan hambatan paling rendah, mulai dengan [LM Studio](/id/providers/lmstudio) atau [Ollama](/id/providers/ollama) dan `openclaw onboard`. Halaman ini adalah panduan yang opiniatif untuk stack lokal kelas atas dan server lokal kustom yang kompatibel dengan OpenAI. +Jika Anda menginginkan penyiapan lokal dengan hambatan paling rendah, mulai dengan [LM Studio](/id/providers/lmstudio) atau [Ollama](/id/providers/ollama) dan `openclaw onboard`. Halaman ini adalah panduan beropini untuk stack lokal kelas lebih tinggi dan server lokal kustom yang kompatibel dengan OpenAI. -## Rekomendasi: LM Studio + model lokal besar (Responses API) +## Direkomendasikan: LM Studio + model lokal besar (Responses API) -Stack lokal terbaik saat ini. Muat model besar di LM Studio (misalnya, build Qwen, DeepSeek, atau Llama ukuran penuh), aktifkan server lokal (default `http://127.0.0.1:1234`), dan gunakan Responses API untuk menjaga reasoning tetap terpisah dari teks akhir. +Stack lokal terbaik saat ini. Muat model besar di LM Studio (misalnya, build Qwen, DeepSeek, atau Llama ukuran penuh), aktifkan server lokal (default `http://127.0.0.1:1234`), dan gunakan Responses API agar penalaran tetap terpisah dari teks final. ```json5 { @@ -59,18 +59,18 @@ Stack lokal terbaik saat ini. Muat model besar di LM Studio (misalnya, build Qwe } ``` -**Daftar periksa setup** +**Daftar periksa penyiapan** - Instal LM Studio: [https://lmstudio.ai](https://lmstudio.ai) -- Di LM Studio, unduh **build model terbesar yang tersedia** (hindari varian “small”/yang sangat dikuantisasi), mulai server, pastikan `http://127.0.0.1:1234/v1/models` menampilkannya. +- Di LM Studio, unduh **build model terbesar yang tersedia** (hindari varian “kecil”/yang sangat dikuantisasi), mulai server, pastikan `http://127.0.0.1:1234/v1/models` menampilkannya. - Ganti `my-local-model` dengan ID model sebenarnya yang ditampilkan di LM Studio. -- Biarkan model tetap dimuat; cold-load menambah latensi saat startup. +- Biarkan model tetap dimuat; cold-load menambah latensi startup. - Sesuaikan `contextWindow`/`maxTokens` jika build LM Studio Anda berbeda. -- Untuk WhatsApp, tetap gunakan Responses API agar hanya teks akhir yang dikirim. +- Untuk WhatsApp, tetap gunakan Responses API agar hanya teks final yang dikirim. Tetap konfigurasikan model yang di-host bahkan saat menjalankan lokal; gunakan `models.mode: "merge"` agar fallback tetap tersedia. -### Konfigurasi hybrid: hosted primary, fallback lokal +### Konfigurasi hybrid: hosted sebagai utama, lokal sebagai fallback ```json5 { @@ -111,14 +111,14 @@ Tetap konfigurasikan model yang di-host bahkan saat menjalankan lokal; gunakan ` } ``` -### Mengutamakan lokal dengan jaring pengaman hosted +### Lokal sebagai prioritas dengan jaring pengaman hosted -Tukar urutan primary dan fallback; pertahankan blok provider yang sama dan `models.mode: "merge"` agar Anda bisa fallback ke Sonnet atau Opus saat mesin lokal tidak tersedia. +Tukar urutan primary dan fallback; pertahankan blok provider yang sama dan `models.mode: "merge"` agar Anda bisa fallback ke Sonnet atau Opus saat box lokal tidak aktif. ### Hosting regional / perutean data -- Varian MiniMax/Kimi/GLM yang di-host juga tersedia di OpenRouter dengan endpoint yang dikunci ke wilayah tertentu (misalnya, di-host di AS). Pilih varian regional di sana untuk menjaga lalu lintas tetap berada dalam yurisdiksi pilihan Anda sambil tetap menggunakan `models.mode: "merge"` untuk fallback Anthropic/OpenAI. -- Hanya-lokal tetap menjadi jalur privasi terkuat; perutean regional yang di-host adalah jalan tengah saat Anda membutuhkan fitur provider tetapi ingin mengontrol aliran data. +- Varian MiniMax/Kimi/GLM yang di-host juga tersedia di OpenRouter dengan endpoint yang dipatok ke wilayah tertentu (misalnya, di-host di AS). Pilih varian regional di sana agar trafik tetap berada dalam yurisdiksi pilihan Anda sambil tetap menggunakan `models.mode: "merge"` untuk fallback Anthropic/OpenAI. +- Hanya lokal tetap menjadi jalur privasi terkuat; perutean regional yang di-host adalah titik tengah saat Anda membutuhkan fitur provider tetapi ingin mengendalikan aliran data. ## Proxy lokal lain yang kompatibel dengan OpenAI @@ -150,35 +150,42 @@ vLLM, LiteLLM, OAI-proxy, atau gateway kustom dapat digunakan jika mereka mengek } ``` -Pertahankan `models.mode: "merge"` agar model hosted tetap tersedia sebagai fallback. +Tetap gunakan `models.mode: "merge"` agar model hosted tetap tersedia sebagai fallback. -Catatan perilaku untuk backend lokal/proksi `/v1`: +Catatan perilaku untuk backend `/v1` lokal/proxy: -- OpenClaw memperlakukan ini sebagai rute gaya proksi yang kompatibel dengan OpenAI, bukan endpoint OpenAI native +- OpenClaw memperlakukan ini sebagai rute bergaya proxy yang kompatibel dengan OpenAI, bukan endpoint OpenAI native - pembentukan permintaan khusus OpenAI native tidak berlaku di sini: tidak ada - `service_tier`, tidak ada `store` pada Responses, tidak ada pembentukan payload kompatibilitas reasoning OpenAI, dan tidak ada petunjuk prompt-cache + `service_tier`, tidak ada Responses `store`, tidak ada pembentukan payload kompatibilitas penalaran OpenAI, + dan tidak ada petunjuk prompt-cache - header atribusi OpenClaw tersembunyi (`originator`, `version`, `User-Agent`) - tidak disisipkan pada URL proksi kustom ini + tidak disisipkan pada URL proxy kustom ini -Catatan kompatibilitas untuk backend yang kompatibel dengan OpenAI tetapi lebih ketat: +Catatan kompatibilitas untuk backend kompatibel OpenAI yang lebih ketat: -- Beberapa server hanya menerima `messages[].content` berupa string pada Chat Completions, bukan array content-part terstruktur. Atur +- Beberapa server hanya menerima `messages[].content` bertipe string pada Chat Completions, bukan + array bagian-konten terstruktur. Atur `models.providers..models[].compat.requiresStringContent: true` untuk endpoint tersebut. -- Beberapa backend lokal yang lebih kecil atau lebih ketat tidak stabil dengan bentuk prompt runtime agen penuh milik OpenClaw, terutama saat schema tool disertakan. Jika backend - bekerja untuk panggilan `/v1/chat/completions` langsung yang kecil tetapi gagal pada giliran agen OpenClaw normal, coba +- Beberapa backend lokal yang lebih kecil atau lebih ketat tidak stabil dengan bentuk prompt runtime agen OpenClaw + yang lengkap, terutama ketika skema tool disertakan. Jika + backend berfungsi untuk panggilan `/v1/chat/completions` langsung yang kecil tetapi gagal pada giliran agen OpenClaw + normal, coba `models.providers..models[].compat.supportsTools: false` terlebih dahulu. -- Jika backend masih gagal hanya pada eksekusi OpenClaw yang lebih besar, masalah yang tersisa biasanya adalah kapasitas model/server upstream atau bug backend, bukan lapisan transport OpenClaw. +- Jika backend masih gagal hanya pada eksekusi OpenClaw yang lebih besar, masalah yang tersisa + biasanya adalah kapasitas model/server upstream atau bug backend, bukan lapisan transport + OpenClaw. ## Pemecahan masalah -- Gateway bisa menjangkau proksi? `curl http://127.0.0.1:1234/v1/models`. -- Model LM Studio tidak dimuat? Muat ulang; cold start adalah penyebab umum “macet”. -- Error konteks? Turunkan `contextWindow` atau naikkan batas server Anda. +- Gateway bisa menjangkau proxy? `curl http://127.0.0.1:1234/v1/models`. +- Model LM Studio tidak dimuat? Muat ulang; cold start adalah penyebab umum “menggantung”. +- OpenClaw memperingatkan saat jendela konteks yang terdeteksi di bawah **32k** dan memblokir di bawah **16k**. Jika Anda mencapai preflight itu, tingkatkan batas konteks server/model atau pilih model yang lebih besar. +- Kesalahan konteks? Turunkan `contextWindow` atau tingkatkan batas server Anda. - Server yang kompatibel dengan OpenAI mengembalikan `messages[].content ... expected a string`? Tambahkan `compat.requiresStringContent: true` pada entri model tersebut. -- Panggilan `/v1/chat/completions` langsung yang kecil berhasil, tetapi `openclaw infer model run` - gagal pada Gemma atau model lokal lain? Nonaktifkan schema tool terlebih dahulu dengan +- Panggilan `/v1/chat/completions` langsung yang kecil berfungsi, tetapi `openclaw infer model run` + gagal pada Gemma atau model lokal lain? Nonaktifkan skema tool terlebih dahulu dengan `compat.supportsTools: false`, lalu uji lagi. Jika server masih crash hanya - pada prompt OpenClaw yang lebih besar, anggap itu sebagai keterbatasan server/model upstream. -- Keamanan: model lokal melewati filter sisi provider; jaga agar agen tetap sempit dan Compaction tetap aktif untuk membatasi dampak injeksi prompt. + pada prompt OpenClaw yang lebih besar, anggap itu sebagai keterbatasan model/server upstream. +- Keamanan: model lokal melewati filter sisi provider; batasi agen tetap sempit dan biarkan compaction aktif untuk membatasi radius dampak injeksi prompt. diff --git a/docs/id/reference/RELEASING.md b/docs/id/reference/RELEASING.md index ae176a8d3..78fb7d620 100644 --- a/docs/id/reference/RELEASING.md +++ b/docs/id/reference/RELEASING.md @@ -1,14 +1,14 @@ --- read_when: - - Mencari definisi kanal rilis publik - - Mencari penamaan versi dan irama rilis -summary: Kanal rilis publik, penamaan versi, dan irama rilis + - Mencari definisi saluran rilis publik + - Mencari penamaan versi dan ritme rilis +summary: Saluran rilis publik, penamaan versi, dan ritme rilis title: Kebijakan Rilis x-i18n: - generated_at: "2026-04-14T02:08:41Z" + generated_at: "2026-04-14T09:14:19Z" model: gpt-5.4 provider: openai - source_hash: fdc32839447205d74ba7a20a45fbac8e13b199174b442a1e260e3fce056c63da + source_hash: 3eaf9f1786b8c9fd4f5a9c657b623cb69d1a485958e1a9b8f108511839b63587 source_path: reference/RELEASING.md workflow: 15 --- @@ -19,7 +19,7 @@ OpenClaw memiliki tiga jalur rilis publik: - stable: rilis bertag yang dipublikasikan ke npm `beta` secara default, atau ke npm `latest` jika diminta secara eksplisit - beta: tag prarilis yang dipublikasikan ke npm `beta` -- dev: head bergerak dari `main` +- dev: head `main` yang terus bergerak ## Penamaan versi @@ -32,109 +32,153 @@ OpenClaw memiliki tiga jalur rilis publik: - Jangan tambahkan nol di depan bulan atau hari - `latest` berarti rilis npm stable yang saat ini dipromosikan - `beta` berarti target instalasi beta saat ini -- Rilis stable dan rilis koreksi stable dipublikasikan ke npm `beta` secara default; operator rilis dapat menargetkan `latest` secara eksplisit, atau mempromosikan build beta yang telah divalidasi nanti +- Rilis stable dan rilis koreksi stable dipublikasikan ke npm `beta` secara default; operator rilis dapat menargetkan `latest` secara eksplisit, atau mempromosikan build beta yang telah diverifikasi nanti - Setiap rilis OpenClaw mengirimkan paket npm dan aplikasi macOS secara bersamaan -## Irama rilis +## Ritme rilis -- Rilis bergerak dengan pendekatan beta-first -- Stable menyusul hanya setelah beta terbaru divalidasi -- Prosedur rilis terperinci, persetujuan, kredensial, dan catatan pemulihan hanya untuk maintainer +- Rilis bergerak dengan beta terlebih dahulu +- Stable mengikuti hanya setelah beta terbaru tervalidasi +- Prosedur rilis terperinci, persetujuan, kredensial, dan catatan pemulihan + hanya untuk maintainer -## Pra-penerbangan rilis +## Pemeriksaan awal rilis -- Jalankan `pnpm build && pnpm ui:build` sebelum `pnpm release:check` agar artefak rilis `dist/*` yang diharapkan dan bundle Control UI tersedia untuk langkah validasi pack +- Jalankan `pnpm build && pnpm ui:build` sebelum `pnpm release:check` agar + artefak rilis `dist/*` yang diharapkan dan bundle Control UI tersedia untuk langkah + validasi pack - Jalankan `pnpm release:check` sebelum setiap rilis bertag -- Pemeriksaan rilis sekarang berjalan dalam workflow manual terpisah: +- Pemeriksaan rilis sekarang dijalankan dalam workflow manual terpisah: `OpenClaw Release Checks` -- Pemisahan ini disengaja: menjaga jalur rilis npm yang sebenarnya tetap singkat, deterministik, dan berfokus pada artefak, sementara pemeriksaan live yang lebih lambat tetap berada di jalurnya sendiri agar tidak memperlambat atau memblokir publikasi -- Pemeriksaan rilis harus dipicu dari workflow ref `main` agar logika workflow dan secrets tetap kanonis -- Workflow tersebut menerima tag rilis yang sudah ada atau commit SHA `main` 40 karakter penuh saat ini -- Dalam mode commit-SHA, workflow hanya menerima HEAD `origin/main` saat ini; gunakan tag rilis untuk commit rilis yang lebih lama -- Pra-penerbangan hanya-validasi `OpenClaw NPM Release` juga menerima commit SHA `main` 40 karakter penuh saat ini tanpa memerlukan tag yang sudah di-push -- Jalur SHA tersebut hanya untuk validasi dan tidak dapat dipromosikan menjadi publikasi nyata -- Dalam mode SHA, workflow menyintesis `v` hanya untuk pemeriksaan metadata paket; publikasi nyata tetap memerlukan tag rilis yang nyata -- Kedua workflow menjaga jalur publikasi dan promosi nyata tetap berada di runner yang di-host GitHub, sementara jalur validasi non-mutatif dapat menggunakan runner Blacksmith Linux yang lebih besar -- Workflow tersebut menjalankan +- Pemisahan ini disengaja: pertahankan jalur rilis npm yang sebenarnya tetap singkat, + deterministik, dan berfokus pada artefak, sementara pemeriksaan live yang lebih lambat tetap berada di + jalurnya sendiri agar tidak menunda atau memblokir publikasi +- Pemeriksaan rilis harus dipicu dari workflow ref `main` agar + logika workflow dan secret tetap kanonis +- Workflow itu menerima tag rilis yang sudah ada atau commit SHA `main` + penuh 40 karakter saat ini +- Dalam mode commit-SHA, workflow itu hanya menerima HEAD `origin/main` saat ini; gunakan + tag rilis untuk commit rilis yang lebih lama +- Validasi awal khusus `OpenClaw NPM Release` juga menerima commit SHA `main` + penuh 40 karakter saat ini tanpa memerlukan tag yang sudah dipush +- Jalur SHA itu hanya untuk validasi dan tidak dapat dipromosikan menjadi publikasi nyata +- Dalam mode SHA, workflow mensintesis `v` hanya untuk + pemeriksaan metadata paket; publikasi nyata tetap memerlukan tag rilis yang nyata +- Kedua workflow menjaga jalur publikasi dan promosi nyata tetap berjalan di runner yang dihosting GitHub, + sementara jalur validasi non-mutasi dapat menggunakan runner Linux + Blacksmith yang lebih besar +- Workflow itu menjalankan `OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_CACHE_TEST=1 pnpm test:live:cache` - menggunakan kedua workflow secrets `OPENAI_API_KEY` dan `ANTHROPIC_API_KEY` -- Pra-penerbangan rilis npm tidak lagi menunggu jalur pemeriksaan rilis terpisah + menggunakan secret workflow `OPENAI_API_KEY` dan `ANTHROPIC_API_KEY` +- Validasi awal rilis npm tidak lagi menunggu jalur pemeriksaan rilis terpisah - Jalankan `RELEASE_TAG=vYYYY.M.D node --import tsx scripts/openclaw-npm-release-check.ts` (atau tag beta/koreksi yang sesuai) sebelum persetujuan -- Setelah publikasi npm, jalankan +- Setelah npm publish, jalankan `node --import tsx scripts/openclaw-npm-postpublish-verify.ts YYYY.M.D` - (atau versi beta/koreksi yang sesuai) untuk memverifikasi jalur instalasi registry yang dipublikasikan dalam prefix temp yang baru + (atau versi beta/koreksi yang sesuai) untuk memverifikasi jalur instalasi registry + yang dipublikasikan dalam temp prefix baru - Otomatisasi rilis maintainer sekarang menggunakan preflight-then-promote: - - publikasi npm nyata harus lulus `preflight_run_id` npm yang berhasil - - rilis npm stable secara default menargetkan `beta` + - publikasi npm nyata harus lulus dengan npm `preflight_run_id` yang berhasil + - rilis npm stable secara default menuju `beta` - publikasi npm stable dapat menargetkan `latest` secara eksplisit melalui input workflow - - promosi npm stable dari `beta` ke `latest` tetap tersedia sebagai mode manual eksplisit pada workflow tepercaya `OpenClaw NPM Release` - - publikasi stable langsung juga dapat menjalankan mode sinkronisasi dist-tag eksplisit yang mengarahkan `latest` dan `beta` ke versi stable yang sudah dipublikasikan - - mode dist-tag tersebut tetap memerlukan `NPM_TOKEN` yang valid di environment `npm-release` karena pengelolaan `npm dist-tag` terpisah dari trusted publishing + - promosi npm stable dari `beta` ke `latest` masih tersedia sebagai mode manual eksplisit pada workflow tepercaya `OpenClaw NPM Release` + - publikasi stable langsung juga dapat menjalankan mode sinkronisasi dist-tag eksplisit yang + mengarahkan `latest` dan `beta` ke versi stable yang sudah dipublikasikan + - mode dist-tag tersebut tetap memerlukan `NPM_TOKEN` yang valid di environment `npm-release` karena pengelolaan npm `dist-tag` terpisah dari trusted publishing - `macOS Release` publik hanya untuk validasi - - publikasi mac privat yang nyata harus lulus `preflight_run_id` dan `validate_run_id` mac privat yang berhasil - - jalur publikasi nyata mempromosikan artefak yang sudah disiapkan alih-alih membangunnya ulang lagi -- Untuk rilis koreksi stable seperti `YYYY.M.D-N`, verifier pascapublikasi juga memeriksa jalur upgrade prefix temp yang sama dari `YYYY.M.D` ke `YYYY.M.D-N` agar koreksi rilis tidak secara diam-diam membuat instalasi global lama tetap berada pada payload stable dasar -- Pra-penerbangan rilis npm gagal secara tertutup kecuali tarball mencakup `dist/control-ui/index.html` dan payload `dist/control-ui/assets/` yang tidak kosong agar kita tidak lagi mengirim dashboard browser yang kosong -- Jika pekerjaan rilis menyentuh perencanaan CI, manifest timing ekstensi, atau matriks pengujian ekstensi, regenerasikan dan tinjau output matriks workflow `checks-node-extensions` yang dimiliki planner dari `.github/workflows/ci.yml` sebelum persetujuan agar catatan rilis tidak menggambarkan tata letak CI yang usang -- Kesiapan rilis macOS stable juga mencakup surface updater: - - rilis GitHub harus berakhir dengan `.zip`, `.dmg`, dan `.dSYM.zip` yang telah dipaketkan - - `appcast.xml` di `main` harus menunjuk ke zip stable baru setelah publikasi - - aplikasi yang telah dipaketkan harus mempertahankan bundle id non-debug, URL feed Sparkle yang tidak kosong, dan `CFBundleVersion` pada atau di atas batas build Sparkle kanonis untuk versi rilis tersebut + - publikasi mac privat yang nyata harus lulus dengan `preflight_run_id` dan `validate_run_id` + mac privat yang berhasil + - jalur publikasi nyata mempromosikan artefak yang telah disiapkan alih-alih membangunnya + lagi +- Untuk rilis koreksi stable seperti `YYYY.M.D-N`, verifier pascapublikasi + juga memeriksa jalur upgrade temp-prefix yang sama dari `YYYY.M.D` ke `YYYY.M.D-N` + agar koreksi rilis tidak diam-diam meninggalkan instalasi global yang lebih lama pada + payload stable dasar +- Validasi awal rilis npm gagal secara tertutup kecuali tarball mencakup + `dist/control-ui/index.html` dan payload `dist/control-ui/assets/` yang tidak kosong + sehingga kita tidak mengirim dashboard browser kosong lagi +- `pnpm test:install:smoke` juga menegakkan anggaran `unpackedSize` npm pack pada + tarball pembaruan kandidat, sehingga installer e2e menangkap pembengkakan pack yang tidak disengaja + sebelum jalur publikasi rilis +- Jika pekerjaan rilis menyentuh perencanaan CI, manifest timing extension, atau + matriks pengujian extension, regenerasikan dan tinjau keluaran matriks workflow + `checks-node-extensions` milik planner dari `.github/workflows/ci.yml` + sebelum persetujuan agar catatan rilis tidak menjelaskan tata letak CI yang usang +- Kesiapan rilis macOS stable juga mencakup permukaan updater: + - rilis GitHub harus berakhir dengan `.zip`, `.dmg`, dan `.dSYM.zip` yang sudah dipaketkan + - `appcast.xml` di `main` harus mengarah ke zip stable baru setelah publish + - aplikasi yang dipaketkan harus tetap memiliki bundle id non-debug, Sparkle feed + URL yang tidak kosong, dan `CFBundleVersion` pada atau di atas batas build Sparkle kanonis + untuk versi rilis tersebut ## Input workflow NPM `OpenClaw NPM Release` menerima input yang dikendalikan operator berikut: -- `tag`: tag rilis yang wajib, seperti `v2026.4.2`, `v2026.4.2-1`, atau +- `tag`: tag rilis yang wajib seperti `v2026.4.2`, `v2026.4.2-1`, atau `v2026.4.2-beta.1`; ketika `preflight_only=true`, ini juga dapat berupa - commit SHA `main` 40 karakter penuh saat ini untuk pra-penerbangan hanya-validasi -- `preflight_only`: `true` untuk validasi/build/package saja, `false` untuk jalur publikasi nyata -- `preflight_run_id`: wajib pada jalur publikasi nyata agar workflow menggunakan kembali tarball yang telah disiapkan dari run pra-penerbangan yang berhasil -- `npm_dist_tag`: tag target npm untuk jalur publikasi; default-nya `beta` -- `promote_beta_to_latest`: `true` untuk melewati publikasi dan memindahkan build `beta` stable yang sudah dipublikasikan ke `latest` -- `sync_stable_dist_tags`: `true` untuk melewati publikasi dan mengarahkan `latest` dan `beta` ke versi stable yang sudah dipublikasikan + commit SHA `main` penuh 40 karakter saat ini untuk validasi awal khusus validasi +- `preflight_only`: `true` untuk validasi/build/package saja, `false` untuk + jalur publish nyata +- `preflight_run_id`: wajib pada jalur publish nyata agar workflow menggunakan kembali + tarball yang telah disiapkan dari run preflight yang berhasil +- `npm_dist_tag`: tag target npm untuk jalur publish; default ke `beta` +- `promote_beta_to_latest`: `true` untuk melewati publish dan memindahkan build `beta` stable + yang sudah dipublikasikan ke `latest` +- `sync_stable_dist_tags`: `true` untuk melewati publish dan mengarahkan `latest` dan + `beta` ke versi stable yang sudah dipublikasikan `OpenClaw Release Checks` menerima input yang dikendalikan operator berikut: -- `ref`: tag rilis yang sudah ada atau commit SHA `main` 40 karakter penuh saat ini yang akan divalidasi +- `ref`: tag rilis yang sudah ada atau commit + SHA `main` penuh 40 karakter saat ini untuk divalidasi Aturan: - Tag stable dan koreksi dapat dipublikasikan ke `beta` atau `latest` - Tag prarilis beta hanya dapat dipublikasikan ke `beta` -- Input commit SHA penuh hanya diizinkan ketika `preflight_only=true` -- Mode commit-SHA pemeriksaan rilis juga memerlukan HEAD `origin/main` saat ini -- Jalur publikasi nyata harus menggunakan `npm_dist_tag` yang sama dengan yang digunakan selama pra-penerbangan; workflow memverifikasi metadata tersebut sebelum publikasi dilanjutkan +- Input commit SHA penuh hanya diizinkan saat `preflight_only=true` +- Mode commit-SHA pemeriksaan rilis juga mensyaratkan HEAD `origin/main` saat ini +- Jalur publish nyata harus menggunakan `npm_dist_tag` yang sama dengan yang digunakan saat preflight; + workflow memverifikasi metadata tersebut sebelum publish dilanjutkan - Mode promosi harus menggunakan tag stable atau koreksi, `preflight_only=false`, `preflight_run_id` kosong, dan `npm_dist_tag=beta` - Mode sinkronisasi dist-tag harus menggunakan tag stable atau koreksi, `preflight_only=false`, `preflight_run_id` kosong, `npm_dist_tag=latest`, dan `promote_beta_to_latest=false` - Mode promosi dan sinkronisasi dist-tag juga memerlukan `NPM_TOKEN` yang valid karena - `npm dist-tag add` tetap memerlukan autentikasi npm biasa; trusted publishing hanya mencakup jalur publikasi paket + `npm dist-tag add` tetap memerlukan autentikasi npm biasa; trusted publishing hanya mencakup + jalur publish paket ## Urutan rilis npm stable -Saat membuat rilis npm stable: +Saat memotong rilis npm stable: 1. Jalankan `OpenClaw NPM Release` dengan `preflight_only=true` - - Sebelum tag ada, Anda dapat menggunakan commit SHA `main` penuh saat ini untuk dry run hanya-validasi dari workflow pra-penerbangan -2. Pilih `npm_dist_tag=beta` untuk alur beta-first normal, atau `latest` hanya ketika Anda memang ingin melakukan publikasi stable langsung -3. Jalankan `OpenClaw Release Checks` secara terpisah dengan tag yang sama atau commit SHA `main` penuh saat ini ketika Anda menginginkan cakupan cache prompt live - - Ini dipisahkan dengan sengaja agar cakupan live tetap tersedia tanpa mengaitkan kembali pemeriksaan yang berjalan lama atau flaky ke workflow publikasi + - Sebelum tag ada, Anda dapat menggunakan commit SHA `main` penuh saat ini untuk + dry run hanya validasi dari workflow preflight +2. Pilih `npm_dist_tag=beta` untuk alur beta-first normal, atau `latest` hanya + ketika Anda memang ingin melakukan publish stable langsung +3. Jalankan `OpenClaw Release Checks` secara terpisah dengan tag yang sama atau + commit SHA `main` penuh saat ini ketika Anda ingin cakupan cache prompt live + - Ini dipisahkan dengan sengaja agar cakupan live tetap tersedia tanpa + menghubungkan kembali pemeriksaan yang berjalan lama atau tidak stabil ke workflow publish 4. Simpan `preflight_run_id` yang berhasil -5. Jalankan `OpenClaw NPM Release` lagi dengan `preflight_only=false`, `tag` yang sama, `npm_dist_tag` yang sama, dan `preflight_run_id` yang disimpan -6. Jika rilis masuk ke `beta`, jalankan `OpenClaw NPM Release` nanti dengan `tag` stable yang sama, `promote_beta_to_latest=true`, `preflight_only=false`, - `preflight_run_id` kosong, dan `npm_dist_tag=beta` ketika Anda ingin memindahkan build yang sudah dipublikasikan itu ke `latest` +5. Jalankan `OpenClaw NPM Release` lagi dengan `preflight_only=false`, `tag` + yang sama, `npm_dist_tag` yang sama, dan `preflight_run_id` yang disimpan +6. Jika rilis mendarat di `beta`, jalankan `OpenClaw NPM Release` nanti dengan + `tag` stable yang sama, `promote_beta_to_latest=true`, `preflight_only=false`, + `preflight_run_id` kosong, dan `npm_dist_tag=beta` ketika Anda ingin memindahkan build + yang telah dipublikasikan itu ke `latest` 7. Jika rilis sengaja dipublikasikan langsung ke `latest` dan `beta` - harus mengikuti build stable yang sama, jalankan `OpenClaw NPM Release` dengan `tag` stable yang sama, `sync_stable_dist_tags=true`, `promote_beta_to_latest=false`, + harus mengikuti build stable yang sama, jalankan `OpenClaw NPM Release` dengan + `tag` stable yang sama, `sync_stable_dist_tags=true`, `promote_beta_to_latest=false`, `preflight_only=false`, `preflight_run_id` kosong, dan `npm_dist_tag=latest` Mode promosi dan sinkronisasi dist-tag tetap memerlukan persetujuan environment `npm-release` -dan `NPM_TOKEN` yang valid yang dapat diakses oleh run workflow tersebut. +dan `NPM_TOKEN` yang valid yang dapat diakses oleh workflow tersebut. -Hal ini menjaga agar jalur publikasi langsung dan jalur promosi beta-first tetap +Ini menjaga jalur publish langsung dan jalur promosi beta-first tetap terdokumentasi dan terlihat oleh operator. ## Referensi publik @@ -145,6 +189,6 @@ terdokumentasi dan terlihat oleh operator. - [`scripts/package-mac-dist.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/package-mac-dist.sh) - [`scripts/make_appcast.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/make_appcast.sh) -Maintainer menggunakan dokumen rilis privat di +Maintainer menggunakan dokumentasi rilis privat di [`openclaw/maintainers/release/README.md`](https://github.com/openclaw/maintainers/blob/main/release/README.md) untuk runbook yang sebenarnya. diff --git a/docs/id/tools/browser.md b/docs/id/tools/browser.md index ee8e1c1e2..cae7a092c 100644 --- a/docs/id/tools/browser.md +++ b/docs/id/tools/browser.md @@ -1,41 +1,41 @@ --- read_when: - - Menambahkan otomasi browser yang dikendalikan agen + - Menambahkan otomatisasi browser yang dikendalikan agen - Men-debug mengapa openclaw mengganggu Chrome Anda sendiri - Menerapkan pengaturan browser + siklus hidup di aplikasi macOS -summary: Layanan kontrol browser terintegrasi + perintah tindakan +summary: Layanan kontrol browser terintegrasi + perintah aksi title: Browser (dikelola OpenClaw) x-i18n: - generated_at: "2026-04-11T02:47:57Z" + generated_at: "2026-04-14T09:14:20Z" model: gpt-5.4 provider: openai - source_hash: da6fed36a6f40a50e825f90e5616778954545bd7e52397f7e088b85251ee024f + source_hash: ae9ef725f544d4236d229f498c7187871c69bd18d31069b30a7e67fac53166a2 source_path: tools/browser.md workflow: 15 --- # Browser (dikelola openclaw) -OpenClaw dapat menjalankan **profil Chrome/Brave/Edge/Chromium khusus** yang dikendalikan agen. -Profil ini terisolasi dari browser pribadi Anda dan dikelola melalui layanan kontrol -lokal kecil di dalam Gateway (hanya loopback). +OpenClaw dapat menjalankan **profil Chrome/Brave/Edge/Chromium khusus** yang dikendalikan oleh agen. +Ini terisolasi dari browser pribadi Anda dan dikelola melalui layanan kontrol lokal kecil +di dalam Gateway (hanya loopback). Tampilan untuk pemula: -- Anggap ini sebagai **browser terpisah khusus agen**. +- Anggap ini sebagai **browser terpisah, khusus agen**. - Profil `openclaw` **tidak** menyentuh profil browser pribadi Anda. - Agen dapat **membuka tab, membaca halaman, mengeklik, dan mengetik** di jalur yang aman. -- Profil bawaan `user` menempel ke sesi Chrome asli Anda yang sudah login melalui Chrome MCP. +- Profil bawaan `user` terhubung ke sesi Chrome nyata Anda yang sudah login melalui Chrome MCP. ## Yang Anda dapatkan - Profil browser terpisah bernama **openclaw** (aksen oranye secara default). -- Kontrol tab deterministik (daftar/buka/fokus/tutup). -- Tindakan agen (klik/ketik/seret/pilih), snapshot, screenshot, PDF. +- Kontrol tab yang deterministik (daftar/buka/fokus/tutup). +- Aksi agen (klik/ketik/seret/pilih), snapshot, screenshot, PDF. - Dukungan multi-profil opsional (`openclaw`, `work`, `remote`, ...). Browser ini **bukan** browser harian Anda. Ini adalah permukaan yang aman dan terisolasi untuk -otomasi dan verifikasi agen. +otomatisasi dan verifikasi agen. ## Mulai cepat @@ -46,17 +46,17 @@ openclaw browser --browser-profile openclaw open https://example.com openclaw browser --browser-profile openclaw snapshot ``` -Jika Anda mendapatkan “Browser dinonaktifkan”, aktifkan di konfigurasi (lihat di bawah) dan restart +Jika Anda mendapatkan “Browser dinonaktifkan”, aktifkan di konfigurasi (lihat di bawah) dan mulai ulang Gateway. -Jika `openclaw browser` hilang sepenuhnya, atau agen mengatakan tool browser -tidak tersedia, langsung ke [Perintah atau tool browser hilang](/id/tools/browser#missing-browser-command-or-tool). +Jika `openclaw browser` sama sekali tidak ada, atau agen mengatakan alat browser +tidak tersedia, langsung ke [Perintah atau alat browser tidak ada](/id/tools/browser#missing-browser-command-or-tool). -## Kontrol plugin +## Kontrol Plugin -Tool `browser` default sekarang merupakan plugin bawaan yang dikirim dalam keadaan aktif -secara default. Artinya Anda dapat menonaktifkan atau menggantinya tanpa menghapus -sisa sistem plugin OpenClaw: +Alat `browser` default sekarang adalah Plugin bawaan yang dikirim dalam keadaan aktif +secara default. Artinya Anda dapat menonaktifkan atau menggantinya tanpa menghapus sisa +sistem plugin OpenClaw: ```json5 { @@ -70,30 +70,31 @@ sisa sistem plugin OpenClaw: } ``` -Nonaktifkan plugin bawaan sebelum memasang plugin lain yang menyediakan nama -tool `browser` yang sama. Pengalaman browser default memerlukan keduanya: +Nonaktifkan Plugin bawaan sebelum memasang Plugin lain yang menyediakan +nama alat `browser` yang sama. Pengalaman browser default memerlukan keduanya: - `plugins.entries.browser.enabled` tidak dinonaktifkan - `browser.enabled=true` -Jika Anda hanya mematikan plugin, CLI browser bawaan (`openclaw browser`), -metode gateway (`browser.request`), tool agen, dan layanan kontrol browser default -semuanya hilang bersama-sama. Konfigurasi `browser.*` Anda tetap utuh agar dapat digunakan ulang -oleh plugin pengganti. +Jika Anda hanya mematikan Plugin, CLI browser bawaan (`openclaw browser`), +metode gateway (`browser.request`), alat agen, dan layanan kontrol browser default +semuanya hilang bersama. Konfigurasi `browser.*` Anda tetap utuh agar dapat digunakan ulang oleh +Plugin pengganti. -Plugin browser bawaan juga sekarang memiliki implementasi runtime browser. -Inti hanya menyimpan helper Plugin SDK bersama ditambah ekspor ulang kompatibilitas untuk -path impor internal lama. Dalam praktiknya, menghapus atau mengganti paket plugin browser -menghapus kumpulan fitur browser alih-alih meninggalkan runtime kedua milik inti. +Plugin browser bawaan kini juga memiliki implementasi runtime browser. +Core hanya menyimpan helper Plugin SDK bersama serta re-export kompatibilitas untuk +jalur import internal lama. Dalam praktiknya, menghapus atau mengganti paket Plugin browser +akan menghapus rangkaian fitur browser alih-alih meninggalkan runtime kedua yang masih dimiliki +core. -Perubahan konfigurasi browser tetap memerlukan restart Gateway agar plugin bawaan +Perubahan konfigurasi browser tetap memerlukan restart Gateway agar Plugin bawaan dapat mendaftarkan ulang layanan browser-nya dengan pengaturan baru. -## Perintah atau tool browser hilang +## Perintah atau alat browser tidak ada Jika `openclaw browser` tiba-tiba menjadi perintah yang tidak dikenal setelah upgrade, atau -agen melaporkan bahwa tool browser hilang, penyebab paling umum adalah daftar -`plugins.allow` yang ketat dan tidak menyertakan `browser`. +agen melaporkan bahwa alat browser hilang, penyebab paling umum adalah daftar +`plugins.allow` yang terlalu ketat dan tidak menyertakan `browser`. Contoh konfigurasi yang rusak: @@ -105,7 +106,7 @@ Contoh konfigurasi yang rusak: } ``` -Perbaiki dengan menambahkan `browser` ke allowlist plugin: +Perbaiki dengan menambahkan `browser` ke allowlist Plugin: ```json5 { @@ -118,29 +119,29 @@ Perbaiki dengan menambahkan `browser` ke allowlist plugin: Catatan penting: - `browser.enabled=true` saja tidak cukup ketika `plugins.allow` disetel. -- `plugins.entries.browser.enabled=true` juga tidak cukup ketika `plugins.allow` disetel. -- `tools.alsoAllow: ["browser"]` **tidak** memuat plugin browser bawaan. Itu hanya menyesuaikan kebijakan tool setelah plugin dimuat. -- Jika Anda tidak memerlukan allowlist plugin yang ketat, menghapus `plugins.allow` juga mengembalikan perilaku browser bawaan default. +- `plugins.entries.browser.enabled=true` saja juga tidak cukup ketika `plugins.allow` disetel. +- `tools.alsoAllow: ["browser"]` **tidak** memuat Plugin browser bawaan. Itu hanya menyesuaikan kebijakan alat setelah Plugin sudah dimuat. +- Jika Anda tidak membutuhkan allowlist Plugin yang ketat, menghapus `plugins.allow` juga mengembalikan perilaku browser bawaan default. Gejala umum: - `openclaw browser` adalah perintah yang tidak dikenal. -- `browser.request` hilang. -- Agen melaporkan tool browser tidak tersedia atau hilang. +- `browser.request` tidak ada. +- Agen melaporkan alat browser tidak tersedia atau hilang. ## Profil: `openclaw` vs `user` -- `openclaw`: browser terkelola dan terisolasi (tanpa extension yang diperlukan). +- `openclaw`: browser terkelola dan terisolasi (tidak memerlukan ekstensi). - `user`: profil attach Chrome MCP bawaan untuk sesi **Chrome asli Anda yang sudah login**. -Untuk pemanggilan tool browser oleh agen: +Untuk pemanggilan alat browser agen: - Default: gunakan browser `openclaw` yang terisolasi. -- Pilih `profile="user"` ketika sesi yang sudah login penting dan pengguna - sedang berada di komputer untuk mengeklik/menyetujui prompt attach apa pun. -- `profile` adalah override eksplisit ketika Anda menginginkan mode browser tertentu. +- Gunakan `profile="user"` jika sesi login yang sudah ada penting dan pengguna + sedang berada di depan komputer untuk mengeklik/menyetujui prompt attach apa pun. +- `profile` adalah override eksplisit saat Anda menginginkan mode browser tertentu. -Set `browser.defaultProfile: "openclaw"` jika Anda ingin mode terkelola menjadi default. +Setel `browser.defaultProfile: "openclaw"` jika Anda ingin mode terkelola secara default. ## Konfigurasi @@ -151,14 +152,14 @@ Pengaturan browser berada di `~/.openclaw/openclaw.json`. browser: { enabled: true, // default: true ssrfPolicy: { - // dangerouslyAllowPrivateNetwork: true, // aktifkan hanya untuk akses jaringan privat tepercaya + // dangerouslyAllowPrivateNetwork: true, // ikut serta hanya untuk akses jaringan privat tepercaya // allowPrivateNetwork: true, // alias lama // hostnameAllowlist: ["*.example.com", "example.com"], // allowedHostnames: ["localhost"], }, - // cdpUrl: "http://127.0.0.1:18792", // override satu profil lama - remoteCdpTimeoutMs: 1500, // timeout HTTP CDP jarak jauh (md) - remoteCdpHandshakeTimeoutMs: 3000, // timeout handshake WebSocket CDP jarak jauh (md) + // cdpUrl: "http://127.0.0.1:18792", // override profil tunggal lama + remoteCdpTimeoutMs: 1500, // timeout HTTP CDP jarak jauh (ms) + remoteCdpHandshakeTimeoutMs: 3000, // timeout handshake WebSocket CDP jarak jauh (ms) defaultProfile: "openclaw", color: "#FF4500", headless: false, @@ -189,29 +190,29 @@ Catatan: - Layanan kontrol browser melakukan bind ke loopback pada port yang diturunkan dari `gateway.port` (default: `18791`, yaitu gateway + 2). -- Jika Anda menimpa port Gateway (`gateway.port` atau `OPENCLAW_GATEWAY_PORT`), +- Jika Anda meng-override port Gateway (`gateway.port` atau `OPENCLAW_GATEWAY_PORT`), port browser turunan akan bergeser agar tetap berada dalam “keluarga” yang sama. -- `cdpUrl` default ke port CDP lokal terkelola saat tidak disetel. +- `cdpUrl` secara default mengarah ke port CDP lokal terkelola saat tidak disetel. - `remoteCdpTimeoutMs` berlaku untuk pemeriksaan keterjangkauan CDP jarak jauh (non-loopback). -- `remoteCdpHandshakeTimeoutMs` berlaku untuk pemeriksaan keterjangkauan WebSocket CDP jarak jauh. -- Navigasi browser/buka-tab dilindungi SSRF sebelum navigasi dan diperiksa ulang sebisa mungkin pada URL `http(s)` akhir setelah navigasi. -- Dalam mode SSRF ketat, penemuan/probe endpoint CDP jarak jauh (`cdpUrl`, termasuk lookup `/json/version`) juga diperiksa. -- `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork` dinonaktifkan secara default. Setel ke `true` hanya ketika Anda sengaja mempercayai akses browser jaringan privat. +- `remoteCdpHandshakeTimeoutMs` berlaku untuk pemeriksaan keterjangkauan handshake WebSocket CDP jarak jauh. +- Navigasi browser/buka-tab dilindungi SSRF sebelum navigasi dan diperiksa ulang sebisa mungkin pada URL akhir `http(s)` setelah navigasi. +- Dalam mode SSRF ketat, discovery/probe endpoint CDP jarak jauh (`cdpUrl`, termasuk lookup `/json/version`) juga diperiksa. +- `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork` dinonaktifkan secara default. Setel ke `true` hanya jika Anda memang memercayai akses browser ke jaringan privat. - `browser.ssrfPolicy.allowPrivateNetwork` tetap didukung sebagai alias lama untuk kompatibilitas. - `attachOnly: true` berarti “jangan pernah meluncurkan browser lokal; hanya attach jika browser sudah berjalan.” -- `color` + `color` per profil memberi tint pada UI browser sehingga Anda dapat melihat profil mana yang aktif. +- `color` + `color` per profil memberi warna UI browser agar Anda dapat melihat profil mana yang aktif. - Profil default adalah `openclaw` (browser mandiri yang dikelola OpenClaw). Gunakan `defaultProfile: "user"` untuk memilih browser pengguna yang sudah login. - Urutan deteksi otomatis: browser default sistem jika berbasis Chromium; jika tidak, Chrome → Brave → Edge → Chromium → Chrome Canary. -- Profil `openclaw` lokal menetapkan `cdpPort`/`cdpUrl` secara otomatis — setel itu hanya untuk CDP jarak jauh. -- `driver: "existing-session"` menggunakan Chrome DevTools MCP alih-alih CDP mentah. Jangan +- Profil `openclaw` lokal otomatis menetapkan `cdpPort`/`cdpUrl` — setel itu hanya untuk CDP jarak jauh. +- `driver: "existing-session"` menggunakan Chrome DevTools MCP, bukan CDP mentah. Jangan setel `cdpUrl` untuk driver tersebut. -- Setel `browser.profiles..userDataDir` ketika profil existing-session - harus menempel ke profil pengguna Chromium non-default seperti Brave atau Edge. +- Setel `browser.profiles..userDataDir` saat profil existing-session + harus attach ke profil pengguna Chromium non-default seperti Brave atau Edge. ## Gunakan Brave (atau browser berbasis Chromium lainnya) Jika browser **default sistem** Anda berbasis Chromium (Chrome/Brave/Edge/dll), -OpenClaw akan menggunakannya secara otomatis. Setel `browser.executablePath` untuk menimpa +OpenClaw akan menggunakannya secara otomatis. Setel `browser.executablePath` untuk meng-override deteksi otomatis: Contoh CLI: @@ -246,48 +247,48 @@ openclaw config set browser.executablePath "/usr/bin/google-chrome" ## Kontrol lokal vs jarak jauh - **Kontrol lokal (default):** Gateway memulai layanan kontrol loopback dan dapat meluncurkan browser lokal. -- **Kontrol jarak jauh (host node):** jalankan host node di mesin yang memiliki browser; Gateway mem-proxy tindakan browser ke sana. +- **Kontrol jarak jauh (host node):** jalankan host node di mesin yang memiliki browser; Gateway mem-proxy aksi browser ke sana. - **CDP jarak jauh:** setel `browser.profiles..cdpUrl` (atau `browser.cdpUrl`) untuk attach ke browser berbasis Chromium jarak jauh. Dalam kasus ini, OpenClaw tidak akan meluncurkan browser lokal. Perilaku penghentian berbeda menurut mode profil: -- profil terkelola lokal: `openclaw browser stop` menghentikan proses browser yang - diluncurkan OpenClaw +- profil lokal terkelola: `openclaw browser stop` menghentikan proses browser yang + diluncurkan oleh OpenClaw - profil attach-only dan CDP jarak jauh: `openclaw browser stop` menutup sesi kontrol aktif dan melepaskan override emulasi Playwright/CDP (viewport, - skema warna, locale, zona waktu, mode offline, dan status serupa), meskipun + skema warna, lokal, zona waktu, mode offline, dan status serupa), meskipun tidak ada proses browser yang diluncurkan oleh OpenClaw -URL CDP jarak jauh dapat menyertakan auth: +URL CDP jarak jauh dapat menyertakan autentikasi: -- Token kueri (misalnya `https://provider.example?token=`) -- Auth Dasar HTTP (misalnya `https://user:pass@provider.example`) +- Token query (mis. `https://provider.example?token=`) +- HTTP Basic auth (mis. `https://user:pass@provider.example`) -OpenClaw mempertahankan auth saat memanggil endpoint `/json/*` dan saat terhubung -ke WebSocket CDP. Pilih environment variable atau secret manager untuk +OpenClaw mempertahankan autentikasi saat memanggil endpoint `/json/*` dan saat terhubung +ke WebSocket CDP. Gunakan environment variable atau pengelola secret untuk token alih-alih meng-commit-nya ke file konfigurasi. -## Proxy browser node (default tanpa konfigurasi) +## Proksi browser node (default tanpa konfigurasi) Jika Anda menjalankan **host node** di mesin yang memiliki browser Anda, OpenClaw dapat -mengalihkan pemanggilan tool browser ke node itu secara otomatis tanpa konfigurasi browser tambahan. -Ini adalah jalur default untuk gateway jarak jauh. +secara otomatis merutekan pemanggilan alat browser ke node tersebut tanpa konfigurasi browser tambahan. +Ini adalah jalur default untuk Gateway jarak jauh. Catatan: - Host node mengekspos server kontrol browser lokalnya melalui **perintah proxy**. -- Profil berasal dari konfigurasi `browser.profiles` milik node sendiri (sama seperti lokal). -- `nodeHost.browserProxy.allowProfiles` bersifat opsional. Biarkan kosong untuk perilaku lama/default: semua profil yang dikonfigurasi tetap dapat dijangkau melalui proxy, termasuk rute pembuatan/penghapusan profil. -- Jika Anda menyetel `nodeHost.browserProxy.allowProfiles`, OpenClaw memperlakukannya sebagai batas least-privilege: hanya profil yang di-allowlist yang dapat ditargetkan, dan rute pembuatan/penghapusan profil persisten diblokir pada permukaan proxy. +- Profil berasal dari konfigurasi `browser.profiles` milik node itu sendiri (sama seperti lokal). +- `nodeHost.browserProxy.allowProfiles` bersifat opsional. Biarkan kosong untuk perilaku lama/default: semua profil yang dikonfigurasi tetap dapat dijangkau melalui proksi, termasuk rute buat/hapus profil. +- Jika Anda menyetel `nodeHost.browserProxy.allowProfiles`, OpenClaw memperlakukannya sebagai batas least-privilege: hanya profil yang di-allowlist yang dapat ditargetkan, dan rute buat/hapus profil persisten diblokir pada permukaan proksi. - Nonaktifkan jika Anda tidak menginginkannya: - - Di node: `nodeHost.browserProxy.enabled=false` - - Di gateway: `gateway.nodes.browser.mode="off"` + - Pada node: `nodeHost.browserProxy.enabled=false` + - Pada gateway: `gateway.nodes.browser.mode="off"` ## Browserless (CDP jarak jauh terhosting) [Browserless](https://browserless.io) adalah layanan Chromium terhosting yang mengekspos -URL koneksi CDP melalui HTTPS dan WebSocket. OpenClaw dapat menggunakan keduanya, tetapi +URL koneksi CDP melalui HTTPS dan WebSocket. OpenClaw dapat menggunakan salah satu bentuk tersebut, tetapi untuk profil browser jarak jauh, opsi paling sederhana adalah URL WebSocket langsung dari dokumentasi koneksi Browserless. @@ -314,18 +315,18 @@ Catatan: - Ganti `` dengan token Browserless Anda yang sebenarnya. - Pilih endpoint region yang sesuai dengan akun Browserless Anda (lihat dokumentasi mereka). -- Jika Browserless memberi Anda base URL HTTPS, Anda dapat mengubahnya menjadi - `wss://` untuk koneksi CDP langsung atau mempertahankan URL HTTPS dan membiarkan OpenClaw +- Jika Browserless memberi Anda URL dasar HTTPS, Anda dapat mengubahnya menjadi + `wss://` untuk koneksi CDP langsung atau tetap menggunakan URL HTTPS dan membiarkan OpenClaw menemukan `/json/version`. ## Penyedia CDP WebSocket langsung Beberapa layanan browser terhosting mengekspos endpoint **WebSocket langsung** alih-alih -penemuan CDP berbasis HTTP standar (`/json/version`). OpenClaw mendukung keduanya: +discovery CDP berbasis HTTP standar (`/json/version`). OpenClaw mendukung keduanya: - **Endpoint HTTP(S)** — OpenClaw memanggil `/json/version` untuk menemukan URL debugger WebSocket, lalu terhubung. -- **Endpoint WebSocket** (`ws://` / `wss://`) — OpenClaw terhubung langsung, +- **Endpoint WebSocket** (`ws://` / `wss://`) — OpenClaw terhubung secara langsung, melewati `/json/version`. Gunakan ini untuk layanan seperti [Browserless](https://browserless.io), [Browserbase](https://www.browserbase.com), atau penyedia apa pun yang memberi Anda @@ -334,8 +335,8 @@ penemuan CDP berbasis HTTP standar (`/json/version`). OpenClaw mendukung keduany ### Browserbase [Browserbase](https://www.browserbase.com) adalah platform cloud untuk menjalankan -browser headless dengan pemecahan CAPTCHA bawaan, mode stealth, dan -proxy residensial. +browser headless dengan pemecahan CAPTCHA bawaan, mode stealth, dan proxy +residensial. ```json5 { @@ -356,13 +357,13 @@ proxy residensial. Catatan: -- [Daftar](https://www.browserbase.com/sign-up) dan salin **API Key** Anda - dari [dashboard Overview](https://www.browserbase.com/overview). +- [Daftar](https://www.browserbase.com/sign-up) dan salin **API Key** + Anda dari [dashboard Overview](https://www.browserbase.com/overview). - Ganti `` dengan API key Browserbase Anda yang sebenarnya. -- Browserbase membuat sesi browser secara otomatis saat koneksi WebSocket, jadi tidak +- Browserbase otomatis membuat sesi browser saat terhubung ke WebSocket, jadi tidak diperlukan langkah pembuatan sesi manual. -- Paket gratis mengizinkan satu sesi bersamaan dan satu jam browser per bulan. - Lihat [pricing](https://www.browserbase.com/pricing) untuk batas paket berbayar. +- Tingkat gratis memungkinkan satu sesi bersamaan dan satu jam browser per bulan. + Lihat [harga](https://www.browserbase.com/pricing) untuk batas paket berbayar. - Lihat [dokumentasi Browserbase](https://docs.browserbase.com) untuk referensi API lengkap, panduan SDK, dan contoh integrasi. @@ -370,46 +371,46 @@ Catatan: Ide utama: -- Kontrol browser hanya loopback; akses mengalir melalui auth Gateway atau pairing node. -- API HTTP browser loopback mandiri hanya menggunakan **auth shared-secret**: - auth bearer token gateway, `x-openclaw-password`, atau auth dasar HTTP dengan +- Kontrol browser hanya loopback; akses mengalir melalui autentikasi Gateway atau pairing node. +- API HTTP browser loopback mandiri hanya menggunakan **autentikasi shared-secret**: + autentikasi bearer token gateway, `x-openclaw-password`, atau HTTP Basic auth dengan kata sandi gateway yang dikonfigurasi. -- Header identitas Tailscale Serve dan `gateway.auth.mode: "trusted-proxy"` **tidak** - mengautentikasi API browser loopback mandiri ini. -- Jika kontrol browser diaktifkan dan tidak ada auth shared-secret yang dikonfigurasi, OpenClaw +- Header identitas Tailscale Serve dan `gateway.auth.mode: "trusted-proxy"` + **tidak** mengautentikasi API browser loopback mandiri ini. +- Jika kontrol browser diaktifkan dan tidak ada autentikasi shared-secret yang dikonfigurasi, OpenClaw otomatis membuat `gateway.auth.token` saat startup dan menyimpannya ke konfigurasi. -- OpenClaw **tidak** otomatis membuat token itu ketika `gateway.auth.mode` sudah +- OpenClaw **tidak** otomatis membuat token tersebut ketika `gateway.auth.mode` sudah `password`, `none`, atau `trusted-proxy`. -- Pertahankan Gateway dan host node apa pun di jaringan privat (Tailscale); hindari paparan publik. -- Perlakukan URL/token CDP jarak jauh sebagai secret; pilih env vars atau secret manager. +- Simpan Gateway dan host node apa pun di jaringan privat (Tailscale); hindari eksposur publik. +- Perlakukan URL/token CDP jarak jauh sebagai secret; gunakan environment variable atau pengelola secret. Tips CDP jarak jauh: -- Pilih endpoint terenkripsi (HTTPS atau WSS) dan token berumur pendek jika memungkinkan. -- Hindari menanam token berumur panjang langsung di file konfigurasi. +- Gunakan endpoint terenkripsi (HTTPS atau WSS) dan token berumur pendek jika memungkinkan. +- Hindari menyematkan token berumur panjang langsung di file konfigurasi. ## Profil (multi-browser) -OpenClaw mendukung beberapa profil bernama (konfigurasi perutean). Profil dapat berupa: +OpenClaw mendukung beberapa profil bernama (konfigurasi routing). Profil dapat berupa: -- **dikelola openclaw**: instance browser berbasis Chromium khusus dengan direktori data pengguna + port CDP sendiri +- **dikelola openclaw**: instance browser berbasis Chromium khusus dengan direktori data pengguna + port CDP-nya sendiri - **jarak jauh**: URL CDP eksplisit (browser berbasis Chromium yang berjalan di tempat lain) -- **sesi yang ada**: profil Chrome Anda yang ada melalui koneksi otomatis Chrome DevTools MCP +- **sesi yang sudah ada**: profil Chrome Anda yang sudah ada melalui koneksi otomatis Chrome DevTools MCP Default: -- Profil `openclaw` dibuat otomatis jika belum ada. -- Profil `user` sudah bawaan untuk attach existing-session Chrome MCP. +- Profil `openclaw` dibuat otomatis jika tidak ada. +- Profil `user` bawaan tersedia untuk attach existing-session Chrome MCP. - Profil existing-session bersifat opt-in di luar `user`; buat dengan `--driver existing-session`. - Port CDP lokal dialokasikan dari **18800–18899** secara default. -- Menghapus profil memindahkan direktori data lokalnya ke Trash. +- Menghapus profil akan memindahkan direktori data lokalnya ke Trash. Semua endpoint kontrol menerima `?profile=`; CLI menggunakan `--browser-profile`. ## Existing-session melalui Chrome DevTools MCP -OpenClaw juga dapat menempel ke profil browser berbasis Chromium yang sedang berjalan melalui -server resmi Chrome DevTools MCP. Ini menggunakan kembali tab dan status login +OpenClaw juga dapat attach ke profil browser berbasis Chromium yang sedang berjalan melalui +server MCP Chrome DevTools resmi. Ini menggunakan kembali tab dan status login yang sudah terbuka di profil browser tersebut. Latar belakang resmi dan referensi penyiapan: @@ -421,7 +422,7 @@ Profil bawaan: - `user` -Opsional: buat profil existing-session kustom Anda sendiri jika menginginkan +Opsional: buat profil existing-session kustom Anda sendiri jika Anda menginginkan nama, warna, atau direktori data browser yang berbeda. Perilaku default: @@ -446,11 +447,11 @@ Gunakan `userDataDir` untuk Brave, Edge, Chromium, atau profil Chrome non-defaul } ``` -Lalu di browser yang sesuai: +Lalu pada browser yang sesuai: -1. Buka halaman inspect browser tersebut untuk debugging jarak jauh. +1. Buka halaman inspect browser tersebut untuk remote debugging. 2. Aktifkan remote debugging. -3. Biarkan browser tetap berjalan dan setujui prompt koneksi saat OpenClaw menempel. +3. Biarkan browser tetap berjalan dan setujui prompt koneksi saat OpenClaw melakukan attach. Halaman inspect umum: @@ -458,7 +459,7 @@ Halaman inspect umum: - Brave: `brave://inspect/#remote-debugging` - Edge: `edge://inspect/#remote-debugging` -Smoke test attach langsung: +Uji smoke attach langsung: ```bash openclaw browser --browser-profile user start @@ -467,36 +468,36 @@ openclaw browser --browser-profile user tabs openclaw browser --browser-profile user snapshot --format ai ``` -Seperti apa keberhasilan itu: +Seperti apa hasil yang berhasil: - `status` menampilkan `driver: existing-session` - `status` menampilkan `transport: chrome-mcp` - `status` menampilkan `running: true` -- `tabs` mencantumkan tab browser Anda yang sudah terbuka -- `snapshot` mengembalikan ref dari tab aktif yang dipilih +- `tabs` menampilkan tab browser Anda yang sudah terbuka +- `snapshot` mengembalikan ref dari tab live yang dipilih Yang perlu diperiksa jika attach tidak berfungsi: -- browser berbasis Chromium target adalah versi `144+` -- remote debugging diaktifkan di halaman inspect browser tersebut -- browser menampilkan prompt consent attach dan Anda menerimanya -- `openclaw doctor` memigrasikan konfigurasi browser lama berbasis extension dan memeriksa bahwa - Chrome terinstal secara lokal untuk profil koneksi otomatis default, tetapi tidak dapat +- browser berbasis Chromium target memiliki versi `144+` +- remote debugging diaktifkan pada halaman inspect browser tersebut +- browser menampilkan prompt persetujuan attach dan Anda menerimanya +- `openclaw doctor` memigrasikan konfigurasi browser lama berbasis ekstensi dan memeriksa bahwa + Chrome terpasang secara lokal untuk profil default auto-connect, tetapi tidak dapat mengaktifkan remote debugging di sisi browser untuk Anda Penggunaan agen: -- Gunakan `profile="user"` ketika Anda memerlukan status browser pengguna yang sudah login. -- Jika Anda menggunakan profil existing-session kustom, berikan nama profil eksplisit tersebut. -- Pilih mode ini hanya ketika pengguna berada di komputer untuk menyetujui prompt +- Gunakan `profile="user"` saat Anda memerlukan status browser pengguna yang sudah login. +- Jika Anda menggunakan profil existing-session kustom, kirim nama profil eksplisit tersebut. +- Pilih mode ini hanya ketika pengguna berada di depan komputer untuk menyetujui prompt attach. -- Gateway atau host node dapat memunculkan `npx chrome-devtools-mcp@latest --autoConnect` +- Gateway atau host node dapat menjalankan `npx chrome-devtools-mcp@latest --autoConnect` Catatan: -- Jalur ini berisiko lebih tinggi daripada profil `openclaw` yang terisolasi karena dapat +- Jalur ini berisiko lebih tinggi dibanding profil `openclaw` yang terisolasi karena dapat bertindak di dalam sesi browser Anda yang sudah login. -- OpenClaw tidak meluncurkan browser untuk driver ini; OpenClaw hanya menempel ke +- OpenClaw tidak meluncurkan browser untuk driver ini; ia hanya attach ke sesi yang sudah ada. - OpenClaw menggunakan alur resmi Chrome DevTools MCP `--autoConnect` di sini. Jika `userDataDir` disetel, OpenClaw meneruskannya untuk menargetkan direktori data pengguna @@ -506,30 +507,30 @@ Catatan: - Screenshot halaman existing-session berfungsi tanpa Playwright melalui Chrome MCP. Screenshot elemen berbasis ref (`--ref`) juga berfungsi di sana, tetapi `--full-page` tidak dapat digabungkan dengan `--ref` atau `--element`. -- Tindakan existing-session masih lebih terbatas daripada - jalur browser terkelola: +- Aksi existing-session masih lebih terbatas dibanding jalur browser terkelola: - `click`, `type`, `hover`, `scrollIntoView`, `drag`, dan `select` memerlukan ref snapshot alih-alih selector CSS - - `click` hanya tombol kiri (tanpa override tombol atau modifier) + - `click` hanya mendukung tombol kiri (tanpa override tombol atau modifier) - `type` tidak mendukung `slowly=true`; gunakan `fill` atau `press` - `press` tidak mendukung `delayMs` - `hover`, `scrollIntoView`, `drag`, `select`, `fill`, dan `evaluate` tidak - mendukung override timeout per pemanggilan + mendukung override timeout per panggilan - `select` saat ini hanya mendukung satu nilai - Existing-session `wait --url` mendukung pola exact, substring, dan glob seperti driver browser lainnya. `wait --load networkidle` belum didukung. - Hook upload existing-session memerlukan `ref` atau `inputRef`, mendukung satu file - sekaligus, dan tidak mendukung penargetan CSS `element`. + per kali, dan tidak mendukung penargetan CSS `element`. - Hook dialog existing-session tidak mendukung override timeout. -- Beberapa fitur masih memerlukan jalur browser terkelola, termasuk tindakan batch, ekspor PDF, intersepsi unduhan, dan `responsebody`. -- Existing-session bersifat lokal ke host. Jika Chrome berada di mesin lain atau - namespace jaringan berbeda, gunakan CDP jarak jauh atau host node. +- Beberapa fitur masih memerlukan jalur browser terkelola, termasuk aksi + batch, ekspor PDF, intersepsi unduhan, dan `responsebody`. +- Existing-session bersifat host-local. Jika Chrome berada di mesin lain atau + namespace jaringan yang berbeda, gunakan CDP jarak jauh atau host node. ## Jaminan isolasi - **Direktori data pengguna khusus**: tidak pernah menyentuh profil browser pribadi Anda. - **Port khusus**: menghindari `9222` untuk mencegah benturan dengan alur kerja pengembangan. -- **Kontrol tab deterministik**: targetkan tab berdasarkan `targetId`, bukan “tab terakhir”. +- **Kontrol tab yang deterministik**: targetkan tab berdasarkan `targetId`, bukan “tab terakhir”. ## Pemilihan browser @@ -541,12 +542,12 @@ Saat meluncurkan secara lokal, OpenClaw memilih yang pertama tersedia: 4. Chromium 5. Chrome Canary -Anda dapat menimpa dengan `browser.executablePath`. +Anda dapat meng-override dengan `browser.executablePath`. Platform: - macOS: memeriksa `/Applications` dan `~/Applications`. -- Linux: mencari `google-chrome`, `brave`, `microsoft-edge`, `chromium`, dll. +- Linux: mencari `google-chrome`, `brave`, `microsoft-edge`, `chromium`, dan sebagainya. - Windows: memeriksa lokasi instalasi umum. ## API kontrol (opsional) @@ -556,29 +557,29 @@ Hanya untuk integrasi lokal, Gateway mengekspos API HTTP loopback kecil: - Status/start/stop: `GET /`, `POST /start`, `POST /stop` - Tab: `GET /tabs`, `POST /tabs/open`, `POST /tabs/focus`, `DELETE /tabs/:targetId` - Snapshot/screenshot: `GET /snapshot`, `POST /screenshot` -- Tindakan: `POST /navigate`, `POST /act` +- Aksi: `POST /navigate`, `POST /act` - Hook: `POST /hooks/file-chooser`, `POST /hooks/dialog` - Unduhan: `POST /download`, `POST /wait/download` - Debugging: `GET /console`, `POST /pdf` - Debugging: `GET /errors`, `GET /requests`, `POST /trace/start`, `POST /trace/stop`, `POST /highlight` - Jaringan: `POST /response/body` -- State: `GET /cookies`, `POST /cookies/set`, `POST /cookies/clear` -- State: `GET /storage/:kind`, `POST /storage/:kind/set`, `POST /storage/:kind/clear` +- Status: `GET /cookies`, `POST /cookies/set`, `POST /cookies/clear` +- Status: `GET /storage/:kind`, `POST /storage/:kind/set`, `POST /storage/:kind/clear` - Pengaturan: `POST /set/offline`, `POST /set/headers`, `POST /set/credentials`, `POST /set/geolocation`, `POST /set/media`, `POST /set/timezone`, `POST /set/locale`, `POST /set/device` Semua endpoint menerima `?profile=`. -Jika auth gateway shared-secret dikonfigurasi, rute HTTP browser juga memerlukan auth: +Jika autentikasi gateway shared-secret dikonfigurasi, rute HTTP browser juga memerlukan autentikasi: - `Authorization: Bearer ` -- `x-openclaw-password: ` atau auth dasar HTTP dengan kata sandi tersebut +- `x-openclaw-password: ` atau HTTP Basic auth dengan kata sandi tersebut Catatan: -- API browser loopback mandiri ini **tidak** menggunakan header identitas trusted-proxy atau - Tailscale Serve. +- API browser loopback mandiri ini **tidak** menggunakan trusted-proxy atau + header identitas Tailscale Serve. - Jika `gateway.auth.mode` adalah `none` atau `trusted-proxy`, rute browser loopback - ini tidak mewarisi mode pembawa identitas tersebut; pertahankan tetap loopback-only. + ini tidak mewarisi mode pembawa identitas tersebut; biarkan tetap hanya loopback. ### Kontrak error `/act` @@ -592,28 +593,28 @@ kegagalan kebijakan: Nilai `code` saat ini: - `ACT_KIND_REQUIRED` (HTTP 400): `kind` hilang atau tidak dikenali. -- `ACT_INVALID_REQUEST` (HTTP 400): payload tindakan gagal dinormalisasi atau divalidasi. -- `ACT_SELECTOR_UNSUPPORTED` (HTTP 400): `selector` digunakan dengan jenis tindakan yang tidak didukung. +- `ACT_INVALID_REQUEST` (HTTP 400): payload aksi gagal dinormalisasi atau divalidasi. +- `ACT_SELECTOR_UNSUPPORTED` (HTTP 400): `selector` digunakan dengan jenis aksi yang tidak didukung. - `ACT_EVALUATE_DISABLED` (HTTP 403): `evaluate` (atau `wait --fn`) dinonaktifkan oleh konfigurasi. - `ACT_TARGET_ID_MISMATCH` (HTTP 403): `targetId` tingkat atas atau batch bertentangan dengan target permintaan. -- `ACT_EXISTING_SESSION_UNSUPPORTED` (HTTP 501): tindakan tidak didukung untuk profil existing-session. +- `ACT_EXISTING_SESSION_UNSUPPORTED` (HTTP 501): aksi tidak didukung untuk profil existing-session. -Kegagalan runtime lainnya masih dapat mengembalikan `{ "error": "" }` tanpa field -`code`. +Kegagalan runtime lainnya mungkin masih mengembalikan `{ "error": "" }` tanpa +field `code`. ### Persyaratan Playwright Beberapa fitur (navigate/act/snapshot AI/snapshot role, screenshot elemen, -PDF) memerlukan Playwright. Jika Playwright tidak terinstal, endpoint tersebut mengembalikan +PDF) memerlukan Playwright. Jika Playwright belum terpasang, endpoint tersebut mengembalikan error 501 yang jelas. Yang masih berfungsi tanpa Playwright: - Snapshot ARIA -- Screenshot halaman untuk browser `openclaw` terkelola ketika WebSocket CDP - per-tab tersedia +- Screenshot halaman untuk browser `openclaw` terkelola ketika tersedia WebSocket + CDP per tab - Screenshot halaman untuk profil `existing-session` / Chrome MCP -- Screenshot berbasis ref existing-session (`--ref`) dari output snapshot +- Screenshot existing-session berbasis ref (`--ref`) dari output snapshot Yang masih memerlukan Playwright: @@ -627,10 +628,10 @@ Screenshot elemen juga menolak `--full-page`; rute mengembalikan `fullPage is not supported for element screenshots`. Jika Anda melihat `Playwright is not available in this gateway build`, instal paket -Playwright lengkap (bukan `playwright-core`) lalu restart gateway, atau instal ulang +Playwright penuh (bukan `playwright-core`) dan mulai ulang gateway, atau instal ulang OpenClaw dengan dukungan browser. -#### Instalasi Docker Playwright +#### Instalasi Playwright di Docker Jika Gateway Anda berjalan di Docker, hindari `npx playwright` (konflik override npm). Gunakan CLI bawaan sebagai gantinya: @@ -650,9 +651,9 @@ Alur tingkat tinggi: - Sebuah **server kontrol** kecil menerima permintaan HTTP. - Server ini terhubung ke browser berbasis Chromium (Chrome/Brave/Edge/Chromium) melalui **CDP**. -- Untuk tindakan lanjutan (klik/ketik/snapshot/PDF), server ini menggunakan **Playwright** di atas +- Untuk aksi lanjutan (klik/ketik/snapshot/PDF), server ini menggunakan **Playwright** di atas CDP. -- Saat Playwright tidak tersedia, hanya operasi non-Playwright yang tersedia. +- Saat Playwright tidak ada, hanya operasi non-Playwright yang tersedia. Desain ini menjaga agen tetap berada pada antarmuka yang stabil dan deterministik sambil memungkinkan Anda menukar browser dan profil lokal/jarak jauh. @@ -662,7 +663,7 @@ Anda menukar browser dan profil lokal/jarak jauh. Semua perintah menerima `--browser-profile ` untuk menargetkan profil tertentu. Semua perintah juga menerima `--json` untuk output yang dapat dibaca mesin (payload stabil). -Dasar: +Dasar-dasar: - `openclaw browser status` - `openclaw browser start` @@ -693,16 +694,16 @@ Inspeksi: Catatan siklus hidup: -- Untuk profil attach-only dan CDP jarak jauh, `openclaw browser stop` tetap menjadi +- Untuk profil attach-only dan CDP jarak jauh, `openclaw browser stop` tetap merupakan perintah pembersihan yang tepat setelah pengujian. Perintah ini menutup sesi kontrol aktif dan - membersihkan override emulasi sementara alih-alih mematikan browser - yang mendasarinya. + menghapus override emulasi sementara alih-alih mematikan browser + dasarnya. - `openclaw browser errors --clear` - `openclaw browser requests --filter api --clear` - `openclaw browser pdf` - `openclaw browser responsebody "**/api" --max-chars 5000` -Tindakan: +Aksi: - `openclaw browser navigate https://example.com` - `openclaw browser resize 1280 720` @@ -726,7 +727,7 @@ Tindakan: - `openclaw browser trace start` - `openclaw browser trace stop` -State: +Status: - `openclaw browser cookies` - `openclaw browser cookies set session abc123 --url "https://example.com"` @@ -747,25 +748,25 @@ State: Catatan: -- `upload` dan `dialog` adalah pemanggilan **arming**; jalankan sebelum klik/tekan +- `upload` dan `dialog` adalah panggilan **arming**; jalankan keduanya sebelum klik/press yang memicu chooser/dialog. -- Path output unduhan dan trace dibatasi ke root temp OpenClaw: +- Jalur output unduhan dan trace dibatasi ke root temp OpenClaw: - trace: `/tmp/openclaw` (fallback: `${os.tmpdir()}/openclaw`) - unduhan: `/tmp/openclaw/downloads` (fallback: `${os.tmpdir()}/openclaw/downloads`) -- Path upload dibatasi ke root upload temp OpenClaw: +- Jalur upload dibatasi ke root upload temp OpenClaw: - upload: `/tmp/openclaw/uploads` (fallback: `${os.tmpdir()}/openclaw/uploads`) - `upload` juga dapat menyetel input file secara langsung melalui `--input-ref` atau `--element`. - `snapshot`: - - `--format ai` (default saat Playwright terinstal): mengembalikan snapshot AI dengan ref numerik (`aria-ref=""`). - - `--format aria`: mengembalikan tree aksesibilitas (tanpa ref; hanya untuk inspeksi). - - `--efficient` (atau `--mode efficient`): preset snapshot peran ringkas (interaktif + ringkas + kedalaman + maxChars lebih rendah). - - Default konfigurasi (hanya tool/CLI): setel `browser.snapshotDefaults.mode: "efficient"` untuk menggunakan snapshot efisien saat pemanggil tidak memberikan mode (lihat [Gateway configuration](/id/gateway/configuration-reference#browser)). - - Opsi snapshot peran (`--interactive`, `--compact`, `--depth`, `--selector`) memaksa snapshot berbasis peran dengan ref seperti `ref=e12`. - - `--frame "