本文说明运行项目需要安装的软件,以及 MySQL、Redis、MinIO、模型和旅行 Skill 的配置方式。所有真实密钥只写入本地 .env 或通过系统的用户凭据功能保存,不要提交到 Git。
面试演示只需要:
- Python 3.11 或更高版本
- uv(Python 包与虚拟环境管理)
- Node.js 20.19+ 或 22.12+
- npm
可从以下官方入口安装:
本地演示默认使用 SQLite,不需要安装 MySQL、Redis 或 MinIO,也可以在不配置模型密钥的情况下运行确定性流程。
在项目根目录执行:
uv sync --python 3.11 --extra dev
npm install
cd frontend
npm install
cd ..
Copy-Item .env.example .env三组命令的作用分别是:
uv sync:安装 FastAPI、LangChain、LangGraph、SQLAlchemy、Redis 客户端、测试和代码检查依赖。- 根目录
npm install:安装途牛、FlyAI、RollingGo 和签证 MCP 的项目级 CLI。 frontend/npm install:安装 React、Vite、Ant Design 和前端开发依赖。
保持 .env 中以下配置即可使用本地演示模式:
GOGO_USE_LLM=false
GOGO_DATABASE_URL=sqlite:///./gogo_travel.db
REDIS_URL=
CLUSTER_MODE=false首次启动时会自动创建 SQLite 数据库和演示数据。
启动后端:
uv run uvicorn backend.api.main:app --reload --port 8080另开终端启动前端:
cd frontend
npm run dev访问地址:
- 前端:
http://localhost:5173 - API 文档:
http://localhost:8080/docs
SQLite 足够本地演示。需要更接近生产环境时,可安装 MySQL 8,创建 gogo_travel 数据库,然后修改 .env:
GOGO_DATABASE_URL=mysql+pymysql://gogo:your_password@127.0.0.1:3306/gogo_travel?charset=utf8mb4使用 Docker 的示例:
docker run --name gogo-mysql -e MYSQL_ROOT_PASSWORD=change_me -e MYSQL_DATABASE=gogo_travel -p 3306:3306 -d mysql:8应用启动时会自动创建所需表。生产环境应使用独立账号和强密码,不要直接使用 root 账号。
Redis 用于共享会话、缓存、工具熔断状态、凭据密文和多实例中断广播。单机演示可以不启用;多实例部署必须配置同一个 Redis。
使用 Docker 启动:
docker run --name gogo-redis -p 6379:6379 -d redis:7-alpine对应 .env:
REDIS_URL=redis://127.0.0.1:6379/0
CLUSTER_MODE=false只有部署多个 API 实例时才设置 CLUSTER_MODE=true。
MinIO 用于保存生成的行程 HTML。未配置时不影响核心演示流程。
使用 Docker 启动:
docker run --name gogo-minio -p 9000:9000 -p 9001:9001 -e MINIO_ROOT_USER=gogo_admin -e MINIO_ROOT_PASSWORD=change_this_password -v gogo-minio-data:/data -d quay.io/minio/minio server /data --console-address ":9001"对应 .env:
MINIO_ENDPOINT=127.0.0.1:9000
MINIO_ACCESS_KEY=gogo_admin
MINIO_SECRET_KEY=change_this_password
MINIO_BUCKET=gogo-travel这些示例值只能用于本地开发,生产环境必须更换。
启用真实模型调用:
GOGO_USE_LLM=true
OPENAI_API_KEY=your_api_key
OPENAI_BASE_URL=your_openai_compatible_endpoint如果使用 DashScope,可配置 DASHSCOPE_API_KEY。百炼长期记忆和知识库默认关闭,只有准备好相应的 AccessKey、Workspace、Index 和 Memory Library 后再开启:
BAILIAN_MEMORY_ENABLED=true
BAILIAN_KNOWLEDGE_ENABLED=true
BAILIAN_ACCESS_KEY_ID=your_access_key_id
BAILIAN_ACCESS_KEY_SECRET=your_access_key_secret
BAILIAN_WORKSPACE_ID=your_workspace_id
BAILIAN_INDEX_ID=your_index_id
BAILIAN_MEMORY_LIBRARY_ID=your_memory_library_idSkill 定义已经包含在 backend/resources/skills/,不需要再执行额外的 skill install。在项目根目录执行一次 npm install,即可安装项目声明的 CLI:
| 能力 | 本地依赖 | 凭据或授权 |
|---|---|---|
| 途牛搜索与预订 | tuniu-cli,由根目录 npm install 安装 |
在系统中为当前用户保存途牛 API Key |
| FlyAI 搜索 | @fly-ai/flyai-cli,由根目录 npm install 安装 |
可免 Key 试用;增强能力需要 FlyAI API Key |
| 航班管家 | 直接调用远程 HTTP MCP,无额外 CLI | 在系统中为当前用户保存航班 API Key |
| RollingGo 酒店 | @rollinggo/hotel,由根目录 npm install 安装 |
首次使用时完成浏览器 OAuth 授权 |
| 签证查询 | orizn-visa-mcp,由根目录 npm install 安装 |
按需配置 ORIZN_VISA_API_KEY |
| 天气 | 默认可使用公开天气数据;也支持天气 MCP | 按需配置 WEATHER_MCP_ENDPOINT |
| 目的地新闻 | HTTP API | 配置 NEWS_API_KEY |
第三方旅行 API Key 不应直接写进命令或提交到 .env。项目会通过 Agent 凭据工具按用户加密保存,并在调用时注入。
uv run pytest -q
uv run ruff check backend tests
cd frontend
npm run build当前基线为 116 项 Python 测试通过,后端静态检查和前端生产构建通过。
uv找不到:重新打开终端并确认 uv 已加入 PATH。npm install失败:确认 Node.js 版本符合要求,并检查网络代理。- CLI 找不到:必须先在项目根目录执行
npm install,不要依赖全局安装。 - MySQL 连接失败:检查端口、账号、密码、数据库名和
pymysql连接串。 - Redis 连接失败:单机演示可暂时清空
REDIS_URL;集群模式不能省略 Redis。 - 前端请求失败:确认后端运行在
8080端口,并检查 Vite 的代理配置。