Guides

Penyiapan asisten pribadi

OpenClaw adalah Gateway self-hosted yang menghubungkan Discord, Google Chat, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo, dan lainnya ke agen AI. Panduan ini mencakup penyiapan "asisten pribadi": nomor WhatsApp khusus yang berperilaku seperti asisten AI Anda yang selalu aktif.

⚠️ Utamakan keselamatan

Anda menempatkan agen pada posisi untuk:

  • menjalankan perintah di mesin Anda (bergantung pada kebijakan tool Anda)
  • membaca/menulis file di workspace Anda
  • mengirim pesan keluar melalui WhatsApp/Telegram/Discord/Mattermost dan channel bawaan lainnya

Mulai secara konservatif:

  • Selalu tetapkan channels.whatsapp.allowFrom (jangan pernah menjalankannya terbuka untuk seluruh dunia di Mac pribadi Anda).
  • Gunakan nomor WhatsApp khusus untuk asisten.
  • Heartbeat sekarang default setiap 30 menit. Nonaktifkan sampai Anda memercayai penyiapan dengan menetapkan agents.defaults.heartbeat.every: "0m".

Prasyarat

  • OpenClaw sudah diinstal dan di-onboard - lihat Memulai jika Anda belum melakukannya
  • Nomor telepon kedua (SIM/eSIM/prabayar) untuk asisten

Penyiapan dua ponsel (direkomendasikan)

Yang Anda inginkan adalah ini:

flowchart TB
    A["<b>Your Phone (personal)
</b>
Your WhatsApp
+1-555-YOU"] -- message --> B["<b>Second Phone (assistant)
</b>
Assistant WA
+1-555-ASSIST"]
    B -- linked via QR --> C["<b>Your Mac (openclaw)
</b>
AI agent"]

Jika Anda menautkan WhatsApp pribadi Anda ke OpenClaw, setiap pesan untuk Anda menjadi "input agen". Itu jarang sesuai dengan yang Anda inginkan.

Mulai cepat 5 menit

  1. Pasangkan WhatsApp Web (menampilkan QR; pindai dengan ponsel asisten):
openclaw channels login
  1. Mulai Gateway (biarkan tetap berjalan):
openclaw gateway --port 18789
  1. Taruh konfigurasi minimal di ~/.openclaw/openclaw.json:
{
  gateway: { mode: "local" },
  channels: { whatsapp: { allowFrom: ["+15555550123"] } },
}

Sekarang kirim pesan ke nomor asisten dari ponsel yang ada di allowlist Anda.

Saat onboarding selesai, OpenClaw otomatis membuka dasbor dan mencetak tautan bersih (tanpa token). Jika dasbor meminta autentikasi, tempel shared secret yang dikonfigurasi ke pengaturan Control UI. Onboarding menggunakan token secara default (gateway.auth.token), tetapi autentikasi kata sandi juga berfungsi jika Anda mengubah gateway.auth.mode ke password. Untuk membuka kembali nanti: openclaw dashboard.

Berikan agen sebuah workspace (AGENTS)

OpenClaw membaca instruksi operasi dan "memori" dari direktori workspace-nya.

Secara default, OpenClaw menggunakan ~/.openclaw/workspace sebagai workspace agen, dan akan membuatnya (ditambah starter AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md) secara otomatis saat penyiapan/agen pertama kali dijalankan. BOOTSTRAP.md hanya dibuat saat workspace benar-benar baru (file ini tidak seharusnya muncul kembali setelah Anda menghapusnya). MEMORY.md bersifat opsional (tidak dibuat otomatis); saat ada, file ini dimuat untuk sesi normal. Sesi subagen hanya menyuntikkan AGENTS.md dan TOOLS.md.

openclaw setup

Tata letak workspace lengkap + panduan pencadangan: Workspace agen Alur kerja memori: Memori

Opsional: pilih workspace lain dengan agents.defaults.workspace (mendukung ~).

{
  agents: {
    defaults: {
      workspace: "~/.openclaw/workspace",
    },
  },
}

Jika Anda sudah mengirimkan file workspace sendiri dari repo, Anda dapat menonaktifkan pembuatan file bootstrap sepenuhnya:

{
  agents: {
    defaults: {
      skipBootstrap: true,
    },
  },
}

Konfigurasi yang mengubahnya menjadi "asisten"

OpenClaw default ke penyiapan asisten yang baik, tetapi biasanya Anda ingin menyesuaikan:

  • persona/instruksi di SOUL.md
  • default berpikir (jika diinginkan)
  • Heartbeat (setelah Anda memercayainya)

Contoh:

{
  logging: { level: "info" },
  agent: {
    model: "anthropic/claude-opus-4-6",
    workspace: "~/.openclaw/workspace",
    thinkingDefault: "high",
    timeoutSeconds: 1800,
    // Start with 0; enable later.
    heartbeat: { every: "0m" },
  },
  channels: {
    whatsapp: {
      allowFrom: ["+15555550123"],
      groups: {
        "*": { requireMention: true },
      },
    },
  },
  routing: {
    groupChat: {
      mentionPatterns: ["@openclaw", "openclaw"],
    },
  },
  session: {
    scope: "per-sender",
    resetTriggers: ["/new", "/reset"],
    reset: {
      mode: "daily",
      atHour: 4,
      idleMinutes: 10080,
    },
  },
}

Sesi dan memori

  • File sesi: ~/.openclaw/agents/<agentId>/sessions/{{SessionId}}.jsonl
  • Metadata sesi (penggunaan token, rute terakhir, dll): ~/.openclaw/agents/<agentId>/sessions/sessions.json (legacy: ~/.openclaw/sessions/sessions.json)
  • /new atau /reset memulai sesi baru untuk chat tersebut (dapat dikonfigurasi melalui resetTriggers). Jika dikirim sendirian, OpenClaw mengakui reset tanpa memanggil model.
  • /compact [instructions] memadatkan konteks sesi dan melaporkan sisa anggaran konteks.

Heartbeat (mode proaktif)

Secara default, OpenClaw menjalankan Heartbeat setiap 30 menit dengan prompt: Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK. Tetapkan agents.defaults.heartbeat.every: "0m" untuk menonaktifkan.

  • Jika HEARTBEAT.md ada tetapi secara efektif kosong (hanya baris kosong dan header markdown seperti # Heading), OpenClaw melewati proses Heartbeat untuk menghemat panggilan API.
  • Jika file hilang, Heartbeat tetap berjalan dan model memutuskan apa yang harus dilakukan.
  • Jika agen membalas dengan HEARTBEAT_OK (opsional dengan padding pendek; lihat agents.defaults.heartbeat.ackMaxChars), OpenClaw menekan pengiriman keluar untuk Heartbeat tersebut.
  • Secara default, pengiriman Heartbeat ke target bergaya DM user:<id> diizinkan. Tetapkan agents.defaults.heartbeat.directPolicy: "block" untuk menekan pengiriman target langsung sambil tetap mempertahankan proses Heartbeat aktif.
  • Heartbeat menjalankan giliran agen penuh - interval yang lebih pendek menghabiskan lebih banyak token.
{
  agent: {
    heartbeat: { every: "30m" },
  },
}

Media masuk dan keluar

Lampiran masuk (gambar/audio/dokumen) dapat ditampilkan ke perintah Anda melalui template:

  • {{MediaPath}} (path file sementara lokal)
  • {{MediaUrl}} (pseudo-URL)
  • {{Transcript}} (jika transkripsi audio diaktifkan)

Lampiran keluar dari agen: sertakan MEDIA:<path-or-url> pada baris tersendiri (tanpa spasi). Contoh:

Here's the screenshot.
MEDIA:https://example.com/screenshot.png

OpenClaw mengekstraknya dan mengirimkannya sebagai media bersama teks.

Perilaku path lokal mengikuti model kepercayaan baca-file yang sama seperti agen:

  • Jika tools.fs.workspaceOnly bernilai true, path lokal MEDIA: keluar tetap dibatasi ke root temp OpenClaw, cache media, path workspace agen, dan file yang dihasilkan sandbox.
  • Jika tools.fs.workspaceOnly bernilai false, MEDIA: keluar dapat menggunakan file host-lokal yang sudah diizinkan untuk dibaca oleh agen.
  • Path lokal dapat berupa absolut, relatif terhadap workspace, atau relatif terhadap home dengan ~/.
  • Pengiriman host-lokal tetap hanya mengizinkan media dan jenis dokumen aman (gambar, audio, video, PDF, dan dokumen Office). Teks polos dan file mirip rahasia tidak diperlakukan sebagai media yang dapat dikirim.

Artinya gambar/file yang dihasilkan di luar workspace sekarang dapat dikirim saat kebijakan fs Anda sudah mengizinkan pembacaan tersebut, tanpa membuka kembali eksfiltrasi lampiran teks host arbitrer.

Checklist operasi

openclaw status          # local status (creds, sessions, queued events)
openclaw status --all    # full diagnosis (read-only, pasteable)
openclaw status --deep   # asks the gateway for a live health probe with channel probes when supported
openclaw health --json   # gateway health snapshot (WS; default can return a fresh cached snapshot)

Log berada di bawah /tmp/openclaw/ (default: openclaw-YYYY-MM-DD.log).

Langkah berikutnya

Terkait