自我部署
从源代码自行构建并运行 Investment Agent:
-
克隆仓库
Terminal window git clone https://github.com/ishenli/investment-agent.gitcd investment-agent -
安装依赖
Terminal window pnpm install -
配置服务 在应用设置页面配置所需的 API Key 和服务:
- OpenAI / Anthropic API Key
- Finnhub API Key
- Tavily API Key(可选)
详细的配置说明请参阅 配置指南。
-
初始化数据库
Terminal window pnpm db:push -
启动应用
Terminal window pnpm dev# 访问 http://localhost:3000
Web 应用更新
Section titled “Web 应用更新”# 拉取最新代码git pull origin main
# 更新依赖pnpm install
# 推送数据库 schema 变更(如有)pnpm db:push
# 重新启动pnpm devElectron 应用更新
Section titled “Electron 应用更新”Electron 应用内置自动更新功能:
- 启动后 30 秒首次检查更新
- 之后每小时自动检查一次
- 更新下载完成后弹出通知
数据库使用 SQLite,所有数据存储在本地文件。升级时数据库文件会自动保留,但重大版本更新可能需要执行数据库迁移:
# 推送数据库 schema 变更pnpm db:push
# 生成迁移文件pnpm db:generate
# 运行迁移pnpm db:migrate# 备份数据目录cp -r data/ backup/data_$(date +%Y%m%d)/
# 导出数据库为 JSON(需要应用运行)# 可通过 Web 界面的设置页面导出生产环境部署
Section titled “生产环境部署”使用 PM2 管理进程
Section titled “使用 PM2 管理进程”# 安装 PM2npm install -g pm2
# 构建生产版本pnpm build
# 启动服务pm2 start pnpm --name "investment-agent" -- start
# 设置开机自启pm2 startuppm2 save使用 Docker 部署
Section titled “使用 Docker 部署”FROM node:20-alpine
WORKDIR /app
# 安装 pnpmRUN npm install -g pnpm
# 复制依赖文件COPY package.json pnpm-lock.yaml ./COPY drizzle ./drizzle/
# 安装依赖RUN pnpm install --frozen-lockfile
# 复制源码COPY . .
# 构建应用RUN pnpm build
# 暴露端口EXPOSE 3000
# 启动命令CMD ["pnpm", "start"]# 构建镜像docker build -t investment-agent .
# 运行容器docker run -d \ --name investment-agent \ -p 3000:3000 \ -v $(pwd)/data:/app/data \ investment-agent
# 启动后访问 http://localhost:3000,在设置页面配置 API Key端口被占用?
Section titled “端口被占用?”# 查看端口占用lsof -i :3000
# 修改启动端口PORT=8080 pnpm dev依赖安装缓慢?
Section titled “依赖安装缓慢?”# 使用国内镜像pnpm config set registry https://registry.npmmirror.com数据库迁移失败?
Section titled “数据库迁移失败?”# 检查迁移状态pnpm db:check
# 强制推送 schema(注意:会重置数据库)pnpm db:push构建内存不足?
Section titled “构建内存不足?”# 增加 Node.js 内存限制NODE_OPTIONS="--max-old-space-size=4096" pnpm build