5.4 KiB
ZK Data Agent
ZK Data Agent 是面向中控数据开发流程的 Agent 服务。当前仓库包含:
- Python 后端:负责 Agent loop、工具调用、会话持久化和数据开发工具。
- Next.js 前端:提供 Web UI、会话管理、工具调用展示和数据开发交互入口。
- Skill / Tools:承载产品定义到数据生成、线上数据挖掘等数据开发链路。
快速部署
从 Git 一键部署
适合首次部署。首次安装会默认初始化 Ubuntu 系统依赖,必要时请求 sudo;应用本身仍部署在用户目录。
git clone git@git.n.xiaomi.com:wuyang6/zk-data-agent.git "$HOME/zk-data-agent" || true
bash "$HOME/zk-data-agent/scripts/install-from-git.sh"
后续更新不需要安装系统依赖,可以使用:
bash "$HOME/zk-data-agent/scripts/install-from-git.sh"
默认部署目录是 $HOME/zk-data-agent,默认分支是 main。修改部署目录或分支时再加变量:
git clone git@git.n.xiaomi.com:wuyang6/zk-data-agent.git "$HOME/zk-data-agent-test" || true
APP_DIR="$HOME/zk-data-agent-test" bash "$HOME/zk-data-agent-test/scripts/install-from-git.sh"
这个命令会自动完成:
- 目标目录不存在时执行
git clone - 目标目录已存在时执行
git fetch/git pull --ff-only - 进入仓库后执行
bash scripts/deploy-ubuntu.sh
说明:仓库是私有仓库,curl | bash 拉 raw 文件时容易拿到登录页 HTML;因此推荐直接走 SSH git 权限。
仓库内一键部署/更新
如果已经在仓库目录中,日常更新直接执行:
bash scripts/deploy-ubuntu.sh
已完成首次部署后,如果只是普通代码更新,可以使用快速更新:
bash scripts/update-server-fast.sh
快速更新只会拉取代码、构建前端并重启用户服务;如果本次改动包含依赖、systemd 模板或部署脚本变化,请使用 scripts/deploy-ubuntu.sh。
如果是全新 Ubuntu 机器,首次安装可以让脚本顺手安装系统依赖:
bash scripts/deploy-ubuntu.sh --bootstrap-system
--bootstrap-system 会使用 sudo apt-get 安装 Python 编译依赖、git、curl 等系统包;应用代码、.venv、前端依赖、运行数据和 systemd 用户服务仍然都在当前用户目录下。
部署指定分支:
bash scripts/deploy-ubuntu.sh main
强制覆盖服务器工作区:
bash scripts/deploy-ubuntu.sh main --force
部署配置
首次执行 scripts/deploy-ubuntu.sh 时,如果仓库根目录不存在 .env.deploy,脚本会交互式提示输入:
OPENAI_API_KEYOPENAI_BASE_URLOPENAI_MODEL- 后端监听地址和端口
- 前端监听地址和端口
配置会写入:
.env.deploy
该文件包含敏感信息,只保存在部署机器本地,权限会设置为 600,并且已被 .gitignore 忽略,不会提交到 git。
如需修改模型或 key:
vim .env.deploy
可参考示例:
cp .env.deploy.example .env.deploy
运行方式
部署脚本会安装两个用户级 systemd 服务,不需要 sudo:
zk-data-agent-backend
zk-data-agent-frontend
查看状态:
systemctl --user status zk-data-agent-backend
systemctl --user status zk-data-agent-frontend
查看日志:
journalctl --user -u zk-data-agent-backend -f
journalctl --user -u zk-data-agent-frontend -f
重启服务:
systemctl --user restart zk-data-agent-backend zk-data-agent-frontend
停止服务:
systemctl --user stop zk-data-agent-backend zk-data-agent-frontend
本地开发启动
本地调试可以使用:
bash scripts/start-webui.sh
默认端口:
- 前端:
http://127.0.0.1:3000 - 后端:
http://127.0.0.1:8765
scripts/start-webui.sh 会优先读取本机 .env.deploy,也可以直接使用当前 shell 中的环境变量。
环境要求
Ubuntu 部署建议准备:
gitbashcurlsystemdpyenv- Python
3.10.14 - Node.js
20或22 npm
如果机器缺少 Python 编译依赖,首次执行时可加 --bootstrap-system,脚本会请求 sudo 安装系统包。日常部署和更新不需要 sudo。
Python 后端依赖由部署脚本安装到项目根目录 .venv。
前端依赖由部署脚本在 frontend/app 下执行 npm ci 安装,并执行 npm run build。
部署脚本会把当前 shell 中可用的 npm 路径写入 .env.deploy,避免用户级 systemd 服务启动时读取不到 zsh/nvm 环境。
默认部署使用用户级 systemd,不需要 sudo。若机器要求服务在用户退出 SSH 后仍保持运行,可由管理员额外执行:
loginctl enable-linger <username>
目录说明
backend/ FastAPI Web 后端
frontend/app/ Next.js 前端
src/ Agent runtime、tools、skills
scripts/ 本地启动、部署、systemd 启动脚本
deploy/systemd/ systemd service 模板
.port_sessions/ 本地运行数据,禁止提交
.env.deploy 本机私有部署配置,禁止提交
注意事项
- 不要把
OPENAI_API_KEY写入可提交文件。 .env.deploy、.venv、.port_sessions都是本机文件,不进入 git。- 服务器更新优先使用
bash scripts/deploy-ubuntu.sh,不要手工分散执行依赖安装和服务重启。 - 生产/长期运行使用 systemd 服务;
scripts/start-webui.sh只用于本地调试。