コンテンツにスキップ

OpenClawで自分専用AIアシスタントを構築:5分で接続設定

OpenClawで自分専用のAIアシスタントを構築する

Section titled “OpenClawで自分専用のAIアシスタントを構築する”

日々の開発業務やタスク管理に追われていると、「自分専用の秘書がいてくれたら」と思うことはありませんか?特に、使い慣れたメッセージアプリから自分のPCやワークスペースを操作できれば、作業効率は劇的に上がります。

OpenClawは、WhatsApp、Telegram、Discord、iMessageなどをAIエージェントに接続するセルフホスト型のGatewayです。このガイドでは、専用のWhatsApp番号を「常に待機しているAIアシスタント」として動作させるセットアップ方法を解説します。

エージェントを導入するということは、以下の権限をエージェントに与えることを意味します。

  • マシン上でのコマンド実行(ツールポリシーに依存)
  • ワークスペース内のファイルの読み書き
  • WhatsApp、Telegram、Discord、Mattermost(プラグイン)経由でのメッセージ送信

まずは慎重に設定を始めましょう。

  • 必ず channels.whatsapp.allowFrom を設定してください(個人のMacを全世界に公開した状態で実行してはいけません)。
  • アシスタントには専用のWhatsApp番号を使用してください。
  • Heartbeatsのデフォルトは30分間隔になっています。セットアップを信頼できるまでは、agents.defaults.heartbeat.every: "0m" に設定して無効化しておきましょう。
  • OpenClawのインストールとオンボーディングが完了していること。未完了の場合は Getting Started を確認してください。
  • アシスタント用の2つ目の電話番号(SIM、eSIM、またはプリペイド)

2台のスマホを使ったセットアップ(推奨)

Section titled “2台のスマホを使ったセットアップ(推奨)”

理想的な構成は以下の通りです。

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

個人のWhatsAppを直接OpenClawに連携させてしまうと、自分宛のすべてのメッセージが「エージェントへの入力」として処理されてしまいます。これは望ましい動作ではないはずです。

  1. WhatsApp Webをペアリングします(表示されるQRコードをアシスタント用のスマホでスキャンしてください)。
Terminal window
openclaw channels login
  1. Gatewayを起動します(実行したままにしてください)。
Terminal window
openclaw gateway --port 18789
  1. ~/.openclaw/openclaw.json に最小限の設定を記述します。
{
channels: { whatsapp: { allowFrom: ["+15555550123"] } },
}

これで、許可リスト(allowlist)に登録した電話番号からアシスタントの番号へメッセージを送信できるようになります。

オンボーディングが完了すると、ダッシュボードが自動的に開き、クリーンな(トークン化されていない)リンクが表示されます。認証を求められた場合は、gateway.auth.token のトークンをControl UIの設定に貼り付けてください。後で再度開く場合は openclaw dashboard を実行します。

エージェントにワークスペース(AGENTS)を割り当てる

Section titled “エージェントにワークスペース(AGENTS)を割り当てる”

OpenClawは、ワークスペースディレクトリから動作指示や「メモリ」を読み取ります。

デフォルトでは ~/.openclaw/workspace がワークスペースとして使用され、セットアップ時や最初のエージェント実行時に自動作成されます(AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md などのスターターファイルも含まれます)。BOOTSTRAP.md はワークスペースが新規の場合のみ作成されます。MEMORY.md はオプションで、存在する場合のみ通常のセッションで読み込まれます。サブエージェントのセッションでは AGENTS.md と TOOLS.md のみが注入されます。

ヒント:このフォルダをOpenClawの「記憶」として扱い、Gitリポジトリ(プライベート推奨)にすることをお勧めします。これにより、AGENTS.md やメモリファイルがバックアップされます。Gitがインストールされていれば、新しいワークスペースは自動的に初期化されます。

Terminal window
openclaw setup

ワークスペースの詳細なレイアウトとバックアップについては Agent workspace を、メモリのワークフローについては Memory を参照してください。

オプションとして、agents.defaults.workspace で別のディレクトリを選択することも可能です(~ をサポートしています)。

{
agent: {
workspace: "~/.openclaw/workspace",
},
}

すでに自分のリポジトリからワークスペースファイルを展開している場合は、ブートストラップファイルの作成を完全に無効にできます。

{
agent: {
skipBootstrap: true,
},
}

「アシスタント」に変えるための設定

Section titled “「アシスタント」に変えるための設定”

OpenClawのデフォルト設定はアシスタントとして優秀ですが、通常は以下の調整が必要になるでしょう。

  • SOUL.md でのペルソナや指示のカスタマイズ
  • 思考プロセスのデフォルト設定
  • Heartbeatsの設定(信頼性が確認できた後)

設定例:

{
logging: { level: "info" },
agent: {
model: "anthropic/claude-opus-4-6",
workspace: "~/.openclaw/workspace",
thinkingDefault: "high",
timeoutSeconds: 1800,
// 最初は 0 に設定し、後で有効化します
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,
},
},
}
  • セッションファイル:~/.openclaw/agents/<agentId>/sessions/{{SessionId}}.jsonl
  • セッションメタデータ(トークン使用量、最終ルートなど):~/.openclaw/agents/<agentId>/sessions/sessions.json
  • /new または /reset を送信すると、そのチャットの新しいセッションが開始されます(resetTriggers で変更可能)。単体で送信した場合、エージェントはリセットを確認するための短い挨拶を返します。
  • /compact [instructions] を実行すると、セッションのコンテキストが圧縮され、残りのコンテキスト予算が報告されます。

Heartbeats(プロアクティブモード)

Section titled “Heartbeats(プロアクティブモード)”

デフォルトでは、OpenClawは30分ごとに以下のプロンプトでHeartbeatを実行します。 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. 無効にするには agents.defaults.heartbeat.every: "0m" を設定してください。

  • HEARTBEAT.md が存在しても、実質的に空(空行やヘッダーのみ)の場合、OpenClawはAPIコールを節約するためにHeartbeatをスキップします。
  • ファイルが存在しない場合でもHeartbeatは実行され、モデルが動作を決定します。
  • エージェントが HEARTBEAT_OK と返答した場合、OpenClawはその回の外部へのメッセージ送信を抑制します。
  • デフォルトでは、DM形式の user:<id> ターゲットへのHeartbeat送信は許可されています。agents.defaults.heartbeat.directPolicy: "block" を設定することで、Heartbeatの実行自体は維持したまま、直接の送信だけを止めることができます。
  • Heartbeatはエージェントのフルターンを実行するため、間隔を短くするとトークン消費量が増える点に注意してください。
{
agent: {
heartbeat: { every: "30m" },
},
}

受信した添付ファイル(画像、音声、ドキュメント)は、テンプレートを使用してコマンドに渡すことができます。

  • {{MediaPath}}(ローカルの一時ファイルパス)
  • {{MediaUrl}}(擬似URL)
  • {{Transcript}}(音声の文字起こしが有効な場合)

エージェントからメディアを送信する場合は、独立した行に MEDIA:<path-or-url> を記述します(スペースは含めないでください)。

例:

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

OpenClawはこれらを抽出し、テキストと共にメディアとして送信します。

ローカルパスの動作は、エージェントのファイル読み取り信頼モデルに従います。

  • tools.fs.workspaceOnly が true の場合、送信される MEDIA: のローカルパスは、OpenClawの一時ルート、メディアキャッシュ、ワークスペースパス、およびサンドボックスで生成されたファイルに制限されます。
  • tools.fs.workspaceOnly が false の場合、エージェントが読み取りを許可されているホスト上のローカルファイルを使用できます。
  • ローカルファイルの送信は、安全なドキュメントタイプ(画像、音声、動画、PDF、Officeドキュメント)に限定されます。プレーンテキストや機密情報を含む可能性のあるファイルは、メディアとして送信されません。

これにより、ファイルシステムポリシーで許可されている範囲内であれば、ワークスペース外で生成された画像なども安全に送信できるようになります。

Terminal window
openclaw status # local status (creds, sessions, queued events)
openclaw status --all # full diagnosis (read-only, pasteable)
openclaw status --deep # adds gateway health probes (Telegram + Discord)
openclaw health --json # gateway health snapshot (WS)

ログは /tmp/openclaw/ に保存されます(デフォルト:openclaw-YYYY-MM-DD.log)。

AI Setup Assistant

OpenClaw

OpenClaw Expert

まだ解決しませんか?

このページで解決しない場合は、OpenClaw Expertに直接質問してください。