docs/开发指南.md
如果你需要频繁修改 app 或 frontend 代码,不需要每次都重新构建 Docker 镜像,可以使用本地开发模式。
make dev-start
这将启动以下服务的 Docker 容器:
make dev-app
这将在本地直接运行 Go 应用,修改代码后 Ctrl+C 停止,重新运行即可。
make dev-frontend
这将启动 Vite 开发服务器,支持热重载,修改代码后自动刷新。
make dev-status
make dev-stop
如果你更喜欢直接使用脚本:
# 启动基础设施
./scripts/dev.sh start
# 启动后端(新终端)
./scripts/dev.sh app
# 启动前端(新终端)
./scripts/dev.sh frontend
# 查看日志
./scripts/dev.sh logs
# 停止所有服务
./scripts/dev.sh stop
# 每次修改代码后都需要:
sh scripts/build_images.sh -p # 重新构建镜像(很慢)
sh scripts/start_all.sh --no-pull # 重启容器
耗时:每次修改需要 2-5 分钟
# 首次启动(只需要一次):
make dev-start
# 在另外两个终端分别运行:
make dev-app # 修改 Go 代码后 Ctrl+C 重启即可(秒级)
make dev-frontend # 修改前端代码自动热重载(无需重启)
耗时:
如果你希望后端代码修改后也能自动重启,可以安装 air:
go install github.com/air-verse/air@latest
项目根目录已内置 .air.toml,不需要手动创建配置文件。make dev-app 会检测本机是否安装了 Air:检测到 Air 时使用热重载模式,未检测到时使用普通 go run 模式。
如果只修改前端,只需要:
cd frontend
npm run dev
前端会连接到 http://localhost:8080 的后端 API。
如果只修改后端,只需要:
# 启动基础设施
make dev-start
# 运行后端
make dev-app
使用 VS Code 或 GoLand 的调试功能,配置连接到本地运行的 Go 应用。
VS Code 配置示例(.vscode/launch.json):
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Server",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${workspaceFolder}/cmd/server",
"env": {
"DB_HOST": "localhost",
"DOCREADER_ADDR": "localhost:50051",
"MINIO_ENDPOINT": "localhost:9000",
"REDIS_ADDR": "localhost:6379",
"NEO4J_URI": "bolt://localhost:7687"
},
"args": []
}
]
}
使用浏览器开发者工具即可,Vite 提供了 source map。
当你完成开发需要部署时,才需要构建镜像:
# 构建所有镜像
sh scripts/build_images.sh
# 或只构建特定镜像
sh scripts/build_images.sh -p # 只构建后端
sh scripts/build_images.sh -f # 只构建前端
sh scripts/build_images.sh -d # 只构建文档读取器
sh scripts/build_images.sh -s # 只构建沙箱镜像(Agent Skills 执行环境)
# 启动生产环境
sh scripts/start_all.sh
A: 确保先运行了 make dev-start,并等待所有服务启动完成(大约 30 秒)。
A: 检查前端的代理配置,确保 vite.config.ts 中配置了正确的代理。
A: DocReader 仍然使用 Docker 镜像,如果需要修改,需要重新构建:
sh scripts/build_images.sh -d
make dev-restart
make dev-* 命令,快速迭代sh scripts/start_all.sh --no-pull 测试完整环境sh scripts/build_images.sh + sh scripts/start_all.sh