跳转至

Architecture

整体运行时架构:组件角色、数据流、部署要点、可观测性指标。


一、组件图

┌─────────────────────────────────────────────────────────────────┐
│                        Scheduler (Cron)                         │
│  读取 STATE.md → 判断是否该运行 → 触发 Maker → 等待 → 循环     │
└──────────┬──────────────────────────────────────────────────────┘
           │ trigger
┌──────────────────────┐     ┌──────────────────────┐
│      Maker           │     │      Checker          │
│ (生成内容/执行任务)  │────▶│ (验证输出质量)        │
│                      │     │                      │
│ 工具: terminal,      │     │ 评分: 五维验证        │
│       web_extract,   │     │ 标准: ≥ 40/50 PASS   │
│       read/write     │     │ 上限: 3 轮重试       │
│       draw.io CLI    │     │                      │
│ 来源: data-driven-   │     │ 可选: ai_detect.py   │
│       optimization   │     │       de_ai.py       │
└──────────────────────┘     └──────────┬───────────┘
                                        │ PASS / FAIL
┌─────────────────────────────────────────────────────────────────┐
│                         State Store                             │
│  STATE.md — 每次读写原子写入 + 文件锁                           │
│  字段: progress / lessons_learned / idempotency_keys            │
│  Schema: JSON / YAML                                            │
└─────────────────────────────────────────────────────────────────┘
                                        │ output
┌─────────────────────────────────────────────────────────────────┐
│                         Notifier                                │
│  成功 → 报告 | 失败 → 告警 | 重试 → 进度更新                   │
│  渠道: 飞书 / Telegram / 邮件 / GitHub Issue                    │
└─────────────────────────────────────────────────────────────────┘

二、角色定义

角色 职责 运行时 模型要求
Scheduler 定时触发、读取 STATE.md、决定是否需要运行 独立进程(Cron / 消息队列) ❌ 不需 LLM
Maker 执行具体任务:抓取、分析、生成 Agent 会话 ✅ LLM(推荐强推理模型)
Checker 验证 Maker 输出质量,返回评分 独立 Agent 会话(与 Maker 隔离) ✅ LLM(可与 Maker 不同)
State Store 持久化运行状态、进度、idempotency keys 文件系统 / 数据库 ❌ 不需 LLM
Notifier 输出结果分发:报告/告警/存档 Webhook / API 调用 ❌ 不需 LLM

三、数据流

正常流程

1. Scheduler 读取 STATE.md
2. 检查 idempotency keys → 跳过已处理项
3. 触发 Maker 执行
4. Maker 产出 → 写入临时文件
5. 触发 Checker 验证
6. Checker PASS → 写入最终输出 + 更新 STATE.md
7. Checker FAIL → Maker 根据反馈重试(最多 3 轮)
8. 3 轮仍 FAIL → Notifier 告警给人类

错误流程

超时 → 记录 STATE.md → 下次运行自动重试
认证失败 → 记录 STATE.md → Notifier 告警(不重试)
数据异常 → 跳过该项 → 在 STATE.md 标记
致命错误 → 记录 → 降级 L1 → Notifier 紧急告警

四、网络与权限要点

维度 建议
网络隔离 Maker/Checker 可使用不同网络出口(避免 IP 关联封禁)
API 密钥 只通过环境变量注入,不写入 STATE.md 或 SKILL.md
文件权限 STATE.md 目录只对运行 agent 的 OS 用户可读写
日志 不记录 API Key、Token、个人信息到 stdout
MCP 最小权限 每个 MCP 连接只授予其功能所需的最小 scope

五、模型隔离建议

场景 Maker Checker 原因
默认 Claude Opus 4.8 DeepSeek V4 Flash Maker 要强推理,Checker 够用就行
成本优先 DeepSeek V4 Flash 同一模型 同一模型但分两次独立调用
高精度 GPT-5.5 Claude Opus 4.8 Checker 比 Maker 更强,防漏网
开源部署 Qwen3 / GLM-5 不同实例 池隔离,不互相影响

规则: Maker 和 Checker 必须使用不同的 Agent 会话运行,不能在同一上下文中自我验证。


六、可观测性指标

推荐 metrics(按 State store 或日志系统记录)

Metric Type 含义 告警阈值
run_count Counter 总运行次数
run_success Counter 成功完成次数
run_fail Counter 失败次数 > 3 次/天
retry_count Counter 重试次数(Maker→Checker 循环) > 3/轮
checker_pass_rate Gauge Checker 通过率 < 50%
maker_latency Histogram Maker 执行耗时 > 5 min
state_write_corrupt Counter STATE.md 损坏次数 > 0
human_escalation Counter 升级到人类干预的次数 > 1 次/周

日志格式建议

{
  "timestamp": "2026-06-29T10:00:00Z",
  "job": "daily-news-digest",
  "maker": "claude-opus-4.8",
  "checker": "deepseek-v4-flash",
  "duration_ms": 45200,
  "state": "success",
  "items_processed": 8,
  "items_skipped": 3,
  "failures": 1,
  "retries": 0
}

七、部署矩阵

部署方式 Scheduler Maker/Checker State Store 推荐场景
单机 Hermes 内置 Cron 同一进程 文件系统 个人/小团队
云端 Hermes Cron + Webhook Gateway 托管 远程文件 / DB 多 Agent 协作
容器化 独立容器 独立容器(可扩缩) 挂载卷 + 锁 生产环境
K8s CronJob Deployment PVC + ConfigMap 企业级部署