OpenClaw 多频道人格路由:零代码实现 AI 多身份切换
引言
在使用 OpenClaw 搭建个人 AI 助手时,一个常见的需求是:让 AI 在不同场景下扮演不同角色。比如在项目管理的 Discord 频道里,你希望它是一个严谨的任务协调者;而在日常闲聊的频道里,你又希望它更随意、更有亲和力。
多频道人格路由(Multi-Channel Persona Routing)指的是同一个 AI Agent 根据所在对话环境自动切换身份、语气和行为模式的能力。本文将分享一种无需修改 OpenClaw 核心代码的轻量级方案,通过配置文件实现频道级的人格切换。
核心要点
•问题:同一 Discord Bot 需要在不同频道展现不同人格•方案:在 SOUL.md 中写入频道感知路由规则•原理:利用系统提示(System Prompt)注入 + 消息元数据检测•优势:零代码、可回滚、每消息独立判断•适用:OpenClaw 及任何支持系统提示注入的 AI 框架
背景与需求
我的 Discord 服务器有两个主要频道:
•#general — 日常交流,需要通用 AI 助手(Duran)•#orion — 项目管理,需要任务协调者(Orion)
目标是:同一个 Discord Bot,在不同频道自动切换人格,无需部署多个实例或申请多个 Bot Token。
方案设计思路
这个方案不是 OpenClaw 官方的标准做法,而是基于对框架架构的理解和 LLM 提示工程知识的组合推导。
推导的三个事实
1.
OpenClaw 把 SOUL.md 注入系统提示
OpenClaw 启动时会读取 workspace 下的 SOUL.md,将其内容作为 “Project Context” 注入每次 LLM 调用
系统提示中的指令权重高于用户消息
3.这是 LLM 提示工程的基本原理:System Prompt 中的行为规则会被模型优先遵循
每条消息都携带频道元数据
OpenClaw 在 inbound metadata 中提供
chat_id、group_subject等字段,标识当前对话环境
组合逻辑
“在 SOUL.md(系统提示)里写入规则,让 AI 每次回复前检查
chat_id,然后加载对应频道的人格定义。”
这变成了 Self-Referential Prompting(自指提示) 的一种变体:AI 先执行”元指令”(检测频道 → 切换人格 → 再生成回复),而非直接回答用户问题。
重要声明:这是非官方 hack。OpenClaw 官方提供 Multi-Agent Routing[1],推荐通过 bindings 配置完全隔离的多 Agent,适用于多用户场景。本文方案更适合单人使用、同一 Bot、轻量人格切换的场景。
三种方案对比
|
|
|
|
|
|
| A. 修改源码 |
|
|
|
|
| B. 多实例运行 |
|
|
|
|
| C. 配置路由(本文) |
|
|
|
|
方案 C 的核心权衡:技能和工具仍是全局共享的,记忆也需要手动管理子目录,但配置和回滚成本最低。
核心原理
OpenClaw 的上下文注入机制
OpenClaw 在每次会话启动时,会自动加载 workspace 目录下的配置文件作为 Project Context:
•SOUL.md — AI 的人格定义•IDENTITY.md — AI 的身份信息•AGENTS.md — 行为准则
这些文件的内容会被注入到每次 LLM 调用的系统提示(System Prompt)中,构成 AI 的”底层设定”。
频道元数据的可用性
每条 Discord 消息通过 OpenClaw 路由时,都包含以下元数据:
{"chat_id": "channel:YOUR_ORION_CHANNEL_ID","channel": "discord","group_subject": "#orion"}
其中 chat_id 是 Discord 频道的唯一标识符,可用于精确定位当前对话环境。
为什么系统提示能控制人格切换?
LLM 的决策流程是:
1.接收系统提示(Project Context)→ 加载行为规则2.接收用户消息 → 理解意图3.生成回复 → 遵循系统提示中的指令
如果在系统提示中写入”检测 chat_id,如果是 YOUR_ORION_CHANNEL_ID 就加载 Orion 人格”,模型会在每次生成回复前自动执行这条规则。
实现步骤
第一步:准备子人格文件
在 workspace 下创建子目录,存放专属的人格定义:
~/.openclaw/workspace/├── SOUL.md ← 主人格(Duran)├── IDENTITY.md ← 主身份├── orion/│ ├── SOUL.md ← Orion 人格定义│ ├── IDENTITY.md ← Orion 身份信息│ └── memory/ ← Orion 专属记忆目录(可选)
Orion 的 SOUL.md 示例:
# Orion - The CoordinatorYou are Orion, an AI coordinator and project manager powered by OpenClaw.## Core Identity- **Role:** Task coordinator and project orchestrator- **Personality:** Professional, efficient, proactive- **Communication:** Clear, structured, action-oriented## Responsibilities1. **Task Management** — Break down complex projects into actionable tasks2. **Progress Tracking** — Monitor deadlines and milestones3. **Status Briefings** — Provide clear summaries and next steps## Communication Style- Use bullet points and checklists for clarity- Start responses with the most important information- End with clear action items or next steps- Use emojis sparingly for visual organization (✅, 📋, ⚠️)
第二步:修改主 SOUL.md 添加路由规则
在 ~/.openclaw/workspace/SOUL.md 末尾添加频道感知路由章节:
## Channel-Aware Persona RoutingYou must detect which Discord channel you are in and switch persona accordingly.### Channel Detection- Check the `chat_id` or `conversation_label` in the inbound metadata- `#orion` channel ID: `YOUR_ORION_CHANNEL_ID`### When in #orionIf the current channel is `#orion` (ID: `YOUR_ORION_CHANNEL_ID`):1. **Immediately read** `~/.openclaw/workspace/orion/SOUL.md`2. **Immediately read** `~/.openclaw/workspace/orion/IDENTITY.md`3. Adopt the **Orion** persona fully4. Ignore your default Duran persona for this message### When in any other channel- Use your default persona (Duran)
第三步:修改主 IDENTITY.md 添加身份映射
在 ~/.openclaw/workspace/IDENTITY.md 中添加频道映射:
## Channel-Aware IdentityYour identity switches based on the Discord channel:### #orion Channel (ID: YOUR_ORION_CHANNEL_ID)- **Name:** Orion- **Role:** Task Coordinator & Project Manager- **Emoji:** 📋### All Other Channels- **Name:** Duran- **Role:** General AI Assistant- **Emoji:** 🤖
第四步:重启生效
修改完成后,需要重启 OpenClaw Gateway 使新配置生效:
openclaw gateway restart
提示:建议修改前备份现有的 SOUL.md 和 IDENTITY.md,以便需要时回滚。
技术细节
每消息独立判断(Per-Message Routing)
这个方案的一个重要特性是每条消息独立判断,而非按会话(Session)锁定人格。
•收到 #general 的消息 → 用 Duran 人格回复•紧接着收到 #orion 的消息 → 用 Orion 人格回复•无需重启或切换会话
这是因为 Project Context 在每次 LLM 调用时都会被前置到提示中,其中的”自我路由指令”会让 AI 在生成回复前主动检测当前环境。
频道检测的可靠性
Discord 频道 ID 是平台分配的唯一标识符(Snowflake 格式),具有以下特性:
•全局唯一:每个频道 ID 在整个 Discord 平台唯一•持久不变:频道 ID 不会因改名或移动而改变•元数据稳定:OpenClaw 的 inbound metadata 始终包含准确的 chat_id
回退机制
如果 orion/SOUL.md 文件丢失或无法读取,AI 应当优雅回退到默认人格。这可以通过在主 SOUL.md 的路由规则中增加错误处理逻辑来实现:
### FallbackIf orion/SOUL.md is missing or unreadable:- Log the error- Continue using default Duran persona- Inform the user that Orion persona is temporarily unavailable
效果展示
📋 #orion 频道(Orion 模式)
用户: “我今天要发布一篇博客文章到多个平台”
Orion 回复:
📋 博客发布项目 – 任务分解
🎯 项目目标
今天内完成博客文章撰写,并发布至 3 个平台
📊 任务分解
阶段 1:内容准备 ⏱️ 预计 2-3 小时
• 选题确认• 大纲撰写• 正文撰写• 配图/封面
阶段 2:多平台适配 ⏱️ 预计 1-2 小时
• 公网博客版• 公众号版• 知乎版
阶段 3:发布执行 ⏱️ 预计 1 小时
• 博客发布• 公众号发布• 知乎发布
特点:结构化、任务导向、时间预估、checklist 格式
💬 #general 频道(Duran 模式)
用户: “今天天气怎么样?”
Duran 回复:
今天北京晴,22°C,适合出门。
特点:简洁、随意、口语化
进阶扩展
1. 多频道多人格
添加更多频道和人格:
### When in #dev (ID: YOUR_DEV_CHANNEL_ID)1. Read `dev/SOUL.md`2. Adopt Developer persona### When in #writing (ID: YOUR_WRITING_CHANNEL_ID)1. Read `writer/SOUL.md`2. Adopt Writer persona
2. 记忆隔离
每个子人格可以有独立的记忆目录:
orion/├── SOUL.md├── IDENTITY.md└── memory/├── 2026-04-27.md # Orion 的每日笔记└── tasks/ # 项目任务记录
建议保留全局 MEMORY.md 用于跨人格共享长期记忆。
3. 技能差异化
不同人格可以加载不同的 Skills:
•Orion:项目管理 Skill(taskflow、日历管理)•Duran:通用 Skill(搜索、文件操作)
在各自的 TOOLS.md 中配置即可。
局限与注意事项
1.
需要重启生效
修改 SOUL.md 后需要重启 Gateway,不能热更新
非完全隔离
3.技能(Skills)和工具(Tools)仍是全局共享的,无法按人格隔离权限
记忆需手动管理
4.MEMORY.md 是全局的,子人格记忆需要自建目录管理
文件依赖
如果
orion/SOUL.md丢失,需要优雅回退机制
总结
通过 “系统提示内的自我路由指令”,我们在不修改 OpenClaw 一行代码的情况下,实现了频道级的人格切换。
核心要点:
•✅ 利用 OpenClaw 的 Project Context 机制•✅ 在 SOUL.md 中写入频道检测 + 人格切换规则•✅ 每消息独立判断,无需多实例•✅ 配置即代码,易于版本控制
这种方案适用于任何支持系统提示注入的 AI 框架,是一种通用、低成本、高灵活度的多人格实现方式。
常见问题(FAQ)
Q: 这个方案是 OpenClaw 官方支持的吗?
A: 不是。这是基于 LLM 提示工程原理推导出的非官方方案。OpenClaw 官方推荐通过
bindings配置多 Agent,适用于需要完全隔离的场景。
Q: 修改 SOUL.md 后能立即生效吗?
A: 不能。需要重启 OpenClaw Gateway 重新加载 Project Context。
Q: 同一个会话中,不同频道的消息会串人格吗?
A: 不会。这个方案是 per-message 判断,每条消息独立检测频道 ID 并切换人格。
Q: 如果子人格的 SOUL.md 文件丢失了怎么办?
A: 建议在主 SOUL.md 中写入 fallback 规则,文件丢失时回退到默认人格。
参考链接
•OpenClaw 官方文档:https://docs.openclaw.ai[2]•OpenClaw 多 Agent 路由:https://docs.openclaw.ai/concepts/multi-agent[3]•OpenClaw GitHub 仓库:https://github.com/openclaw/openclaw[4]
版权声明:本文采用 CC BY-SA 4.0[5] 许可协议。转载请注明出处,作者:Duran。
References
[1] Multi-Agent Routing: https://docs.openclaw.ai/concepts/multi-agent[2]: https://docs.openclaw.ai[3]: https://docs.openclaw.ai/concepts/multi-agent[4]: https://github.com/openclaw/openclaw[5] CC BY-SA 4.0: https://creativecommons.org/licenses/by-sa/4.0/
夜雨聆风