关于 livekit-agents
livekit-agents 是面向 LiveKit Cloud 开发者的语音 AI Agent 开发技能,提供架构、测试和文档查证指导,而非 API 参考。
主要功能
- 01LiveKit Cloud 设置指导
- 02语音 Agent 架构原则
- 03交接与任务设计
- 04Agent 测试工作流
- 05实时文档查证
适用场景
- 01规划语音 Agent 工作流
- 02设计交接和范围明确的任务
- 03为 Agent 行为添加测试
- 04编码前核对 LiveKit API
MCP 相关
该技能要求在编写 LiveKit 代码前使用 LiveKit 文档 MCP 服务查询 API 和配置。若无法使用 MCP,则建议改用网页搜索,并将代码标记为未经验证。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ livekit/ agent-skills --skill livekit-agents安装后在 Claude Code 中输入/livekit-agents确认已加载。
附带文件references/freshness-rules.md
详细介绍
面向 LiveKit Cloud 的 LiveKit Agents 开发
本技能提供使用 LiveKit Cloud 构建语音 AI Agent 的指导方针。本文假设你使用的是 LiveKit Cloud(推荐方式),并侧重说明如何开展 Agent 开发,而非 API 细节。有关 API、方法和配置的所有事实信息都必须以实时文档为准。
本技能适用于 LiveKit Cloud 开发者。 如果你自行托管 LiveKit,部分建议(尤其是关于 LiveKit Inference 的建议)可能不直接适用。
必须:开始前阅读此检查清单
编写任何代码之前,请完成此检查清单:
- 阅读本技能文档全文——即使 MCP 可用,也不要跳过任何部分
- 确保已连接 LiveKit Cloud 项目——你需要从 Cloud 项目获取
LIVEKIT_URL、LIVEKIT_API_KEY和LIVEKIT_API_SECRET - 设置文档访问方式——如果 MCP 可用,请使用 MCP;否则使用网页搜索
- 计划编写测试——每个 Agent 实现都必须包含测试(见下文的测试部分)
- 根据实时文档核实所有 API——绝不要依赖模型对 LiveKit API 的记忆
无论 MCP 是否可用,都必须遵循此检查清单。MCP 可用于访问文档,但不能替代本技能中的指导。
LiveKit Cloud 设置
LiveKit Cloud 是最快速地运行语音 Agent 的方式。它提供:
- 托管基础设施(无需部署服务器)
- 用于 AI 模型的 LiveKit Inference(无需单独的 API 密钥)
- 内置降噪、轮次检测和其他语音功能
- 简便的凭据管理
连接到 Cloud 项目
-
如果你尚未注册,请访问 cloud.livekit.io 注册
-
创建项目(或使用现有项目)
-
从项目设置中获取凭据:
LIVEKIT_URL- 项目的 WebSocket URL(例如,wss://your-project.livekit.cloud)LIVEKIT_API_KEY- 用于身份验证的 API 密钥LIVEKIT_API_SECRET- 用于身份验证的 API 密钥
-
将这些凭据设为环境变量(通常放在
.env.local中):
LIVEKIT_URL=wss://your-project.livekit.cloud
LIVEKIT_API_KEY=your-api-key
LIVEKIT_API_SECRET=your-api-secret
LiveKit CLI 可自动完成凭据设置。请查阅 CLI 文档,了解当前可用的命令。
使用 LiveKit Inference 调用 AI 模型
LiveKit Inference 是在 LiveKit Cloud 中使用 AI 模型的推荐方式。 它可访问领先的 AI 模型提供商,且只需使用 LiveKit 凭据,无需单独的 API 密钥。
LiveKit Inference 的优势:
- 无需管理各 AI 提供商的单独 API 密钥
- 通过 LiveKit Cloud 账户统一结算
- 针对语音 AI 工作负载进行了优化
请查阅文档,了解可用模型、支持的提供商和当前使用方式。文档始终包含最新信息。
重要规则:切勿依赖模型对 LiveKit API 的记忆
LiveKit Agents 是一个快速演进的 SDK。模型的训练数据在生成时就已过时。使用 LiveKit 时:
- 切勿假设 API 签名、方法名称或配置选项与记忆中的一致
- 切勿猜测 SDK 行为或默认值
- 务必核实实时文档,再编写代码
- 务必注明实现功能时所依据的文档来源
即使你确信了解某个 API,也必须遵循此规则进行核实。
必须:使用 LiveKit MCP 服务查阅文档
编写任何 LiveKit 代码之前,请确保能够访问 LiveKit 文档 MCP 服务。该服务提供最新且经过核实的 API 信息,避免依赖过时的模型知识。
检查 MCP 是否可用
查找 livekit-docs MCP 工具。如果可用,请使用它们进行所有文档查询:
- 实现任何功能之前先搜索文档
- 核实 API 签名和方法参数
- 查询配置选项及其有效取值
- 查找与当前任务对应的可用示例
如果 MCP 不可用
如果未配置 LiveKit MCP 服务,请告知用户并建议安装。所有受支持平台的安装说明均可在以下地址找到:
https://docs.livekit.io/intro/mcp-server/
从该页面获取适用于用户所用编码 Agent 的安装说明。
MCP 不可用时的备用方案
如果当前会话中无法安装 MCP:
- 立即告知用户,无法实时核实文档
- 使用网络搜索从 docs.livekit.io 获取最新文档
- 使用类似
# UNVERIFIED: Please check docs.livekit.io for current API的注释,明确标记所有 LiveKit 专属代码 - 明确说明无法核实的内容:“我无法根据当前文档核实此 API 签名”
- 建议用户在使用代码前查阅 https://docs.livekit.io 进行核实
语音 Agent 架构原则
语音 AI Agent 的要求与文本 Agent 或传统软件有根本区别。请牢记以下原则:
延迟至关重要
语音对话是实时的。用户期望在数百毫秒内得到响应,而不是几秒后。每项架构决策都应考虑对延迟的影响:
- 尽量缩减大模型上下文,以减少推理时间
- 对话进行期间避免不必要的工具调用
- 优先选择流式响应,而非批量响应
- 针对不理想情况进行设计(网络延迟、API 超时)
上下文膨胀会降低性能
较长的系统提示词和大量工具列表会直接增加延迟。无论模型速度如何,配备 50 个工具和 10,000 个 Token 系统提示词的语音 Agent 都会显得迟缓。
设计 Agent 时应采用最小可行上下文:
- 仅包含当前对话阶段所需的工具
- 保持系统提示词重点明确、简洁
- 移除当前不需要的工具和上下文
用户听,而不读
语音界面的限制有别于文本:
- 冗长的回复会让用户感到厌烦——保持输出简洁
- 用户无法回看——确保首次传达就清晰
- 打断是常态——设计妥善处理打断的方式
- 沉默会让人觉得系统故障——必要时告知用户正在处理
工作流架构:交接与任务
复杂的语音 Agent 不应采用单体架构。LiveKit Agents 支持结构化工作流,在处理复杂用例的同时保持低延迟。
单体 Agent 的问题
由单个 Agent 处理整个对话流程,会累积以下内容:
- 涵盖所有可能操作的工具(工具列表臃肿)
- 涵盖所有对话阶段的指令(上下文臃肿)
- 适用于所有场景的状态管理(复杂度高)
这会增加延迟并降低可靠性。
交接:Agent 之间的转换
交接允许一个 Agent 将控制权转交给另一个 Agent。可使用交接来:
- 分离不同的对话阶段(问候 → 信息收集 → 问题解决)
- 隔离专门能力(一般支持 → 账单专员)
- 管理上下文边界(每个 Agent 只包含自身所需的内容)
应围绕自然的对话边界设计交接,在这些边界处可以对上下文进行摘要,而不是整体转交。
任务:范围明确的操作
任务是范围明确、旨在实现特定结果的提示词。可在以下情况下使用任务:
- 无需完整 Agent 能力的离散操作
- 专注的提示词优于通用 Agent 的情况
- 仅需特定能力时减少上下文
有关交接和任务的实现详情,请查阅文档。
必须:为 Agent 行为编写测试
语音 Agent 的行为由代码实现。每个 Agent 实现都必须包含测试。发布没有测试的 Agent,就等于发布未经测试的代码。
强制测试工作流
构建或修改 LiveKit Agent 时:
- 如果还没有
tests/目录,就创建一个 - 在认为实现已完成之前,至少编写一个测试
- 测试用户要求的核心行为
- 运行测试以确认测试通过
测试驱动开发流程
修改 Agent 行为(指令、工具描述、工作流)时,请先为预期行为编写测试:
- 明确 Agent 在特定场景下应执行的操作
- 编写用于验证此行为的测试用例
- 实现功能
- 反复迭代,直至测试通过
这种方法可以避免交付那些“看起来能用”但在生产环境中失效的 Agent。
每个 Agent 测试都应覆盖的内容
至少应编写以下测试:
- 基本对话流程:Agent 是否会对问候作出恰当回应
- 工具调用(如果存在工具):工具调用时是否使用了正确的参数
- 错误处理:Agent 是否能妥善处理意外输入
重点测试:
- 工具调用:Agent 是否调用了正确的工具并使用了正确的参数?
- 响应质量:Agent 是否能针对给定输入生成恰当的回应?
- 工作流转换:交接和任务是否会正确触发?
- 边界情况:Agent 如何处理意外输入、中断和静默?
测试实现模式
使用 LiveKit 的测试框架。通过 MCP 查阅测试文档,了解当前的模式:
search: "livekit agents testing"
该框架支持:
- 模拟用户输入
- 验证 Agent 的回应
- 断言工具调用
- 测试工作流转换
为什么这是不可妥协的要求
在手动测试中“看起来能用”的 Agent,经常会在生产环境中失效:
- 提示词变更会在不知不觉中破坏行为
- 工具描述会影响工具的调用时机
- 模型更新会改变回应模式
测试能在用户发现问题之前捕获这些问题。
跳过测试
如果用户明确要求不编写测试,可以不写,但请告知他们:
“我已按要求在未编写测试的情况下构建了 Agent。强烈建议在部署到生产环境之前补充测试。语音 Agent 很难通过手动方式验证,而测试可以防止不易察觉的回归问题。”
应避免的常见错误
让初始 Agent 承担过多职责
一开始就用一个“什么都做”的 Agent,之后再不断添加工具和指令。应当预先设计工作流结构,即使初始实现很简单也不例外。
等到延迟成为问题才着手处理
延迟问题会不断累积。在开发环境中“有点慢”的 Agent,在真实网络条件下的生产环境中可能变得无法使用。应持续测量并优化延迟。
不求甚解地照搬示例
文档中的示例展示的是特定模式。不理解示例用途就复制代码,会导致 Agent 臃肿、结构不佳。纳入组件之前,应先弄清每个组件的作用。
因为“只是提示词”而跳过测试
Agent 的行为也是代码。提示词变更对行为的影响不亚于代码变更。应像测试传统软件一样严谨地测试 Agent 行为。交付 Agent 实现时,绝不能没有至少一个测试文件。
假定模型掌握的知识是最新的
重申这条关键规则:对于 LiveKit API,绝不要相信模型的记忆。SDK 的演进速度快于模型的训练周期。务必核实所有信息。
何时查阅文档
务必查阅以下内容的文档:
- API 方法签名和参数
- 配置选项及其有效值
- 特定 SDK 版本的功能或变更
- 部署和基础设施设置
- 模型提供商集成详情
- CLI 命令和标志
本技能提供以下方面的指导:
- 架构方案和设计原则
- 工作流结构决策
- 测试策略
- 应避免的常见问题
区分两者很重要:本技能告诉你构建语音 Agent 时应如何思考。文档则告诉你如何实现具体功能。
反馈循环
通过 MCP 使用 LiveKit 文档时,请留意其中的遗漏、过时信息或令人困惑的内容。报告文档问题有助于为所有开发者改进生态系统。
总结
使用 LiveKit Cloud 构建高效语音 Agent 需要:
- 以 LiveKit Cloud + LiveKit Inference 为基础——这是最快的生产部署路径
- 根据实时文档核实所有信息——切勿相信模型记忆
- 在每个架构决策点尽可能降低延迟
- 使用交接和任务组织工作流,以管理复杂性
- 在更改前后测试行为——未经测试,切勿发布
- 尽量减少上下文——只包含当前阶段所需的内容
无论 SDK 版本或 API 如何变化,这些原则始终适用。所有实现细节都请通过 MCP 查阅 LiveKit 文档。