内容
<div align="center">
<img src="agentline-logo-200.png" alt="AgentLine Logo" width="120" />
<h1>AgentLine</h1>
<p><strong>开源 AI 代理电话 API - 电话号码、语音通话和短信</strong></p>
<p>为您的 AI 代理提供一个真实的电话号码。拨打外呼,接收来电,处理短信 - 所有操作都通过一个 API 完成。无需电信专业知识。</p>
<br/>
[](LICENSE)
[](https://python.org)
[](https://fastapi.tiangolo.com)
[](https://modelcontextprotocol.io)
[](Dockerfile)
[](https://discord.gg/RmaJv8qHX)
<br/>
[官网](https://agentline.cloud) · [文档](https://agentline.cloud/docs) · [技能文件](https://agentline.cloud/skill.md) · [Discord](https://discord.gg/RmaJv8qHX)
<br/>
</div>
---
## 什么是 AgentLine?
AgentLine 是一个**开源的 AI 原生电话平台**,为 AI 代理提供真实的电话号码和类似人类的语音。它提供了一个简单的 REST API 和 MCP 服务器,以便 AI 代理(Claude、Cursor、自定义 LLM 代理)可以拨打和接收电话、处理短信和检索记录 - 无需任何电信知识。
```
您的 AI 代理 → AgentLine API → 真实电话通话
→ 短信
→ 通话记录
```
### 为什么选择 AgentLine?
| | AgentLine | Twilio/Vonage | 自建 |
|---|---|---|---|
| **为 AI 代理而建** | ✅ 专门构建 | ❌ 为呼叫中心而建 | ❌ 您需要自己搭建 |
| **设置时间** | 5 分钟 | 数小时 | 数周 |
| **MCP 服务器** | ✅ 原生支持 | ❌ 无 | ❌ 需要自己搭建 |
| **技能文件安装** | ✅ 一个文件 | ❌ 复杂的 SDK | ❌ 数百行代码 |
| **语音管道** | ✅ 包含(STT + TTS + LLM) | ❌ 需要自己搭建 | ❌ 需要自己搭建 |
| **开源** | ✅ MIT 许可证 | ❌ 专有 | ✅ 您的代码 |
---
## 功能
- 📞 **语音通话** - 通过简单的 API 拨打和接收真实的电话通话
- 🎙️ **AI 语音管道** - 内置 STT(Deepgram)+ LLM(GPT-4o)+ TTS(Cartesia)管道
- 💬 **短信** - 接收和读取传入的短信
- 🔌 **MCP 服务器** - 为 Claude Desktop 和 Cursor 提供原生 Model Context Protocol 支持
- 📋 **技能文件** - 适用于任何 AI 代理(Claude Code、Cursor、OpenClaw)的单文件安装
- 🌍 **多提供商** - SignalWire(美国)具有可插拔的提供商架构
- 📝 **记录** - 自动通话记录,包含完整的对话历史
- 📬 **事件邮箱** - 适用于没有 webhook 端点的代理的基于轮询的事件系统
- 💰 **内置计费** - 每秒计费,带有余额跟踪
- 🐳 **Docker 就绪** - 一条命令即可在本地运行整个堆栈
---
## 架构
```mermaid
graph LR
A["🤖 AI 代理"] -->|REST API / MCP| B["⚡ AgentLine API"]
B -->|Provision Numbers| C["📱 SignalWire"]
B -->|Speech-to-Text| D["🎤 Deepgram"]
B -->|Text-to-Speech| E["🔊 Cartesia"]
B -->|LLM Reasoning| F["🧠 OpenAI"]
C -->|Voice & SMS| G["📞 PSTN 网络"]
B -->|Events & Transcripts| A
```
### 语音管道 - 混合中继模式
AgentLine 使用异步**混合中继**架构,而不是脆弱的实时 WebSocket 流:
```
呼叫者拨打您的代理号码
→ SignalWire 接听呼叫
→ 播放 TTS 问候语给呼叫者
→ 记录呼叫者的语音
→ Deepgram 转录(快速、准确)
→ LLM 生成代理响应
→ Cartesia 说出响应
→ 循环继续,直到呼叫结束
→ 存储完整的记录以供检索
```
---
## 快速开始
### 选项 1:Docker Compose(推荐)
```bash
git clone https://github.com/agentlineHQ/AgentLine.git
cd AgentLine
cp .env.example .env
# 在 .env 中填写您的 API 密钥(参见下面的配置)
docker-compose up -d
```
这将启动:
- **API 服务器**,位于 `http://localhost:8000`
- **PostgreSQL**,位于 `localhost:5432`(自动应用架构)
- **Redis**,位于 `localhost:6379`
### 选项 2:本地开发
```bash
git clone https://github.com/agentlineHQ/AgentLine.git
cd AgentLine
python -m venv venv
source venv/bin/activate # 或在 Windows 上使用 venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
# 填写您的 API 密钥
uvicorn agentline.main:app --reload
```
### 选项 3:使用托管版本
跳过自托管 - 在 [agentline.cloud](https://agentline.cloud) 注册并立即获取 API 密钥。
---
## 配置
复制 `.env.example` 到 `.env` 并填写您的凭证:
| 变量 | 必需 | 描述 |
|----------|----------|-------------|
| `SUPABASE_URL` | 是 | 您的 Supabase 项目 URL |
| `SUPABASE_ANON_KEY` | 是 | Supabase 匿名密钥 |
| `SUPABASE_SERVICE_ROLE_KEY` | 是 | Supabase 服务角色密钥(服务器端) |
| `DATABASE_URL` | 是 | PostgreSQL 连接字符串 |
| `SIGNALWIRE_PROJECT_ID` | 是 | SignalWire 项目 ID |
| `SIGNALWIRE_TOKEN` | 是 | SignalWire API 令牌 |
| `SIGNALWIRE_SPACE_URL` | 是 | 您的 SignalWire 空间 URL |
| `DEEPGRAM_API_KEY` | 是 | Deepgram API 密钥(STT) |
| `CARTESIA_API_KEY` | 是 | Cartesia API 密钥(TTS) |
| `OPENAI_API_KEY` | 是 | OpenAI API 密钥(LLM) |
| `REDIS_URL` | 否 | Redis URL(默认为 `localhost:6379`) |
| `SECRET_KEY` | 是 | 应用程序密钥 |
| `BASE_URL` | 是 | 您的部署的公共 URL |
---
## API 参考
启动后,访问 `http://localhost:8000/docs` 以获取交互式 Swagger UI。
### 核心端点
| 方法 | 路径 | 描述 |
|--------|------|-------------|
| `POST` | `/v1/agents` | 创建新的 AI 语音代理 |
| `GET` | `/v1/agents` | 列出所有代理 |
| `PATCH` | `/v1/agents/{id}` | 更新代理(提示、语音、问候语) |
| `POST` | `/v1/numbers` | 预订电话号码 |
| `GET` | `/v1/numbers` | 列出电话号码 |
| `POST` | `/v1/calls` | 拨打外呼 |
| `GET` | `/v1/calls` | 列出通话 |
| `GET` | `/v1/calls/{id}/transcript` | 获取通话记录 |
| `POST` | `/v1/calls/{id}/hangup` | 结束活动通话 |
| `GET` | `/v1/events` | 轮询事件邮箱(消费) |
| `GET` | `/v1/events/peek` | 窥视事件(非破坏性) |
| `GET` | `/v1/messages` | 列出短信 |
| `GET` | `/v1/billing/balance` | 检查账户余额 |
| `GET` | `/v1/billing/expenditure` | 消费明细 |
### 身份验证
所有请求都需要 API 密钥:
```bash
curl -H "Authorization: Bearer sk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
https://api.agentline.cloud/v1/agents
```
---
## MCP 服务器集成
AgentLine 包含一个内置的 **MCP(模型上下文协议)服务器**,因此像 Claude Desktop 和 Cursor 这样的 AI 代理可以原生使用电话工具。
### 从 Claude Desktop 连接
将以下内容添加到您的 Claude Desktop 配置文件中:
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"agentline": {
"command": "npx",
"args": [
"-y", "mcp-remote@latest",
"http://localhost:8000/mcp",
"--header", "Authorization: Bearer sk_live_YOUR_KEY"
]
}
}
}
```
### 可用的 MCP 工具
| 工具 | 描述 |
|------|-------------|
| `create_agent` | 创建新的 AI 语音代理 |
| `list_agents` | 列出所有代理 |
| `update_agent` | 更新代理配置/提示/语音 |
| `make_outbound_call` | 发起外呼 |
| `list_calls` | 列出通话历史 |
| `get_call_transcript` | 获取通话记录 |
| `hangup_call` | 结束活动通话 |
| `buy_phone_number` | 预订新电话号码 |
| `list_phone_numbers` | 列出所有电话号码 |
| `poll_events` | 轮询事件邮箱 |
| `peek_events` | 窥视待处理事件 |
| `get_account_balance` | 检查账户余额 |
| `list_available_voices` | 列出语音预设 |
### 使用 MCP 检查器进行测试
```bash
npx @modelcontextprotocol/inspector http://localhost:8000/mcp
```
---
## 技能文件 - 30 秒安装
AgentLine 配备了一个**技能文件**,让任何 AI 代理都能立即获得电话能力:
```
https://agentline.cloud/skill.md
```
**如何使用:**
1. 复制上面的技能 URL
2. 将其添加到您的 AI 代理(Claude Code、Cursor、OpenClaw 等)
3. 设置您的 `AGENTLINE_API_KEY` 环境变量
4. 告诉您的代理: *"Call +1234567890"* - 它直接生效!
技能文件也包含在此存储库的 [`skills/agentline/SKILL.md`](skills/agentline/SKILL.md) 中。
---
## 技术栈
| 组件 | 技术 |
|-----------|-----------|
| **API 框架** | [FastAPI](https://fastapi.tiangolo.com)(异步 Python) |
| **数据库** | PostgreSQL([Supabase](https://supabase.com)) |
| **缓存** | Redis |
| **电话号码和通话** | [SignalWire](https://signalwire.com) |
| **语音转文本** | [Deepgram](https://deepgram.com) Nova-2 |
| **文本转语音** | [Cartesia](https://cartesia.ai) Sonic |
| **LLM** | [OpenAI](https://openai.com) GPT-4o / GPT-4o-mini |
| **MCP 服务器** | [FastAPI-MCP](https://github.com/tadata-org/fastapi-mcp) |
| **部署** | Docker, [Railway](https://railway.app) |
---
## 部署
### Docker
```bash
docker build -t agentline .
docker run -p 8000:8000 --env-file .env agentline
```
### 任意云提供商
AgentLine 在支持 Python 3.12+ 和 Docker 的任何地方运行:AWS、GCP、Azure、Fly.io、Render、Railway 等。
---
## 数据库架构
数据库架构位于 [`schema.sql`](schema.sql) 中。它创建了以下表格:
- **accounts** - 具有余额跟踪的用户账户
- **api_keys** - 哈希 API 密钥用于身份验证
- **agents** - AI 语音代理配置
- **phone_numbers** - 预订的电话号码
- **calls** - 通话记录和记录
- **messages** - 短信记录
- **event_mailbox** - 服务器端事件队列
- **billing_ledger** - 不变的计费交易日志
迁移位于 [`migrations/`](migrations/) 目录中。
---
## 定价(托管版本)
如果使用 [agentline.cloud](https://agentline.cloud) 的托管版本:
| 项目 | 费用 |
|------|------|
| 语音通话(进出) | $0.10/分钟(按秒计费) |
| 电话号码 | $2.00(一次性) |
| 短信(进) | 免费 |
自托管:您只需支付提供商费用(SignalWire、Deepgram、Cartesia、OpenAI)。
---
## 贡献
我们欢迎贡献!请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 获取指南。
- 🐛 **错误报告** - [打开问题](https://github.com/agentlineHQ/AgentLine/issues/new?template=bug_report.md)
- 💡 **功能请求** - [打开问题](https://github.com/agentlineHQ/AgentLine/issues/new?template=feature_request.md)
- 🔧 **拉取请求** - 分叉、分支、PR
---
## 社区
- 💬 [Discord](https://discord.gg/RmaJv8qHX) - 与团队和其他构建者聊天
- 🐦 [Twitter](https://twitter.com/ovalpod94416) - 更新和公告
- 📖 [文档](https://agentline.cloud/docs) - 完整的 API 文档
- 📝 [博客](https://agentline.cloud/blogs) - 指南和教程
---
## 许可证
[MIT](LICENSE) - 任意使用。欢迎商业使用。
---
<div align="center">
<p>由 <a href="https://agentline.cloud">AgentLine</a> 团队 ❤️ 构建</p>
<p><sub>给你的 AI 代理一个声音。 ☎️</sub></p>
</div>
连接信息
猜你喜欢
暂无推荐服务器