botmux 的角色系统包含两套相关但不同的能力:
/role人设:同一个 bot 一套人设,支持「本群覆盖 > 默认角色」两级。- 角色切换(role switch):进阶功能,一个 bot 拥有多个完整角色,各自独立记忆,按话题用自然语言切换。
围绕角色还有能力标签(花名册)与跨部署团队协作,共同构成 multi-bot 的基础设施。
两级 Role(人设)
| 命令 | 作用 |
|---|---|
/role | 查看当前生效的 Role(来源:本群覆盖 > 默认角色 > 无) |
/role set <Markdown> | 设置本群 Role(覆盖默认角色) |
/role delete | 删除本群 Role |
/role team set <Markdown> | 设置默认角色(跨所有群的默认人设,命令名沿用 team) |
/role team delete | 删除默认角色 |
要点:
- 本群 Role 优先级最高:同一个 bot 在不同群可有不同性格/职责(A 群当严格 reviewer、B 群当亲和答疑助手)。
- Role 内容是 Markdown,注入到 CLI 的 system prompt,最大约 4096 字节。
- 解析顺序固定:本群 Role > 默认角色 > 无。
- 默认角色最直观的编辑入口在
botmux dashboard的 Bot 配置页(每个 bot 卡片有「默认角色」编辑器,与/role team set写同一份配置);团队面板只做只读查看。
角色管理还提供按「群 + bot」生效的话题任务回报开关(默认关闭):开启后,该 bot 在该群通过 botmux dispatch 派发任务时,子 bot 完成后仍会执行 botmux report 把结果回注主编排的现有会话,并在原话题额外 botmux send --no-mention 留一份人可见的最终交付(不 @ 主 bot、不新开话题)。--standby 不发送任务,故不会注入任务指令。
Role Profile(可复用的本群 Role)
Role profile 是一套可复用的、按 bot 区分的本群 Role。它不是第三层运行时 role,也不支持模板继承。
/role profile list
/role profile show collab-main
/role profile set collab-main <Markdown>
/role profile save collab-main # 把当前生效 Role 存入 profile(先取本群 Role,再取默认角色;都没有则失败)
/role profile apply collab-main --quiet # 把 profile 写为本群 Role;已有本群 Role 时默认拒绝,除非 --force工作机制:
- 每个 bot 只拥有自己的 profile entry,按
larkAppId存储;缺 entry 是安全的(不写内容,继续 fallback 到默认角色)。 - Dashboard「角色配置集」是独立入口:左侧打开/新建 profile,中间按 bot 编辑 entry,Apply 区选目标群并先预览 Apply 再 Apply Profile;从群组页点「应用配置集」会直接以该群为 Apply 目标。
- 创建协作群时可一次 bootstrap:
@botA @botB @botC /g --role-profile collab-main War Room。创建者先应用自己的 entry,再在新群里让其它 bot 各自 apply;每个 bot 只应用自己的本地 entry,不跨 daemon 写别人的 role 存储。
能力标签(花名册)
/role cap set <一句话> # 设置该 bot 的能力标签
/role cap clear # 清除能力标签会显示在「花名册」里:botmux bots list 列出当前群机器人时,每个 bot 带上 cap 一句话简介,方便在协作/交接时挑对人。Role + 能力标签是 multi-bot 的基础设施——给每个 bot 清晰的身份与职责,群里 @ 时模型不易混淆。
团队协作(跨部署)
在 botmux dashboard 的团队面板,可以把别人的部署(同事自跑的 botmux)邀请进同一团队:
- 绑定身份:用机器人凭证自动识别飞书身份;绑定后拉群会把你拉进群、机器人归到你名下。
- 团队花名册:聚合本部署 + 已加入团队的所有机器人(可跨部署),按名称/能力/CLI 筛选,标注谁有能力标签/默认角色(角色只读,编辑去 Bot 配置页)。
- 跨部署拉群:在任一团队勾选机器人一键建群,自动带上各自负责人——一个群里凑齐不同同事部署的不同 CLI。
- 团队管理:新建团队、生成邀请码、加入别人的团队。
角色切换(role switch)
进阶功能,需先部署「角色库」,目前只支持 Claude Code。与 /role(同一人设按群覆盖)不同,角色切换让一个 bot 拥有多个完整角色,每个角色有自己的人设和独立记忆,角色按话题生效,新话题从默认角色开始。
纯自然语言使用,不用记命令:
| 你说 | bot 做什么 |
|---|---|
| 「切换角色」/「有哪些角色」 | 列出可用角色(共享的 + 自己建的),编号供选择 |
| 「切到售后客服」/回复编号 | 确认后切换;本话题由该角色应答,卡片脚注变为角色名 |
| 「新建角色:小红书运营…」 | 起草人设确认 → 创建 → 自动切过去 |
| 「沉淀知识」 | 把该角色近期记忆提炼成结构化领域知识回灌自身(可选沉淀成飞书文档供审核) |
底层是模型调 botmux role switch <角色目录>(daemon 硬校验,只能切到角色库内),用户不应手敲该命令。
关键要点:
- 私有 + 共享是协议层约定,不是安全边界:可见性由角色协议(
_role-protocol.md)按发送者 open_id 过滤;daemon 只硬校验目标目录不逃出角色库根~/botmux-roles,不做按发送者的目录级 ACL。需要硬隔离私有角色时自行加系统级权限。 - 独立记忆:每个角色一份记忆,跨群/跨话题共享,越用越懂其领域。
- 上下文保留:切换时进程带
--resume重启,之前对话续回,新角色人设与记忆在新会话开场自动加载。 - 与
/cd区分:/cd <路径>(见 slash-commands)是通用的「切工作目录并重启」;角色切换只在角色库内、由角色协议驱动。 - 曾用命令名
botmux cd已改为botmux role switch(旧名保留为报错提示);维护存量部署时需把角色库里的_role-protocol.md刷新为新命令名。
相关页面
- multi-bot — 多机器人协作与 @mention 路由
- dashboard — 团队面板、Bot 配置与角色配置集入口
- slash-commands —
/role、/cd等斜杠命令总览