对着浏览器说话,派上的 agent 去跑工具,再用语音答回来。
WEBRTC VOICE · LIVEKIT · TOOL-EXECUTING AGENT ON THE PI
个人树莓派与家庭服务器实验仓,活跃开发在 voicekit/:浏览器和语音助手开一场实时语音通话,你说中文,助手听懂、回答、用语音说回来。LLM 后端是跑在派上的 pi / sol-pi CLI agent,经 ssh 走 ACP 协议,所以助手能真的在派上执行工具。语音链路基于 LiveKit,信令走 HTTPS/WSS,媒体走 WebRTC UDP。
浏览器 (iPhone Safari / 桌面 Chrome) │ HTTPS + WSS ▼ gateway.py :8445 aiohttp + TLS · 唯一对外入口 /login /logout HMAC cookie · 10 分钟内 5 次失败返回 429 锁 10 分钟 /tk 铸 LiveKit token · 注册表存 sha256 · TTL 2h /livekit/** wss + http 反向代理 │ ws://127.0.0.1:7880 ▼ livekit-server docker --network host TCP 7880 信令 · TCP 7881 媒体兜底 · UDP 7882 媒体 ICE 直连 │ ▼ worker agent.py VAD livekit 内置本地 silero STT SiliconFlow ASR → XingChenAGI/XingChenGSR-V1.0 非流式 LLM GatewayLLM 回退链 solpi → newapi → siliconflow → platform TTS MiMo mimo-v2.5-tts SSE 流式 · pcm16 / 24 kHz 单声道 │ ▼ bridge/index.ts :8790 只绑 127.0.0.1 · POST /utterance 走 SSE │ ssh ▼ pi-acp on the Pi ACP · 流式 + 工具 · 降级链 pi-acp → pi -p → error
VAD 用 livekit 内置 silero。STT 走 SiliconFlow ASR。LLM 是 GatewayLLM 回退链,顺序由 VOICEKIT_LLM_BACKENDS 配置。TTS 是 MiMo,SSE 流式返回 pcm16 / 24 kHz。
GatewayLLM 本身不支持工具调用,tools 参数会被忽略。工具能力来自 pi-acp 那一侧的 agent。
pi-acp(ssh ACP 常驻会话,流式加工具)失败时降到 pi -p(ssh 一次性,按句切块),再失败报错。桥只绑 127.0.0.1:8790。
8445 TCP 是唯一对外入口,7882 UDP 走媒体。7880 与 7881 未鉴权且因 --network host 绑在所有网卡上,README 要求不对外开。
ACP_INIT_TIMEOUT_MS 代码默认 12000,pi-acp 冷启动常超过 12 秒,部署值在 service 文件里覆盖为 30000。
仓库没有 LICENSE 和版本。根 README 列出的子项目中只有 voicekit 在仓库里,agent-chatroom 已是独立仓库。不传 --keys 时 --dev 会退回占位符密钥,README 把这列为本项目最重要的一条安全约束。