Appearance
本页说明如何将 OpenClaw 智能体以 ClickClack Bot 用户身份接入自托管工作区。你需要先通过 clickclack admin bot create 创建带有 bot:write 作用域的令牌,再配置 channels.clickclack 下的 token、workspace 和 agentId 等字段。支持多个 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 <user_id>。
配置 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设为env,id为变量名。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 对象替代顶层 token 和 agentId:
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:<name-or-id> | 发送到工作区的指定频道。裸目标默认以 channel: 开头。 | channel:general |
dm:<user_id> | 创建或复用与该用户的私信会话。 | dm:usr_123 |
thread:<message_id> | 回复指定消息所在的线程。 | 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 <user_id>。例如:
bash
clickclack admin bot create --workspace myworkspace --name "MyBot" --handle mybot --scopes bot:write --owner usr_456 --plainOpenClaw 在 ClickClack 中不回复消息,是什么原因?
常见原因:令牌缺少 bot:write 作用域;Bot 未加入工作区(仅创建令牌还不够,需要手动将 Bot 添加到工作区);workspace 配置错误;或者 Bot 试图回复自己发送的消息(OpenClaw 默认忽略同 Bot 消息)。检查网关日志中的 inbound 事件是否被忽略。