返回顶部
c

clack部署管理Clack

Deploy and manage Clack, a voice relay server for OpenClaw. Bridges voice input (WebSocket) through STT → OpenClaw agent → TTS, enabling real-time voice conversations with your agent. Supports ElevenLabs, OpenAI, and Deepgram for STT/TTS. Per-session provider selection — users can independently choose STT and TTS providers (including on-device) from the app settings. Encrypted connections via Domain (SSL) or Tailscale. Supports local speech mode where STT/TTS run on-device and only LLM calls go

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.5.3
安全检测
已通过
390
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

clack

Clack

WebSocket 中继服务器,支持与 OpenClaw 代理进行实时语音对话。

流程: 客户端音频(PCM 16kHz/16位/单声道)→ STT → OpenClaw 网关 → TTS → PCM 音频返回客户端。

每会话提供商选择: 客户端可独立为每次通话选择 STT 和 TTS 提供商——支持设备端(Apple 语音框架)和服务器端提供商(ElevenLabs、OpenAI、Deepgram)的任意组合。服务器根据配置的 API 密钥自动检测所有可用提供商,并通过 /info 接口暴露。

前置条件

  • - Python 3.10+
  • 至少一个提供商的 API 密钥(ElevenLabs、OpenAI 或 Deepgram)——本地语音模式无需密钥
  • 启用了 chatCompletions 端点的 OpenClaw 网关
  • Root/sudo 权限(用于 systemd)
  • 安全连接: 带 SSL 的域名(推荐)或 Tailscale

安装

运行安装脚本。它会创建虚拟环境、安装依赖、提示输入 API 密钥、配置 systemd 服务,并可选择设置 SSL。

bash
sudo bash scripts/setup.sh

该脚本会自动检测您的 OpenClaw 网关配置,并交互式提示输入提供商 API 密钥(ElevenLabs、OpenAI、Deepgram——均为可选)。重新运行时,可保留、更新或删除现有密钥。

选项

bash
bash scripts/setup.sh [--port 9878] [--domain clack.example.com]

标志默认值描述
--port9878中继服务器端口
--domain
(无) | SSL 设置的域名(启用 WSS) |

连接模式

所有连接均已加密。应用支持两种模式:

带 SSL 的域名(推荐):
bash
bash scripts/setup.sh --domain clack.yourdomain.com

→ wss://clack.yourdomain.com/voice

需要将域名的 DNS A 记录指向您的服务器 IP。安装脚本通过 Caddy 自动配置 SSL。您可以使用 DuckDNS 的免费域名或自己的域名。

Tailscale:
bash

在服务器上安装 Tailscale,然后使用您的 Tailscale IP 从应用连接


→ ws://100.x.x.x:9878/voice(在网络层加密)

无需域名或 SSL 设置。Tailscale 在网络层加密所有流量。在服务器和手机上安装 Tailscale,然后在应用中使用服务器的 Tailscale IP。

安全说明: 端口 9878 应对公共互联网进行防火墙保护。仅允许通过 localhost(用于 Caddy 反向代理)和 Tailscale 访问。应用不支持未加密的公共连接。

启用 OpenClaw 网关端点

网关必须启用 chatCompletions。应用以下配置补丁:

json
{http: {endpoints: {chatCompletions: {enabled: true}}}}

管理

bash
clack status # 检查服务状态
clack restart # 重启服务器
clack logs # 查看日志
clack pair # 生成新的配对码
clack update # 拉取最新代码并重启
clack setup # 重新运行交互式设置(稍后添加 SSL、更新密钥等)
clack uninstall # 移除服务和虚拟环境

客户端应用

📱 iOS — 可在 App Store 获取(或从 github.com/fbn3799/clack-app 源码构建)
🤖 Android — 即将推出!

安全性

身份验证

除 GET /health 和 POST /pair 外的所有端点都需要有效的身份验证令牌(RELAYAUTHTOKEN)。令牌使用恒定时间 HMAC 比较进行验证,以防止时序攻击。

配对系统

  • - 6 位字母数字一次性代码(约 21 亿种组合)
  • 代码在 5 分钟(TTL)后过期,且为一次性使用
  • 速率限制: 每 IP 每 5 分钟 5 次尝试——超过后返回 HTTP 429
  • 失败尝试后 2 秒延迟以减缓暴力破解
  • 生成代码需要管理员身份验证令牌(GET /pair)
  • 兑换代码是公开的但受速率限制(POST /pair)

加密连接

  • - 域名模式: 通过 Caddy 使用自动 SSL 证书的 WSS(WebSocket Secure)
  • Tailscale 模式: 网络层的 WireGuard 加密
  • 应用强制使用加密连接——不支持未加密的公共访问
  • 端口 9878 应受防火墙保护;仅可通过 localhost 和 Tailscale 访问

输入清理

所有面向用户的文本输入在处理前均经过清理:
  • - 语音转录: 上限为 300 个字符(CLACKMAXINPUT_CHARS),回声检测过滤反馈循环,幻觉检测丢弃无意义的 STT 输出
  • 用户上下文: 仅保留自然语言字符(字母、数字、常见标点、空白)。控制字符、转义序列和不可打印字符被移除。上限为 1000 个字符。上下文在注入系统提示前被包裹在显式分隔符中。
  • 无 shell 执行: 所有外部通信使用结构化的 HTTP/WebSocket API。用户输入从不传递给 shell。

数据隐私

  • - 无分析、跟踪或遥测
  • 语音音频仅发送到您的服务器和您选择的提供商
  • iOS 应用仅在本地存储设置(服务器地址、令牌、偏好设置)
  • 第三方 API 使用取决于您的提供商配置(ElevenLabs、OpenAI、Deepgram)

会话路由

每次语音通话在 OpenClaw 中创建一个 clack: 会话。这些是小型、隔离的会话——每次通话一个——因此语音对话不会污染您的主代理上下文。

会话选择器

iOS 应用中的会话选择器仅提供上下文注入。当您选择会话密钥时,它作为文本上下文添加到 LLM 提示中——它不会改变路由。所有语音通话仍然创建自己的 clack: 会话。

用户上下文

用户可以提供持久上下文,该上下文被注入到每次语音通话的系统提示中。这让 AI 了解用户的偏好、笔记或任何背景信息。

如何设置上下文

  • - 应用文本字段: 在 Clack 应用的设置 → 上下文中,输入自由格式文本
  • 会话选择器: 选择一个 OpenClaw 会话以将其内容作为上下文注入
  • WebSocket 消息: 在语音会话期间发送 {type: set_context, text: ...}
  • HTTP API: PUT /context?token=...&text=... 或 POST /context 带 JSON 主体 {text: ...}

上下文在保存前经过清理——仅保留自然语言字符(字母、数字、常见标点)。IP 地址和域名被移除。服务器在响应中返回清理后的文本,以便应用向用户准确显示将作为上下文发送的内容。

上下文在通话和服务器重启之间持久存在。通过 DELETE /context 或发送空的 set_context 消息清除。

对话历史

中继维护一个跨通话的共享历史文件以实现连续性。历史记录以 JSON 格式存储在 CLACKHISTORYDIR(默认:/var/lib/clack/history)中。

  • - 最大消息数: 50(可通过 CLACKMAXHISTORY 配置)
  • 历史记录在通话和服务器重启之间持久存在
  • 可通过 GET /history 查看,通过 DELETE /history 清除

回声测试模式

用于测试音频往返而不消耗 LLM 额度:

  • - 服务器范围: 设置 CLACKECHOMODE=true 环境变量
  • 每会话: 从客户端发送 {type:start,config:{echo:true}}

在回声模式下,转录的文本通过 TTS 回显,而不是发送到 LLM。音频经过峰值归一化,增益上限确保一致的播放音量。

提供商选择

STT 和 TTS 提供商可独立配置每个会话。服务器在启动时根据设置的 API 密钥(ELEVENLABSAPIKEY、OPENAIAPIKEY、DEEPGRAMAPIKEY)自动检测所有可用提供商。

每个方向(STT / TTS)的可用模式:

  • - 设备端(本地): 使用 Apple 内置的语音框架。零 API 成本。
  • 服务器提供商: ElevenLabs、OpenAI 或 Deepgram——取决于配置了哪些密钥。

工作原理:

  1. 1. 应用获取 GET /info 以发现可用提供商
  2. 用户在设置

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 clack-1776298232 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 clack-1776298232 技能

通过命令行安装

skillhub install clack-1776298232

下载

⬇ 下载 clack v1.5.3(免费)

文件大小: 43.87 KB | 发布时间: 2026-4-16 18:32

v1.5.3 最新 2026-4-16 18:32
Clack 1.5.3 (includes unreleased 1.5.1 and 1.5.2):

- Setup script now interactively prompts for ElevenLabs, OpenAI, and Deepgram API keys instead of requiring env vars up front. Existing keys can be kept, changed, or deleted on re-run.
- New management CLI: `clack status`, `clack restart`, `clack logs`, `clack pair`, `clack update`, `clack setup`, and `clack uninstall` for easier service control.
- Improved input sanitization: user-provided context is strictly filtered for valid natural-language text, with hard character and length caps. Shell input is never possible.
- Expanded documentation and setup guidance, including full description of new input sanitization and updated example commands.
- No functional code changes; documentation and setup tooling only.

Archiver·手机版·闲社网·闲社论坛·智能体自动化市场· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2026 闲社网·AI智能体论坛·AI自动化解决方案·http://xianshe.com

p2p_official_large
返回顶部