人工智能大模型LLM 网关AI Agent即时通讯【免费下载链接】openclaw-zero-tokenOpenClaw: Use All Major AI Models NO API Token! Claude/ChatGPT/Gemini/DeepSeek/Doubao/Grok/Qwen/Manus/Kimi项目地址https://gitcode.com/gh_mirrors/op/openclaw-zero-token点击查看免费下载导读本文以 OpenClaw 官方语音通话插件openclaw/voice-call的 CHANGELOG 为骨架系统梳理该插件自0.1.0首发以来的能力矩阵与关键破坏性变更。你将了解插件支持哪些电信提供商Twilio / Telnyx / Plivo / Mock、两种外呼模式notify / conversation如何工作、入站策略与 allowlist 如何配置、Webhook 服务器与 ngrok / Tailscale 暴露方案、OpenAI Realtime 流式 STT 的接入细节以及 2026.1.26 版本中电话 TTS 迁移到核心messages.tts后配置项如何调整。文中所有结论均以当前仓库源码与配置为证据可对照文件路径深入验证。一、版本演进概览与核心 OpenClaw 对齐的发布节奏CHANGELOG 前半部分2026.3.1至2026.3.14含2026.3.8-beta.1的每个条目都只有一句相同的说明Version alignment with core OpenClaw release numbers.版本号与 OpenClaw 核心发行号对齐。这说明 voice-call 插件在 0.1.0 首发之后进入了一个稳定维护期——其功能面没有大幅变动但插件版本号跟随 OpenClaw 核心版本发布节奏同步递增。这种对齐策略的收益在于用户可以通过核心版本号直接判断插件是否匹配当前宿主环境避免版本错配package.json中的peerDependencies与install.minHostVersion均声明2026.3.28即插件要求宿主 OpenClaw 至少为 2026.3.28package.json 中openclaw.release.publishToNpm表明该插件通过 npm 渠道发布。两个真正承载技术信息的里程碑是0.1.0——首个公开版本一次性引入了四大提供商、双模式外呼、入站策略、Webhook、流式 STT/TTS、CLI、网关 RPC 与可观测性的完整能力矩阵2026.1.26——引入破坏性变更电话 TTS 全面迁移到核心messages.tts配置废弃了插件自带的旧字段。下文分别对这两个里程碑展开源码级剖析。二、0.1.0 首发功能矩阵从提供商到可观测性的完整链路2.1 四大提供商Twilio / Telnyx / Plivo / MockCHANGELOG 首发条目声明支持Twilio (Programmable Voice Media Streams)、Telnyx (Call Control v2)、mock provider for local dev。结合 README 与源码实际能力矩阵为提供商协议/产品关键配置适用场景TwilioProgrammable Voice Media StreamsaccountSid/authToken生产首选支持 WebSocket 双向音频流TelnyxCall Control API v2apiKey/connectionId/publicKey生产备选需 webhook 公钥验签PlivoVoice API XML transfer GetInput speechauthId/authToken生产备选README 已补充CHANGELOG 0.1.0 未列出Mock无网络调用无需凭证本地开发/测试所有提供商在 providers/base.ts 中实现了统一的VoiceCallProvider接口职责明确verifyWebhook(ctx)——校验 webhook 签名/HMAC必须在解析事件前调用parseWebhookEvent(ctx, options?)——把各提供商私有负载归一化为统一事件initiateCall(input)/hangupCall(input)——外呼发起与挂断playTts(input)/startListening(input)/stopListening(input)——媒体控制getCallStatus(input)——重启时向提供商核对持久化通话是否仍存活瞬时错误网络、5xx必须返回isUnknown: true以便调用方保留通话并依赖定时器兜底。providers/telnyx.ts 与 providers/twilio.ts 各自封装了提供商 REST API 与签名校验逻辑MockProvider 则让整套状态机在无网络环境下可完整跑通。2.2 外呼双模式notify 与 conversationCHANGELOG 提到 outbound notify vs. conversation modes, configurable auto-hangup, and multi-turn continuation。源码在 config.ts 中用CallModeSchema定义了两种模式notify默认单向通知——接通后播报消息TTS 播放结束延迟notifyHangupDelaySec默认 3 秒后自动挂断。Twilio 场景下直接以内联 TwiML 下发SayHangup/见 manager/twiml.ts无需走 webhook 往返conversation保持通话开启支持多轮问答continue续话直到显式end或触发maxDurationSeconds默认 300 秒超时。相关可调参数与默认值均来自 config.ts参数默认值含义outbound.defaultModenotify外呼默认模式outbound.notifyHangupDelaySec3notify 模式下 TTS 后自动挂断延迟秒maxDurationSeconds300最大通话时长秒ringTimeoutMs30000外呼振铃超时毫秒silenceTimeoutMs800静音判定说话结束的阈值毫秒transcriptTimeoutMs180000等待用户语音转写结果的超时毫秒maxConcurrentCalls1最大并发通话数staleCallReaperSeconds0陈旧通话自动回收阈值秒0 表示禁用2.3 入站处理disabled / allowlist / open 三态策略CHANGELOG 声称 Inbound handling: policy controls (disabled/allowlist/open), allowlist matching, and inbound greeting。源码中的InboundPolicySchemaconfig.ts实际枚举了四个值disabled默认拒绝所有入站来电仅支持外呼allowlist仅接受allowFrom名单中的号码pairing未知来电者可请求配对预留能力open接受所有来电危险选项需谨慎。allowFrom数组中的号码统一按 E.164 格式校验正则^\[1-9]\d{1,14}$。allowlist 的匹配逻辑在 allowlist.ts 中实现normalizePhoneNumber剥离所有非数字字符后做严格相等比较避免国际区号写法差异导致误判。inboundGreeting用于入站接通后的欢迎语。2.4 Webhook 服务器内置 HTTP 服务与公网暴露CHANGELOG 提到 Webhooks: built-in server with configurable bind/port/path pluspublicUrloverride。对应配置块serve的默认值为port: 3334、bind: 127.0.0.1、path: /voice/webhook见 config.ts。webhook.ts 中的VoiceCallWebhookServer负责接收三家提供商的事件回调先做签名/HMAC 校验再解析在streaming.enabled时升级 WebSocket 处理媒体流通过webhookSecurity配置allowedHosts/trustForwardingHeaders/trustedProxyIPs控制 X-Forwarded-* 头信任策略防止 URL 重建被伪造内置请求体大小上限与超时保护MAX_WEBHOOK_BODY_BYTES、WEBHOOK_BODY_TIMEOUT_MS并限制同一时刻 in-flight 的 webhook 处理数量。公网暴露exposure有两条路径ngroktunnel: { provider: ngrok }可选ngrokAuthToken通过环境变量NGROK_AUTHTOKEN注入与ngrokDomain自定义域名付费功能。实现位于 tunnel.ts 的startNgrokTunnelspawnngrok http port解析 JSON 日志中的started tunnel消息获取公网 URL 并拼接路径Tailscaletailscale: { mode: serve | funnel, path: /voice/webhook }——serve仅对 tailnet 私有暴露funnel提供公网 HTTPS。实现通过调用tailscale serve/funnel命令完成见 webhook/tailscale.ts 与getTailscaleDnsName。此外publicUrl配置可直接指定公网 webhook URL若设置则绕过隧道自动探测。2.5 流式 STTOpenAI Realtime 音频流转写CHANGELOG 声称 Streaming: OpenAI Realtime STT over media WebSocket with partial final transcripts。实现链路为media-stream.ts 的MediaStreamHandler建立 WebSocket 服务端接收 Twilio 推送的 mu-law 8kHz 音频转发给 OpenAI Realtime STTproviders/stt-openai-realtime.ts 的OpenAIRealtimeSTTProvider通过wss://api.openai.com/v1/realtime?intenttranscription建立会话支持服务端 VAD静音检测、partial 回调实时中间结果与 final 转写说话结束后完整结果断线自动重连最多 5 次STT 默认模型为gpt-4o-transcribesilenceDurationMs默认 800msvadThreshold默认 0.50~1越大越不敏感。流媒体通道配有完整的安全与容量护栏config.ts 与 media-stream.tspreStartTimeoutMs默认 5000未在时限内发出合法start帧的预认证连接将被关闭防御闲置连接占用攻击maxPendingConnections默认 32最大并发待启动连接数maxPendingConnectionsPerIp默认 4单 IP 待启动连接上限maxConnections默认 128全部开放媒体流连接硬上限发送缓冲上限 1MBMAX_WS_BUFFERED_BYTES防止背压失控。2.6 语音合成首发形态OpenAI TTS TwilioSay兜底首发版本中TTS 使用 OpenAI TTSmodel/voice/instructions三个字段Twilio 场景在流媒体不可用时以Say指令兜底。voice-mapping.ts 提供了一个重要的兼容层将 OpenAI 语音名映射到 Twilio Polly 语音——例如alloy → Polly.Joanna、onyx → Polly.Brian、nova → Polly.Salli未知名回退Polly.Joanna。这保证了同一套 voice 配置在流式 TTS 与 TwiMLSay两种通道下声音风格一致。2.7 工具 / 网关 RPC / CLI三层控制面CHANGELOG 首发条目标明三层操作入口源码均有对应实现Agent 工具voice_call五个 actionAction参数用途initiate_callmessage, to?, mode?发起外呼continue_callcallId, message续话并等待回复speak_to_usercallId, message单向播报end_callcallId挂断get_statuscallId查询状态Gateway RPCvoicecall.initiate | continue | speak | end | status另兼容遗留的voicecall.start供网关侧程序化调用参数与工具 action 一一对应。CLI注册于 cli.ts 的voicecall命令组命令必填参数说明call--message--to可省略回退配置toNumber发起外呼打印 JSON{callId}start--tocall的兼容别名continue--call-id--message播报并等待回应speak--call-id--message只播报不等待end--call-id挂断status--call-id输出通话 JSON 状态tail--file/--since/--poll实时 tail JSONL 通话日志latency--file/--last汇总最近 N 条记录的 turn 延迟与监听等待时长min/max/avg/p50/p95expose--mode off\|serve\|funnel启停 Tailscale serve/funnel 暴露其中call与start的--mode默认值在 CLI 实现中是conversation与配置默认notify不同tail的默认日志路径为~/.openclaw/voice-calls/calls.jsonl可由store配置覆盖——这些细节以 cli.ts 源码为准。2.8 可观测性与响应控制JSONL 通话日志CallManager将每条通话记录含 state、transcript、metadata 中的lastTurnLatencyMs等追加写入calls.jsonlCLIvoicecall tail与voicecall latency均基于该文件响应控制responseModel默认openai/gpt-4o-mini、responseSystemPrompt、responseTimeoutMs默认 30000三个参数控制 AI 自动应答的模型、提示与超时。自动应答的语音输出采用严格的 JSON 契约{spoken:...}。response-generator.ts 展示了完整链路——以主叫号码归一化后的voice:digits作为 session key复用与消息通道相同的嵌入式 Pi Agent 基础设施runEmbeddedPiAgent并通过VOICE_SPOKEN_OUTPUT_CONTRACT约束模型只输出可播报内容随后extractSpokenTextFromPayloads会剔除代码围栏、isReasoning/isError负载以及 Thinking process、Reasoning: 等疑似元思考段落只把干净语音文本交给 TTS。三、2026.1.26TTS 迁移与破坏性变更详解2026.1.26是 CHANGELOG 中唯一标注Breaking的版本共四条变更全部围绕通话语音合成配置的重构3.1 核心变更电话 TTS 迁移到messages.ttsBreaking: voice-call TTS now uses coremessages.tts(plugin TTS config deep-merges with core).迁移后通话中的流式语音由OpenClaw 核心的messages.tts配置统一驱动插件自己的tts配置块仅作为覆盖层通过deep-merge深度合并叠加到核心配置之上。源码佐证在 telephony-tts.tscreateTelephonyTtsProvider先调用applyTtsOverride(coreConfig, ttsOverride)将插件tts配置与coreConfig.messages.tts执行deepMergeDefined深度合并仅覆盖显式定义的字段未定义字段保留核心默认值随后把合并结果交给核心的textToSpeechTelephony运行时完成 PCM 到 mu-law 8kHz 的转换convertPcmToMulaw8k供电话线路播放。对应测试见 telephony-tts.test.ts 与 deep-merge.test.ts。3.2 提供商范围收窄OpenAI ElevenLabsTelephony TTS supports OpenAI ElevenLabs; Edge TTS is ignored for calls.迁移后电话线路只支持OpenAI与ElevenLabs两家 TTS 提供商核心 TTS 中可能配置的Edge微软TTS 在通话场景被显式忽略。插件级tts.openaiapiKey/baseUrl/model/voice/speed/instructions与tts.elevenlabsapiKey/baseUrl/voiceId/modelId/seed/voiceSettings/languageCode等配置结构完整定义在 openclaw.plugin.json 的configSchema.tts中供 UI 表单与配置校验直接使用。3.3 废弃旧字段tts.model/tts.voice/tts.instructionsRemoved legacytts.model/tts.voice/tts.instructionsplugin fields.首发版本中扁平的tts.model、tts.voice、tts.instructions三个顶层字段被移除改由嵌套的tts.openai.*/tts.elevenlabs.*表达。升级时需要把旧配置改写为// 迁移前已废弃 { tts: { model: gpt-4o-mini-tts, voice: alloy, instructions: Speak naturally, }, } // 迁移后deep-merge 到核心 messages.tts { tts: { provider: openai, // 或 elevenlabs openai: { model: gpt-4o-mini-tts, voice: alloy, instructions: Speak naturally, apiKey: sk-..., // 亦可走环境变量 }, }, }3.4 ngrok 免费版绕过开关重命名并收紧Ngrok free-tier bypass renamed totunnel.allowNgrokFreeTierLoopbackBypassand gated to loopback tunnel.providerngrok.旧的 ngrok 免费版兼容开关被重命名为tunnel.allowNgrokFreeTierLoopbackBypass并增加两道门禁仅当serve.bind为回环地址127.0.0.1/::1/localhost见 runtime.ts 的isLoopbackBind时生效仅当tunnel.provider ngrok时生效。其作用不是跳过签名校验而是允许在 ngrok 免费版场景下信任转发头以重建用于签名的公网 URLconfig.ts 的注释明确强调 This does NOT bypass signature verification。整体签名校验默认开启skipSignatureVerification仅限开发环境使用。四、生产级可靠性设计源码佐证除 CHANGELOG 与 README 明确点名的功能外仓库中还沉淀了一系列通话可靠性机制值得在生产部署时关注Webhook 重放保护README 声明对 Twilio/Plivo 提供重放保护重复的合法回调会被安全忽略Twilio 语音回合附带 per-turn tokenturnToken过期/重放的Gather回调无法完成新回合见 types.ts 中NormalizedEvent的dedupeKey与turnToken字段。通话持久化与重启恢复manager.ts 的initialize会从calls.jsonl恢复活跃通话向提供商核对真实状态getCallStatus重建 providerCallId 映射并为已接通的通话重启maxDurationSeconds定时器超过最大时长的旧通话会被直接清理。陈旧通话回收器stale call reaperwebhook/stale-call-reaper.ts 每 30 秒扫描一次超过staleCallReaperSeconds且未到终态的通话会被自动结束默认0禁用生产环境官方建议 120~300 秒。流断开宽限窗口Twilio 媒体流断线后不会立即挂断而是留出约 2 秒宽限STREAM_DISCONNECT_HANGUP_GRACE_MS允许快速重连不中断通话README Notes 亦有说明。notify 模式初始播报抑制 barge-in外呼 conversation 模式的初始欢迎语播报期间临时抑制打断barge-in播报结束后恢复正常打断。流式 TTS 失败即失败Twilio 流媒体激活期间不降级到Say兜底流 TTS 失败会直接导致本次播放请求失败避免两通道混用导致状态错乱README Notes。五、快速上手安装、配置与验证路径以下为可直接落地的实操路径详见 README5.1 安装# 方式 A推荐通过 OpenClaw 安装装完重启 Gateway openclaw plugins install openclaw/voice-call # 方式 B本地开发复制到全局扩展目录 mkdir -p ~/.openclaw/extensions cp -R extensions/voice-call ~/.openclaw/extensions/voice-call cd ~/.openclaw/extensions/voice-call pnpm install5.2 最小配置Twilio配置放在plugins.entries.voice-call.config下{ enabled: true, provider: twilio, // twilio | telnyx | plivo | mock fromNumber: 15550001234, // E.164 格式正则 ^\[1-9]\d{1,14}$ toNumber: 15550005678, // 默认外呼号码 twilio: { accountSid: ACxxxxxxxx, // 也可用环境变量 TWILIO_ACCOUNT_SID authToken: your_token, // 也可用环境变量 TWILIO_AUTH_TOKEN }, serve: { // Webhook 内置服务器 port: 3334, // 默认 3334 bind: 127.0.0.1, // 默认回环地址 path: /voice/webhook, // 默认路径 }, // 公网暴露三选一 // publicUrl: https://example.ngrok.app/voice/webhook, // tunnel: { provider: ngrok, ngrokAuthToken: ... }, // tailscale: { mode: funnel, path: /voice/webhook } outbound: { defaultMode: notify }, // notify | conversation streaming: { enabled: true, // 启用 OpenAI Realtime 流式 STT openaiApiKey: sk-..., streamPath: /voice/stream, preStartTimeoutMs: 5000, maxPendingConnections: 32, maxPendingConnectionsPerIp: 4, maxConnections: 128, }, }各提供商密钥均支持环境变量注入config.ts 的resolveVoiceCallConfigTWILIO_ACCOUNT_SID/TWILIO_AUTH_TOKEN、TELNYX_API_KEY/TELNYX_CONNECTION_ID/TELNYX_PUBLIC_KEY、PLIVO_AUTH_ID/PLIVO_AUTH_TOKEN、NGROK_AUTHTOKEN/NGROK_DOMAIN。validateProviderConfig会在启动时校验所选提供商必需字段缺失即报错如 Telnyx 未配置publicKey且未开skipSignatureVerification会直接拒绝启动。5.3 发一条外呼并跟踪# 发起通知型外呼打印 {callId} openclaw voicecall call --to 15555550123 --message Hello from OpenClaw # 查看通话状态 openclaw voicecall status --call-id id # 实时跟踪 JSONL 通话日志默认 ~/.openclaw/voice-calls/calls.jsonl openclaw voicecall tail # 用 Tailscale funnel 暴露 webhook openclaw voicecall expose --mode funnel5.4 验证路径仓库为上述能力提供了完整的测试覆盖是理解行为细节的最佳入口manager.closed-loop.test.ts——完整通话闭环状态机manager.inbound-allowlist.test.ts——入站 allowlist 策略manager.notify.test.ts 与 manager.restore.test.ts——notify 模式与重启恢复telephony-tts.test.ts 与 deep-merge.test.ts——TTS 深度合并webhook.test.ts、webhook-security.test.ts、webhook.hangup-once.lifecycle.test.ts——Webhook 处理与安全media-stream.test.ts、providers/stt-openai-realtime.test.ts——流媒体与实时转写providers/twilio.test.ts、providers/telnyx.test.ts、providers/plivo.test.ts、providers/mock.test.ts——四家提供商实现。六、结语从 CHANGELOG 看插件的设计取向voice-call/CHANGELOG.md虽然篇幅精炼却准确勾勒出该插件的设计取向统一提供商抽象、双模式外呼状态机、严格的安全护栏签名校验 / 重放防护 / 连接容量限制、与核心 Agent 基础设施Pi Agent、messages.tts深度打通。理解 0.1.0 的功能矩阵与 2026.1.26 的 TTS 迁移即可掌握该插件当前版本的配置心智模型——电话语音统一由核心messages.tts驱动插件配置仅做增量覆盖而对版本号与核心发行号的对齐策略则提醒升级插件前先确认宿主 OpenClaw 版本满足2026.3.28的依赖要求。后续若需落地生产建议以 README、openclaw.plugin.json完整配置 schema与 config.ts默认值权威来源三者互为参照。赞分享人工智能大模型LLM 网关AI Agent即时通讯【免费下载链接】openclaw-zero-tokenOpenClaw: Use All Major AI Models NO API Token! Claude/ChatGPT/Gemini/DeepSeek/Doubao/Grok/Qwen/Manus/Kimi项目地址https://gitcode.com/gh_mirrors/op/openclaw-zero-token点击查看免费下载相关推荐OpenClaw voice-call 语音电话插件版本演进与配置实战TTS 架构重构、ngrok 隧道与通话全链路解析OpenClaw voice call 语音电话插件版本演进与配置实战TTS 架构重构、ngrok 隧道与通话全链路解析 本文以 openclaw/voic人工智能大模型LLM 网关AI Agent即时通讯OpenClaw 语音通话实战基于 voice-call 插件发起与管理电话Twilio / Telnyx / Plivo / MockOpenClaw 语音通话实战基于 voice call 插件发起与管理电话Twilio / Telnyx / Plivo / Mock 本文围绕 Ope人工智能AI Agent即时通讯后端本地部署语音OpenClaw 语音通话插件voice-call安装、配置、CLI 与 Agent 工具完整指南OpenClaw 语音通话插件voice call安装、配置、CLI 与 Agent 工具完整指南 OpenClaw 的 voice call 插件让你的人工智能AI Agent即时通讯后端本地部署语音上一篇Android富文本处理终极指南RichText库的完整使用教程下一篇如何在电脑上从零跑起Ryujinx一个C写的Switch模拟器实操记录创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考