Files
ManuAgent/README.md
2026-09-04 15:45:23 +08:00

97 lines
3.9 KiB
Markdown
Raw Permalink 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.
# 智造申报 Agent
面向智能工厂申报的 Harness Agent 应用。用户创建企业项目并上传可用材料Agent 完成材料检验与建设规划确认后自主调用知识库、Skill 和受控工作区生成带 Word 原生批注的 DOCX 审阅稿。
## 技术栈
- Spring Boot 3.5.16、JDK 21、AgentScope Java 2.0.1、AG-UI
- Vue 3.5、Vite、Element Plus、Vue Element Plus X
- PostgreSQL 17、Flyway
## 本地启动
```bash
docker build -t smart-factory-agent-runtime:0.1.0 -f sandbox/Dockerfile sandbox
docker compose up -d postgres
mvn -q -f server/pom.xml spring-boot:run
npm --prefix web-ui install
npm --prefix web-ui run dev
```
本地开发服务器默认使用 Vite 配置的端口。容器化部署固定从 <http://127.0.0.1:5173> 访问。
模型连接只能在“模型配置”页面新增并持久化到 PostgreSQLAPI Key 会使用 `APP_MASTER_KEY`
环境变量提供的主密钥加密后保存。`dashscope_key.txt` 仅供百炼知识库使用,不参与模型配置。
启动后端前必须设置模型密钥加密主密钥:
```powershell
$env:APP_MASTER_KEY = '<使用独立生成的高强度密钥>'
```
## Docker Compose 部署
部署包含 Nginx 前端、Spring Boot 后端、Agent Runtime 镜像和 PostgreSQL。Agent Runtime
不是常驻 API 服务:镜像在开发机预先构建并导入服务器,服务器上的 `agent-runtime` 服务只校验
镜像存在,随后以状态码 0 退出;后端再通过 Docker Socket 为每个 Agent Session 动态创建隔离容器。
1. 在开发机构建并导出 Agent Runtime 镜像:
```bash
docker build -t smart-factory-agent-runtime:0.1.0 -f sandbox/Dockerfile sandbox
docker save -o smart-factory-agent-runtime-0.1.0.tar smart-factory-agent-runtime:0.1.0
```
将 Tar 文件传到服务器后导入。Compose 设置了 `pull_policy: never`,若镜像不存在会直接报错,
不会在服务器自动拉取或构建:
```bash
docker load -i smart-factory-agent-runtime-0.1.0.tar
docker image inspect smart-factory-agent-runtime:0.1.0
```
2. 复制环境变量模板并替换其中的三个必填密码/密钥;生产环境建议使用密码管理系统生成随机值。
```bash
cp .env.example .env
```
3. 确认 `MANUAGENT_DATA_ROOT` 是 Docker 宿主机上的绝对路径。这个路径会以完全相同的路径挂载到
后端容器,供动态 Agent Runtime 继续挂载项目材料、工作目录和产物。Linux 默认值为
`/srv/manuagent/data`。
4. 构建前后端并启动完整服务:
```bash
docker compose -f docker-compose.yml up -d --build
docker compose -f docker-compose.yml ps
```
5. 打开 <http://127.0.0.1:5173>,使用 `.env` 中的 `APP_ADMIN_USERNAME` 和
`APP_ADMIN_PASSWORD` 登录。查看日志或停止服务:
```bash
docker compose -f docker-compose.yml logs -f backend
docker compose -f docker-compose.yml down
```
默认端口映射为 `0.0.0.0:5173:80`。若 Windows 的动态端口排除范围占用了 5173可仅在本机
验证时临时执行 `$env:FRONTEND_PORT = '15173'`Linux 服务器部署应保留默认的 5173。
PostgreSQL 数据保存在 `postgres-data` 命名卷中项目材料、Agent 工作区、快照和生成文件保存在
`MANUAGENT_DATA_ROOT`。`docker compose down` 不会删除它们,只有显式增加 `--volumes` 才会删除
PostgreSQL 卷。后端挂载 Docker Socket 等价于授予其管理宿主机容器的高权限,应只在受信任的
Docker 主机上运行,并限制 5173 端口的网络访问范围。通过 HTTPS 反向代理部署时,请将
`SESSION_COOKIE_SECURE` 设为 `true`。
## 验证
```bash
mvn -q -f server/pom.xml test
npm --prefix web-ui run test
npm --prefix web-ui run build
docker compose -f docker-compose.yml config --quiet
```
产品、数据库与验收设计见 [docs](docs/)。内置 Skill 与资源由 Flyway 种子迁移写入数据库,无需额外导入文件。