167 lines
3.7 KiB
Markdown
167 lines
3.7 KiB
Markdown
|
|
# Jarvis 个人 AI 助理
|
|||
|
|
|
|||
|
|
> 你的私人 AI 大脑 — 懂你的知识、懂你的安排
|
|||
|
|
|
|||
|
|
## 功能特性
|
|||
|
|
|
|||
|
|
- **多 Agent 协作** — 主 Agent 协调 + 4 个专业子 Agent(规划/执行/知识管理/分析)
|
|||
|
|
- **私人知识库** — LlamaIndex 智能分块 + ChromaDB 向量检索
|
|||
|
|
- **动态知识图谱** — LLM 自动抽取实体和关系,构建你的知识网络
|
|||
|
|
- **论坛 + 看板** — 发布指令让 AI 执行,管理每日任务
|
|||
|
|
- **定时任务** — 凌晨自动分析任务、扫描论坛指令、重建图谱
|
|||
|
|
- **流式对话** — WebSocket 实时流式输出
|
|||
|
|
- **本地部署** — NAS + Docker,数据完全自主可控
|
|||
|
|
|
|||
|
|
## 快速开始
|
|||
|
|
|
|||
|
|
### 前置要求
|
|||
|
|
|
|||
|
|
- Python 3.12+ (需要 uv)
|
|||
|
|
- Node.js 18+
|
|||
|
|
- Claude API Key
|
|||
|
|
|
|||
|
|
### Windows 一键启动
|
|||
|
|
|
|||
|
|
```batch
|
|||
|
|
# 1. 先配置 API Key(首次)
|
|||
|
|
setup.bat
|
|||
|
|
|
|||
|
|
# 2. 一键启动(自动装依赖 + 启动服务)
|
|||
|
|
start.bat
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 手动启动
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 配置 API Key
|
|||
|
|
cd backend
|
|||
|
|
cp .env.example .env
|
|||
|
|
# 编辑 .env,填入 ANTHROPIC_API_KEY
|
|||
|
|
|
|||
|
|
# 2. 安装依赖
|
|||
|
|
uv sync
|
|||
|
|
|
|||
|
|
# 3. 启动后端
|
|||
|
|
uv run uvicorn app.main:app --reload --port 8000
|
|||
|
|
|
|||
|
|
# 4. 新终端,启动前端
|
|||
|
|
cd frontend
|
|||
|
|
npm install
|
|||
|
|
npm run dev
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 打开浏览器
|
|||
|
|
|
|||
|
|
访问 http://localhost:5173
|
|||
|
|
|
|||
|
|
注册账号后即可使用。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## API 文档
|
|||
|
|
|
|||
|
|
后端启动后,访问 http://localhost:8000/docs 查看交互式 API 文档。
|
|||
|
|
|
|||
|
|
### 主要接口
|
|||
|
|
|
|||
|
|
| 方法 | 路径 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| POST | /api/auth/register | 注册 |
|
|||
|
|
| POST | /api/auth/login | 登录 |
|
|||
|
|
| POST | /api/conversations/chat | 发送消息 |
|
|||
|
|
| POST | /api/conversations/chat/stream | 流式对话 |
|
|||
|
|
| POST | /api/documents/upload | 上传文档 |
|
|||
|
|
| POST | /api/documents/search | 搜索知识库 |
|
|||
|
|
| GET | /api/tasks | 获取任务 |
|
|||
|
|
| POST | /api/forum/posts | 发布论坛帖子 |
|
|||
|
|
| GET | /api/graph | 获取知识图谱 |
|
|||
|
|
| GET | /api/scheduler/status | 定时任务状态 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Docker 部署(NAS)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 在 NAS 上运行
|
|||
|
|
docker-compose up -d
|
|||
|
|
|
|||
|
|
# 查看日志
|
|||
|
|
docker-compose logs -f jarvis-backend
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
数据存储在 `./data/` 目录。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 项目结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
MyAgents/
|
|||
|
|
├── backend/ # FastAPI 后端
|
|||
|
|
│ ├── app/
|
|||
|
|
│ │ ├── agents/ # LangGraph 多 Agent 系统
|
|||
|
|
│ │ │ ├── graph.py # Agent 图定义
|
|||
|
|
│ │ │ ├── state.py # 状态定义
|
|||
|
|
│ │ │ ├── prompts.py# 提示词
|
|||
|
|
│ │ │ └── tools/ # 工具集
|
|||
|
|
│ │ ├── services/ # 业务服务
|
|||
|
|
│ │ ├── routers/ # API 路由
|
|||
|
|
│ │ ├── models/ # 数据库模型
|
|||
|
|
│ │ └── schemas/ # Pydantic 模型
|
|||
|
|
│ ├── Dockerfile
|
|||
|
|
│ └── pyproject.toml
|
|||
|
|
│
|
|||
|
|
├── frontend/ # Vue 3 前端
|
|||
|
|
│ ├── src/
|
|||
|
|
│ │ ├── views/ # 页面
|
|||
|
|
│ │ ├── api/ # API 调用
|
|||
|
|
│ │ ├── stores/ # Pinia 状态
|
|||
|
|
│ │ └── router/ # 路由
|
|||
|
|
│ └── Dockerfile
|
|||
|
|
│
|
|||
|
|
├── docker-compose.yml
|
|||
|
|
└── README.md
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 开发说明
|
|||
|
|
|
|||
|
|
### 后端依赖(uv)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd backend
|
|||
|
|
uv sync # 安装依赖
|
|||
|
|
uv add <package> # 添加依赖
|
|||
|
|
uv run pytest # 运行测试
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 前端依赖
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd frontend
|
|||
|
|
npm install # 安装依赖
|
|||
|
|
npm run dev # 开发服务器
|
|||
|
|
npm run build # 构建生产版本
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 技术栈
|
|||
|
|
|
|||
|
|
| 组件 | 技术 |
|
|||
|
|
|------|------|
|
|||
|
|
| 后端 | FastAPI + SQLAlchemy async |
|
|||
|
|
| Agent | LangGraph + LangChain |
|
|||
|
|
| 知识库 | LlamaIndex + ChromaDB |
|
|||
|
|
| 前端 | Vue 3 + TypeScript + Vite |
|
|||
|
|
| 数据库 | SQLite |
|
|||
|
|
| 定时任务 | APScheduler |
|
|||
|
|
| 部署 | Docker |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## License
|
|||
|
|
|
|||
|
|
MIT
|