Skip to content
广告 · 本站推荐广告

群组管理 - 群组配置与权限

本文详细介绍 OpenClaw 群组管理的各项配置,包括 Group Policy(群组策略)、逐群覆盖设置、工具沙箱权限等高级功能。

Group Policy(群组策略)

Group Policy(群组策略)是渠道级别的配置,决定 Agent(智能体)如何处理群组相关的交互。

三种策略详解

1. Open(开放)

yaml
channels:
  telegram:
    enabled: true
    groupPolicy: open
  • Agent 可以被添加到任何群组
  • 所有群组的消息都会被处理(受 requireMention 约束)
  • 无需预先配置群组列表
  • ⚠️ 风险:任何人都可以将 Agent 拉入不受控的群组

2. Disabled(禁用)

yaml
channels:
  slack:
    enabled: true
    groupPolicy: disabled
  • Agent 不会响应任何群组消息
  • 即使被拉入群组,也会静默忽略所有消息
  • 仅通过 DM(私信)交互
  • 适合纯私信场景的 Agent

3. Allowlist(白名单)

yaml
channels:
  feishu:
    enabled: true
    groupPolicy: allowlist
    groups:
      - id: "oc_group_001"
      - id: "oc_group_002"
  • Agent 仅响应白名单中的群组消息
  • 未列出的群组消息会被忽略
  • 最安全的群组接入方式
  • 推荐用于生产环境

推荐策略

生产环境推荐使用 allowlist 策略。你可以精确控制 Agent 在哪些群组中活动,避免资源滥用和信息泄露。

Allowlist(白名单)配置

基础配置

通过群组 ID 指定允许的群组:

yaml
channels:
  telegram:
    enabled: true
    groupPolicy: allowlist
    groups:
      - id: "group_12345"       # Telegram 群组 ID
      - id: "group_67890"
  slack:
    enabled: true
    groupPolicy: allowlist
    groups:
      - id: "C04ABCDEF"        # Slack Channel ID
      - id: "C04GHIJKL"
  feishu:
    enabled: true
    groupPolicy: allowlist
    groups:
      - id: "oc_group_a1b2"    # 飞书群组 Open Chat ID
      - id: "oc_group_c3d4"

获取群组 ID

不同平台获取群组 ID 的方式:

平台获取方式
Telegram@raw_data_bot 拉入群组,发送任意消息查看群组 ID
Slack右键点击频道名 → Copy → Copy link → 链接末尾即为 Channel ID
Discord开启开发者模式 → 右键频道 → Copy Channel ID
飞书管理后台 → 群组管理 → 群组详情 → Open Chat ID
企业微信企业管理后台 → 应用管理 → 群聊 ID
钉钉开放平台 → 群模板 → 群组 ID

CLI 管理白名单

bash
# 查看当前白名单
openclaw groups list telegram

# 输出示例:
# Channel    Group ID        Name            Status     Members
# telegram   group_12345     产品讨论群        active     15
# telegram   group_67890     技术交流群        active     32

# 添加群组到白名单
openclaw groups add telegram group_99999

# 从白名单移除
openclaw groups remove telegram group_12345

# 批量添加
openclaw groups add telegram group_111 group_222 group_333

Per-group Config(逐群覆盖配置)

每个群组可以有独立的配置,覆盖渠道级别的默认设置。

完整配置示例

yaml
channels:
  telegram:
    enabled: true
    groupPolicy: allowlist
    # 渠道级别默认值
    requireMention: true
    groups:
      # 群组 1:产品讨论群 — 使用默认配置
      - id: "group_product"
        name: "产品讨论群"          # 可选:群组别名(便于管理)

      # 群组 2:技术交流群 — 自定义配置
      - id: "group_tech"
        name: "技术交流群"
        requireMention: false       # 覆盖:不需要 @mention
        mode: "non-main"           # 限制工具权限
        tools:
          allow:
            - "search"
            - "code_review"
            - "explain"

      # 群组 3:管理员群 — 完整权限
      - id: "group_admin"
        name: "管理员群"
        requireMention: false
        mode: "main"               # 完整权限
        tools:
          allow: ["*"]             # 允许所有工具

      # 群组 4:客户支持群 — 严格限制
      - id: "group_support"
        name: "客户支持群"
        requireMention: true
        mode: "non-main"
        tools:
          allow:
            - "search_faq"
            - "create_ticket"
          deny:
            - "file_*"
            - "system_*"
            - "db_*"
        rateLimit:
          maxRequests: 20
          windowSeconds: 60

配置继承与覆盖规则

配置的优先级从高到低:

群组级别配置(Per-group)
    ↓ 覆盖
渠道级别配置(Channel)
    ↓ 覆盖
全局默认配置(Global Default)
yaml
# 全局默认
defaults:
  requireMention: true
  mode: "non-main"

channels:
  telegram:
    # 渠道级别:覆盖全局默认
    requireMention: true    # 与全局一致,可省略
    mode: "non-main"        # 与全局一致,可省略
    groups:
      - id: "group_admin"
        # 群组级别:覆盖渠道级别
        requireMention: false  # 仅此群组不需要 @mention
        mode: "main"           # 仅此群组有完整权限

配置合并策略

覆盖配置使用 Shallow Merge(浅合并)策略。群组级别的 tools 配置会完全替换渠道级别的 tools 配置,而不是合并。

工具沙箱(Tool Sandboxing)

按群组配置工具权限

yaml
channels:
  feishu:
    groups:
      # 研发群:允许代码相关工具
      - id: "oc_dev_team"
        tools:
          allow:
            - "code_*"         # 所有 code_ 前缀的工具
            - "git_*"          # 所有 git_ 前缀的工具
            - "search"
            - "explain"
          deny:
            - "code_delete"    # deny 优先级高于 allow

      # 市场群:允许内容创作工具
      - id: "oc_marketing"
        tools:
          allow:
            - "write_*"
            - "translate"
            - "summarize"
            - "image_generate"

      # 财务群:仅允许查询
      - id: "oc_finance"
        tools:
          allow:
            - "query_finance"
            - "report_generate"
          deny:
            - "*_write"
            - "*_delete"
            - "*_update"

按发送者配置工具权限

yaml
channels:
  slack:
    groups:
      - id: "C04GENERAL"
        toolsBySender:
          # 特定用户:完整权限
          "U_ADMIN_01":
            allow: ["*"]
          "U_ADMIN_02":
            allow: ["*"]

          # 另一个用户:部分权限
          "U_DEV_01":
            allow:
              - "code_*"
              - "search"

          # 默认规则:适用于未单独配置的用户
          default:
            allow:
              - "search"
              - "summarize"
            deny:
              - "file_*"
              - "system_*"

工具权限冲突

toolstoolsBySender 同时配置时,两者取交集。也就是说,一个工具必须同时被 toolstoolsBySender 允许,才能在群组中使用。

requireMention 逐群覆盖

yaml
channels:
  telegram:
    requireMention: true    # 渠道默认:需要 @mention
    groups:
      # 小型团队群:不需要 @mention,Agent 参与所有讨论
      - id: "group_core_team"
        requireMention: false

      # 大型讨论群:需要 @mention,避免刷屏
      - id: "group_all_hands"
        requireMention: true    # 与渠道默认一致,可省略

群组状态管理

查看群组状态

bash
# 查看所有渠道的群组状态
openclaw groups status

# 输出示例:
# Channel    Group ID         Name           Policy     Mention   Mode       Messages
# telegram   group_product    产品讨论群       allowlist   yes      non-main   1,234
# telegram   group_tech       技术交流群       allowlist   no       non-main   5,678
# slack      C04GENERAL       #general       allowlist   yes      non-main   890
# feishu     oc_dev_team      研发团队群       allowlist   no       main       12,345

# 查看特定群组的详细配置
openclaw groups info telegram group_product

动态管理

bash
# 暂停群组的 Agent 响应
openclaw groups pause telegram group_12345

# 恢复群组的 Agent 响应
openclaw groups resume telegram group_12345

# 清除群组会话历史
openclaw groups clear-history telegram group_12345

# 重新加载群组配置(无需重启)
openclaw groups reload

完整配置示例

以下是一个多渠道、多群组的完整配置示例:

yaml
# openclaw.yaml — 完整群组管理配置
channels:
  telegram:
    enabled: true
    dmPolicy: pairing
    groupPolicy: allowlist
    requireMention: true
    groups:
      - id: "group_core"
        name: "核心团队"
        requireMention: false
        mode: "main"
        tools:
          allow: ["*"]
      - id: "group_community"
        name: "社区交流"
        requireMention: true
        mode: "non-main"
        tools:
          allow: ["search", "explain", "translate"]
        rateLimit:
          maxRequests: 15
          windowSeconds: 60

  feishu:
    enabled: true
    dmPolicy: allowlist
    groupPolicy: allowlist
    requireMention: true
    groups:
      - id: "oc_engineering"
        name: "工程团队"
        requireMention: false
        mode: "main"
        tools:
          allow: ["code_*", "git_*", "search", "file_read"]
        toolsBySender:
          "ou_tech_lead":
            allow: ["*"]
          default:
            allow: ["code_review", "search", "explain"]
      - id: "oc_product"
        name: "产品团队"
        requireMention: true
        mode: "non-main"
        tools:
          allow: ["search", "summarize", "translate", "write_doc"]

  wecom:
    enabled: true
    dmPolicy: pairing
    groupPolicy: allowlist
    requireMention: true
    groups:
      - id: "wc_support"
        name: "客户支持"
        requireMention: true
        mode: "non-main"
        tools:
          allow: ["search_faq", "create_ticket", "query_order"]

最佳实践

  1. 最小权限原则:每个群组只开放必要的工具,使用 deny 明确禁止高危操作
  2. 分层管理:核心团队群给予更多权限,公开群严格限制
  3. 定期审计:通过 openclaw groups status 定期审查群组配置
  4. 使用别名:在配置中为群组添加 name 字段,便于管理和识别
  5. 渐进开放:先用 allowlist + requireMention: true 启动,根据实际需求逐步放开

🇨🇳 中国用户须知

飞书群组管理: 飞书支持通过管理后台批量获取群组 Open Chat ID。如果你的企业有大量飞书群组需要接入,可以通过飞书开放平台 API 批量查询群组列表,然后导入到 OpenClaw 配置中。

企业微信群聊: 企业微信的群聊机器人有消息频率限制(默认每分钟 20 条)。建议在 rateLimit 中配置与企业微信限制一致的参数,避免消息被平台丢弃。

钉钉群组: 钉钉群机器人分为「自定义机器人」(仅发送)和「企业内部应用机器人」(可接收)。OpenClaw 使用后者,请确保在钉钉开放平台中正确配置消息接收地址(Webhook URL)。

多渠道群组同步: 如果同一个团队同时使用飞书和企业微信,可以通过 渠道路由 将不同渠道的群组路由到同一个 Agent,实现跨平台统一管理。

基于MIT协议开源 | 内容翻译自 官方文档,同步更新