はじめに
OpenClaw が個人利用にとどまらず、チーム全体にサービスを提供する必要がある場合、ユーザー管理、権限制御、リソース配分などを検討する必要があります。本記事では、OpenClaw を個人ツールからチームレベルの AI アシスタントプラットフォームにアップグレードする方法をご紹介します。
一、マルチユーザーアーキテクチャの概要
OpenClaw のマルチユーザーアーキテクチャは以下のコアコンセプトに基づいています:
┌──────────────────────────────────────────┐
│ OpenClaw Gateway │
│ (:18789) │
├──────────────────────────────────────────┤
│ ユーザー管理モジュール │
│ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │Admin │ │User A│ │User B│ ... │
│ │(管理) │ │(一般) │ │(一般) │ │
│ └──────┘ └──────┘ └──────┘ │
├──────────────────────────────────────────┤
│ 共有スキルプール │ プライベートスキル │ モデルクォータ管理 │
├──────────────────────────────────────────┤
│ チャネル層(各ユーザー独立セッション) │
│ WhatsApp │ Telegram │ Discord │ Slack │
└──────────────────────────────────────────┘
二、マルチユーザーモードの有効化
2.1 基本設定
// ~/.config/openclaw/openclaw.json5
{
"multiUser": {
"enabled": true,
// ユーザーデータの保存ディレクトリ
"dataDir": "/var/lib/openclaw/users",
// ユーザー認証方式
"authMethod": "token",
// デフォルトのユーザーロール
"defaultRole": "user",
// セルフ登録の許可
"selfRegistration": false
}
}
2.2 管理者アカウントの作成
# マルチユーザーモードの初期化
openclaw onboard --multi-user
# 管理者の作成
openclaw user create \
--username admin \
--role admin \
--email [email protected]
# システムが API Token を生成します。大切に保管してください
# Token: oc_admin_a1b2c3d4e5f6...
2.3 一般ユーザーの追加
# 一般ユーザーの作成
openclaw user create \
--username alice \
--role user \
--email [email protected]
# 全ユーザーの一覧表示
openclaw user list
出力例:
┌──────────┬─────────┬──────────────────────┬─────────┐
│ Username │ Role │ Email │ Status │
├──────────┼─────────┼──────────────────────┼─────────┤
│ admin │ admin │ [email protected] │ active │
│ alice │ user │ [email protected] │ active │
│ bob │ user │ [email protected] │ active │
└──────────┴─────────┴──────────────────────┴─────────┘
三、ユーザー分離メカニズム
3.1 会話の分離
各ユーザーの会話履歴は完全に独立しており、相互に閲覧できません:
{
"multiUser": {
"isolation": {
// 会話履歴の分離
"conversations": true,
// ユーザー設定の分離
"preferences": true,
// カスタムプロンプトの分離
"systemPrompts": true
}
}
}
3.2 データ保存構造
/var/lib/openclaw/users/
├── admin/
│ ├── conversations/
│ ├── preferences.json
│ └── skills/ # プライベートスキル
├── alice/
│ ├── conversations/
│ ├── preferences.json
│ └── skills/
└── bob/
├── conversations/
├── preferences.json
└── skills/
3.3 チャネルからユーザーへのマッピング
異なるチャネルのユーザーを OpenClaw の内部ユーザーにマッピングする必要があります:
{
"multiUser": {
"channelMapping": {
"telegram": {
// Telegram ユーザー ID -> OpenClaw ユーザー名
"123456789": "alice",
"987654321": "bob"
},
"whatsapp": {
// WhatsApp 番号 -> OpenClaw ユーザー名
"+8613800138000": "alice",
"+8613900139000": "bob"
},
"discord": {
// Discord ユーザー ID -> OpenClaw ユーザー名
"1234567890": "alice"
}
},
// 未マッピングユーザーの処理方式
"unmappedUserPolicy": "create_auto" // auto | reject | guest
}
}
四、ロールと権限管理
4.1 組み込みロール
| ロール | 権限 | 適用シーン |
|---|---|---|
admin |
すべての権限 | システム管理者 |
manager |
ユーザー管理 + 設定 | チームリーダー |
user |
通常利用 | 一般チームメンバー |
guest |
制限付き利用 | 一時ユーザー |
4.2 権限の詳細一覧
{
"roles": {
"admin": {
"permissions": [
"user.create", "user.delete", "user.modify",
"config.modify", "skill.manage",
"model.all", "channel.manage",
"stats.view", "logs.view"
]
},
"manager": {
"permissions": [
"user.create", "user.modify",
"skill.manage", "model.all",
"stats.view"
]
},
"user": {
"permissions": [
"chat.send", "chat.history",
"skill.use", "model.allowed",
"preference.modify"
]
},
"guest": {
"permissions": [
"chat.send"
],
"restrictions": {
"maxMessagesPerDay": 50,
"maxConversationLength": 10
}
}
}
}
4.3 カスタムロール
# カスタムロールの作成
openclaw role create developer \
--permissions "chat.send,chat.history,skill.use,skill.create,model.all"
# ユーザーにロールを割り当て
openclaw user modify alice --role developer
五、モデルクォータ管理
5.1 ユーザー別のクォータ設定
{
"quotas": {
"default": {
"dailyMessages": 200,
"dailyTokens": 500000,
"maxTokensPerMessage": 4096,
"allowedModels": ["claude-sonnet-4-20250514", "gpt-4o-mini"]
},
"users": {
"alice": {
"dailyMessages": 500,
"dailyTokens": 1000000,
"allowedModels": ["claude-sonnet-4-20250514", "claude-opus-4-20250514", "gpt-4o"]
},
"bob": {
"dailyMessages": 100,
"dailyTokens": 200000,
"allowedModels": ["claude-sonnet-4-20250514"]
}
}
}
}
5.2 ロール別のクォータ設定
{
"quotas": {
"byRole": {
"admin": {
"dailyMessages": -1, // -1 は無制限を表す
"dailyTokens": -1,
"allowedModels": ["*"] // すべてのモデル
},
"user": {
"dailyMessages": 200,
"dailyTokens": 500000,
"allowedModels": ["claude-sonnet-4-20250514", "gpt-4o-mini"]
},
"guest": {
"dailyMessages": 20,
"dailyTokens": 50000,
"allowedModels": ["gpt-4o-mini"]
}
}
}
}
5.3 クォータ使用状況の確認
# 全ユーザーのクォータ使用状況を表示
openclaw user stats
# 出力例:
# ┌──────────┬──────────┬──────────┬─────────────┐
# │ User │ Messages │ Tokens │ Quota Used │
# ├──────────┼──────────┼──────────┼─────────────┤
# │ alice │ 156/500 │ 342K/1M │ 34.2% │
# │ bob │ 89/100 │ 178K/200K│ 89.0% │
# └──────────┴──────────┴──────────┴─────────────┘
# 個別ユーザーの詳細な使用統計を表示
openclaw user stats alice --detail
5.4 クォータ超過時の処理
{
"quotas": {
"onExceeded": {
// 超過時の返信メッセージ
"message": "本日の使用枠を使い切りました。明日再度お試しください。より多くの枠が必要な場合は管理者にお問い合わせください。",
// 管理者に通知するか
"notifyAdmin": true,
// より安価なモデルへのフォールバックを許可するか
"fallbackToFreeModel": true,
"fallbackModel": "gpt-4o-mini"
}
}
}
六、共有スキル vs プライベートスキル
6.1 スキルディレクトリ構造
~/.openclaw/
├── skills/ # グローバル共有スキル
│ ├── translator.SKILL.md
│ ├── code-review.SKILL.md
│ └── meeting-notes.SKILL.md
└── users/
├── alice/
│ └── skills/ # Alice のプライベートスキル
│ └── my-custom.SKILL.md
└── bob/
└── skills/ # Bob のプライベートスキル
└── data-analysis.SKILL.md
6.2 スキル権限の設定
{
"skills": {
"shared": {
"path": "~/.openclaw/skills",
// すべてのユーザーが利用可能
"accessLevel": "all"
},
"private": {
// 各ユーザーに独自のスキルディレクトリ
"pathTemplate": "~/.openclaw/users/{{username}}/skills",
"accessLevel": "owner"
},
// スキル管理権限
"management": {
"createShared": ["admin", "manager"],
"createPrivate": ["admin", "manager", "user"],
"deleteShared": ["admin"],
"deletePrivate": ["admin", "owner"]
}
}
}
6.3 チーム共有スキルの例
<!-- ~/.openclaw/skills/team-qa.SKILL.md -->
# チーム Q&A アシスタント
あなたはチーム内部の Q&A アシスタントで、会社のポリシー、フロー、技術仕様に関する質問に回答する責任があります。
## ナレッジベース
- /data/company-docs/ ディレクトリ内のドキュメントを参照
- 最新バージョンのドキュメントを優先的に使用
## 回答規範
- 具体的なドキュメント名とセクションを引用
- 不確かな場合は明確にその旨を伝え、担当者への問い合わせを提案
- 機密情報はグループチャットで公開しない
七、利用統計分析
7.1 統計収集の設定
{
"analytics": {
"enabled": true,
"storage": "sqlite",
"dbPath": "/var/lib/openclaw/analytics.db",
"retention": "90d", // データ保持期間 90日
"collect": {
"messageCount": true,
"tokenUsage": true,
"modelUsage": true,
"responseTime": true,
"skillUsage": true,
"channelUsage": true
}
}
}
7.2 統計レポートの閲覧
# 全体の使用状況概要を表示
openclaw dashboard
# 指定期間の統計を表示
openclaw stats --from 2026-04-01 --to 2026-04-08
# CSV レポートのエクスポート
openclaw stats --export csv --output /tmp/openclaw-stats.csv
7.3 API 経由での統計照会
# ユーザー使用量ランキングの取得
curl -s http://localhost:18789/api/v1/admin/stats/users \
-H "Authorization: Bearer ADMIN_TOKEN" | jq .
# モデル使用統計の取得
curl -s http://localhost:18789/api/v1/admin/stats/models \
-H "Authorization: Bearer ADMIN_TOKEN" | jq .
八、チームデプロイのベストプラクティス
8.1 デプロイチェックリスト
□ マルチユーザーモードを有効化し管理者を作成
□ 各チームメンバーのアカウントを作成しロールを割り当て
□ 適切な使用クォータを設定
□ チーム共有スキルを作成
□ チャネルからユーザーへのマッピングを設定
□ 使用統計と監視を設定
□ 利用規範を策定しチームに通知
□ 使用状況とクォータを定期的にレビュー
8.2 セキュリティに関する推奨事項
| 対策 | 重要度 | 説明 |
|---|---|---|
| API Token の定期ローテーション | 高 | 90日ごとに交換 |
| 監査ログの有効化 | 高 | すべての管理操作を記録 |
| 最小権限の原則 | 高 | 必要な権限のみ付与 |
| 機密情報のフィルタリング | 中 | AI による機密データの漏洩を防止 |
| ユーザーリストの定期レビュー | 中 | 退職者を速やかに削除 |
| クォータアラート | 中 | 80% を超えた時点で管理者に通知 |
8.3 キャパシティプランニング
| チーム規模 | 推奨構成 | 月額予算の目安 |
|---|---|---|
| 5人以下 | 1コア 2G VPS | $50-100 |
| 5-20人 | 2コア 4G VPS | $100-300 |
| 20-50人 | 4コア 8G VPS | $300-800 |
| 50人以上 | クラスタデプロイ | $800+ |
8.4 ユーザー管理コマンドクイックリファレンス
# ユーザーの作成
openclaw user create --username NAME --role ROLE --email EMAIL
# ユーザーロールの変更
openclaw user modify USERNAME --role NEW_ROLE
# ユーザーの無効化
openclaw user disable USERNAME
# ユーザーの有効化
openclaw user enable USERNAME
# ユーザーの削除
openclaw user delete USERNAME
# ユーザー Token のリセット
openclaw user reset-token USERNAME
# ユーザー詳細の表示
openclaw user info USERNAME
# ユーザーの一括インポート
openclaw user import --file users.csv
以上の設定により、OpenClaw を安全で効率的なチーム AI アシスタントプラットフォームに構築でき、すべてのメンバーが AI の強力な能力を享受しつつ、適切な管理と制御を維持できます。