OpenClawで自分専用AIアシスタントを構築:5分で接続設定
OpenClawで自分専用のAIアシスタントを構築する
Section titled “OpenClawで自分専用のAIアシスタントを構築する”日々の開発業務やタスク管理に追われていると、「自分専用の秘書がいてくれたら」と思うことはありませんか?特に、使い慣れたメッセージアプリから自分のPCやワークスペースを操作できれば、作業効率は劇的に上がります。
OpenClawは、WhatsApp、Telegram、Discord、iMessageなどをAIエージェントに接続するセルフホスト型のGatewayです。このガイドでは、専用のWhatsApp番号を「常に待機しているAIアシスタント」として動作させるセットアップ方法を解説します。
⚠️ 安全第一
Section titled “⚠️ 安全第一”エージェントを導入するということは、以下の権限をエージェントに与えることを意味します。
- マシン上でのコマンド実行(ツールポリシーに依存)
- ワークスペース内のファイルの読み書き
- 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に連携させてしまうと、自分宛のすべてのメッセージが「エージェントへの入力」として処理されてしまいます。これは望ましい動作ではないはずです。
5分で終わるクイックスタート
Section titled “5分で終わるクイックスタート”- WhatsApp Webをペアリングします(表示されるQRコードをアシスタント用のスマホでスキャンしてください)。
openclaw channels login- Gatewayを起動します(実行したままにしてください)。
openclaw gateway --port 18789~/.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がインストールされていれば、新しいワークスペースは自動的に初期化されます。
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, }, },}セッションとメモリ
Section titled “セッションとメモリ”- セッションファイル:
~/.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" }, },}メディアの入出力
Section titled “メディアの入出力”受信した添付ファイル(画像、音声、ドキュメント)は、テンプレートを使用してコマンドに渡すことができます。
{{MediaPath}}(ローカルの一時ファイルパス){{MediaUrl}}(擬似URL){{Transcript}}(音声の文字起こしが有効な場合)
エージェントからメディアを送信する場合は、独立した行に MEDIA:<path-or-url> を記述します(スペースは含めないでください)。
例:
Here’s the screenshot.MEDIA:https://example.com/screenshot.pngOpenClawはこれらを抽出し、テキストと共にメディアとして送信します。
ローカルパスの動作は、エージェントのファイル読み取り信頼モデルに従います。
tools.fs.workspaceOnlyがtrueの場合、送信されるMEDIA:のローカルパスは、OpenClawの一時ルート、メディアキャッシュ、ワークスペースパス、およびサンドボックスで生成されたファイルに制限されます。tools.fs.workspaceOnlyがfalseの場合、エージェントが読み取りを許可されているホスト上のローカルファイルを使用できます。- ローカルファイルの送信は、安全なドキュメントタイプ(画像、音声、動画、PDF、Officeドキュメント)に限定されます。プレーンテキストや機密情報を含む可能性のあるファイルは、メディアとして送信されません。
これにより、ファイルシステムポリシーで許可されている範囲内であれば、ワークスペース外で生成された画像なども安全に送信できるようになります。
運用チェックリスト
Section titled “運用チェックリスト”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)。
次のステップ
Section titled “次のステップ”- WebChat: WebChat
- Gateway運用: Gateway runbook
- Cronとウェイクアップ: Cron jobs
- macOSメニューバーアプリ: OpenClaw macOS app
- iOS Nodeアプリ: iOS app
- Android Nodeアプリ: Android app
- Windowsステータス: Windows (WSL2)
- Linuxステータス: Linux app
- セキュリティ: Security
OpenClaw Expert
まだ解決しませんか?
このページで解決しない場合は、OpenClaw Expertに直接質問してください。