Skip to content

本页说明如何将 OpenClaw 智能体以 ClickClack Bot 用户身份接入自托管工作区。你需要先通过 clickclack admin bot create 创建带有 bot:write 作用域的令牌,再配置 channels.clickclack 下的 tokenworkspaceagentId 等字段。支持多个 Bot 账户独立连接,每个账户需单独令牌和工作区。目标语法支持 channel:dm:thread: 三种。注意启用 allowAgentIdOverride 信任位后才能让 Bot 使用指定的 agentId 完成大模型回复。

ClickClack 通道接入与 Bot 配置

ClickClack 通道让 OpenClaw 通过 ClickClack Bot 令牌连接到自托管的 ClickClack 工作区。配置完成后,OpenClaw 智能体可以以 Bot 用户的身份在工作区中收发消息、回复线程和发起私信。

ClickClack 支持独立服务 Bot 和用户所属 Bot(owner_user_id 字段标识所属用户);用户所属 Bot 仅能使用你授予的令牌作用域。

快速设置

在 ClickClack 中创建 Bot 令牌

bash
clickclack admin bot create \
  --workspace <workspace_id_or_slug> \
  --name "OpenClaw" \
  --handle openclaw \
  --scopes bot:write \
  --plain

如需创建用户所属 Bot,追加 --owner &lt;user_id&gt;

配置 OpenClaw 网关

编辑配置文件(通常为 openclaw.config.json5):

json5
{
  plugins: {
    entries: {
      clickclack: {
        llm: {
          allowAgentIdOverride: true,
        },
      },
    },
  },
  channels: {
    clickclack: {
      enabled: true,
      baseUrl: "https://app.clickclack.chat",
      token: { source: "env", provider: "default", id: "CLICKCLACK_BOT_TOKEN" },
      workspace: "default",
      defaultTo: "channel:general",
      agentId: "clickclack-bot",
      replyMode: "model",
    },
  },
}

启动网关

bash
export CLICKCLACK_BOT_TOKEN="ccb_..."
openclaw gateway

参数说明

  • baseUrl:ClickClack 实例地址,默认为 https://app.clickclack.chat
  • token:支持从环境变量读取(推荐)或直接写入明文。使用环境变量时,source 设为 envid 为变量名。
  • workspace:ClickClack 工作区的 ID 或 slug(slug 通过 clickclack admin bot create 返回)。
  • defaultTo:未指定目标时的默认接收位置,格式见下方“目标语法”。
  • agentId:接入后显示的 Bot 名称。使用该字段必须同时开启 plugins.entries.clickclack.llm.allowAgentIdOverride(信任位),否则 OpenClaw 会拒绝为大模型补全指定 agent。
  • replyMode:设置为 "model" 时,Bot 的简短回复会直接通过 api.runtime.llm.complete 接口生成;默认行为是从会话历史中完整推理。

多 Bot 接入

每个 ClickClack 账户维护独立的实时连接,需使用不同的 Bot 令牌。配置时使用 accounts 对象替代顶层 tokenagentId

json5
{
  plugins: {
    entries: {
      clickclack: {
        llm: {
          allowAgentIdOverride: true,
        },
      },
    },
  },
  channels: {
    clickclack: {
      enabled: true,
      baseUrl: "https://app.clickclack.chat",
      defaultAccount: "service",
      accounts: {
        service: {
          token: { source: "env", provider: "default", id: "CLICKCLACK_SERVICE_BOT_TOKEN" },
          workspace: "default",
          defaultTo: "channel:general",
          agentId: "service-bot",
          replyMode: "model",
        },
        peter: {
          token: { source: "env", provider: "default", id: "CLICKCLACK_PETER_BOT_TOKEN" },
          workspace: "default",
          defaultTo: "dm:usr_...",
          agentId: "peter-bot",
          replyMode: "model",
        },
      },
    },
  },
}

defaultAccount 指定未匹配目标时使用的账户。每个账户的 agentId 仅在 allowAgentIdOverride 开启后生效。

目标语法

通过 openclaw message send 发送消息时,--target 参数支持三种格式:

语法说明示例
channel:&lt;name-or-id&gt;发送到工作区的指定频道。裸目标默认以 channel: 开头。channel:general
dm:&lt;user_id&gt;创建或复用与该用户的私信会话。dm:usr_123
thread:&lt;message_id&gt;回复指定消息所在的线程。thread:msg_123

示例命令:

bash
openclaw message send --channel clickclack --target channel:general --message "hello"
openclaw message send --channel clickclack --target dm:usr_123 --message "hello"
openclaw message send --channel clickclack --target thread:msg_123 --message "following up"

权限

ClickClack 令牌作用域由 ClickClack API 强制校验。OpenClaw 正常工作只需 bot:write

作用域权限
bot:read读取工作区、频道、消息、线程、私信、实时连接和用户简介
bot:write包含 bot:read 全部权限,并可发送频道消息、线程回复、私信和文件上传
bot:admin包含 bot:write 全部权限,并可创建频道

日常智能体对话中,bot:write 足够。

故障排查

  • "ClickClack is not configured":未设置 channels.clickclack.token 或环境变量 CLICKCLACK_BOT_TOKEN。检查配置文件和环境变量。
  • "workspace not found"workspace 字段值不是 ClickClack 返回的 ID 或 slug。运行 clickclack admin bot create 时确认输出。
  • Bot 不回复入站消息:确认令牌具有实时读取权限(bot:read 或更高),且 Bot 不会回复自己发送的消息(OpenClaw 默认忽略同 Bot 消息)。
  • 频道发送失败:确认 Bot 已被添加到目标工作区(非频道级别加入),并拥有 bot:write 作用域。

常见问题

ClickClack 连接失败怎么办?

检查 channels.clickclack.token 是否已设置,环境变量 CLICKCLACK_BOT_TOKEN 是否正确导出。同时确保 baseUrl 指向你的 ClickClack 实例(默认 https://app.clickclack.chat)。如果使用自签名证书,可能需要额外配置。

如何创建用户所属 Bot?

clickclack admin bot create 命令中追加 --owner &lt;user_id&gt;。例如:

bash
clickclack admin bot create --workspace myworkspace --name "MyBot" --handle mybot --scopes bot:write --owner usr_456 --plain

OpenClaw 在 ClickClack 中不回复消息,是什么原因?

常见原因:令牌缺少 bot:write 作用域;Bot 未加入工作区(仅创建令牌还不够,需要手动将 Bot 添加到工作区);workspace 配置错误;或者 Bot 试图回复自己发送的消息(OpenClaw 默认忽略同 Bot 消息)。检查网关日志中的 inbound 事件是否被忽略。