关于 openclaw-relay
OpenClaw Relay 是通过本地或 SSH 传输向 OpenClaw Agent 会话转发消息和任务的命令行技能,支持解析目标、私下询问、直接发送或经会话发布,以及排队处理异步任务。
主要功能
- 01通过本地或 SSH 转发
- 02解析目标别名
- 03询问、发送或发布消息
- 04排队并轮询异步任务
- 05检查中继健康状态
适用场景
- 01向 Agent 会话私下提问
- 02向已解析的频道目标发布消息
- 03在远程 OpenClaw 会话中排队任务
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ steipete/ agent-scripts --skill openclaw-relay安装后在 Claude Code 中输入/openclaw-relay确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlconfig/session_aliases.jsonscripts/openclaw_relay.pytest_doctor_token.py详细介绍
OpenClaw Relay
适用于以下任务:
- “与 Molty 对话”
- “将这条消息转发到 OpenClaw 频道会话”
- “使用 acpx”
- “通过 acp 经由网关发送这条消息”
- “通过 SSH 使用远程 OpenClaw 桥接服务”
不适用于 team.openclaw.ai:在 Team 服务器上启动或检查 Roboclaw 会话,请使用 openclaw/agent-skills 中的 $team-handoff(作为 Peter 通过 Cloudflare Access 发出一个 Gateway 请求;操作员值存放在 ~/.config/openclaw/team-handoff.env 中)。
一个技能,两种传输方式:
localssh
对于从当前 OpenClaw 检出目录直接进行的电话传话式任务,默认使用 local。当目标 Agent/会话位于另一台机器上时,使用 ssh。
对于 Peter 的配置,Molty 通常运行在 Mac Studio 网关上,可通过 [email protected] 连接;避免在一次性转发任务中使用 mac-studio SSH 别名,因为该别名会自动连接到 tmux。
脚本路径:scripts/openclaw_relay.py
目标别名文件:config/session_aliases.json
模式选择
在以下情况下选择 local:
- 用户明确说要使用
acpx - 目标会话位于当前机器上
- 目标是快速转发或私下询问
在以下情况下选择 ssh:
- 目标 Agent/会话位于另一台主机上
- 需要持久桥接会话
- 需要在远程机器上使用异步排队/等待/显示流程
默认值
该脚本不会硬编码个人路径。需要时可通过环境变量或标志覆盖。
- 传输方式:
local - 本地仓库工作目录:当前工作目录
- 本地 acpx 仓库:
<cwd>/extensions/acpx - ssh 主机:
[email protected] - 远程仓库工作目录:
<remote-home>/clawdbot - 远程 acpx 仓库:
<remote-home>/Projects/oss/acpx - 网关令牌文件:
<home>/.openclaw/gateway.token - 控制会话名称:
codex-bridge - 目标别名文件:
config/session_aliases.json
常用环境变量:
OPENCLAW_RELAY_TRANSPORTOPENCLAW_RELAY_HOSTOPENCLAW_RELAY_CWDOPENCLAW_RELAY_ACPX_REPOOPENCLAW_RELAY_GATEWAY_URLOPENCLAW_RELAY_GATEWAY_TOKEN_FILEOPENCLAW_RELAY_SESSIONOPENCLAW_RELAY_TARGETS_FILE
快速开始
健康检查:
python3 scripts/openclaw_relay.py doctor
列出已知目标别名:
python3 scripts/openclaw_relay.py targets
解析目标别名:
python3 scripts/openclaw_relay.py resolve --target maintainers
私下向目标会话提问:
python3 scripts/openclaw_relay.py ask \
--target maintainers \
--message "Summarize the current vibe in this channel."
强制向已解析的目标发送文本:
python3 scripts/openclaw_relay.py force-send \
--target maintainers \
--text "Deploy is done."
发送多行内容时,请使用 --text-file <path> 或 --text-file -,不要在 shell 中对消息加引号。
当用户明确要求在频道中发帖时,强制发送媒体:
python3 scripts/openclaw_relay.py force-send \
--transport ssh \
--host [email protected] \
--target maintainers \
--text "Demo video." \
--media /tmp/demo.mp4
使用持久控制会话:
python3 scripts/openclaw_relay.py ensure
python3 scripts/openclaw_relay.py send --message "Reply with exactly OK."
python3 scripts/openclaw_relay.py show
远程主机示例:
python3 scripts/openclaw_relay.py doctor --transport ssh --host [email protected]
python3 scripts/openclaw_relay.py send \
--transport ssh \
--host [email protected] \
--message "Reply with exactly OK."
异步工作流
将任务加入队列,并轮询同一控制会话:
python3 scripts/openclaw_relay.py start --message "Work on X and reply when done."
python3 scripts/openclaw_relay.py wait --after-seq <last-seq>
python3 scripts/openclaw_relay.py show
目标别名
config/session_aliases.json 中附带的是占位值。请将其替换为适用于你配置的真实值。
示例结构:
{
"main": "agent:<agentId>:main",
"maintainers": "agent:<agentId>:discord:channel:<channelId>"
}
会话规则
选择命令时请遵循以下规则:
- 需要特定会话的私密回复:
ask - 需要目标会话自行决定是否发帖:
publish - 需要确保直接发帖:
force-send - 需要与控制端大脑保持阻塞式连续交互:
send - 需要即发即忘的异步操作:先执行
start,再执行wait和show - 需要停止排队中的任务:
cancel
故障处理
如果转发失败:
- 运行
doctor。 - 运行
status。 - 运行
show。 - 如果控制会话卡住,运行
cancel,然后运行ensure,再重试。
如果路由发现结果不确定:
- 先解析目标。
- 优先使用别名或准确的会话键。
- 发送实际内容前,先进行一次简短的探测提问。
转发输出
返回实际的助手文本或发送结果,而不是 shell 噪声。
对于转发任务,请报告:
- 使用的传输方式
- 目标会话键
- 路由探测/解析是否成功
- 最终发送或返回的结果