VoiceOps 语音运维助手
用语音对话驱动 MCP 与 A2A 工具,完成 Kubernetes 与 SRE 的日常查询和操作。
- Star 数
- ★ 71
- 最近更新
- 1 年前
- License
- MIT
- 主语言
- Python
- FA 评分
- 36/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 兼容但需适配OpenAI API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- SRE 值班时双手占用,希望用语音快速查询某命名空间的 Pod、事件或 Deployment 列表
- 不适合
- 需要完全离线或本地方案,不接受调用 OpenAI/ElevenLabs 云服务的团队
- 只想通过 stdio/subprocess 方式接入 MCP 服务器的用户(当前仅支持 HTTP/SSE)
- 无法提供 Node.js/npx 或至少一个 MCP 服务器端点的环境
这个 Agent 能做什么,适合哪些场景?
VoiceOps 是一个基于 LiveKit Agents 框架的语音助手应用,面向 SRE 与 Kubernetes 运维场景。它把语音输入交给 OpenAI Whisper 转写,由 GPT-4o 理解并决策,再通过 ElevenLabs 合成语音回复,Silero 负责语音活动检测。核心能力在于工具调用:agent 从项目根目录的 mcp_servers.yaml 读取 MCP 服务器配置,通过 HTTP/SSE 连接外部服务,并可选用 type: a2a 接入 A2A 协议代理,把对方通过 /.well-known/agent.json 暴露的技能注册为可调用工具。入口是 main.py,核心编排在 agent_core.py,工具集成在 tool_integration.py 与 mcp_client/ 包中,最终以本地 Python 进程形式加入 LiveKit 房间运行。
启动后 agent 连接 LiveKit 房间并等待语音输入;Silero 做语音活动检测,Whisper 转写文本,GPT-4o 决定是直接回答还是调用工具。工具来自 mcp_servers.yaml 中声明的服务器:标准 MCP 服务器通过 sse_client.py 以 SSE 方式连接,allowed_tools 支持 list_*、describe_*、get_* 之类的通配过滤;对于要求鉴权的服务器,auth.py 用 HMAC-SHA256 对请求签名并以 auth 参数传递。配置 type: a2a 的条目则走 a2a.py,从 /.well-known/agent.json 发现技能并注册为工具,可带自定义 headers。工具执行结果回到模型组织答案,再由 ElevenLabs 转成语音输出。README 附带的示例包括 mcp-server-kubernetes(仅非破坏性工具)和通过 Supergateway 桥接的 kubectl-ai。
- SRE 值班时双手占用,希望用语音快速查询某命名空间的 Pod、事件或 Deployment 列表
- 在受控测试集群中,用口语指令扩缩容 Deployment 或拉取 Job 日志,验证排障流程
- 把已在 Kubernetes 中部署的 Kagent A2A 代理作为技能接入,用语音驱动集群诊断
- 需要把多个 MCP 服务器(Kubernetes、自定义运维服务)统一挂到一个语音入口的安全团队
- 想验证 MCP + A2A 工具编排能否用自然语言触发,而不写前端界面的开发者
如何安装或部署这个 Agent?
需要 Python 3.9+、OpenAI 与 ElevenLabs 的 API Key,以及至少一个 HTTP/SSE MCP 服务器端点;运行 README 的示例 MCP 服务器还需要 Node.js/npx。
make venv
source venv/bin/activate
make uv # 可选,用于更快的安装
make install设置凭证:
export OPENAI_API_KEY=your_openai_api_key
export ELEVEN_API_KEY=your_elevenlabs_api_key如需启动示例 Kubernetes MCP 服务器(仅允许非破坏性工具):
ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS=true ENABLE_UNSAFE_SSE_TRANSPORT=1 PORT=8092 npx mcp-server-kubernetes如何使用这个 Agent?
在项目根目录编辑 mcp_servers.yaml 声明可用的 MCP 服务器与工具白名单:
servers:
- name: k8s-mcp-server
url: http://localhost:8092/sse
allowed_tools:
- list_*
- describe_*
- get_*需要鉴权的服务器可追加 auth 段:
servers:
- name: secure-mcp-server
url: https://example.com/sse
allowed_tools: [*_*]
auth:
type: secret_key
env_var: MY_SECRET_KEY接入 A2A 代理:
servers:
- name: my-a2a-agent
type: a2a
url: https://my-a2a-agent.example.com
headers:
Authorization: Bearer <token>运行测试与启动:
make test
make run启动后对 agent 说 hello,即可使用「list pods in dev namespace」这类指令。
这个 Agent 有哪些优点和局限?
- 完整的语音链路已经打通:Silero 语音活动检测、Whisper 转写、GPT-4o 推理、ElevenLabs 合成,无需自己拼接
- 工具接入灵活,mcp_servers.yaml 支持多服务器、通配符白名单、HMAC-SHA256 鉴权以及 A2A 技能发现
- 拿到 LiveKit Agents 的实时房间模型,可直接复用 LiveKit 的音频传输能力
- README 提供可复现的示例:mcp-server-kubernetes 的只读模式与 Supergateway 桥接 kubectl-ai
- MIT 许可,示例与测试(test_agent_config.py、make test)一并给出
- 当前只支持 HTTP/SSE MCP 服务器,stdio/NPX 子进程方式尚未支持,必须额外借助 Supergateway 桥接
- 模型与语音链路绑定 OpenAI 和 ElevenLabs 两家付费 API,无本地模型或替换说明
- 可以对真实集群执行修改与删除操作,README 自身也要求先在安全环境验证并收紧工具权限
- 示例依赖 npx 与 Node.js,且需要自行准备可访问的 MCP 端点,属于多步配置
- 文档结构较松散:Quick Start 与环境变量的对应关系、LiveKit 房间连接参数未完整给出
这个 Agent 与同类方案有什么区别?
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| VoiceOps 语音运维助手 当前 | 36 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 71 | 1 年前 | Python | OpenAI API |
| Hector 智能体运行平台 | 55 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 60 | 5 个月前 | Go | OpenAI API · Claude API |
| Moltis 个人代理服务器 | 53 · 缺口较多 | 自托管服务免费 + 模型费 | ★ 2.9k | 1 天前 | Rust | Codex · Claude Code |
| Cordum Agent Control Plane | 64 · 存在缺口 | 自托管服务免费 | ★ 511 | 2 天前 | Go | Claude Code |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
README 明确警告该 Agent 可创建、修改、删除 Kubernetes 资源,并提供了 allowed_tools 通配符白名单与 ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS 示例,说明最小权限有初步设计(得 1 分);但白名单为可选、默认未强制,且示例中出现 allowed_tools: [*_*] 与 [*] 这类宽泛授权,未提供任何执行前用户确认机制(user_confirmation 记 0)。数据流方面仅描述连接 LiveKit 房间与外部 MCP/A2A 服务,未说明语音与工具数据如何流向 OpenAI/ElevenLabs 等第三方(得 1 分)。敏感数据处理仅提及通过环境变量注入密钥与 HMAC 签名,未涉及日志脱敏或密钥轮换(得 1 分)。依赖以宽松版本约束(~=)固定,mcp 精确锁定,但无锁文件、无漏洞扫描说明(得 1 分)。外部副作用(删除/扩缩容)无回滚或 dry-run 机制(rollback 记 0)。来源归属仅致谢 LiveKit/OpenAI 等,未标注代码来源(得 1 分)。
README 与 requirements 基本一致,但 README 提到 a2a.py、mcp_client 等文件而证据中未提供其内容,无法核对实现与文档是否一致(self_consistency 得 1 分)。依赖均为公开 PyPI 包,但 a2a-min 等较冷门、版本未锁定,可用性存在不确定性(得 1 分)。Troubleshooting 覆盖 SSL 与 schema 校验错误,但未说明工具调用失败、MCP 断连时的用户提示(failure_messages 得 1 分)。
README 给出 SRE/Kubernetes 场景、示例提示词与 Kagent 集成路径,受众与场景清晰(得 2 分)。明确声明仅支持 HTTP/SSE MCP、暂不支持 NPX/子进程,能力边界有交代(得 2 分)。触发精度方面仅靠自然语言与 allowed_tools 通配符,未说明歧义消解或破坏性操作识别(得 1 分)。环境适配给出 macOS/Linux/Windows 的 Node 安装提示,但 Python 3.9+ 与 livekit-agents 1.0 的实际兼容性未验证(得 1 分)。
README 有目录、项目结构、配置与测试章节,信息架构良好(得 2 分)。Quick Start 与 Makefile 目标清晰(得 2 分)。命名上仓库名 voice-mcp-agent 与 README 中 VoiceOps、克隆示例 voice-mcp 不一致,命名稳定性不足(得 1 分)。示例提示词与 FAQ/Troubleshooting 较丰富(得 2 分)。已知限制仅提及 MCP 传输方式,未系统列出安全与运维限制(得 1 分)。LICENSE 为完整 MIT(得 2 分)。无版本号与 CHANGELOG(记 0)。维护责任仅指向作者与贡献流程,无发布/更新路径说明(得 1 分)。
输出可用性方面提供了语音交互与示例提示词,但未展示实际输出样例或结果格式(得 1 分)。边际价值在于将语音与 MCP/A2A 工具结合用于 K8s 运维,具备一定差异化,但同类项目较多且实现细节未展示(得 1 分)。成本收益上依赖 OpenAI GPT-4o、Whisper、ElevenLabs 多项付费 API,且对生产集群有破坏性风险,收益与成本/风险未量化(得 1 分)。
README 的声明(如 HMAC 认证、A2A 发现)无法与所提供文件交叉核对,仅能追溯到 README 自身(claim_traceability 得 1 分)。证据仅含 README、LICENSE、requirements,缺少代码与测试文件,跨源佐证薄弱(得 1 分)。README 中事实与推断(如“Vibe Coding”精神、未来将支持 NPX)混杂,未明确区分(得 1 分)。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
- 该 Agent 可对真实 Kubernetes 集群执行创建、修改、删除操作,且默认未强制最小权限白名单,示例中出现 [*_*] 等宽泛授权,接入生产前必须收紧 allowed_tools 并在安全环境验证。
- 缺少执行前用户确认与回滚/dry-run 机制,破坏性操作一旦触发难以恢复。
- 语音与工具数据会流向 OpenAI、ElevenLabs 等第三方,README 未说明数据流向与保留策略,需自行评估合规性。
- 依赖版本多为宽松约束且含较冷门的 a2a-min,未提供锁文件或漏洞扫描,供应链风险需自行核查。
- 仓库名、README 标题与克隆示例命名不一致,且无版本号/CHANGELOG,升级与追踪变更存在困难。
- 发布者身份未经 FollowAgents 验证,维护责任与更新路径不明确,采用前应确认维护活跃度。