OpenClaw Discord Clawd 技能:通过 Relay 助手与 Discord 侧 Agent 会话通信
Discord Clawd 是 OpenClaw 仓库中一个面向 AI Agent 的协作技能(Skill),用于通过 OpenClaw relay 助手与 Discord 承载的 OpenClaw agent/session 对话、提问或按用户意图发帖。阅读本文后,你可以掌握该技能的适用边界(何时用它、何时改用 discrawl 或 discord-user-post)、relay 助手 targets/resolve/ask/publish/force-send 的完整命令用法,以及发送前必须遵守的安全护栏,从而在自动化流程中安全地经 Discord 路由消息。
1. 技能定位:它解决什么问题
技能的完整定义位于 .agents/skills/discord-clawd/SKILL.md,其 frontmatter 声明了名称与用途:
name: discord-clawd
description: Use to talk to the Discord-backed OpenClaw agent/session; not for archive search.
一句话概括其职责边界:
- 适用:任务是与 Discord 承载的 OpenClaw agent/session 对话、向它提问,或通过该路由发帖(post through that route);
- 不适用:Discord 归档、历史记录或搜索——这类任务必须改用
$discrawl技能。
这一“路由通信 vs 归档检索”的二分法是理解该技能的关键。OpenClaw 仓库里围绕 Discord 共有三条彼此正交的链路,Discord Clawd 只是其中一条:
| 技能 | 职责 | 对应文档 |
|---|---|---|
discord-clawd |
与 Discord 侧 agent/session 通信(问/答/发帖路由) | .agents/skills/discord-clawd/SKILL.md |
discrawl |
Discord 本地归档的检索、新鲜度检查、DM 查询、SQL 统计 | .agents/skills/discrawl/SKILL.md |
discord-user-post |
以登录用户身份(经桌面 App 操作)发布已批准消息 | .agents/skills/discord-user-post/SKILL.md |
例如 discord-user-post 技能 的 frontmatter 明确写着:适用于发布公告等“用户本人署名”的直发场景,且“不用于 OpenClaw channel 发送、bot、webhook、relay、agent 会话或归档检索”——这与 Discord Clawd 走 relay 的通道恰好互斥。三条链路各自独立、互不越界,是仓库中 Discord 工具链的整体设计思路。
技能的注册元数据在 .agents/skills/discord-clawd/agents/openai.yaml 中,定义了它在 Agent 交互界面的展示名与默认提示词:
interface:
display_name: "Discord Clawd"
short_description: "Talk to the Discord-backed OpenClaw agent"
default_prompt: "Use $discord-clawd to route a private ask or explicit post through the Discord-backed OpenClaw agent/session."
从该结构看,Agent 通过 $discord-clawd 这一斜杠引用调用技能,default_prompt 本身就点明了两种典型用法:**private ask(私密提问)**与 explicit post(显式发帖)——这也是下文投递模式划分的前置依据。
2. 传输层:OpenClaw relay 助手
文档指定了唯一传输通道——OpenClaw relay helper 脚本。注意:该脚本不在本仓库内,而是位于维护者机器上的 ~/Projects/agent-scripts 目录(本仓库中没有任何 openclaw_relay.py 的实现文件,这是使用前提,需自行确保该脚本可用):
cd ~/Projects/agent-scripts
python3 skills/openclaw-relay/scripts/openclaw_relay.py targets
python3 skills/openclaw-relay/scripts/openclaw_relay.py resolve --target maintainers
两个准备步骤各有用途:
targets:列出当前所有可用投递目标(别名清单)。在不知道能发给谁时,先运行它拿全量清单。resolve --target <alias>:把逻辑别名(如maintainers)解析为真实投递目标。发送任何真实内容之前必须先 resolve,这是文档护栏的第一条硬性要求。
目标别名存在时,优先采用“私密提问”(private ask):
python3 skills/openclaw-relay/scripts/openclaw_relay.py ask \
--target maintainers \
--message "Reply with exactly OK."
这个示例本身就是一个连通性探测(probe):要求对端“精确回复 OK”,以最低成本验证链路可用、目标正确,再决定是否发送真正的业务内容。这种“先探针、后正文”的做法与该仓库 QA 体系“先 smoke 再全量验证”的风格一致。
3. 三种投递模式:ask / publish / force-send
原文档对三种发送方式给出了精确的语义分工,这是本技能最核心的操作决策点:
| 模式 | 语义 | 使用条件 |
|---|---|---|
ask |
向已 resolve 的目标发起私密提问 | 目标别名存在时优先使用;默认首选 |
publish |
把内容交给 session,由会话自行决定是否发布 | 当你希望“是否对外发帖”这一决策权留在 agent 一侧时 |
force-send |
强制直接投递 | 仅当用户明确要求必须发出消息时才允许使用 |
三档模式构成了一个递进的“授权梯度”:ask 是最保守的一对一通道,publish 引入会话侧的自主判断,force-send 则是跳过一切自主判断的直接动作,因此文档对它施加了最强的使用约束——“only when the user explicitly wants a message posted”。在自动化 Agent 流程中实现该技能时,应当把这条约束落到调用逻辑里:非用户显式指令,代码路径上不应出现 force-send。
4. 护栏(Guardrails)四条原文继承
原文档的 Guardrails 一节共四条,逐条继承并展开如下:
- Resolve the target before sending real content. 发送真实内容前必须完成目标解析。
resolve输出是后续一切发送动作的前置校验——若解析失败或目标歧义,应停止而不是猜测投递。 - Report the target and delivery mode used. 每次操作后必须向用户报告“实际使用了哪个目标、哪种投递模式”。这条保证了通信行为的可审计性:执行方不能静默完成投递,用户总能复核“发给了谁、怎么发的”。
- Do not use this for local Discord archive queries. 本地 Discord 归档查询一律走
$discrawl。discrawl 技能 提供了完整的本地检索工具链:discrawl status --json查新鲜度、discrawl search --limit 20 "query"检索、discrawl sql做精确统计、discrawl doctor做例行诊断,数据库默认位于 XDG 数据目录(Linux 下为${XDG_DATA_HOME:-~/.local/share}/discrawl/discrawl.db)。把“通信”与“检索”混用同一条链路,既会污染会话上下文,也会绕过归档工具的新鲜度/缺口报告机制。 - Do not expose gateway tokens or session secrets. 不得在任何输出中暴露网关 token 或会话密钥。这与 OpenClaw 整体的密钥管理语义一致:docs/channels/discord.md 在 Discord 接入章节中同样反复强调“bot token 是 secret,不得在聊天中发送”,推荐通过
DISCORD_BOT_TOKEN环境变量配合openclaw config patch以source: "env"的 SecretRef 方式注入,而不是把明文凭证写进配置或消息。
5. 与仓库 Discord 工具链的协作关系
Discord Clawd 并非孤立存在。把它放回仓库全局,可以看到它与以下组件协同构成完整的 Discord 工作流:
- 接入前提:Discord 侧的 agent/session 要先跑起来,需要按 docs/channels/discord.md 完成 bot 创建、Privileged Gateway Intents(Message Content / Server Members)配置、OAuth2 邀请权限设置与 token 注入(
channels.discord.token使用 env SecretRef),再启动openclaw gateway。relay 的投递最终落到的就是这个 Discord 承载的会话。 - QA 证据通道:仓库的 channel-message-flows 技能 展示了另一条 Discord/Telegram 消息流的验证路径——通过 QA Lab 的
channel-message-flows场景(对应 qa/scenarios 下的场景定义)验证 draft/final 投递时序。Discord Clawd 的“发送后报告目标与模式”护栏,与此处“以证据为准绳”的测试理念相呼应:对外通信必须有可复核的落点记录。 - 归档侧:如第 4 节所述,
discrawl覆盖全部只读检索需求,其文档还明确了沙箱读取器discrawl-sandbox与 Git 快照的边界,Discord Clawd 的“不暴露会话密钥”护栏与之互补,共同划定公开面/私有面界限。
6. 实操清单(可直接复制)
综合原文档,一次标准的安全调用序列为:
# 1. 查看可用目标
cd ~/Projects/agent-scripts
python3 skills/openclaw-relay/scripts/openclaw_relay.py targets
# 2. 解析目标(发送前必做)
python3 skills/openclaw-relay/scripts/openclaw_relay.py resolve --target maintainers
# 3. 私密提问 / 连通性探针
python3 skills/openclaw-relay/scripts/openclaw_relay.py ask \
--target maintainers \
--message "Reply with exactly OK."
# 4. 需要“是否发布由会话决定”时用 publish;
# 仅当用户明确要求发出时才用 force-send。
收尾检查:
- [ ] 发送前是否执行了
resolve; - [ ] 是否向用户报告了实际目标与投递模式;
- [ ] 是否误把归档检索任务路由进了本技能(应改走
$discrawl); - [ ] 输出中是否泄露了 gateway token 或 session secret。
7. 小结
Discord Clawd 用约四十行的技能定义,刻画了一条“Agent 对 Agent 的跨 Discord 通信通道”:以 relay 脚本为唯一传输层,以 ask/publish/force-send 三档投递模式表达递进的授权级别,以四条护栏保证行为可审计、密钥不外泄,并明确把归档检索让渡给 $discrawl。理解这一技能的最好方式,是把它与 discrawl、discord-user-post 放在一起看——它们共同展示了 OpenClaw 仓库在 Discord 场景下“通信、检索、代发”三条链路职责分离的工程化设计。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00