パーソナルアシスタント設定
OpenClaw を個人アシスタントとして運用するためのエンドツーエンドガイド(セキュリティ考慮を含む)。
OpenClaw は **Pi** エージェント向けの WhatsApp + Telegram + Discord + iMessage ゲートウェイです。プラグイン経由で Mattermost にも対応します。このガイドは「パーソナルアシスタント」構成向けで、専用の WhatsApp 番号を常時稼働のエージェントとして運用します。
⚠️ セキュリティ最優先
この構成ではエージェントに次の権限が与えられます: - (Pi ツール設定次第で)あなたのマシン上でコマンド実行 - ワークスペース内ファイルの読み書き - WhatsApp/Telegram/Discord/Mattermost(プラグイン)経由でのメッセージ送信 まずは保守的な設定から始めることを推奨します:
- 必ず `channels.whatsapp.allowFrom` を設定する(個人マシンで「誰でも話せる」アシスタントを運用しない)。
- アシスタント用に別の WhatsApp 番号を用意する。
- Heartbeat の既定は 30 分ごと。構成を信頼できるまでは無効化推奨:`agents.defaults.heartbeat.every: "0m"`。
Prerequisites
- Node **22+** - OpenClaw available in your system PATH (recommended: global install) - A second phone number (SIM/eSIM/prepaid all work) for the assistant number
npm install -g openclaw@latest
ソースから実行(開発モード):
git clone https://github.com/openclaw/openclaw.git cd openclaw pnpm install pnpm ui:build # installs UI dependencies on first run pnpm build pnpm link --global
Dual Phone Strategy (Recommended)
次の構成が理想です:
Your Phone (Personal) Assistant Phone (Secondary)
┌─────────────────┐ ┌─────────────────┐
│ Your WhatsApp │ ──────▶ │ Assistant WhatsApp│
│ +1-555-YOU │ message │ +1-555-ASSIST │
└─────────────────┘ └────────┬────────┘
│ Link via QR code
▼
┌─────────────────┐
│ Your Mac │
│ (openclaw) │
│ Pi agent │
└─────────────────┘個人の WhatsApp アカウントを OpenClaw にリンクすると、あなた宛ての全メッセージが「エージェント入力」になります。通常は望ましくありません。
5 分クイックスタート
1. WhatsApp Web をペアリング(QR が表示されるのでアシスタント端末でスキャン):
openclaw channels login
2. Gateway を起動(常駐させる):
openclaw gateway --port 18789
3. 最小構成の設定を `~/.openclaw/openclaw.json` に書く:
'{'
channels: '{' whatsapp: '{' allowFrom: ["+15555550123"] '}' '}',
'}'これで allowlist に入れた端末から、アシスタント番号へメッセージを送れます。
オンボーディングが完了すると、トークン付きのダッシュボード URL が自動で開かれ、トークン付き URL も出力されます。後から開く場合:`openclaw dashboard`。
エージェントにワークスペースを与える(AGENTS)
OpenClaw はワークスペースディレクトリから、運用手順と「記憶」を読み込みます。
既定では `~/.openclaw/workspace` をエージェントのワークスペースとして使い、セットアップ/初回起動時に自動作成します(初期ファイル `AGENTS.md`、`SOUL.md`、`TOOLS.md`、`IDENTITY.md`、`USER.md` を含む)。`BOOTSTRAP.md` はワークスペースが新規の場合にのみ作られ(削除後に再生成されるべきではありません)。
推奨:このフォルダを OpenClaw の「記憶」として扱い、`AGENTS.md` とメモリファイルを Git(できればプライベート)でバックアップしてください。git がインストールされていれば、新規ワークスペースは自動でリポジトリ初期化されます。
openclaw setup
ワークスペース構造とバックアップ:Agent workspace
メモリ運用:Memory
任意:`agents.defaults.workspace` で別パスに変更できます(`~` 対応):
{
agent: {
workspace: "~/.openclaw/workspace",
},
}すでにワークスペースファイルをリポジトリ等で配布している場合、ブートストラップファイル生成を完全に無効化できます:
{
agent: {
skipBootstrap: true,
},
}「アシスタントらしさ」を出す設定
OpenClaw には妥当な既定値がありますが、通常は次を調整したくなります:
- `SOUL.md` の人格/指示
- thinking の既定値(必要なら)
- Heartbeat(信頼できてから有効化)
Example:
{
logging: { level: "info" },
agent: {
model: "anthropic/claude-opus-4-5",
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,
},
},
}セッションとメモリ
- Session files: `<code1>~/.openclaw/agents/<agentId>/sessions/{'{SessionId}'}.jsonl</code1>`
- Session metadata (token usage, last route, etc.): `<code1>~/.openclaw/agents/<agentId>/sessions/sessions.json</code1>` (old path: `<code2>~/.openclaw/sessions/sessions.json</code2>` )
- `/new` or `/reset` starts a new session for that chat (configured via `resetTriggers`). If sent as a standalone command, the Agent replies with a short confirmation message.
- `/compact [instructions]` compacts session context and reports remaining context budget.
Heartbeat(プロアクティブモード)
既定では、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 を無効化できます。
- `HEARTBEAT.md` が存在しても実質空(空行だけ、または `# Heading` のような見出しだけ)の場合、API コール節約のため heartbeat をスキップします。
- ファイルが無い場合でも heartbeat は実行され、モデルが「何をするべきか」を判断します。
- エージェントが `HEARTBEAT_OK` を返した場合(軽微な文字列の追加は許容。`agents.defaults.heartbeat.ackMaxChars` 参照)、その heartbeat は外部送信されません。
- Heartbeat はエージェントの 1 ターンそのものなので、間隔を短くするとトークン消費が増えます。
{
agent: {
heartbeat: { every: "30m" },
},
}入出力メディア
受信した添付(画像/音声/ドキュメント)は、テンプレートパラメータとしてコマンドに渡されます:
- `<code1>'{'{MediaPath}'}'</code1>` (local temp file path)
- `<code2>'{'{MediaUrl}'}'</code2>` (pseudo-URL)
- `<code3>'{'{Transcript}'}'</code3>` (if audio transcription is enabled)
エージェントから添付を送る場合:別行に `<code1>MEDIA:<path-or-url>'</code1>`(スペースなし)を書きます。例:
Here is the screenshot. MEDIA:https://example.com/screenshot.png
OpenClaw はこれらの行を解析し、テキストと一緒にメディアとして送信します。
運用チェックリスト
openclaw status # Local status (creds, sessions, queued events) openclaw status --all # Full diagnostics (read-only, easy to paste/share) openclaw status --deep # Adds gateway health probes (Telegram + Discord) openclaw health --json # Gateway health snapshot (WS)
ログの既定出力先は `/tmp/openclaw/`(例:`openclaw-YYYY-MM-DD.log`)。