本页内容

本页内容

区域平台

Feishu 动态代理

每用户代理隔离:为每个 Feishu DM 发送者提供自己的工作区、引导文件和对话历史记录。

按用户隔离智能体(动态智能体创建)

启用 dynamicAgentCreation 为每个 DM 用户自动创建 隔离代理实例。每个用户都有自己的:

  • 独立工作区目录
  • 单独的 USER.md / SOUL.md / MEMORY.md
  • 私有对话历史
  • 隔离的技能和状态

对于希望每个用户都拥有自己私有 AI 助手体验的公共机器人来说,这一点至关重要。

快速设置

json5
{  channels: {    feishu: {      dmPolicy: "open",      allowFrom: ["*"],      dynamicAgentCreation: {        enabled: true,        workspaceTemplate: "~/.openclaw/workspace-{agentId}",        agentDirTemplate: "~/.openclaw/agents/{agentId}/agent",      },    },  },  session: {    // Critical: makes each user's DM their "main session"    // Automatically loads USER.md / SOUL.md / MEMORY.md    // For stronger isolation, use "per-channel-peer" instead    dmScope: "main",  },}

工作原理

当新用户发送第一个 DM 时:

  1. 该频道会生成一个唯一的 agentId:默认账户为 feishu-{user_open_id},命名账户则为带有账户前缀的受限身份摘要
  2. 在 workspaceTemplate 路径下创建新的工作区
  3. 注册该智能体并为此用户创建绑定
  4. 工作区帮助程序在首次访问时创建丢失的引导文件(AGENTS.md、SOUL.md、USER.md 等)
  5. 将该用户未来的所有消息路由到其专属智能体

配置选项

设置 描述 默认值
channels.feishu.dynamicAgentCreation.enabled 启用自动每用户代理创建 false
channels.feishu.dynamicAgentCreation.workspaceTemplate 动态代理工作区的路径模板 ~/.openclaw/workspace-{agentId}
channels.feishu.dynamicAgentCreation.agentDirTemplate 代理目录名称模板 ~/.openclaw/agents/{agentId}/agent
channels.feishu.dynamicAgentCreation.maxAgents 创建的动态代理的最大数量 无限

模板变量:

  • {agentId} - 生成的代理 ID(e.g.、feishu-ou_xxxxxx 或 feishu-support-<identity_digest>)
  • {userId} - 发送方的Feishu open_id(e.g.,ou_xxxxxx)

会话范围

session.dmScope 控制私信如何映射到智能体会话。这是一个全局设置,会影响所有频道。

值 行为 最适合
"main" 每个用户的 DM 映射到其代理的主会话 您希望自动加载 USER.md / SOUL.md 的单用户机器人
"per-peer" 每个对端获得一个独立会话(与频道无关) 仅按发送者身份进行隔离
"per-channel-peer" 每个(频道 + 用户)组合获得一个独立会话 需要更强隔离的公共多用户机器人
"per-account-channel-peer" 每个(账户 + 频道 + 用户)组合获得一个独立会话 需要账户级会话隔离的多账户机器人

权衡:使用 "main" 可以启用引导文件的自动加载(USER.md、SOUL.md、MEMORY.md),但这意味着所有频道的所有私信都会共享相同的会话键模式。对于更看重隔离而不是引导自动加载的公共多用户机器人,建议使用 "per-channel-peer" 并手动管理引导文件。

典型多用户部署

json5
{  channels: {    feishu: {      appId: "cli_xxx",      appSecret: "xxx",      dmPolicy: "open",      allowFrom: ["*"],      groupPolicy: "open",      requireMention: true,      dynamicAgentCreation: {        enabled: true,        workspaceTemplate: "~/.openclaw/workspace-{agentId}",        agentDirTemplate: "~/.openclaw/agents/{agentId}/agent",      },    },  },  session: {    // Choose dmScope based on your isolation needs:    // "main" for bootstrap auto-loading, "per-channel-peer" for stronger isolation    dmScope: "main",  },  bindings: [], // Empty - dynamic agents auto-bind}

验证

检查网关日志,确认动态创建是否正常工作:

text
feishu: creating dynamic agent "feishu-ou_xxxxxx" for user ou_xxxxxx  workspace: /home/user/.openclaw/workspace-feishu-ou_xxxxxx  agentDir: /home/user/.openclaw/agents/feishu-ou_xxxxxx/agent

列出所有已创建的工作区:

bash
ls -la ~/.openclaw/workspace-*

说明

  • 工作区隔离:每个用户都会获得自己的工作区目录和智能体实例。在正常消息交互流程中,用户无法看到彼此的对话历史或文件。
  • 安全边界:这是一种消息上下文隔离机制,不是恶意共租户的安全边界。智能体进程和宿主环境是共享的。
  • 必须保持配置写入开启:动态智能体创建会将智能体和绑定写入配置;当 channels.feishu.configWrites 为 false 时会跳过(默认:开启)。
  • bindings 应为空:动态智能体会自动注册自己的绑定
  • 升级路径:现有的手动绑定可以与动态智能体并存
  • session.dmScope 是全局的:这会影响所有通道,而不仅仅是 Feishu
本页有帮助吗?