mcpField
I
init

init

github.com/pipecat-ai开发2852 次安装16 周前更新
代码仓库

关于 init

init 是一个引导用户选择 Pipecat 项目配置并运行 `pipecat init` 的技能,用于生成 Bot 项目。它读取 CLI 的当前选项,配置传输方式、AI 服务、功能和部署文件。

主要功能

  1. 01检查 Pipecat CLI 是否已安装
  2. 02从 `--list-options` 获取当前选项
  3. 03收集 Bot 和传输设置
  4. 04配置流水线服务与功能
  5. 05运行非交互式项目脚手架

适用场景

  1. 01启动 Web 或电话 Bot 项目
  2. 02选择传输方式和 AI 服务
  3. 03在当前目录生成项目
  4. 04设置项目时生成部署文件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pipecat-ai/skills --skill init

安装后在 Claude Code 中输入/init确认已加载。

详细介绍

通过收集用户的配置并以非交互模式运行 pipecat init,搭建一个新的 Pipecat 项目。

参数

/init [<target-dir>]
  • <target-dir>(可选):用于创建项目的目录。默认为以项目名命名的新目录。使用 . 表示当前目录。

前置条件

通过运行 pipecat --version 检查 pipecat 是否已安装。如果未安装,告知用户使用 uv tool install pipecat-ai-cli 进行安装,然后停止。

发现可用选项

在向用户提出任何问题之前,运行 pipecat init --list-options 以获取所有字段的当前有效值。输出为 JSON:

{
  "bot_type": ["web", "telephony"],
  "transports": {
    "web": ["daily", "smallwebrtc"],
    "telephony": ["twilio", "telnyx", ...]
  },
  "stt": ["deepgram_stt", "openai_stt", ...],
  "llm": ["openai_llm", "anthropic_llm", ...],
  "tts": ["cartesia_tts", "elevenlabs_tts", ...],
  "realtime": ["openai_realtime", "gemini_live_realtime", ...],
  "video": ["heygen_video", "tavus_video", "simli_video"]
}

使用此数据填充下面每个问题中的选项。不要硬编码服务列表——始终使用来自 --list-options 的值。

配置流程

按以下问题逐步构建项目配置。收集完所有答案后,显示摘要并运行命令。

选择正确的交互方式:

  • AskUserQuestion — 用于选项较少且固定的一组问题(bot 类型、管道模式、客户端框架、是/否问题)。这会提供简洁的可点击 UI。
  • 以文本形式显示列表 — 用于选项较多的问题(STT、LLM、TTS、实时、视频、传输)。显示来自 --list-options 的完整可用选项列表,格式化为可读列表,然后让用户在聊天中回复其选择。
步骤 1:项目名称

询问用户项目名称。这会作为目标目录(位置参数)传入——项目会就地搭建在以该名称命名的目录中,项目标识符也由此派生。

步骤 2:Bot 类型

让用户选择一种 bot 类型:

  • Web/Mobile(web)- 浏览器或移动应用
  • Telephony(telephony)- 电话通话
步骤 3:客户端框架(仅 web)

如果 bot 类型为 web,让用户选择一种客户端框架:

  • React(react)
  • Vanilla JS(vanilla)
  • None(none)- 仅服务端,不生成客户端

如果用户选择了 React,询问使用哪个开发服务器:

  • Vite(vite)
  • Next.js(nextjs)

Telephony bot 完全跳过此步骤。

步骤 4:传输

向用户显示来自 --list-options 的完整可用传输列表,并按所选 bot 类型过滤。让用户回复其选择。

如果用户选择了 daily_pstn 传输,询问模式:

  • 呼入(接听电话)→ 使用 --daily-pstn-mode dial-in
  • 呼出(拨打电话)→ 使用 --daily-pstn-mode dial-out

如果用户选择了 twilio_daily_sip 传输,询问模式:

  • 呼入(接听电话)→ 使用 --twilio-daily-sip-mode dial-in
  • 呼出(拨打电话)→ 使用 --twilio-daily-sip-mode dial-out

然后询问他们是否要添加用于本地测试的附加传输。这很常见——例如,一个还支持 WebRTC 以用于开发的 telephony bot。

步骤 5:管道模式

让用户选择一种管道架构:

  • Cascade(cascade)- STT → LLM → TTS 管道
  • Realtime(realtime)- 语音到语音模型
步骤 6:AI 服务

如果是 cascade 模式,显示来自 --list-options 的每个服务的完整可用选项列表,并让用户回复其选择:

  1. 语音转文本(STT) — 显示所有可用的 STT 服务
  2. 语言模型(LLM) — 显示所有可用的 LLM 服务
  3. 文本转语音(TTS) — 显示所有可用的 TTS 服务

如果是 realtime 模式,显示所有可用的实时服务,并让用户回复其选择。

对于每个服务问题,将选项显示为编号的垂直列表(每行一个),以便用户轻松浏览并选择一个。

第 7 步:功能

向用户展示默认功能设置,并询问他们是否要自定义:

默认值:

  • 音频录制:否
  • 转写日志记录:否
  • 视频头像服务:无
  • 视频输入:否(仅 Web)
  • 视频输出:否(仅 Web)
  • 可观测性:否

如果他们想自定义,逐一询问每个功能。对于视频头像服务(仅 Web 机器人),使用 --list-options 中的视频选项。

如果选择了视频头像服务,视频输出会自动启用。

第 8 步:部署

询问他们是否要生成 Pipecat Cloud 部署文件(Dockerfile、pcc-deploy.toml)。默认是。

如果要部署到云端,询问他们是否要启用 Krisp 降噪。默认否。

构建命令

收集完所有答案后,使用非交互式标志构建 pipecat init 命令。将项目名称作为位置目标目录放在最前面——项目会在该位置就地搭建:

pipecat init <project_name> \
  --bot-type <web|telephony> \
  --transport <transport> \
  --mode <cascade|realtime> \
  [--stt <service>] \
  [--llm <service>] \
  [--tts <service>] \
  [--realtime <service>] \
  [--video <service>] \
  [--client-framework <react|vanilla|none>] \
  [--client-server <vite|nextjs>] \
  [--daily-pstn-mode <dial-in|dial-out>] \
  [--twilio-daily-sip-mode <dial-in|dial-out>] \
  [--recording | --no-recording] \
  [--transcription | --no-transcription] \
  [--video-input | --no-video-input] \
  [--video-output | --no-video-output] \
  [--deploy-to-cloud | --no-deploy-to-cloud] \
  [--enable-krisp | --no-enable-krisp] \
  [--observability | --no-observability] \
  [--eval | --no-eval]

传入搭建标志会让 pipecat init 以非交互方式运行(无提示),并就地搭建可运行的机器人,同时写入编码 Agent 指南文件(AGENTS.md、CLAUDE.md)。

使用 . 作为目标,可搭建到当前目录而不是新目录。

对于多个传输方式,重复 --transport 标志(例如 --transport twilio --transport smallwebrtc)。

确认

在运行命令之前,向用户展示其选择的摘要:

  • 项目名称
  • 机器人类型
  • 客户端框架(如果是 Web)
  • 传输方式
  • 流水线模式和服务
  • 已启用的功能
  • 部署目标

请用户在继续之前确认。如果他们想更改某些内容,返回并重新询问该特定问题。

运行命令

运行 pipecat init 命令。位置目标目录控制项目的创建位置——如果用户提供了 <target-dir> 参数,则使用该参数,否则默认使用以项目名称命名的新目录。

如果命令成功,向用户展示生成了什么,并建议后续步骤:

  1. cd <project_name>/server
  2. 将 .env.example 复制为 .env 并填入 API 密钥
  3. 运行机器人

如果要部署到云端,还要提到他们可以使用 /pipecat-cloud:deploy 进行部署。

错误处理

  • 如果 pipecat init 因验证错误而失败,展示错误并帮助用户修正他们的选择。
  • 如果目标目录已存在且不为空,在继续之前警告用户。

评论

支持 Markdown