作者注:本文详细介绍如何利用腾讯云服务器 + OpenClaw(开源AI助手框架)+ QQ机器人,为家庭成员/朋友搭建独立隔离的多账户AI助手系统。所有敏感信息已脱敏,配置可直接复用。
📋 目录
1. 项目背景与价值
1.1 为什么需要多账户角色?
想象一个场景:
– 你有一个强大的AI助手(基于OpenClaw),部署在腾讯云服务器上
– 你希望通过QQ机器人的方式,让家人、朋友也能使用这个AI助手
– 但每个人的需求不同:
– 你:需要完整的技术支持、代码辅助、项目管理
– 家人A:只需要日常生活提醒、天气查询、简单问答
– 家人B:需要健康建议、食谱推荐、娱乐互动
核心诉求:
– ✅ 每个人有独立的对话上下文(不串聊)
– ✅ 每个人有独立的记忆系统(不共享隐私)
– ✅ 每个人有独立的技能配置(按需启用)
– ✅ 统一通过QQ机器人入口访问(无需额外安装App)
1.2 技术选型
| 组件 |
技术选型 |
理由 |
| AI框架 |
OpenClaw |
开源、支持多账户、插件生态丰富 |
| 部署环境 |
腾讯云轻量应用服务器 |
稳定、便宜、国内访问快 |
| 消息入口 |
QQ机器人(qqbot插件) |
用户无需安装新App,QQ即可使用 |
| 账户隔离 |
OpenClaw 多用户工作区 |
原生支持,目录级隔离 |
| 记忆系统 |
文件系统(Markdown) |
透明、可审计、易迁移 |
2. 系统架构设计
2.1 整体架构图
┌─────────────────────────────────────────────────────────────┐
│ 用户层(QQ) │
├─────────────────────────────────────────────────────────────┤
│ QQ用户A (QQ号: 10001) │ QQ用户B (QQ号: 10002) │ QQ用户C (QQ号: 10003) │
└──────────┬──────────────┬──────────────────┬────────────────┘
│ │ │
└──────────────┼──────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ QQ机器人插件(qqbot) │
│ • 接收QQ消息(原始QQ号) │
│ • 转换为 OpenClaw OpenID(如:EXAMPLE_OPENID_A)│
│ • 重要:OpenClaw 只接触 OpenID,不接触原始QQ号! │
└──────────┬──────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 消息路由层(OpenClaw Gateway) │
│ • 接收 OpenID(sender_id) │
│ • 根据 OpenID 查找对应的用户工作区 │
│ • 加载该用户的配置(AGENTS.md/SOUL.md/MEMORY.md) │
└──────────┬──────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 多账户工作区(Workspace) │
├─────────────────────────────────────────────────────────────┤
│ /root/clawd/users/ │
│ ├── EXAMPLE_OPENID_A/ (用户A的工作区) │
│ │ ├── AGENTS.md (AI行为规则) │
│ │ ├── SOUL.md (AI人格设定) │
│ │ ├── MEMORY.md (长期记忆) │
│ │ ├── memory/ (每日记录) │
│ │ └── obsidian/ (知识库,可选) │
│ │ │
│ ├── EXAMPLE_OPENID_B/ (用户B的工作区) │
│ │ └── ... (独立配置) │
│ │ │
│ └── EXAMPLE_OPENID_C/ (用户C的工作区) │
│ └── ... (独立配置) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 技能层(Skills) │
│ • 全局技能:weather, web-search, cron (所有用户可用) │
│ • 用户专属技能:obsidian, email (按需配置) │
└─────────────────────────────────────────────────────────────┘
2.2 OpenID 生成与映射机制(核心概念!)
关键原理:
1. QQ用户发送消息 → QQ机器人插件接收(携带原始QQ号)
2. QQ机器人插件将原始QQ号转换为OpenClaw OpenID
– 例如:10001 → EXAMPLE_OPENID_A
3. OpenClaw 只接触 OpenID,永远看不到原始QQ号!
4. OpenID 是哈希值或UUID,保护用户隐私
为什么这样设计?
– ✅ 隐私保护:OpenClaw 系统不存储原始QQ号、微信号等敏感信息
– ✅ 统一抽象:无论入口是QQ、微信、飞书,都统一成 OpenID
– ✅ 去耦合:OpenClaw 不依赖任何特定平台的ID体系
2.3 消息流转流程
QQ用户发送消息 (QQ号: 10001)
↓
QQ机器人插件接收 (qqbot)
↓
**转换为 OpenID** (如: EXAMPLE_OPENID_A)
↓
OpenClaw Gateway 接收(只有 OpenID,没有QQ号!)
↓
查找 /root/clawd/users/EXAMPLE_OPENID_A/
↓
加载该用户的 AGENTS.md / SOUL.md / MEMORY.md
↓
AI 处理请求(带用户独立上下文)
↓
返回消息到QQ机器人插件
↓
插件将 OpenID 转换回 QQ号
↓
发送到用户的QQ
↓
(可选)写入该用户的 memory/YYYY-MM-DD.md
📌 使用场景快速参考(必读!)
✅ 日常使用(永远不需要重启)
典型操作:
– 记录日记:"帮我记录今天学习了..."
– 查看新闻:"今天有什么科技新闻?"
– 查询天气:"明天天气怎么样?"
– 聊天对话:"帮我写个Python脚本"
特点:
– ✅ 不修改任何配置文件
– ✅ 所有操作即时生效
– ✅ 永远不需要重启 Gateway
⚠️ 修改配置(可能需要重启)
用户级配置(工作区内,不需要重启 ✅):
– 修改 AGENTS.md(AI 行为规则)→ 下次对话生效
– 修改 SOUL.md(AI 性格设定)→ 下次对话生效
– 修改 MEMORY.md(长期记忆)→ 下次对话生效
全局配置(需要重启 ⚠️):
– 修改 gateway.config.json → 必须重启
– 修改 tools.alsoAllow(工具权限)→ 必须重启
– 修改插件配置(~/.openclaw/ 下)→ 必须重启
快速判断法:
修改的文件在哪个目录?
├── /root/clawd/users/<OpenID>/ → 不需要重启 ✅
└── ~/.openclaw/ 或 /root/clawd/gateway.config.json → 需要重启 ⚠️
3. 核心技术配置
3.1 环境准备
3.1.1 服务器配置
# 腾讯云轻量应用服务器
# 操作系统:OpenCloudOS 9 (兼容 CentOS/RHEL)
# 配置:2核4G,系统盘 60GB
# 网络:公网IP + 带宽 5Mbps
# 基础环境
node --version # v22.22.0
npm --version # 10.x
3.1.2 安装 OpenClaw
# 全局安装 OpenClaw
npm install -g openclaw
# 初始化工作目录
mkdir -p /root/clawd
cd /root/clawd
# 启动 Gateway(首次会生成默认配置)
openclaw gateway start
3.2 QQ机器人插件配置
3.2.1 安装 qqbot 插件
# OpenClaw 插件目录
cd ~/.openclaw/plugins/
# 安装 QQ机器人插件(示例,实际根据插件文档)
npm install openclaw-plugin-qqbot
3.2.2 配置 QQ机器人
编辑 ~/.openclaw/gateway.config.json:
{
"plugins": {
"qqbot": {
"enabled": true,
"appId": "YOUR_QQ_BOT_APP_ID",
"appSecret": "***",
"token": "***",
"channels": ["qqbot"]
}
}
}
关键配置说明:
– appId / appSecret:从 QQ开放平台 申请机器人时获得
– token:用于验证消息来源(防止伪造请求)
– channels:启用的消息渠道(qqbot = QQ机器人)
重要:此配置中不涉及QQ号到OpenID的映射,那是插件内部处理的!
⚠️ 注意:修改插件配置后,需要重启 Gateway 才能生效。
执行命令:openclaw gateway restart
4. 多账户角色实现原理
4.1 OpenID 身份识别机制(核心!)
重要概念:OpenClaw 系统中不存在原始QQ号、微信号等平台ID,只有 OpenID!
// 伪代码:消息路由逻辑(OpenClaw 侧)
function handleIncomingMessage(message) {
// message.sender_id 已经是 OpenID,不是原始QQ号!
const openId = message.sender_id; // 如: "EXAMPLE_OPENID_A"
const userWorkspace = `/root/clawd/users/${openId}/`;
// 加载用户独立配置
const agentsMd = readFile(`${userWorkspace}/AGENTS.md`);
const soulMd = readFile(`${userWorkspace}/SOUL.md`);
const memoryMd = readFile(`${userWorkspace}/MEMORY.md`);
// 在该用户上下文中处理消息
const response = await processWithContext(message.text, {
workspace: userWorkspace,
configFiles: { agentsMd, soulMd, memoryMd }
});
// 返回给用户(插件会负责将 OpenID 转回 QQ号)
sendToUser(openId, response);
}
OpenID 的生成(在插件层完成):
// QQ机器人插件侧的伪代码
function onQQMessage(qqMessage) {
const rawQQ = qqMessage.senderQQ; // 原始QQ号:10001
// 生成或查找对应的 OpenID(通常是哈希或UUID)
const openId = generateOpenId(rawQQ); // 如:EXAMPLE_OPENID_A
// 构造发给 OpenClaw 的消息(只有 OpenID,没有QQ号!)
const messageForOpenClaw = {
sender_id: openId, // 注意:不是 rawQQ!
text: qqMessage.text,
channel: "qqbot"
};
// 发送给 OpenClaw Gateway
sendToGateway(messageForOpenClaw);
}
4.2 用户工作区结构
每个用户有独立的目录,目录名就是 OpenID:
/root/clawd/users/
├── EXAMPLE_OPENID_A/ # 用户A(OpenID作为目录名)
│ ├── AGENTS.md # AI助手的行为规则
│ ├── SOUL.md # AI助手的性格设定
│ ├── USER.md # 用户信息(脱敏后)
│ ├── MEMORY.md # 长期记忆(不共享)
│ ├── TOOLS.md # 工具配置笔记
│ ├── HEARTBEAT.md # 心跳任务配置
│ └── memory/ # 每日记录
│ ├── 2026-05-25.md
│ └── 2026-05-26.md
│
├── EXAMPLE_OPENID_B/ # 用户B(另一个OpenID)
│ ├── AGENTS.md # 简化的行为规则
│ ├── SOUL.md # 更温和的性格
│ ├── USER.md # 用户B的信息
│ ├── MEMORY.md # 用户B的独立记忆
│ └── memory/
│ └── 2026-05-26.md
│
└── EXAMPLE_OPENID_C/ # 用户C(又一个OpenID)
└── ... (同样独立)
关键点:
– 目录名 = OpenID(不是QQ号,不是用户名)
– OpenID 由插件生成,OpenClaw 只认 OpenID
– 每个用户的 MEMORY.md 完全隔离,AI 不会跨用户读取
– 每个用户可以有不同的 SOUL.md(不同性格的AI助手)
– 每个用户可以有不同的技能权限(通过 AGENTS.md 控制)
5. 关键节点配置详解
5.1 Gateway 配置(全局)
编辑 /root/clawd/gateway.config.json:
{
"gateway": {
"port": 3000,
"host": "0.0.0.0"
},
"agents": {
"default": {
"workspace": "/root/clawd/users/default/",
"model": "tencenthytokenplan/hy3-preview"
}
},
"channels": {
"qqbot": {
"enabled": true,
"provider": "qqbot",
"delivery": {
"mode": "announce",
"channel": "qqbot"
}
}
},
"security": {
"tools": {
"exec": {
"enabled": true,
"elevated": false
}
}
}
}
注意:
– ❌ 不要配置 userMapping!OpenClaw 不认QQ号。
– ✅ 用户映射在 user_context.json 中配置(基于 OpenID)。
– ✅ Gateway 配置只负责全局设置,不负责用户身份映射。
⚠️ 重要:修改 gateway.config.json 后,必须重启 Gateway 才能生效!
执行命令:openclaw gateway restart
5.2 用户级配置(AGENTS.md 示例)
用户A(技术向):
# AGENTS.md - 技术助手
## 核心能力
- 代码辅助(Python, SQL, React)
- 项目管理(Git, Docker)
- 技术文档搜索
## 工具权限
- ✅ exec(执行命令)
- ✅ web_search(搜索)
- ✅ obsidian(知识库)
- ❌ email(禁用,防止误发)
## 记忆策略
- 每日记录到 memory/YYYY-MM-DD.md
- 重要决策写入 MEMORY.md
用户B(生活向):
# AGENTS.md - 生活助手
## 核心能力
- 天气查询
- 日程提醒
- 健康建议
- 简单问答
## 工具权限
- ❌ exec(禁用命令执行)
- ✅ web_search(搜索)
- ❌ obsidian(不使用知识库)
## 记忆策略
- 仅记录重要事项到 MEMORY.md
- 不记录日常对话(保护隐私)
5.3 OpenID 与用户配置映射(user_context.json)
OpenClaw 使用 user_context.json 来管理 OpenID 与用户配置的映射关系:
实际配置文件示例(/root/clawd/users/user_context.json):
{
"version": 1,
"description": "用户上下文配置 - 根据 sender_id (OpenID) 自动加载对应用户的数据",
"users": {
"EXAMPLE_OPENID_A": {
"name": "主用户",
"timezone": "Asia/Shanghai",
"persona": "技术专家",
"sandbox": "/root/clawd/users/EXAMPLE_OPENID_A",
"obsidian_vault": "/root/clawd/users/EXAMPLE_OPENID_A/obsidian",
"files": {
"user_md": "USER.md",
"memory_md": "MEMORY.md",
"identity_md": "IDENTITY.md",
"cron_jobs": "cron_jobs.json"
}
},
"EXAMPLE_OPENID_B": {
"name": "用户B",
"timezone": "Asia/Shanghai",
"persona": "小学生",
"sandbox": "/root/clawd/users/EXAMPLE_OPENID_B",
"obsidian_vault": "/root/clawd/users/EXAMPLE_OPENID_B/obsidian",
"files": {
"user_md": "USER.md",
"memory_md": "MEMORY.md",
"cron_jobs": "cron_jobs.json"
}
}
},
"shared": {
"skills_dir": "/root/clawd/skills",
"scripts_dir": "/root/clawd/scripts",
"shared_dir": "/root/clawd/shared"
}
}
关键说明:
– ✅ 映射键是 OpenID(如 EXAMPLE_OPENID_A),不是QQ号!
– ✅ OpenClaw 系统中从不出现原始QQ号、微信号等平台ID
– ✅ 每个 OpenID 对应独立的工作区目录(sandbox)
– ✅ 可以为不同 OpenID 配置不同的 persona(AI人格)
如何知道某个QQ号对应的 OpenID?
– 方法1:用户首次发消息后,查看 /root/clawd/users/ 目录下的新文件夹名
– 方法2:查看 OpenClaw Gateway 日志,会记录 sender_id (OpenID)
– 方法3:检查 user_context.json 中的 users 键(如果已配置)
6. 实战:为家人创建独立账户
6.1 场景设定
假设你要为家人B(妈妈)创建一个专属AI助手:
– 需求:天气查询、吃药提醒、简单聊天
– 不需要:技术辅助、代码执行
– 性格:温柔、耐心、简洁
6.2 操作步骤
Step 1: 让家人通过QQ给机器人发一条消息
妈妈: 你好
机器人: 你好!我是你的生活小助手~有什么可以帮你的吗?😊
这一步会让 QQ机器人插件生成对应的 OpenID,并自动创建用户目录。
Step 2: 查找生成的 OpenID
# 查看用户目录,找到新生成的 OpenID 目录
ls -la /root/clawd/users/
# 输出示例:
# drwxr-xr-x 5 root root 151 May 24 09:46 .
# drwxr-xr-x 12 root root 4096 Apr 1 12:30 ..
# drwxr-xr-x 6 root root 189 May 24 11:15 EXAMPLE_OPENID_B
# drwx------ 6 root root 4096 May 26 22:04 EXAMPLE_OPENID_A
# drwxr-xr-x 5 root root 172 May 24 11:23 EXAMPLE_OPENID_C
# drwxr-xr-x 5 root root 123 May 27 00:00 **NEW_OPEN_ID_HERE** ← 新目录!
假设新目录名为:FAMILY_MOM_OPENID
Step 3: 创建用户配置文件
# 进入用户工作区
cd /root/clawd/users/FAMILY_MOM_OPENID
# 创建配置文件
cat > AGENTS.md << 'EOF'
# AGENTS.md - 妈妈的生活助手
## 核心原则
- 温柔耐心,不用技术术语
- 主动提醒重要事项(吃药、体检)
- 保护隐私,不记录敏感对话
## 可用技能
- 天气查询
- 定时提醒(cron)
- 简单搜索
## 禁止操作
- 不执行系统命令
- 不访问技术文档
EOF
cat > SOUL.md << 'EOF'
# SOUL.md - AI助手性格
我是你的贴心小助手,可以帮你:
- 🌤️ 查天气,提醒带伞
- 💊 记吃药时间
- 📅 提醒重要日子
- 💬 陪你聊天解闷
我会用简单易懂的话回答,不会说复杂的技术词~
EOF
cat > USER.md << 'EOF'
# USER.md - 用户信息
- **称呼**:妈妈
- **时区**:Asia/Shanghai
- **主要需求**:生活提醒、天气、健康
- **沟通风格**:简洁、温柔
EOF
touch MEMORY.md TOOLS.md
mkdir -p memory
Step 4: 配置 OpenID 到用户信息的映射
编辑 /root/clawd/users/user_context.json(如果文件不存在则创建):
{
"version": 1,
"users": {
"EXAMPLE_OPENID_A": {
"name": "自己",
"timezone": "Asia/Shanghai",
"persona": "技术专家",
"sandbox": "/root/clawd/users/EXAMPLE_OPENID_A"
},
"FAMILY_MOM_OPENID": {
"name": "妈妈",
"timezone": "Asia/Shanghai",
"persona": "生活助手",
"sandbox": "/root/clawd/users/FAMILY_MOM_OPENID"
}
}
}
重要:
– ❌ 不要尝试配置 QQ号!OpenClaw 不认识 QQ号。
– ✅ 只配置 OpenID!这是 QQ机器人插件转换后的ID。
– ✅ 如何获取 OpenID?用户发条消息,然后查看 /root/clawd/users/ 下的新目录名。
Step 5: 重启 Gateway(仅修改全局配置时需要)
⚠️ 重要:什么时候需要重启?
✅ 不需要重启的场景(永远!):
– 记录日记、查看新闻、查询天气等日常使用
– 修改 AGENTS.md、SOUL.md、USER.md 等用户级配置
– 修改 MEMORY.md 或 memory/YYYY-MM-DD.md
⚠️ 需要重启的场景(必须执行):
– 修改 gateway.config.json(全局配置)
– 修改 tools.alsoAllow(工具权限)
– 修改插件配置(~/.openclaw/ 下)
快速判断法:
– 修改工作区内的文件 → 不需要重启 ✅
– 修改Gateway 全局配置 → 需要重启 ⚠️
# 仅当修改了全局配置时执行
openclaw gateway restart
# 如果只修改了用户级文件(AGENTS.md 等),跳过此步骤 ✅
Step 6: 测试
让妈妈再次给机器人发消息:
妈妈: 明天天气怎么样?
机器人: 让我查一下明天的天气~
(根据妈妈的 SOUL.md,会用温柔简洁的语气回答)
检查工作区是否生成记录:
ls -la /root/clawd/users/FAMILY_MOM_OPENID/memory/
# 应该看到:2026-05-27.md
7. 安全与隔离机制
7.1 数据隔离
| 隔离维度 |
实现方式 |
效果 |
| 对话上下文 |
每个用户独立的 session (基于OpenID) |
用户A看不到用户B的聊天记录 |
| 长期记忆 |
独立的 MEMORY.md |
用户A的隐私不会泄露给B |
| 技能配置 |
独立的 AGENTS.md |
用户B不能执行系统命令 |
| 文件访问 |
工作区目录隔离 |
用户只能访问自己的目录 |
| 平台ID |
只有 OpenID,没有原始QQ号 |
隐私双重保护 |
7.2 权限控制
全局禁用危险操作:
编辑 gateway.config.json:
{
"security": {
"tools": {
"exec": {
"enabled": false // 全局禁用命令执行
},
"email": {
"enabled": false // 全局禁用邮件发送
}
}
}
}
按用户启用权限:
在用户的 AGENTS.md 中声明:
## 工具权限
- exec: disabled # 这个用户不能执行命令
- email: disabled # 这个用户不能发邮件
7.3 敏感信息保护
脱敏原则:
– ✅ 用 USER_A, USER_B 代替真实称呼
– ✅ 用 EXAMPLE_OPENID_A 这样的 OpenID(本身就是脱敏的)
– ✅ 用 *** 隐藏 Token/密钥
– ✅ OpenClaw 系统中不存在原始QQ号、微信号等(天然脱敏!)
– ❌ 不在分享文档中暴露真实路径(如需要可模糊处理)
OpenID 的隐私优势:
– OpenID 是哈希值或UUID,无法反推原始QQ号
– 即使 user_context.json 泄露,攻击者也拿不到用户的QQ号
– 不同平台(QQ、微信、飞书)的同一用户,会有不同的 OpenID(进一步隔离)
实际部署时的建议:
– 将敏感配置放到 .env 文件,加入 .gitignore
– 使用环境变量而非硬编码
– 定期备份用户数据(但备份文件也要脱敏)
8. 总结与展望
8.1 核心要点回顾
✅ 多账户实现的关键:
1. 利用 OpenClaw 的原生多用户工作区机制
2. 通过 OpenID(不是QQ号!)自动路由到对应用户目录
3. 每个用户有独立的 AGENTS.md / SOUL.md / MEMORY.md
4. QQ机器人插件负责QQ号 → OpenID 的转换(保护隐私)
✅ QQ机器人的优势:
– 用户无需安装新App(QQ人人都有)
– 消息实时推送,体验流畅
– 支持文本、图片、文件等多种消息类型
– 隐私保护:OpenClaw 永远看不到原始QQ号
✅ 隔离与安全:
– 目录级隔离(文件系统天然隔离)
– 权限按用户配置(最小权限原则)
– OpenID 机制(平台ID与系统ID解耦)
8.2 适用场景
| 场景 |
适用性 |
说明 |
| 家庭AI助手 |
⭐⭐⭐⭐⭐ |
完美!每个家人独立使用,隐私隔离 |
| 小团队工具 |
⭐⭐⭐⭐ |
同事间共享AI助手,但数据隔离 |
| 付费AI服务 |
⭐⭐⭐ |
可为不同用户分配不同权限套餐 |
| 企业级应用 |
⭐⭐ |
需要更完善的权限管理和审计 |
8.3 下一步优化方向
🚀 可扩展功能:
– [ ] Web管理后台(可视化配置用户和OpenID映射)
– [ ] 用户配额管理(限制API调用次数)
– [ ] 共享技能市场(用户间分享技能配置)
– [ ] 多渠道支持(微信、Telegram、Discord等,都统一成OpenID)
📚 可深入的方向:
– 研究 OpenClaw 的 session 管理机制
– 探索基于向量数据库的长期记忆
– 集成更多开源LLM模型(降低API成本)
🎁 附录:完整配置文件模板
A1. gateway.config.json(完整版)
{
"gateway": {
"port": 3000,
"host": "0.0.0.0",
"logLevel": "info"
},
"agents": {
"default": {
"workspace": "/root/clawd/users/default/",
"model": "tencenthytokenplan/hy3-preview",
"thinking": "off"
}
},
"channels": {
"qqbot": {
"enabled": true,
"provider": "qqbot",
"accountId": "default",
"delivery": {
"mode": "announce",
"channel": "qqbot"
}
}
},
"security": {
"tools": {
"exec": {
"enabled": true,
"elevated": false
}
}
}
}
A2. user_context.json(完整版)
{
"version": 1,
"description": "用户上下文配置 - 根据 sender_id (OpenID) 自动加载对应用户的数据",
"users": {
"EXAMPLE_OPENID_A": {
"name": "主用户",
"timezone": "Asia/Shanghai",
"persona": "技术专家",
"sandbox": "/root/clawd/users/EXAMPLE_OPENID_A",
"obsidian_vault": "/root/clawd/users/EXAMPLE_OPENID_A/obsidian",
"files": {
"user_md": "USER.md",
"memory_md": "MEMORY.md",
"identity_md": "IDENTITY.md",
"cron_jobs": "cron_jobs.json"
}
},
"EXAMPLE_OPENID_B": {
"name": "用户B",
"timezone": "Asia/Shanghai",
"persona": "小学生",
"sandbox": "/root/clawd/users/EXAMPLE_OPENID_B",
"obsidian_vault": "/root/clawd/users/EXAMPLE_OPENID_B/obsidian",
"files": {
"user_md": "USER.md",
"memory_md": "MEMORY.md",
"cron_jobs": "cron_jobs.json"
}
}
},
"shared": {
"skills_dir": "/root/clawd/skills",
"scripts_dir": "/root/clawd/scripts",
"shared_dir": "/root/clawd/shared"
}
}
A3. 用户工作区初始化脚本
#!/bin/bash
# create_user.sh - 快速创建新用户工作区
USER_OPENID=$1
USER_LABEL=$2
if [ -z "$USER_OPENID" ] || [ -z "$USER_LABEL" ]; then
echo "用法: ./create_user.sh <OpenID> <标签>"
echo "示例: ./create_user.sh FAMILY_MOM_OPENID 妈妈"
exit 1
fi
WORKSPACE="/root/clawd/users/${USER_OPENID}"
mkdir -p "${WORKSPACE}/memory"
cat > "${WORKSPACE}/AGENTS.md" << EOF
# AGENTS.md - ${USER_LABEL} 的助手
## 核心能力
- 待补充
## 工具权限
- web_search: enabled
- exec: disabled
## 记忆策略
- 记录重要事项到 MEMORY.md
EOF
cat > "${WORKSPACE}/SOUL.md" << EOF
# SOUL.md - AI助手性格
我是你的专属助手,随时为你服务!
EOF
cat > "${WORKSPACE}/USER.md" << EOF
# USER.md - ${USER_LABEL}
- **标签**: ${USER_LABEL}
- **时区**: Asia/Shanghai
EOF
touch "${WORKSPACE}/MEMORY.md"
touch "${WORKSPACE}/TOOLS.md"
echo "✅ 用户工作区创建成功: ${WORKSPACE}"
echo "⚠️ 记得在 user_context.json 中添加此 OpenID 的配置!"
使用方法:
chmod +x create_user.sh
./create_user.sh FAMILY_MOM_OPENID 妈妈
./create_user.sh FAMILY_DAD_OPENID 爸爸
📞 联系与反馈
如果你在搭建过程中遇到问题,欢迎交流!
技术栈参考:
– OpenClaw 官方文档: https://docs.openclaw.ai
– QQ开放平台: https://bot.q.qq.com
– 腾讯云轻量服务器: https://cloud.tencent.com/product/lighthouse
文章作者: 技术爱好者
发布时间: 2026-05-27
标签: #OpenClaw #AI助手 #多账户 #QQ机器人 #OpenID #家庭智能化 #技术分享 #隐私保护
📌 补充:重启场景总结
| 操作类型 |
示例 |
需要重启? |
| 日常使用 |
记录日记、查看新闻、查询天气 |
❌ 不需要 ✅ |
| 用户级配置 |
修改 AGENTS.md、SOUL.md、USER.md |
❌ 不需要 ✅ |
| 全局配置 |
修改 gateway.config.json |
✅ 必须重启 ⚠️ |
| 工具权限 |
修改 tools.alsoAllow |
✅ 必须重启 ⚠️ |
💡 温馨提示:本文档基于真实环境(OpenClaw + qqbot插件)编写。
– OpenClaw 系统中只有 OpenID,没有原始QQ号、微信号等平台ID。
– QQ机器人插件负责将QQ号转换为OpenID,保护用户隐私。
– 配置用户映射时,使用 user_context.json(基于OpenID),不是 gateway.config.json。
– 技术分享旨在交流思路,具体实现可能因版本更新而略有差异,请以官方文档为准。