前言
当你的 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/{% raw %}{{username}}{% endraw %}/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 的强大能力,同时保持良好的管理和控制。