mcpField
O
openclaw-relay

openclaw-relay

github.com/steipeteAgent 工作流7.4k116 次安装1 周前更新
代码仓库

关于 openclaw-relay

OpenClaw Relay 是通过本地或 SSH 传输向 OpenClaw Agent 会话转发消息和任务的命令行技能,支持解析目标、私下询问、直接发送或经会话发布,以及排队处理异步任务。

主要功能

  1. 01通过本地或 SSH 转发
  2. 02解析目标别名
  3. 03询问、发送或发布消息
  4. 04排队并轮询异步任务
  5. 05检查中继健康状态

适用场景

  1. 01向 Agent 会话私下提问
  2. 02向已解析的频道目标发布消息
  3. 03在远程 OpenClaw 会话中排队任务

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/steipete/agent-scripts --skill openclaw-relay

安装后在 Claude Code 中输入/openclaw-relay确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
config/
session_aliases.json
scripts/
openclaw_relay.py
test_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 中)。

一个技能,两种传输方式:

  1. local
  2. ssh

对于从当前 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_TRANSPORT
  • OPENCLAW_RELAY_HOST
  • OPENCLAW_RELAY_CWD
  • OPENCLAW_RELAY_ACPX_REPO
  • OPENCLAW_RELAY_GATEWAY_URL
  • OPENCLAW_RELAY_GATEWAY_TOKEN_FILE
  • OPENCLAW_RELAY_SESSION
  • OPENCLAW_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

故障处理

如果转发失败:

  1. 运行 doctor。
  2. 运行 status。
  3. 运行 show。
  4. 如果控制会话卡住,运行 cancel,然后运行 ensure,再重试。

如果路由发现结果不确定:

  1. 先解析目标。
  2. 优先使用别名或准确的会话键。
  3. 发送实际内容前,先进行一次简短的探测提问。

转发输出

返回实际的助手文本或发送结果,而不是 shell 噪声。

对于转发任务,请报告:

  • 使用的传输方式
  • 目标会话键
  • 路由探测/解析是否成功
  • 最终发送或返回的结果

评论

支持 Markdown