一、技能概述
该技能用于 macOS Parallels 烟雾测试场景,核心目标是验证 OpenClaw 在真实 macOS 虚拟机中能否通过 Discord 通道完成双向消息收发。它模拟了从零开始的完整部署流程:在干净的 macOS 快照上安装 OpenClaw,配置 Discord Bot 凭证,然后执行一个闭环的“发送-接收-回复-读取”测试。
核心原则:测试过程中不将 Discord token 或配置文件检入仓库,所有凭证在运行时动态注入,测试完成后自动清理临时消息并关闭虚拟机。
二、核心功能
1. 端到端闭环测试流程
技能执行一个完整的四步闭环验证:
| 步骤 | 动作 | 验证点 |
|---|---|---|
| ① 访客发送 | macOS 虚拟机内的 OpenClaw 向 Discord 频道发送一条消息 | 消息成功发出 |
| ② 主机接收 | 宿主机(测试运行者)在 Discord 上看到该消息 | 消息出现在频道历史中 |
| ③ 主机回复 | 宿主机在同一个 Discord 频道发布一条新消息 | 回复成功发送 |
| ④ 访客读取 | 虚拟机内的 OpenClaw 通过 message read 读取到该回复 |
回复出现在读取输出中 |
通过标准:summary 报告中 discord=pass,且访客发出的 nonce 出现在频道历史中,主机发出的回复出现在 openclaw message read 输出中。
2. 运行命令
首选运行方式:
export OPENCLAW_PARALLELS_DISCORD_TOKEN="$( ssh peters-mac-studio-1 'jq -r ".channels.discord.token" ~/.openclaw/openclaw.json' | tr -d '\n' )"
pnpm test:parallels:macos \
--discord-token-env OPENCLAW_PARALLELS_DISCORD_TOKEN \
--discord-guild-id 1456350064065904867 \
--discord-channel-id 1456744319972282449 \
--json
3. 快照管理
-
目标快照:最接近
macOS 26.3.1 fresh的快照 -
快照解析器:优先匹配
*-poweroff*克隆,以便复用仅磁盘恢复快照 -
CPU 不兼容处理:如果恢复日志显示
PET_QUESTION_SNAPSHOT_STATE_INCOMPATIBLE_CPU,丢弃挂起状态,创建*-poweroff*替换快照并重新运行 -
自动启动:脚本自动启动恢复的关机快照
4. 配置与命令规范
-
Discord 配置:在访客内部配置,无检入 token/config
-
消息子命令:使用
openclawwrapper 执行message send/read;node openclaw.mjs message ...无法以相同方式暴露懒加载消息子命令 -
JSON 配置:将
channels.discord.guilds写为单个 JSON 对象(--strict-json),而非点分隔的config set路径——数字 snowflake 会被视为数组索引 -
命令执行:避免使用
prlctl enter/expect 执行长 Discord 设置脚本(会换行/损坏长命令),改用prlctl exec --current-user /bin/sh -lc ...
5. 测试后清理
-
消息清理:测试结束时删除临时 Discord 烟雾消息
-
虚拟机停机:成功的 Discord 往返测试后,关闭 macOS 访客(
prlctl stop "macOS Tahoe");手动 ad-hoc Discord 检查后也需手动停止 VM -
⚠️ 重要:不要将配置了 Discord 的 VM 保持运行——它会持续在
#maintainer中读取/发帖,在测试完成后仍会向 Discord 发送垃圾消息
6. 故障排查
-
日志位置:
/tmp/openclaw-parallels-smoke.* -
往返抖动排查:先检查运行目录中的
fresh.discord-roundtrip.log和discord-last-readback.json -
JSON 输出:传递
--json获取机器摘要
7. 并行与负载注意
-
3-OS 全面扫描:共享构建锁在并行中是安全的,但快照恢复仍是 Parallels 瓶颈
-
主机高负载时:如果主机已处于高负载,优先序列化 Windows/Linux 恢复密集型 rerun
三、主要用途
-
macOS Parallels 烟雾测试
验证 OpenClaw 在真实 macOS 虚拟机中能否通过 Discord 通道完成端到端双向消息收发。 -
发布前 macOS 兼容性验证
在 Beta/Stable 发布前,确保 Discord 通道在 macOS 环境下正常工作。 -
Discord 通道回归测试
当 Discord 相关代码发生变更时,通过此闭环测试验证双向通信未被破坏。 -
快照恢复与自动化验证
验证 Parallels 快照恢复流程和自动化配置脚本在 macOS 环境中的可靠性。 -
CI/CD 集成
作为发布流水线的一部分,自动执行 macOS Discord 通道的端到端验证。
四、重要原则
-
凭证不检入:Discord token 在运行时通过环境变量注入,不写入配置文件或仓库
-
测试后必须关机:成功证明后自动关闭 VM,防止已配置 Discord 的 VM 持续在频道中发帖
-
避免 prlctl enter:长命令会因换行损坏,使用
prlctl exec替代 -
JSON 配置注意:snowflake ID 在点分隔路径中会被视为数组索引,需使用
--strict-json单对象写入 -
快照 CPU 不兼容时重建:遇到
PET_QUESTION_SNAPSHOT_STATE_INCOMPATIBLE_CPU时丢弃挂起状态并创建 poweroff 快照 -
主机高负载时序列化:快照恢复是 Parallels 瓶颈,避免并行恢复密集型任务
总结:Parallels Discord Roundtrip 是 OpenClaw 项目中用于验证 macOS Parallels 虚拟机 Discord 通道端到端双向通信的专用烟雾测试技能。它通过“访客发送 → 主机接收 → 主机回复 → 访客读取”的闭环流程,以自动化方式证明 Discord 通道在真实 macOS 环境中的可用性。该技能适用于 OpenClaw 维护者在发布前 macOS 兼容性验证、Discord 通道回归测试和 Parallels 自动化测试流程的场景。