Unmute Vibe 项目
用 YAML 定义跨平台的语音代理,一次编写可编译为 Pipecat 或 LiveKit 的生产级 Python 项目
Unmute 是一款命令行的语音代理(Voice Agent)编译器,由独立团队 SLNG AI 开发。用户只需编写一份 YAML 配置加一份 Markdown 说明文档,即可通过 unmute 命令行工具编译为生产级的 Python 项目,部署至 Pipecat 或 LiveKit 运行时,或者直接推送至 SLNG 云端托管。整个编译产物归开发者所有,Unmute 本身不参与线上通话,且所有依赖版本均被固定,从根本上避免了线上环境依赖漂移的问题。
项目简介
语音代理的开发长期面临"写一次,跑得到处都是"的挑战。Pipecat 和 LiveKit 是两个主流的语音代理框架,各有优势,但它们各自的配置方式和运行时要求差异巨大——开发者在选定某个框架后往往被深度绑定,换框架意味着完全重写。Unmute 的核心价值在于:提供一套与具体运行时无关的语音代理规范,通过编译器将其转化为目标框架所需的完整项目结构,让"换运行时"变成改一行配置的事。
核心功能
- 单一规范,多运行时:用 YAML 定义代理身份、使用的模型、可调用的工具、保存会话的方式和工作流步骤;同一套配置可编译为 LiveKit Agents 项目、Pipecat 项目或 SLNG 云端托管,三种输出完全等效
- Markdown 指令分离:代理的系统提示(System Prompt)以独立的 Markdown 文件存储,而非嵌入 YAML 字符串,大幅提升可维护性和版本控制体验
- 模型统一命名引用:每个模型(推理模型、语音合成模型、语音识别模型)仅定义一次,通过名称引用而非硬编码,切换底层模型只需改一处配置,所有使用该模型的代理自动跟随
- 工具声明式定义:代理可调用的工具(如 end_call 等)在 YAML 中声明,Unmute 编译时验证工具链完整性,提前发现线上才会暴露的配置错误
- 固定依赖与 Docker 支持:编译产物包含 requirements.txt、完整的 Dockerfile 和 runbook.md,上线流程开箱即用
- 本地开发模式:
unmute dev一键编译项目、启动 Docker 容器、打开浏览器窗口,实现本地端到端的代理对话测试 - 无运行时依赖:编译完成后 Unmute 不在通话路径中,线上运行完全基于开发者自己的 Python 环境,消除了平台锁定的风险
- 跨平台安装:macOS 支持 Homebrew,任意 Go 1.26+ 环境可
go install,Windows 有 Scoop,Linux 可从 Releases 页面下载压缩包
技术实现
Unmute 的编译流程以 YAML 配置文件作为输入,经过词法解析后生成目标运行时的中间表示(IR)。以 LiveKit 为例,编译产物为 build/livekit/agent.py,其中包含完整的会话状态机定义、工具调用处理逻辑、以及与 LiveKit SDK 的集成代码。Pipecat 输出则为 build/pipecat/bot.py 加上 pcc-deploy.toml 部署描述文件。
在模型路由层面,Unmute 为每个语音代理引入三级模型抽象:
- 推理模型(Think Model):负责对话推理与函数调用决策,以 OpenAI Chat Completions 格式与 Pipecat/LiveKit 对接
- 语音合成模型(Speak Model):将推理输出转化为语音,通过 SLNG 网关路由至最近的语音供应商(如 Deepgram Aura)
- 语音识别模型(Listen Model):实时转写用户语音为文本,同样通过 SLNG 网关就近路由
当目标运行时无法支持指定的模型配置时(如 LiveKit 内置的 turn detector),Unmute 支持按名称进行单条覆盖,由运行时自己处理兼容性兜底逻辑,代理本身的核心配置无需改动。
快速上手
- 安装 Unmute:macOS 执行
brew install slng-ai/tap/unmute;其他平台执行go install github.com/slng-ai/unmute@latest - 初始化代理项目:执行
unmute init my-agent,自动生成 agent.yaml、instructions.md、targets.yaml、tools/ 和 .env.example 模板文件 - 配置环境变量:复制
.env.example为.env,填入OPENAI_API_KEY和SLNG_API_KEY - 验证配置:执行
unmute validate,检查 YAML 语法与工具声明是否完整 - 本地开发测试:执行
unmute dev,自动完成编译、Docker 容器启动和浏览器窗口打开,对麦克风说话即可与代理实时对话 - 切换运行时:修改
targets.yaml中的 provider 字段(livekit / pipecat / slng),重新编译即可切换部署目标
适用人群
- 需要快速构建和部署语音代理的开发者,不想被特定框架绑定
- 有多运行时部署需求的团队,需要在 Pipecat 和 LiveKit 之间灵活切换
- 关注代码所有权和部署可控性的独立开发者
- 希望用声明式配置管理复杂语音代理逻辑的全栈工程师
团队信息
AI产品库
官方
由 AI 猎手自动发现
评论与建议
登录 后参与评论或提建议