ClawSkills logoClawSkills

ClawVoice

连接到实时语音会话,使用随附的客户端脚本通过 WebSocket 接口实时接收和发送消息。

介绍

# Claw Voice

您已通过语音连接到实时用户会话。用户正通过语音界面向您对话。请使用随附的 `client.py` 脚本与其进行实时通信。

该脚本位于 `$skill_dir/client.py`。

## 向用户发送消息

若要向用户说话,请运行:

```bash uv run python $skill_dir/client.py send "Hello! How can I help you today?" ```

服务器会以 JSON 格式回传确认信息:

```json {"type": "echo", "content": "Hello! How can I help you today?"} ```

## 接收下一条用户消息

若要等待用户说话:

```bash uv run python $skill_dir/client.py recv ```

这将阻塞直到用户说话,然后以 JSON 格式打印其消息并退出:

```json {"type": "message", "content": "What's the weather like?"} ```

使用 `--timeout` 控制等待时长(默认 30 秒):

```bash uv run python $skill_dir/client.py recv --timeout 60 ```

如果超时且没有消息,它将打印错误并以代码 1 退出。

## 监听多条消息

若要接收一段时间内的消息流:

```bash uv run python $skill_dir/client.py listen --timeout 60 ```

这将以 JSON 行的形式打印每条传入消息,直到超时:

``` {"type": "message", "content": "Tell me a joke"} {"type": "message", "content": "Actually, make it about cats"} ```

## 作为代理网关运行

`agent` 命令创建一个循环:它监听用户消息,将每条消息转发给 `openclaw agent --agent main --message '<message>'`,捕获标准输出,并通过 WebSocket 发回给用户。

```bash uv run python $skill_dir/client.py agent ```

默认情况下,这将无限期运行。使用 `--timeout` 限制会话时长:

```bash uv run python $skill_dir/client.py agent --timeout 300 ```

每条消息的处理流程:

1. 用户说话 -> 服务器向客户端发送 `{"type": "message", "content": "..."}` 2. 客户端运行 `openclaw agent --agent main --message '...'` 并捕获标准输出 3. 客户端将代理的响应发回:`{"type": "message", "content": "<stdout>"}`

日志将以标准错误输出打印为带有 `[user]` 和 `[agent]` 前缀的行。

## 连接选项

所有命令均接受 `--url` 以覆盖默认 WebSocket 地址:

```bash uv run python $skill_dir/client.py --url ws://$host:$port/connect send "Hi" ```

默认 URL:`ws://localhost:3111/connect`

## 消息类型参考

### 您发送的消息(agent -> user)

| Type | Fields | Description | |-----------|---------------------|---------------------------------| | `message` | `content` (string) | 要朗读/显示给用户的文本 |

### 您接收的消息(user -> agent)

| Type | Fields | Description | |-----------|---------------------|-------------------------------------| | `message` | `content` (string) | 用户所说的内容(转录文本) | | `echo` | `content` (string) | 服务器对您已发送消息的确认 —— 忽略这些 | | `pong` | | 连接健康检查响应 —— 忽略这些 |

## 行为准则

- 及时回复您从用户那里收到的每一条 `message`。 - 保持回复对话式且简洁 —— 用户是在说话,而不是阅读。 - 一次发送一条消息。不要批量发送。 - 忽略 `echo` 消息 —— 它们是确认信息,不是用户输入。 - 在轮次对话(turn-based conversation)中使用 `recv`。当您预期用户会说多件事时,使用 `listen`。

更多产品