pathfinder
cd pathfinder
# 2. 后端 — 安装 + seed(预置 5 个目标 / 12 周计划 / 30 集课程)
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python -m app.seed # ⚠️ 必须先 seed,否则前端无数据
uvicorn app.main:app --port 8000 --reload
# 3. 前端 — 新开一个终端
cd ../frontend
npm install
npm run dev # 默认 http://localhost:5173
# 4. 打开浏览器
# → http://localhost:5173
# → 默认看到 5 个种子目标,点进去即可看 12 周计划
```
### 端口约定
| 服务 | 端口 | 说明 |
|---|---|---|
| 前端 Vite Dev Server | **5173** | UI 主入口 |
| 后端 FastAPI | **8000** | API + 自动文档 `/docs` |
| Vite Proxy | `/api/*` → `localhost:8000` | 避免 CORS |
### 常见问题
- **Q: 看不到目标?** A: 必须先跑 `python -m app.seed`,否则数据库为空
- **Q: B 站视频解析失败?** A: 默认走 mock 数据,页面顶部会有提示 — 这正是 SIGALRM 8s 兜底的作用
- **Q: AI 拆解看着像模板?** A: 当前确实是 mock 主题库(规则匹配),GLM-4-Flash 已规划接入,见架构图黄色虚线模块
- **Q: 想清空数据重来?** A: `rm backend/database.db && python -m app.seed`
---
## 6. 项目结构
```
pathfinder/
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI 入口
│ │ ├── database.py # SQLAlchemy session
│ │ ├── seed.py # 种子数据(5 目标 + 12 周 + 30 集)
│ │ ├── models/ # Goal / WeeklyPlan / Task / CheckIn / Course / Episode / Resource
│ │ ├── schemas/ # Pydantic v2 schemas
│ │ ├── routers/ # ai / goals / plans / tasks / courses / resources / dashboard / checkins
│ │ └── services/ # bilibili.py / youtube.py(M2.5 解析层)
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── App.tsx # 路由
│ │ ├── pages/ # GoalsPage / PlanPage / DailyPage / DashboardPage / ResourcesPage
│ │ ├── components/ # EmbedPlayer(M2.5 站内播放)
│ │ ├── store/ # Zustand
│ │ └── api/ # Axios 封装
│ ├── vite.config.ts # 含 dev proxy
│ └── package.json
├── screenshots/ # (后续 B2 录制后填入)
├── docs/
└── README.md # ← 你在这里
```
---
## 7. 路线图 / 后续规划
- [ ] 接入智谱 GLM-4-Flash,把 mock 主题库升级为真 AI 拆解
- [ ] 接入 B 站官方 API + 智谱视频理解 API(替代 `bilibili-api-python`)
- [ ] 用户系统(目前所有数据匿名共享)
- [ ] 移动端 PWA(目前是桌面优先)
- [ ] 同目标学习者匿名对比(social proof)
---
## 8. 关于本次参赛
- **赛事**:TRAE AI 创造力大赛 (2026)
- **报名状态**:✅ 已成功报名
- **截止时间**:2026-07-15
- **提交物**:本仓库(含本 README) + Demo 视频(B2 Agent 录制中)
> 本项目 100% 由人类 + AI 协作完成,代码 / 文档 / 架构图均经过多次评审迭代,所有 AI 输出均经人工校对。
---
Made with ❤️ + 🤖 for TRAE AI 创造力大赛 2026
PathFinder — 让 B 站学习有进度条
---
## 9. 🆕 Deep Agent 集成 (Phase 9, 2026-07-04)
### 主 Agent + 5 个 Sub-Agent 编排
```
主 Agent (orchestrator / 调度员)
├─ research-agent 5 tools → 找 B 站/YouTube/文章 + 资源库去重
├─ analytics-agent 1 tool → 查目标/打卡/XP 统计
├─ exercise-agent 3 tools → 出题 + 判分 + 错题
├─ memory-agent 4 tools → 偏好读/写 + 情景记忆
└─ integration-agent 14 tools (MCP) → filesystem/Notion/GitHub 外部学习系统
```
主 Agent 通过 deepagents 的 `task` 工具**委派**给 subagent, 可并行调多个。
### LangChain MCP 集成
| MCP Server | 启用条件 | 用途 |
|---|---|---|
| filesystem | 默认 | 读 workspace 下文件 + 内置 fetch_url / fetch_youtube_transcript |
| github | `GITHUB_PERSONAL_ACCESS_TOKEN` | 读 GitHub repo / issue / PR |
| notion | `NOTION_API_KEY` | 读 Notion 学习笔记 |
**启用 GitHub MCP**:
```bash
export GITHUB_PERSONAL_ACCESS_TOKEN=***
# 重启 backend
```
**启用 Notion MCP**:
```bash
export NOTION_API_KEY=***
# 重启 backend
```
### 启动后端 (注意 `--loop asyncio`)
```bash
cd backend && source venv/bin/activate
pip install -r requirements.txt # 包含 deepagents / langchain-mcp-adapters / nest-asyncio
uvicorn app.main:app --host 0.0.0.0 --port 8000 --loop asyncio
```
**`--loop asyncio` 必须**: uvicorn 默认用 uvloop, 与 nest_asyncio 不兼容。
### 8 个新端点
```
POST /api/agent/chat # Deep Agent 多步推理
POST /api/agent/confirm # 批量入库资源
POST /api/agent/exercise/submit # 答题判分
GET /api/agent/exercises # 题目列表
GET /api/agent/wrong-questions # 错题列表
GET /api/agent/preferences # 读偏好
POST /api/agent/preferences # 写偏好
GET /api/agent/mcp/servers # MCP server 状态
GET /api/agent/runs # 历史会话审计
```
### 跑 E2E 测试
```bash
cd backend && source venv/bin/activate
pytest tests/test_agent.py -v # 11 个测试, 需 ARK_API_KEY
```