Files
zk-data-agent/README.md
T
2026-05-07 12:03:00 +08:00

189 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ZK Data Agent
ZK Data Agent 是面向中控数据开发流程的 Agent 服务。当前仓库包含:
- Python 后端:负责 Agent loop、工具调用、会话持久化和数据开发工具。
- Next.js 前端:提供 Web UI、会话管理、工具调用展示和数据开发交互入口。
- Skill / Tools:承载产品定义到数据生成、线上数据挖掘等数据开发链路。
## 快速部署
### 从 Git 一键部署
适合首次部署,也适合后续更新:
```bash
APP_DIR="$HOME/zk-data-agent" BRANCH="main" REPO="git@git.n.xiaomi.com:wuyang6/zk-data-agent.git" bash -lc '
set -euo pipefail
if [ -d "$APP_DIR/.git" ]; then
cd "$APP_DIR"
git fetch origin
git checkout "$BRANCH"
git pull --ff-only origin "$BRANCH"
else
rm -rf "$APP_DIR"
git clone --branch "$BRANCH" "$REPO" "$APP_DIR"
cd "$APP_DIR"
fi
bash scripts/deploy-ubuntu.sh "$BRANCH" --skip-git
'
```
修改部署目录或分支时,只需要调整命令开头的变量:
```bash
APP_DIR="$HOME/zk-data-agent-test" BRANCH="main" REPO="git@git.n.xiaomi.com:wuyang6/zk-data-agent.git" bash -lc '...'
```
这个命令会自动完成:
- 目标目录不存在时执行 `git clone`
- 目标目录已存在时执行 `git fetch` / `git pull --ff-only`
- 进入仓库后执行 `bash scripts/deploy-ubuntu.sh`
说明:仓库是私有仓库,`curl | bash` 拉 raw 文件时容易拿到登录页 HTML;因此推荐直接走 SSH git 权限。
### 仓库内一键部署/更新
如果已经在仓库目录中:
```bash
bash scripts/deploy-ubuntu.sh
```
部署指定分支:
```bash
bash scripts/deploy-ubuntu.sh main
```
强制覆盖服务器工作区:
```bash
bash scripts/deploy-ubuntu.sh main --force
```
## 部署配置
首次执行 `scripts/deploy-ubuntu.sh` 时,如果仓库根目录不存在 `.env.deploy`,脚本会交互式提示输入:
- `OPENAI_API_KEY`
- `OPENAI_BASE_URL`
- `OPENAI_MODEL`
- 后端监听地址和端口
- 前端监听地址和端口
配置会写入:
```text
.env.deploy
```
该文件包含敏感信息,只保存在部署机器本地,权限会设置为 `600`,并且已被 `.gitignore` 忽略,不会提交到 git。
如需修改模型或 key
```bash
vim .env.deploy
```
可参考示例:
```bash
cp .env.deploy.example .env.deploy
```
## 运行方式
部署脚本会安装两个用户级 systemd 服务,不需要 sudo
```bash
zk-data-agent-backend
zk-data-agent-frontend
```
查看状态:
```bash
systemctl --user status zk-data-agent-backend
systemctl --user status zk-data-agent-frontend
```
查看日志:
```bash
journalctl --user -u zk-data-agent-backend -f
journalctl --user -u zk-data-agent-frontend -f
```
重启服务:
```bash
systemctl --user restart zk-data-agent-backend zk-data-agent-frontend
```
停止服务:
```bash
systemctl --user stop zk-data-agent-backend zk-data-agent-frontend
```
## 本地开发启动
本地调试可以使用:
```bash
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 部署建议准备:
- `git`
- `bash`
- `curl`
- `systemd`
- `pyenv`
- Python `3.10.14`
- Node.js `20``22`
- `npm`
Python 后端依赖由部署脚本安装到项目根目录 `.venv`
前端依赖由部署脚本在 `frontend/app` 下执行 `npm ci` 安装,并执行 `npm run build`
默认部署使用用户级 systemd,不需要 sudo。若机器要求服务在用户退出 SSH 后仍保持运行,可由管理员额外执行:
```bash
loginctl enable-linger <username>
```
## 目录说明
```text
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` 只用于本地调试。