7.0 KiB
Raw Permalink Blame History

工作日志 — 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 依赖
  • 修复 AdminRole import 路径 role.enumadmin-role.enum
  • 修复 systemd 启动路径 dist/main.jsdist/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端口 9119Web UI
  • Gateway负责连接外部平台飞书/微信/Discord 等 30+ 平台)
  • 内置 OpenAI 兼容 API Serverapi_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核32G172.21.0.4)→ 轻量云 4核4G10.2.0.7:8642 不通

排查过程

  1. SSH 到两台服务器实测
  2. 内网 ping 通1.8ms
  3. 轻量云 UFW 已放行 172.21.0.0/16 → :8642
  4. iptables 里 YJ-FIREWALL-INPUT 链(腾讯云 Lighthouse 防火墙)拦截
  5. 根因:控制台防火墙未添加 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 服务器 NginxSPA fallback + 静态资源缓存)
SSL Let's Encrypt2026-08-20 到期,自动续期

Nginx 配置

  • / → SPA fallback try_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 WorkerNestJS 代码不会自动更新

旧流水线(有缺陷)

步骤 状态
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 :9119API :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

八、当前待办

已完成

  1. admin-ai-chat 模块部署
  2. AdminUsersModule PasswordService 依赖修复
  3. AdminRole import 路径修复
  4. systemd dist 路径修复
  5. Admin 账号创建
  6. Hermes Gateway 启动
  7. Hermes api_server 平台启用
  8. NestJS → Hermes 优先调用
  9. 腾讯云安全组添加 8642 端口
  10. 去掉 DeepSeek 降级逻辑
  11. Admin 前端部署 + HTTPS
  12. API 部署流水线修复

待完成

  1. 4核4G Nginx 代理 /hermes-api/127.0.0.1:8642
  2. 🟢 AI 提取 prompt 调优(待真实文档)
  3. 🟢 COS 备份同步 + 生命周期清理
  4. 🟢 MySQL 物理清理脚本
  5. 🟢 Docker Compose 统一
  6. 🟢 logrotate 确认
  7. 🔴 学习引擎串联(待产品决策 → 待决策事项.md
  8. 阶段九iOS API 对接 + 用户闭环测试
  9. 阶段十:后台管理 + 额度检查