7.0 KiB
7.0 KiB
工作日志 — 2026-05-22
一、Admin 项目架构修复(凌晨)
1. admin-ai-chat 模块部署 ✅
问题: Admin 前端 TaskAssistant.tsx 调用 /admin-api/ai/chat,但 NestJS 服务端没有对应模块。
修复:
- 提交推送
admin-ai-chat模块(controller/service/module/dto),端点POST /admin-api/ai/chat - 修复
AdminUsersModule缺少PasswordService依赖 - 修复
AdminRoleimport 路径role.enum→admin-role.enum - 修复 systemd 启动路径
dist/main.js→dist/src/main.js - 创建 admin 账号
admin@zhixi.app / admin123 - 添加
GET /admin-api/ai/dashboard端点
2. Hermes Agent 集成 🔶
发现: 4核4G 上运行 hermes-agent Docker 容器(nousresearch/hermes-agent:0.14.0),是一个带 Web Dashboard 的 AI Agent 平台。
Hermes 架构:
- Dashboard:端口 9119(Web UI)
- Gateway:负责连接外部平台(飞书/微信/Discord 等 30+ 平台)
- 内置 OpenAI 兼容 API Server(
api_server.py):端口 8642,提供/v1/chat/completions
已完成:
- ✅ 启动 Hermes Gateway
- ✅ 启用
api_server平台(环境变量API_SERVER_ENABLED=true) - ✅ 配置 DeepSeek 作为推理后端(
config.yaml) - ✅ 设置 API Key 认证
zhixi-hermes-key-2026 - ✅ Docker 端口映射 8642
- ✅ UFW 开放 8642(仅内网 172.21.0.0/16 + 10.2.0.0/16)
- ✅ NestJS
AdminAiChatService改为 Hermes 优先 + DeepSeek 降级
二、内网安全组排查与打通 ✅
问题
蜂驰云 8核32G(172.21.0.4)→ 轻量云 4核4G(10.2.0.7):8642 不通
排查过程
- SSH 到两台服务器实测
- 内网 ping 通(1.8ms)
- 轻量云 UFW 已放行 172.21.0.0/16 → :8642
- iptables 里
YJ-FIREWALL-INPUT链(腾讯云 Lighthouse 防火墙)拦截 - 根因:控制台防火墙未添加 8642 规则
修复
- 腾讯云控制台 → Lighthouse → 81.70.187.179 → 防火墙 → 添加 TCP 8642,来源 172.21.0.4
- 连通后 curl 测试:http_code=200,延迟 2.84s ✅
三、去掉 DeepSeek 降级逻辑 ✅
原因: Hermes 优先 + DeepSeek 降级的设计导致不知道实际用了哪个服务。
改动:
admin-ai-chat.service.ts:移除DeepSeekProvider注入和callDeepSeek方法admin-ai-chat.module.ts:移除DeepSeekProvider注册- Hermes 挂了直接抛错,不再静默降级
全链路架构(最终版):
Admin 前端 (Vite) → POST /admin-api/ai/chat
→ NestJS AdminAiChatService (8核32G)
→ POST http://10.2.0.7:8642/v1/chat/completions (Hermes)
→ 失败直接报错,前端可见
四、Admin 前端部署 ✅
部署配置
| 项目 | 值 |
|---|---|
| 域名 | https://admin.longde.cloud |
| 服务器 | 蜂驰云 8核32G (120.53.227.155) |
| 部署目录 | /opt/zhixi/admin/dist/ |
| Web 服务器 | Nginx(SPA fallback + 静态资源缓存) |
| SSL | Let's Encrypt,2026-08-20 到期,自动续期 |
Nginx 配置
/→ SPA fallbacktry_files $uri /index.html/assets/→ 1年缓存- HTTP → HTTPS 自动跳转
CI/CD 流水线
push main → prod runner
→ git clone http://10.2.0.7:3000/wangdl/admin-projects.git
→ npm ci → npm run build
→ rsync dist/ → /opt/zhixi/admin/dist/
→ nginx reload
→ curl 健康检查
五、修复 API 部署流水线 ✅
发现的问题
旧 workflow 只部署了 RAG Worker,NestJS 代码不会自动更新!
旧流水线(有缺陷)
| 步骤 | 状态 |
|---|---|
| git clone/pull | ✅ |
| npm ci | ❌ 缺失 |
| prisma generate | ❌ 缺失 |
| nest build | ❌ 缺失 |
| prisma migrate deploy | ❌ 缺失 |
| rsync dist/node_modules/prisma | ❌ 缺失 |
| restart zhixi-api | ❌ 缺失 |
| deploy RAG Worker | ✅ |
| health check | ✅ |
新流水线
push main → prod runner
→ git clone/pull
→ npm ci
→ prisma generate + nest build
→ docker start mysql/redis/qdrant
→ 清理失败 migration
→ prisma migrate deploy
→ rsync dist/ node_modules/ prisma/ package.json → /opt/zhixi/backend/
→ systemctl restart zhixi-api
→ deploy RAG Worker + restart zhixi-worker
→ curl health check
踩坑
prisma migrate deploy报错 exit code 1 → 缺少DATABASE_URL环境变量,workflow 顶部加env解决
六、Hermes api_server 架构确认
Gateway 配置
/opt/data/.env:
API_SERVER_ENABLED=true
API_SERVER_KEY=zhixi-hermes-key-2026
API_SERVER_HOST=0.0.0.0
API_SERVER_PORT=8642
/opt/data/config.yaml:
model: deepseek-v4-flash
provider: custom
base_url: https://api.deepseek.com/v1
api_key: sk-ddddea4986d843be978ced9e82988fa0
gateway_state.json
{
"pid": 91,
"gateway_state": "running",
"platforms": {
"api_server": {
"state": "connected",
"updated_at": "2026-05-21T16:26:56Z"
}
}
}
api_server.py 端点
POST /v1/chat/completions— OpenAI Chat 格式POST /v1/responses— OpenAI Responses 格式GET /v1/models— 模型列表GET /v1/capabilities— API 能力声明POST /v1/runs— 启动 run(异步)GET /health— 健康检查
七、服务器状态(最终)
8核32G (120.53.227.155)
| 服务 | 状态 |
|---|---|
| zhixi-api | ✅ active,支持自动部署 |
| zhixi-worker | ✅ active,支持自动部署 |
| gitea-runner (prod) | ✅ active |
| MySQL/Redis/Qdrant | ✅ 运行中 |
| admin.longde.cloud | ✅ HTTPS,自动部署 |
| api.longde.cloud | ✅ HTTPS |
4核4G (81.70.187.179)
| 服务 | 状态 |
|---|---|
| hermes-agent | ✅ Dashboard :9119,API :8642 |
| Gitea 1.23.8 | ✅ |
| Nginx | ✅ |
| gitea-runner (web) | ✅ |
| UFW | ✅ 22/80/443/2222/9119/8642 |
部署流水线对比
| api-server | admin-projects | |
|---|---|---|
| 仓库 | suche-Hermes/api-server | wangdl/admin-projects |
| Runner | prod | prod |
| 构建 | npm ci → nest build | npm ci → vite build |
| 部署 | rsync → systemctl restart | rsync → nginx reload |
| 域名 | api.longde.cloud | admin.longde.cloud |
八、当前待办
已完成
admin-ai-chat 模块部署✅AdminUsersModule PasswordService 依赖修复✅AdminRole import 路径修复✅systemd dist 路径修复✅Admin 账号创建✅Hermes Gateway 启动✅Hermes api_server 平台启用✅NestJS → Hermes 优先调用✅腾讯云安全组添加 8642 端口✅去掉 DeepSeek 降级逻辑✅Admin 前端部署 + HTTPS✅API 部署流水线修复✅
待完成
- ⏳ 4核4G Nginx 代理
/hermes-api/→127.0.0.1:8642 - 🟢 AI 提取 prompt 调优(待真实文档)
- 🟢 COS 备份同步 + 生命周期清理
- 🟢 MySQL 物理清理脚本
- 🟢 Docker Compose 统一
- 🟢 logrotate 确认
- 🔴 学习引擎串联(待产品决策 →
待决策事项.md) - ⬜ 阶段九:iOS API 对接 + 用户闭环测试
- ⬜ 阶段十:后台管理 + 额度检查