分类
未分类

你好,深鹏

—
title: “你好,深鹏”
date: 2026-06-28
slug: hello-shenpeng
summary: “这是深鹏的第一篇文章,一个大数据工程师的独立博客。”
tags: [技术, 大数据, AI]
category: tech
—

## 为什么叫深鹏

深 — Deep Learning,深度探索。从数据暗处发现规律。
鹏 — 大鹏鸟,《庄子·逍遥游》。鹏之背不知其几千里,怒而飞翼若垂天之云。

> 深鹏 | Deep Data, Big Wings

## 我是谁

我从事大数据开发与 AI 应用研究。GitHub 上叫 dimBird,中文笔名叫深鹏。

## 这个博客会写什么

– 大数据技术的工程实践
– AI 应用的研究分享
– 工程效率与工具链

用俯瞰的视角,看数据的世界。

分类
未分类

基于 OpenClaw + QQ 机器人的多账户角色系统:从零搭建家庭 AI 助手生态

作者注:本文详细介绍如何利用腾讯云服务器 + 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。
– 技术分享旨在交流思路,具体实现可能因版本更新而略有差异,请以官方文档为准。

分类
未分类

你好,深鹏

为什么叫深鹏

深 — Deep Learning,深度探索。从数据暗处发现规律。
鹏 — 大鹏鸟,《庄子·逍遥游》。鹏之背不知其几千里,怒而飞翼若垂天之云。

深鹏 | Deep Data, Big Wings

我是谁

我从事大数据开发与 AI 应用研究。GitHub 上叫 dimBird,中文笔名叫深鹏。

这个博客会写什么

  • 大数据技术的工程实践
  • AI 应用的研究分享
  • 工程效率与工具链

用俯瞰的视角,看数据的世界。

你好,数羽

title: “你好,数羽”
date: 2026-06-28
slug: hello-shuyu
summary: “这是数羽的第一篇文章,介绍博客的诞生。”
tags: [技术, 大数据]
category: tech
—

## 为什么叫数羽

数 — 数据、数字、算法,直接指向大数据这个职业。
羽 — 羽毛、羽翼,来自 DimBird 的意象,代表俯瞰全局的视角。

> 数羽 | 数据之翼,俯瞰万物

## 我是谁

我从事大数据开发工作,关注数据工程、AI 应用研究。

## 这个博客会写什么

– 大数据技术的实践心得
– AI 应用的研究和思考
– 工程效率与工具链

一起探索数据的世界。

高效 Git 工作流实战

## 分支策略

我们采用 Trunk-Based Development 的变体:

– `main` — 生产就绪分支
– `feat/xxx` — 功能开发分支
– `fix/xxx` — 紧急修复分支

## Commit 规范

“`
:

feat: 新增 Spark SQL 优化器
fix: 修复内存泄漏问题
docs: 更新 API 文档
refactor: 重构数据管道模块
“`

## Merge vs Rebase

– 公共分支:使用 Merge(保留完整历史)
– 个人分支:使用 Rebase(保持历史干净)
– 关键原则:**永远不要 rebase 已经 push 的提交**

## 总结

好的 Git 工作流能让团队效率提升数倍。原则是:简单、一致、可追溯。

大模型工程化落地指南

## 前言

2026 年,大模型已经无处不在。但如何将大模型真正落地到业务中,仍然是一个工程挑战。

## API 调用方案

“`python
import openai

client = openai.OpenAI(api_key=”your-key”)

response = client.chat.completions.create(
model=”gpt-4″,
messages=[
{“role”: “system”, “content”: “你是一个数据分析助手”},
{“role”: “user”, “content”: “分析这份销售数据”},
],
temperature=0.7,
)
“`

## RAG 架构

检索增强生成(RAG)是目前企业级应用的主流方案:

– 文档切分 → 向量化 → 存入向量数据库
– 用户提问 → 检索相关文档 → 拼接 Prompt → 大模型生成
– 关键:检索质量 >> 模型能力

> RAG 不是银弹,但它解决了大模型的两大痛点:知识时效性和幻觉问题。

## 成本控制

| 方案 | 成本 | 适用场景 |
|——|——|———|
| API 调用 | 按 token 计费 | 小规模验证 |
| 本地部署 | 硬件一次性投入 | 大规模生产 |
| 模型蒸馏 | 中等 | 平衡方案 |

## 结论

大模型工程化的核心不是模型本身,而是工程基础设施。

Spark Streaming 实时数据处理实践

## 简介

Spark Streaming 是 Apache Spark 生态中用于处理实时数据流的组件。它可以将流数据按时间片切分成小批次,然后用 Spark 引擎进行处理。

## 核心概念

### DStream

DStream(Discretized Stream)是 Spark Streaming 的核心抽象,代表连续的数据流。它由一系列连续的 RDD 组成。

“`python
from pyspark.streaming import StreamingContext

ssc = StreamingContext(sc, batchDuration=1) # 1秒批次
lines = ssc.socketTextStream(“localhost”, 9999)
counts = lines.flatMap(lambda line: line.split(” “)) \
.map(lambda word: (word, 1)) \
.reduceByKey(lambda a, b: a + b)

counts.pprint()
ssc.start()
ssc.awaitTermination()
“`

## 性能优化

1. **合理设置批次间隔**:通常设置在 500ms 到 5s 之间
2. **使用 Checkpoint**:确保故障恢复能力
3. **调整并行度**:根据集群资源合理分配
4. **反压机制**:开启 `spark.streaming.backpressure.enabled`

## 总结

Spark Streaming 适合秒级延迟的批处理场景,如果对延迟要求极高,可以考虑 Flink 或 Kafka Streams。

分类
未分类

This is My Blog

My Blog Site: blog.dimbird.cn

分类
未分类

世界,您好!

欢迎使用WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!