OpenClawでパーソナルアシスタントを構築する
OpenClaw は、Pi エージェント用の WhatsApp + Telegram + Discord + iMessage ゲートウェイです。プラグインで Mattermost にも対応します。このガイドでは「パーソナルアシスタント」としてのセットアップ方法を解説します。専用の WhatsApp 番号を用意し、常時稼働するエージェントとして動かす構成です。
⚠️ まずは安全に
エージェントに以下の操作を許可する立場に置くことになります。
- マシン上でコマンドを実行(Pi のツール設定による)
- ワークスペース内のファイルを読み書き
- WhatsApp/Telegram/Discord/Mattermost(プラグイン)経由でメッセージを送信
まずは控えめな設定から始めましょう。
- 必ず
channels.whatsapp.allowFromを設定してください(個人の Mac で全世界にオープンな状態で実行しないでください)。 - アシスタント専用の WhatsApp 番号を使用してください。
- ハートビートのデフォルトは30分間隔です。信頼できる設定になるまでは
agents.defaults.heartbeat.every: "0m"で無効化してください。
前提条件
- OpenClaw がインストール・オンボーディング済みであること — まだの場合ははじめにを参照
- アシスタント用のもう1つの電話番号(SIM/eSIM/プリペイド)
ツーフォンセットアップ(推奨)
目指す構成は以下の通りです。
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>Pi agent"]
個人の WhatsApp を OpenClaw にリンクすると、あなたへのすべてのメッセージが「エージェントへの入力」になります。これはほとんどの場合、望ましくない結果になります。
5分クイックスタート
- WhatsApp Web をペアリング(QRが表示されるので、アシスタント用の電話でスキャン):
openclaw channels login
- Gateway を起動(起動したままにしてください):
openclaw gateway --port 18789
~/.openclaw/openclaw.jsonに最小限の設定を記述:
{
channels: { whatsapp: { allowFrom: ["+15555550123"] } },
}
許可リストに登録された電話からアシスタント番号にメッセージを送ってください。
オンボーディング完了後、ダッシュボードが自動的に開き、トークン化されていないクリーンなリンクが表示されます。認証を求められた場合は、gateway.auth.token のトークンをコントロールUI の設定に貼り付けてください。再度開くには openclaw dashboard を実行します。
エージェントにワークスペースを与える(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
ワークスペースの詳しいレイアウトとバックアップガイド:エージェントワークスペース メモリのワークフロー:メモリ
オプション:agents.defaults.workspace で別のワークスペースを指定できます(~ をサポート)。
{
agent: {
workspace: "~/.openclaw/workspace",
},
}
独自のワークスペースファイルをリポジトリから管理している場合は、ブートストラップファイルの作成を完全に無効化できます。
{
agent: {
skipBootstrap: true,
},
}
「アシスタント」にする設定
OpenClaw はデフォルトで良好なアシスタント設定になっていますが、通常は以下をカスタマイズします。
SOUL.mdのペルソナ/指示- thinking のデフォルト設定(必要に応じて)
- ハートビート(信頼できるようになったら)
設定例:
{
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(レガシー:~/.openclaw/sessions/sessions.json) /newまたは/resetでそのチャットの新しいセッションを開始(resetTriggersで設定可能)。単独で送信すると、リセット確認の短い挨拶が返ります。/compact [instructions]でセッションコンテキストをコンパクトにし、残りのコンテキスト容量を報告します。
ハートビート(プロアクティブモード)
デフォルトでは、OpenClaw は30分ごとにハートビートを実行し、以下のプロンプトで動作します。
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が存在するが実質的に空の場合(空行やマークダウンの見出し# Headingのみ)、API呼び出しを節約するためハートビート実行をスキップします。- ファイルが存在しない場合でもハートビートは実行され、モデルが判断します。
- エージェントが
HEARTBEAT_OKと返答した場合(短いパディングの付加は許容、agents.defaults.heartbeat.ackMaxCharsを参照)、そのハートビートのアウトバウンド配信は抑制されます。 - デフォルトでは、DM形式の
user:<id>ターゲットへのハートビート配信は許可されています。agents.defaults.heartbeat.directPolicy: "block"を設定すると、ハートビート実行は維持しつつダイレクトターゲットへの配信を抑制できます。 - ハートビートは完全なエージェントターンを実行します。間隔が短いほどトークンの消費が増えます。
{
agent: {
heartbeat: { every: "30m" },
},
}
メディアの送受信
インバウンドの添付ファイル(画像/音声/ドキュメント)は、テンプレートを通じてコマンドに渡せます。
{{MediaPath}}(ローカルの一時ファイルパス){{MediaUrl}}(擬似URL){{Transcript}}(音声文字起こしが有効な場合)
エージェントからのアウトバウンド添付ファイル:独立した行に MEDIA:<path-or-url> を記述します(スペースなし)。例:
Here's the screenshot.
MEDIA:https://example.com/screenshot.png
OpenClaw はこれらを抽出し、テキストと一緒にメディアとして送信します。
運用チェックリスト
openclaw status # ローカル状態(認証情報、セッション、キューイベント)
openclaw status --all # 完全診断(読み取り専用、そのままペースト可能)
openclaw status --deep # Gatewayヘルスプローブ追加(Telegram + Discord)
openclaw health --json # Gatewayヘルススナップショット(WS)
ログは /tmp/openclaw/ 配下に保存されます(デフォルト:openclaw-YYYY-MM-DD.log)。
次のステップ
- WebChat:WebChat
- Gateway運用:Gatewayランブック
- Cronとウェイクアップ:Cronジョブ
- macOSメニューバーコンパニオン:OpenClaw macOSアプリ
- iOSノードアプリ:iOSアプリ
- Androidノードアプリ:Androidアプリ
- Windowsの状況:Windows(WSL2)
- Linuxの状況:Linuxアプリ
- セキュリティ:セキュリティ