Deeeli
← 返回博客列表

从 QQ 消息到网站上线:Hermes 多 Agent 全流程实战

从 QQ 消息到网站上线:Hermes 多 Agent 全流程实战

你在 QQ 上说一句话,几分钟后网站预览就上线了。中间发生了什么?

这是我用 Hermes Agent 搭建个人网站的完整过程。不是"AI 帮你写代码"那么简单——真正有意思的是那条从聊天消息到生产部署的全自动流水线


一、架构全景

QQ 消息
  │
  ▼
Hermes (DeepSeek)          ← 你的主对话 Agent
  │
  ├─ Manager Profile          ← 项目经理,拆任务、派活
  │     │
  │     ▼
  │   Kanban (SQLite)         ← 任务板,持久化,多 Worker 抢任务
  │     │
  │     ├─ Designer           ← 出效果图(SVG → v1 → v2 → v3 → v4)
  │     ├─ Coder              ← 写代码
  │     ├─ FullStack          ← 前后端串
  │     ├─ Reviewer           ← 代码审查
  │     ├─ Ops                ← SSH 部署到腾讯云
  │     └─ ...
  │
  ├─ Cron Jobs ×5             ← 财经舆情监控,定时抓取+邮件推送
  │
  └─ QQ Gateway               ← 双向消息(你发 → Agent 收,Agent 完成 → 通知你)

关键角色:

角色模型干什么
你对话的 AgentDeepSeek理解需求,转给 Manager
ManagerDeepSeek拆任务,分配 Worker,跟踪进度
9 个 WorkerMiniMax各自领域的专家,抢任务干活
Kanban DispatcherGateway 内置自动调度,Worker 完成了就派下一个
▲ 全流程架构:从 QQ 消息到部署上线的完整链路

二、一条消息的旅程

第 1 步:你在 QQ 说"帮我开发个人网站"

消息通过 QQ Bot Gateway 进入 Hermes。Agent 没有直接写代码——它把需求拆解,创建了一条 Kanban 任务,分配给 Manager

hermes kanban create "全功能个人品牌站开发" --assignee manager

第 2 步:Manager 拆解流水线

Manager 按照内置的标准 7 阶段流水线(Pipeline)拆解:

阶段 1: ProductManager → 需求分析,出 PRD
阶段 2: Architect     → 技术选型,Nuxt + Tailwind + PostgreSQL
阶段 2.5: Designer    → 效果图(v1→v2→v3→v4)
阶段 2.6: Reviewer    → 审查方案
阶段 3: Coder/FullStack → 并行开发
阶段 4: Reviewer      → 代码审查
阶段 5: Tester        → 测试
阶段 6: Ops           → 部署上线

每一步都是一个独立的 Kanban 任务,有依赖关系,有门禁条件。Manager 只管分配,不写一行代码。

第 3 步:Worker 抢任务干活

Dispatcher(调度器)发现 ready 状态的任务,匹配对应 Profile 的 Worker,自动启动。

Dispatcher: t_014efa5b 状态=ready, assignee=designer → 启动 designer profile
Designer:   读取任务描述 → 出 SVG 效果图 → 保存到 docs/ → 标记完成
Dispatcher: 发现下一个任务 → 继续...

第 4 步:部署到腾讯云

Ops Worker 拿到部署任务后:

  1. 读取本地 HTML 设计文件
  2. 通过 paramiko SSH 连接到腾讯云香港 CentOS 7
  3. SFTP 上传到 /var/www/preview/
  4. 验证 HTTP 200
  5. 标记任务完成
# ops worker 实际使用的部署脚本片段
ssh = paramiko.SSHClient()
ssh.connect(host, port=22, username='root', password=password)
sftp = ssh.open_sftp()
sftp.put(local_path, remote_path)
# 验证
stdin, stdout, stderr = ssh.exec_command(f'curl -s -o /dev/null -w "%{{http_code}}" {url}')

第 5 步:通知你

最初这是个痛点——Worker 干完了没人通知。后来我们打通了 Kanban 原生通知:

# Manager 每创建一个任务,就帮你订阅通知
hermes kanban notify-subscribe \
  --platform qqbot \
  --chat-id [QQ会话ID] \
  --notifier-profile default \
  <task_id>

任务完成/阻塞/崩溃 → Gateway 自动推送到你的 QQ。不需要 cron,不依赖轮询。

▲ 通知闭环:Manager 订阅 → Worker 完成 → Kanban 事件 → Gateway → QQ

三、设计迭代:v1 → v4

设计是最能体现多 Agent 价值的环节。用户不需要懂设计,只需给方向。

版本Worker技术耗时
v1DesignerSVG 矢量效果图2 min
v2Designer增强层次感2 min
v3DesignerHTML/CSS 真实渲染2 min
v4DesignerThree.js 3D + Canvas 神经网络2 min

每次迭代:

  1. Designer 出图
  2. Manager 审查
  3. 用户确认(或给出反馈:"不够科幻" → "要3D" → "加神经网络")
  4. 下一版开始

4 个版本累计不到 10 分钟,从 SVG 草图进化到 Three.js 3D 粒子场景。

▲ 设计迭代时间线:v1 SVG → v2 增强 → v3 HTML → v4 Three.js 3D

四、技术栈

网站本身

Nuxt + Vue
Tailwind CSS + Nuxt UI
@nuxt/content (Markdown 博客)
PostgreSQL (内容存储)
Docker (容器化运行)

部署架构

腾讯云香港 CentOS 7
├─ Nginx (80/443, 反向代理 + SSL)
├─ Git (自建代码仓库)
├─ /var/www/preview/ (设计预览)
├─ /var/www/production/ (生产环境)
└─ Docker (可选,容器化运行)

自动化

Hermes Agent (主控)
├─ QQ Bot Gateway (消息双向通道)
├─ Kanban + 9 Worker Profiles (任务协作)
├─ Cron ×5 (财经舆情监控)
├─ 邮件 SMTP (QQ 邮箱)
└─ Paramiko (SSH 部署)

五、几个有趣的坑

坑 1:SSH 22 端口被防火墙挡了

本地 ssh root@[服务器IP] 死活不通。排查发现是腾讯云安全组没放行。

解决:OrcaTerm 网页终端作为跳板,或者让用户在 FinalShell 上手动跑一次性命令。后来配好安全组后 Ops Worker 可以直接 SSH。

坑 2:Windows cron 里 python3 不存在

Git Bash 环境下只有 python,脚本里写 python3 直接 command not found。cron prompt 里所有路径必须用绝对路径。

Git 代码提交与维护流程

多 Agent 协作开发的核心基础设施是 Git。我们采用自托管的 Git 服务作为代码仓库,所有 Worker 的代码产出都通过标准 Git 工作流管理。

日常流程:

开发者本地 (D:\work\personal\personal-website)
  │
  ├─ git add / commit         ← Worker 产出代码后提交
  ├─ git push origin main     ← 推送到远程仓库(代码备份 + 版本追溯)
  │
  ▼
远程 Git 仓库 (腾讯云服务器)
  │
  ├─ Ops Worker git pull      ← 部署前拉取最新代码
  │
  ▼
本地 Docker 构建
  ├─ docker build -t website:latest .        ← 本地编译镜像
  ├─ docker save website:latest | gzip > website.tar.gz  ← 打包
  │
  ▼
SFTP 上传到服务器 /tmp/
  ├─ sftp.put('website.tar.gz', '/tmp/')
  │
  ▼
服务器端
  ├─ docker load < /tmp/website.tar.gz       ← 加载镜像
  ├─ docker compose up -d                    ← 更新容器
  ├─ nginx -s reload                         ← 热重载
  │
  ▼
生产环境 (deeeli.com)

为什么本地构建而非服务器构建?

  • 服务器 CentOS 7 环境老旧,编译原生模块(如 Node.js addon)容易失败
  • 本地 Docker 环境与目标一致,构建一次到处运行
  • 服务器只需 docker load,不装完整编译链

分支策略:

分支用途
main生产就绪代码,Ops 直接从 main 拉取部署
feature/*新功能开发分支,由 Manager 创建任务时指定
fix/*Bug 修复分支,完成后合并回 main

实际命令流:

# Worker 完成任务后提交
git add docs/sci-fi-home-v4.html
git commit -m "designer: v4 3D交互效果图"
git push origin main

# 部署:本地构建 → 上传 → 服务器加载
docker build -t website:latest .
docker save website:latest | gzip > website.tar.gz
sftp root@server <<< "put website.tar.gz /tmp/"

# 服务器端
ssh root@server "
  docker load < /tmp/website.tar.gz &&
  cd /app && docker compose up -d &&
  nginx -s reload
"

Git 与 Kanban 的配合:

每个 Kanban 任务完成后,Worker 将产出文件通过 Git push 到远程仓库。下游 Worker(如 Reviewer、Ops)通过 git pull 获取最新代码。整个过程中:

  • 代码版本可追溯:每次改动都有 commit 记录
  • 回滚无压力git revert 一键回退
  • 并行开发不冲突:不同 Worker 操作不同文件(designer 改 docs/,coder 改 app/),天然隔离

坑 4:任务完成了没人通知

前面说过了——这是推动我们实现 notify-subscribe 的原因。现在 Manager 创建任务时自动订阅,用户 QQ 实时收到推送。


六、效果

从 QQ 发一条消息到看到预览,完整链路:

"设计要有科技感" 
  → Manager 拆任务 (5s)
  → Designer 出 v4 效果图 (2min) 
  → Manager 审查 (10s)
  → Ops SSH 上传到服务器 (15s)
  → QQ 通知 "预览已上线: http://[服务器]/preview/"

全自动,零手动操作,2-3 分钟端到端。


七、总结

这不是"AI 帮你写了个网站"——这是建了一条从聊天到部署的装配线

核心思想:

  1. Manager 只管不管干——拆任务、派活、跟踪,不写代码
  2. Worker 各司其职——Designer 出图、Coder 写码、Ops 部署,互不干扰
  3. Kanban 是共享工作台——所有 Agent 看同一块板子,任务状态一目了然
  4. 通知闭环——Worker 干完了你马上知道,不用手动查

下一步:把 Manager 的流水线模板化,让"开发网站"和"写爬虫"共用同一套调度逻辑。


本文由 Hermes Agent 根据实际开发过程记录撰写,陈德立署名发布。所有 Kanban 任务日志可在 hermes kanban log 中回溯。