网站建设培训手册

从零到上线 · 一份搞定

内部培训文档 v1.0

📋 第一章:我们的技术栈

我们用纯静态 HTML + Nginx 部署网站,不用任何框架、不依赖 Node.js、不需要构建步骤。

为什么选静态网站?

  • ⚡ 速度极快 — 纯文件伺服,无数据库查询
  • 💰 成本为零 — 一台 VPS 搞定所有站点
  • 🔒 安全性高 — 没有后端漏洞可攻击
  • 🛠️ 维护简单 — 改文件就上线,秒级部署

技术清单

类别工具用途
Web 服务器Nginx伺服静态文件、SSL 终端
SSL 证书Certbot (Let's Encrypt)免费 HTTPS
DNSNamecheap域名解析
前端原生 HTML/CSS/JS页面结构和交互
数据更新Cron + JSON定时生成数据文件
金融数据免费 APICoinGecko、汇率等
AI 助手Hermes Agent自动生成内容和报告

🏗️ 第二章:服务器基础部署

2.1 安装 Nginx

apt-get install -y nginx
systemctl start nginx && systemctl enable nginx

# 开放防火墙
ufw allow 80/tcp
ufw allow 443/tcp
ufw reload
⚠️ 443 端口必须开!SSL 配好后如果 443 没开,网站会打不开。这是最常见的坑。

2.2 目录结构

/var/www/
├── html/                    # 主站 luis.amt.land
│   ├── index.html
│   ├── market.html
│   └── market-data.json
└── 3.luis.amt.land/         # 子站
    ├── index.html
    ├── research.html
    └── research-data.json

2.3 Nginx 配置(主站)

# /etc/nginx/sites-available/default
server {
    listen 80;
    server_name _;
    root /var/www/html;
    index index.html;

    # JSON 不缓存(数据动态更新)
    location ~ \.json$ {
        add_header Cache-Control "no-cache";
        add_header Access-Control-Allow-Origin "*";
    }

    # 静态资源缓存 7 天
    location ~* \.(js|css|png|jpg|svg|woff2?)$ {
        expires 7d;
    }

    location / {
        try_files $uri $uri/ =404;
    }
}

2.4 Nginx 配置(子域名)

# /etc/nginx/sites-available/3.luis.amt.land
server {
    listen 80;
    server_name 3.luis.amt.land;
    root /var/www/3.luis.amt.land;
    index index.html;
    location / { try_files $uri $uri/ =404; }
}

# 启用配置
ln -sf /etc/nginx/sites-available/3.luis.amt.land /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

2.5 HTTPS(Certbot)

apt-get install -y certbot python3-certbot-nginx

# 申请证书(自动修改 nginx 配置 + HTTP→HTTPS 重定向)
certbot --nginx -d luis.amt.land -d 3.luis.amt.land \
  --non-interactive --agree-tos --email admin@amt.land --redirect

# 验证
certbot certificates
certbot renew --dry-run
💡 DNS 必须先指向服务器 IP,Certbot 才能验证域名所有权。

2.6 DNS 配置(Namecheap)

TypeHostValue说明
A@服务器 IP主域名
A3服务器 IP子域名

🎨 第三章:页面设计

3.1 我们的设计风格

每个站点有独立风格,但都遵循:

  • 移动端优先,响应式布局
  • CSS 变量统一管理颜色
  • Google Fonts(Noto Sans TC / Inter)
  • 卡片式布局 + 圆角阴影

3.2 配色方案参考

站点风格主色
luis.amt.land深色金融风#0f0f23 深蓝黑
3.luis.amt.land粉色泡泡风#FFB5C2 粉 + #E8D5F5 薰衣草

3.3 基础 HTML 模板

<!DOCTYPE html>
<html lang="zh-Hant">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>页面标题</title>
  <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@300;400;500;700" rel="stylesheet">
  <style>
    :root {
      /* 在这里定义你的配色 */
      --primary: #FFB5C2;
      --bg: #FFF8F0;
      --text: #4A3F5C;
    }
    * { margin: 0; padding: 0; box-sizing: border-box; }
    body {
      font-family: 'Noto Sans TC', sans-serif;
      color: var(--text);
      background: var(--bg);
      line-height: 1.9;
    }
    /* 卡片通用样式 */
    .card {
      background: white; border-radius: 20px;
      padding: 24px; margin: 16px 0;
      box-shadow: 0 2px 16px rgba(0,0,0,0.04);
    }
  </style>
</head>
<body>
  <div class="card">
    <h1>你好世界</h1>
  </div>
</body>
</html>

3.4 可用设计模板(54 套)

我们有现成的专业设计系统,可以直接套用:

场景推荐模板
金融/科技Stripe、Coinbase、Revolut、Kraken
简洁高端Apple、Vercel、Linear
内容/文档Notion、Mintlify、Sanity
暗色主题Cursor、Sentry、Supabase
活泼友好Figma、PostHog、Zapier、Miro

📊 第四章:动态数据和自动更新

4.1 数据驱动架构

不用每次改 HTML 来更新内容。用 JSON 文件存数据,前端 JS 动态渲染:

// research-data.json
{
  "last_updated": "2026-04-15T07:30:00+08:00",
  "reports": [
    {
      "date": "2026-04-15",
      "title": "投资者情绪与市场行为分析",
      "summary": "今日 Fear & Greed 指数偏高...",
      "sections": [...]
    }
  ]
}

4.2 前端加载 JSON

fetch('research-data.json?t=' + Date.now())
  .then(r => r.json())
  .then(data => {
    // 渲染到页面
    data.reports.forEach(r => {
      document.body.innerHTML += `<div class="card">
        <h2>${r.title}</h2>
        <p>${r.summary}</p>
      </div>`;
    });
  });
💡 ?t=时间戳 防止浏览器缓存,确保每次拿到最新数据。

4.3 免费数据 API

数据API免费
加密货币价格CoinGecko✅ 免费
汇率open.er-api.com✅ 免费
Fear & Greedalternative.me✅ 免费
美股实时Yahoo Finance⚠️ 受限

4.4 Cron 定时任务

# 每天早上 8 点和晚上 9 点更新市场数据
0 0,13 * * * /root/.hermes/scripts/market-update.sh

# 每晚 23:30(SGT)运行心理学研究
30 15 * * * /root/.hermes/scripts/nightly-research.sh

时区注意:服务器用 UTC,新加坡 = UTC+8。所以 SGT 23:30 = UTC 15:30。

🤖 第五章:AI 自动化内容

5.1 Cron Job + Hermes Agent

我们用 Hermes Agent 的 cron 系统实现全自动内容生产:

  • 定时触发任务(支持 cron 表达式)
  • AI 自动搜索、分析、撰写报告
  • 直接写入网站目录,自动上线
  • 支持推送到 Telegram 通知

5.2 工作流程

1
数据采集 — AI 用 web_search 搜集最新资讯
2
分析生成 — 用心理学框架分析数据,生成报告
3
写入部署 — 直接 write_file 到 /var/www/ 目录
4
即时上线 — Nginx 自动伺服新文件,无需重启

5.3 省钱原则

  • 🪙 简单任务用最便宜的模型(gemini-2.5-flash-lite)
  • 📦 缓存搜索结果,不重复查询
  • 📄 JSON 数据驱动,避免每次重新生成完整 HTML
  • ⏰ 合并任务,减少 API 调用次数

🚀 第六章:上线清单

新站点上线前,逐项检查:

#检查项命令/方法
1HTML 语法正确浏览器打开检查无报错
2移动端适配Chrome DevTools → 手机模拟
3Nginx 配置有效nginx -t
4HTTP 可访问curl http://域名
5HTTPS 证书正常certbot certificates
6443 端口开放ufw status
7DNS 解析正确dig 域名
8JSON API 正常浏览器访问 /data.json

⚠️ 常见踩坑

🔥 坑 1:SSL 后网站打不开
原因:443 端口没开。解法:ufw allow 443/tcp && ufw reload
🔥 坑 2:Certbot 申请失败
原因:DNS 还没指向服务器。解法:等 DNS 传播完成再申请(可用 dig 域名 检查)
🔥 坑 3:JSON 数据没更新
原因:浏览器缓存。解法:fetch 时加 ?t=时间戳 参数
🔥 坑 4:Cron 时区不对
原因:服务器用 UTC。解法:SGT 时间 -8 小时 = UTC 时间
🔥 坑 5:子域名 404
原因:nginx 没有对应的 server 块。解法:创建 /etc/nginx/sites-available/子域名 并 symlink 到 sites-enabled

📖 英文朗读练习

经典英文散文 · AI 发音示范(ElevenLabs)· 录音对比 · 智能评分

8篇精选名著片段:Emerson、Shakespeare、Austen、Orwell 等。先听 AI 标准朗读,再自己录音,系统自动评分发音、流畅度、语速和节奏。

开始练习 →

🤖 Hermes Agent 中级到高级进阶指南

本指南默认你已完成基础安装与配置。我们将直接进入进阶核心:记忆系统、技能自进化、多 Agent 协作、生产化部署与高级调试

💡 Hermes 的核心差异化不只是"能干活",而是"越干越会干"。理解记忆与技能机制,才能让 Agent 真正进化。

🧠 第一章:记忆系统进阶

很多人用了 Hermes 一段时间后最大的抱怨就是:"它根本记不住东西"。这通常不是 Bug,而是没有搞清楚它的记忆机制。

1.1 记忆系统的整体架构

Hermes 的记忆系统是内置记忆 + 外部记忆提供商 + 运行时上下文的组合:

层级文件用途限制
第一层:内置MEMORY.md工作笔记、环境事实、技巧2,200 字符硬限
第一层:内置USER.md用户画像、偏好、风格1,375 字符硬限
第二层:外部Mem0 / Holographic长期记忆自动同步可选叠加
💡 建议日常维持在硬限的 70%~80%,预留空间给 Agent 自动追加。

1.2 为什么它"不记得"?

Hermes 的内置记忆是Agent 策展(Agent-curated)的,不是全量记录:

  • 节省 Token 和提升推理速度 — 冻结快照让 Prompt 头部稳定,提升 KV Cache 命中
  • 防止记忆污染 — 只有 Agent 判断"重要"的内容才会被写入长期记忆
  • 写入通常在 nudge 间隔后触发,不是每句话实时发生

1.3 核心记忆文件

文件路径内容谁维护
MEMORY.md~/.hermes/memories/工作笔记、环境事实Agent
USER.md~/.hermes/memories/用户画像、偏好Agent
SOUL.md~/.hermes/人格、行为准则你自己
AGENTS.md项目根目录项目级规范你自己
⚠️ 铁律:不要把应该写在 SOUL.md 里的东西放进 MEMORY.md。MEMORY.md 会被整理、压缩、甚至替换过时内容。

1.4 Nudge 配置

config.yaml 中调整记忆反思频率:

memory:
  nudge_interval: 5  # 每5轮触发一次记忆整理
  • 小模型/小上下文:3~5 起步
  • 标准模型:5~10 起步
  • 大上下文模型:10~15 左右

1.5 记忆与技能联动

当 MEMORY.md 中多次记录类似工作流时 → 应该沉淀为 Skill:

💬 "我注意到你已经记住了我们的部署流程。请把这个流程创建为一个可复用的 Skill,名字叫 deploy-workflow。"

⚡ 第二章:技能自进化

记忆解决"记得住",技能解决"用得高效且可复用"。

2.1 自动创建 Skill 的触发条件

  • 完成了一个相对复杂的任务
  • 遇到了错误,后来找到了正确路径
  • 用户纠正了做法
  • 发现值得复用的非平凡工作流

2.2 引导 Agent 创建 Skill

# 在对话中引导
"我们刚才完成的这个数据处理流程很有价值,
请保存为 Skill,名字叫 data-pipeline,
放在 devops 分类下,确保包含触发条件、
操作步骤、注意事项和验证方法。"

2.3 技能质量标准

标准说明
触发条件清晰Agent 能准确判断什么时候该用它
步骤可执行每一步都有明确操作,不是空泛描述
有验证方法执行完后能判断是否成功
有注意事项记录了踩过的坑

2.4 技能审计

💬 "请审查你所有的 Skills,找出功能重复的、描述模糊的、步骤过时的,给我一份审计报告,等我确认后再执行修改。"

👥 第三章:多 Agent 协作

3.1 Sub-Agent 使用方法

# 在对话中引导主 Agent 派生子任务
"这个任务可以并行处理:
子任务 A:抓取 A 股今日涨停板数据
子任务 B:分析北向资金流向
子任务 C:生成市场情绪指数
请派生 3 个子 Agent 并行完成,然后汇总结果。"
⚠️ 并发建议从 2~3 个起步。子 Agent 是全新上下文,必须在 context 中提供完整背景信息。

3.2 Profiles 功能

# 创建独立 Profile
hermes profile create mybot
hermes profile create work --clone      # 复用配置,独立记忆
hermes profile create backup --clone-all  # 完整克隆

3.3 资源冲突避免

  • Bot Token 冲突:两个 Profile 不要使用同一个 Bot Token
  • 端口冲突:不同 Profile 使用不同 GATEWAY_PORT
  • 数据目录:不要两个容器挂载同一个数据目录

🚀 第四章:生产化部署

4.1 Gateway 后台运行

# 方式一:Systemd(推荐)
hermes gateway install
systemctl status hermes-gateway
journalctl -u hermes-gateway -f

# 方式二:Docker Compose
version: "3.8"
services:
  hermes:
    image: nousresearch/hermes-agent:latest
    restart: unless-stopped
    command: gateway run
    volumes:
      - ~/.hermes:/opt/data

4.2 定时任务与时区

⚠️ Cron 严格依赖服务器系统时区!先运行 timedatectl 确认。
# 确认时区
timedatectl
# 如果不对,修改
sudo timedatectl set-timezone Asia/Shanghai

# 添加定时任务
hermes cron add "30 8 * * 1-5" "生成今日A股日报"
# 手动测试
hermes cron run 任务名称

4.3 生产部署 Checklist

  • hermes doctor 无明显报错
  • ☐ API Key 配置在 .env
  • ☐ 已设置 GATEWAY_HEARTBEAT=true
  • ☐ 已配置用户白名单
  • ☐ 审批模式已设置
  • ☐ 已安装 Systemd 服务或容器自动重启

🔧 第五章:高级扩展与调试

5.1 MCP 工具链集成

# 安装 MCP Filesystem Server
npm install -g @modelcontextprotocol/server-filesystem

# 在 mcp.json 中配置
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
    }
  }
}

5.2 调试工具箱

hermes doctor          # 全面健康检查
hermes memory status   # 检查记忆系统
hermes mcp status      # 检查 MCP 连接
hermes debug share     # 生成脱敏调试报告

❓ 第六章:常见问题 Q&A

Q1:告诉 Agent 一件事,下次还是不记得?
A:会话太短没触发记忆整理,或 Agent 认为不重要。明确说"请把这件事写入长期记忆"。
Q2:Cron 任务没按时触发?
A:1) hermes cron list 确认状态 2) 检查 Gateway 是否运行 3) timedatectl 检查时区 4) 手动 hermes cron run 测试
Q3:Tirith 总是拦截正常命令?
A:调 approvals.modesmartoff,或加入白名单。
Q4:多个 Profile 能共享 Telegram Bot 吗?
A:不建议。运行中的 Gateway 要用独立 Token。
Q5:子 Agent 为什么不知道任务背景?
A:子 Agent 是全新上下文。必须在 context 字段中提供文件路径、报错信息、项目结构等完整背景。

📋 配置速查表

config.yaml(生产参考)

agent:
  max_turns: 90
memory:
  nudge_interval: 10
  provider: mem0
approvals:
  mode: smart
terminal:
  backend: docker
  timeout: 60

.env(生产参考)

# 核心 API Key
OPENAI_API_KEY=sk-xxx
ANTHROPIC_API_KEY=sk-ant-xxx

# Gateway 配置
GATEWAY_PORT=8080
GATEWAY_HEARTBEAT=true

# 平台接入
TELEGRAM_BOT_TOKEN=123456:ABC-DEF
TELEGRAM_ALLOWED_USERS=123456789
💡 本指南基于 v0.9.0 文档整理。若你本机实际命令或配置与本文有差异,请以 hermes doctor 和官方文档为准。