内容
# Jarvis
[](LICENSE)
[](https://www.python.org/downloads/)
[](CODE_OF_CONDUCT.md)
[](CONTRIBUTING.md)
基于 fast-agent 和模型上下文协议(MCP)构建的自托管 AI 助手。它可以启动一个多智能体团队,能够一起计划、研究、设计、编码、测试和部署。
> **状态:** 活跃开发中。公开版本始于 `v1.0.0`。
> 核心架构在 [`AGENTS.md`](AGENTS.md) 和 [`docs/SELF_HOSTING.md`](docs/SELF_HOSTING.md) 中有详细说明。
## 功能
- **多智能体启动**:一个 7 角色的敏捷团队(项目经理、业务分析师、系统分析师、开发人员、设计师、质量工程师、部署支持人员)通过智能体间的电子邮件和会议协议进行协调。
- **MCP 优先工具**:文件系统、GitHub、Atlassian、Figma、网页抓取(Scrapling)、Roborock 吸尘器、Google 日历 / Gmail、故事爬虫、TTS — 所有这些都作为 MCP 服务器暴露。
- **免提语音**:实时语音转文本(使用 faster-whisper 和 VAD,可选唤醒词)+ 流式文本转语音(Edge 默认;ElevenLabs / OpenAI / Azure / System 按需)通过 WebSocket,具有打断功能。故事仅限于免费 Edge,因此付费引擎不会消耗长表单配额。
- **网页仪表盘**:用于与 Jarvis 聊天、配置提供商、语音引擎、查看智能体时间线和管理机密的 Vue + Vite UI。
- **自托管友好**:单个 `docker compose up -d` 命令即可在 Linux 服务器上启动整个堆栈。
## 快速开始
```bash
git clone --recurse-submodules https://github.com/omnigentx/jarvis.git
cd jarvis
# 复制并编辑机密文件
cp backend/.env.example backend/.env
cp backend/fastagent.secrets.yaml.example backend/fastagent.secrets.yaml
# 使用您的 API 密钥编辑这两个文件
docker compose up -d --build
```
- 网页界面:<http://localhost>
- 后端 API:<http://localhost:8000>
有关完整的自托管演练(防火墙、SSL、GitHub Actions 自托管运行器、Cloudflare Tunnel),请参见 [`docs/SELF_HOSTING.md`](docs/SELF_HOSTING.md)。
## 项目布局
```
jarvis/
├── backend/ FastAPI 服务器,fast-agent 运行时,MCP 工具服务器
│ ├── agent.py 静态智能体定义(Jarvis 和子智能体)
│ ├── server.py FastAPI 入口点 + 生命周期
│ ├── routes/ HTTP/SSE 端点
│ ├── services/ 业务逻辑(会话、启动桥、TTS 等)
│ ├── tools/ 自定义 MCP 工具服务器(IoT、故事爬虫等)
│ ├── team_templates/ 智能体团队定义(agile_team.yaml)
│ ├── fast-agent/ 子模块 — fast-agent 框架 + 启动系统
│ ├── figma-ui-mcp/ 子模块 — Figma MCP 服务器
│ ├── mcp-atlassian/ 子模块 — Atlassian MCP 服务器
│ ├── realtimestt_src/ 子模块 — KoljaB/RealtimeSTT 的分支(免提语音转文本)
│ └── realtimetts_src/ 子模块 — KoljaB/RealtimeTTS 的分支(流式文本转语音)
├── frontend/ Vue 3 + Vite 网页界面(活跃的前端)
├── xiaozhi_integration/ 🧪 实验性 — 通过 MCP 将 Xiaozhi ESP32 设备连接到后端
├── docs/ 自托管和架构文档
└── docker-compose.yaml 顶级堆栈(后端 + 网页)
```
## 架构概述
Jarvis 是一个 `fast-agent` 应用程序。根智能体(Jarvis)将工具调用委托给一组精选的子智能体,每个子智能体都由自己的 MCP 服务器支持。启动系统允许 Jarvis(或项目经理智能体)动态启动隔离的智能体子进程以进行并行工作。智能体通过智能体间的电子邮件总线和会议室协议进行通信。会话、智能体注册和机密存储在 `backend/data/` 下的 SQLite 数据库中(被 gitignore)。技能(带有 YAML 前言的 Markdown 文件)在运行时注入可重用的提示和引用。有关更深入的介绍,请参见 [`AGENTS.md`](AGENTS.md)。
## 社区
- 问题、想法、展示和交流 → [GitHub Discussions](https://github.com/omnigentx/jarvis/discussions)
- 可行的错误 / 功能请求 → [GitHub Issues](https://github.com/omnigentx/jarvis/issues)
- 所有参与者都应遵守 [行为准则](CODE_OF_CONDUCT.md)。
## 贡献
欢迎拉取请求。请在打开拉取请求之前阅读 [`CONTRIBUTING.md`](CONTRIBUTING.md)。
## 隐私和外部 API
语音和聊天功能可以通过云提供商路由。根据后端配置,以下内容会离开您的主机:
**TTS(文本转语音)** — 发送文本主体:
| 引擎 | 网络出口 | 默认 |
|------------|------------------------|---------|
| edge | Microsoft Edge TTS API | ✅ |
| soniox | Soniox (US) | opt-in |
| elevenlabs | ElevenLabs (US) | opt-in |
| openai | OpenAI (US) | opt-in |
| azure | Microsoft Azure | opt-in |
| system | 本地仅限 | opt-in |
**STT(语音转文本)** — 发送音频帧:
| 引擎 | 网络出口 | 默认 |
|-----------------|----------------|---------|
| faster_whisper | 本地仅限 | ✅ |
| gipformer_vi | 本地仅限 | opt-in |
| soniox | Soniox (US) | opt-in |
**聊天 LLM** — 您的消息 + 工具输出会发送到您配置的提供商(Anthropic / OpenAI / OpenRouter / 本地 Ollama 等)。请选择符合您数据隐私政策的提供商。
对于敏感内容,请选择仅限本地的路径:`faster_whisper` STT + `system` TTS + Ollama 用于聊天 LLM。设置 → 语音显示一个 **云** / **本地** 芯片,您可以据此判断每个引擎。
## 安全
发现漏洞?请参见 [`SECURITY.md`](SECURITY.md)。请不要为安全漏洞提交公开问题。
## 许可证
[MIT](LICENSE) © 2026 Phuc Nguyen Van.
Jarvis 捆绑了第三方组件,它们有自己的条款(Apache-2.0 等)。有关归属列表,请参见 [`NOTICE`](NOTICE)。