AI Agent 架构实战:从零拆解多Agent协作营销系统的设计与实现

AI Agent 架构实战:从零拆解多Agent协作营销系统的设计与实现

36氪最近发文称"AI SaaS 潮水来袭,Agent 时代软件价值重估"。作为开发者,与其看行业分析,不如直接拆解一个真实的多 Agent 营销系统------本文从架构设计到代码实现,讲清楚多 Agent 协作到底是怎么落地的。

一、为什么营销场景需要多Agent协作

单个 LLM 调用能做什么?写一篇文章、回一条消息、生成一个标题。但一个完整的营销流程远不止于此:

  1. 选题研究:分析热点、匹配产品卖点、确定切入角度
  2. 内容创作:撰写稿件、SEO 优化、平台规则适配
  3. 多平台分发:格式转换、登录态管理、定时发布
  4. 数据回收:采集阅读/评论/收藏数据、异常检测
  5. 复盘优化:分析数据趋势、调整内容策略

每个环节需要不同的能力、不同的工具、不同的执行策略。用一个 Agent 做所有事,就像让一个人同时当策划、文案、运营和数据分析师------理论上可行,实际上每个角色都做不好。

多 Agent 协作的核心价值:让每个 Agent 专注自己的领域,通过结构化通信实现任务流转,最终形成 1+1>2 的协作效果。

二、系统架构总览

以一个实际运行中的 AI 营销系统(GrowthClaw)为例,它的多 Agent 架构分为四层:

复制代码
┌─────────────────────────────────────────────────┐
│                   用户层                          │
│  产品信息输入 → 目标设定 → 审核确认 → 数据查看     │
└────────────────────┬────────────────────────────┘
                     │
┌────────────────────▼────────────────────────────┐
│               调度层(COO Agent)                  │
│  任务拆解 → 优先级排序 → Agent 分派 → 进度追踪     │
└──┬──────────┬──────────┬──────────┬─────────────┘
   │          │          │          │
┌──▼──┐  ┌───▼───┐  ┌───▼───┐  ┌───▼───┐
│内容  │  │ 投放   │  │ 数据   │  │ 策略   │
│Agent │  │ Agent  │  │ Agent  │  │ Agent  │
│      │  │        │  │        │  │        │
│选题  │  │多平台  │  │指标    │  │营销    │
│创作  │  │分发    │  │采集    │  │计划    │
│SEO   │  │定时    │  │异常    │  │复盘    │
│审核  │  │登录    │  │报告    │  │优化    │
└──────┘  └────────┘  └────────┘  └────────┘

2.1 各 Agent 职责边界

Agent 核心职责 工具依赖 输入 输出
COO Agent 任务编排、进度管理、审核把关 Flow 引擎、待办系统 用户目标/营销计划 任务单、审核结果
内容 Agent 选题→创作→SEO→自检→提交 LLM、热点采集、内容注册表 任务单 审核稿件
投放 Agent 登录→发布→结果确认→回写 浏览器自动化、CDP 审核稿件 发布结果
数据 Agent 指标采集→异常检测→报告 CDP、指标库 已发布文章列表 运营数据
策略 Agent 计划制定→热点跟踪→复盘分析 热点采集、指标库 历史数据+产品信息 策略建议

2.2 关键设计原则

职责单一:每个 Agent 只做一类事,做好一件事。内容 Agent 不碰发布,投放 Agent 不写文章。

状态机驱动:任务生命周期由状态机(task.json)承载,不靠目录搬迁或文件重命名。状态流转有明确的前置条件和后置动作。

信箱接力:Agent 之间通过待办系统(todos.db)异步通信,不直接阻塞等待。登录失效?落待办、等用户扫码、自动续跑。

三、任务编排:COO Agent 的核心能力

COO Agent 是整个系统的"大脑",核心职责是把用户的模糊目标拆解成可执行的任务链。

3.1 任务拆解流程

以"本周在 CSDN 发 3 篇技术文章"为例,COO 的工作流:

python 复制代码
# 伪代码:COO 任务拆解
def plan_weekly_content(user_goal, product_info, hotspots):
    tasks = []
    for i in range(user_goal.article_count):
        # 1. 匹配热点与产品卖点
        angle = match_hotspot_to_product(hotspots, product_info)
        
        # 2. 生成任务单
        task = {
            "task_id": f"{date}-csdn-{i+1:03d}",
            "platform": "csdn",
            "status": "assigned",
            "research": {
                "angle": angle.description,
                "target_keywords": angle.keywords,
                "hotinfo_ref": angle.hotspot_id
            },
            "strategy": {
                "content_type": angle.content_type,
                "seo_strategy": angle.seo_plan
            }
        }
        tasks.append(task)
    
    # 3. 分派给内容 Agent
    for task in tasks:
        dispatch_to_content_agent(task)

3.2 Flow 引擎:步骤级编排

COO 不直接写代码控制流程,而是通过声明式的 Flow YAML 定义步骤链:

yaml 复制代码
# content-production-flow.yaml(简化版)
name: content-production-flow
steps:
  - id: preflight
    description: "平台匹配校验"
    
  - id: research
    description: "选题研究"
    condition: "$preflight.platform_match == true"
    
  - id: strategy
    description: "内容策略"
    
  - id: draft
    description: "内容创作"
    condition: "$strategy.strategy_done == true"
    
  - id: seo
    description: "SEO优化"
    
  - id: rule_check
    description: "平台规则审核"
    
  - id: quality
    description: "质量自检"
    condition: "$rule_check.passed == true"
    
  - id: submit_review
    description: "提交审核"

每个步骤有明确的前置条件 (condition)和输出产物(outputs)。条件不满足?流程自动停在那里,不会跳步。这是多 Agent 系统可靠运行的基础。

四、Agent 间通信:信箱接力模式

多 Agent 协作最大的工程挑战不是"怎么调用",而是"怎么处理失败"。

4.1 传统 RPC 的问题

如果 Agent A 同步调用 Agent B:

复制代码
Agent A → 调用 B → 等待 30s → B 失败 → A 也失败 → 整条链路重跑

在营销场景中,"B 失败"的原因往往是用户需要扫码登录------这不是代码能自动修复的,需要人工介入。同步等待会导致整个流程卡死。

4.2 信箱接力方案

GrowthClaw 采用信箱接力模式:

复制代码
Agent A → 写待办到 todos.db → 正常结束(不阻塞)
                                ↓
用户扫码登录 → 待办状态变更 → mailbox_relay 检测到 → 自动 resume Agent A 的后续步骤

核心代码逻辑:

python 复制代码
# 信箱接力:Agent A 发现登录失效
def on_login_expired(flow_id, task_id):
    # 1. 落待办(不阻塞)
    todo_upsert(
        type="login_pending",
        platform="csdn",
        task_id=task_id,
        action_hint=flow_id  # 关联 Flow ID,用于自动续跑
    )
    
    # 2. 通知用户
    notify_main_agent("请扫码登录 CSDN")
    
    # 3. 退出但保持 Flow blocked(不标记失败)
    sys.exit(1)

# mailbox_relay:后台轮询待办
def relay_loop():
    for todo in get_resolved_todos():
        if todo.action_hint:  # 有关联 Flow
            resume_flow(todo.action_hint)  # 从断点续跑

关键设计 :action_hint 字段关联了待办和 Flow,用户解决待办后系统自动续跑,不需要人工重新触发。

五、发布流程:浏览器自动化实战

投放 Agent 负责将审核通过的稿件发布到各平台。以 CSDN 为例,发布流程涉及浏览器自动化:

5.1 CDP(Chrome DevTools Protocol)操作链

python 复制代码
# 发布流程核心步骤
def publish_to_csdn(task, content):
    # 1. 检查登录态(三态契约)
    login_status = check_login()  # LOGGED_IN / NOT_LOGGED_IN / UNKNOWN
    if login_status != "LOGGED_IN":
        return on_login_expired(flow_id, task.task_id)
    
    # 2. 打开编辑器
    cdp_open("https://editor.csdn.net/md/")
    
    # 3. 隐藏 AI 助手弹窗(遮挡编辑区)
    cdp_evaluate("document.querySelector('iframe.ai-assistant')?.style.display='none'")
    
    # 4. 注入标题(nativeInputValueSetter 绕过框架)
    cdp_evaluate(f"""
        var input = document.querySelector('input[placeholder*="标题"]');
        var nativeSetter = Object.getOwnPropertyDescriptor(
            HTMLInputElement.prototype, 'value').set;
        nativeSetter.call(input, {json.dumps(title)});
        input.dispatchEvent(new Event('input', {{bubbles: true}}));
    """)
    
    # 5. 注入正文(contentEditable,禁止 browser type)
    cdp_evaluate(f"""
        var editor = document.querySelector('[contenteditable=true]');
        editor.innerHTML = {json.dumps(marked_content)};
        editor.dispatchEvent(new Event('input', {{bubbles: true}}));
    """)
    
    # 6. 点击发布(需 --submit-confirmed 人工确认)
    if submit_confirmed:
        click_visible_button("发布文章")
        article_id = wait_for_success_page()

5.2 安全机制

发布流程有多层安全门禁:

  1. pre_publish_validate:检查 draft 存在、status 合法、发布许可门匹配
  2. submit-confirmed 开关:没有这个标志,publish.py 不会真正点发布按钮
  3. verify_publish:发布后 HTTP 验证文章可访问 + 标题匹配
  4. archive_publish:幂等回写 content.db,COALESCE 保留已有值

六、数据闭环:采集→分析→优化

数据 Agent 负责采集已发布文章的运营数据,形成闭环:

6.1 数据采集架构

复制代码
content.db(已发布文章白名单)
        ↓
cdp_collect.mjs(CDP 网络拦截 + DOM 降级)
        ↓
store_metrics.py(幂等入库,INSERT OR REPLACE)
        ↓
data/csdn.db(article_metrics + account_metrics)
        ↓
COO Agent(异常检测 + 复盘报告)

6.2 幂等性设计

数据采集的核心挑战是幂等性------同一天多次运行不能产生重复数据:

sql 复制代码
-- 唯一索引保证幂等
CREATE UNIQUE INDEX idx_article_daily 
  ON article_metrics(article_id, metric_date, account_id);

-- INSERT OR REPLACE:同日同文章重采覆盖而非追加
INSERT OR REPLACE INTO article_metrics 
  (platform, article_id, metric_date, clicks, likes, ...)
VALUES (?, ?, ?, ?, ?, ...);

七、落地经验与踩坑记录

7.1 浏览器自动化的坑

  • CSDN 编辑器 :标题输入必须用 nativeInputValueSetter + dispatchEvent,直接设 value 不触发框架更新
  • AI 弹窗遮挡:编辑器打开时自动弹出 AI 助手 iframe,必须先隐藏才能操作
  • 标签输入丢事件:Enter 后 DOM 重建丢事件(实测 4 丢 2),需要两段式「设值→sleep→补发 Enter→验证」
  • 冷启动时序:新开浏览器 tab 后 SPA 需要额外加载时间,直接操作会找不到 DOM 元素

7.2 多 Agent 协作的坑

  • 并发冲突:同一平台同时发布两篇文章会导致浏览器状态混乱,需要串行调度
  • 状态不一致:task.json 和 content.db 必须保持同步,单点写入(content_registry.py)是关键
  • 待办过期:login_scan 待办如果用户一直不处理,需要有超时和重试机制

八、FAQ

Q1:多 Agent 和单 Agent + 多工具调用有什么区别?

单 Agent + 多工具的问题是上下文膨胀------一个 Agent 要记住所有工具的用法、所有平台的规则、所有流程的状态。当工具超过 10 个、流程超过 5 步时,LLM 的指令遵循能力会显著下降。多 Agent 通过职责拆分,每个 Agent 只需要理解自己领域的 3-5 个工具,可靠性大幅提升。

Q2:Agent 之间怎么传递数据?

两种方式:共享文件系统(task.json + content.db)和待办系统(todos.db)。不走 RPC,不走消息队列------文件系统是最简单、最可靠的共享状态方案,崩溃恢复天然支持。

Q3:这套架构适合什么规模的团队?

最适合一人公司或小团队(1-3 人)。大团队有专职运营,不需要 AI 替代;一人公司需要 AI 承担全部营销工作,多 Agent 架构正好填补这个需求。

Q4:怎么保证生成内容的质量?

三层质量门禁:规则审核(违禁词/字数/格式)→ 质量自检(产品一致性/品牌调性/CTA)→ 人工审核(主理人把关)。AI 自动过前两层,人工只审最后一层,效率和质量兼顾。

Q5:开源吗?有完整代码吗?

本文描述的架构来自 GrowthClaw 项目的实际实现。核心组件(Flow 引擎、待办系统、内容注册表、指标采集)均已工程化,但本文侧重架构设计而非逐行代码讲解。感兴趣的开发者可以关注后续的工程实践系列。

九、总结

多 Agent 营销系统的核心架构可以归纳为三个关键词:

  1. 职责拆分:COO 编排、内容创作、投放执行、数据采集、策略优化,各司其职
  2. 状态驱动:task.json 状态机 + Flow YAML 步骤链,不靠目录搬迁,不靠口头约定
  3. 信箱接力:Agent 通过待办系统异步通信,中断可恢复,用户介入不影响自动化

这套架构已经在实际生产环境中运行,覆盖 CSDN、头条、微博、知乎、搜狐等 11 个平台的内容创作和分发。对于想做 AI 营销自动化的开发者来说,多 Agent 不是概念,而是工程落地的正确路径。


本文架构描述基于 GrowthClaw 项目的实际实现。数据和案例来自真实生产环境运行记录。

相关推荐
代码山河1 分钟前
大模型的幻觉是什么?为什么会产生幻觉
人工智能·ai·大模型
数聚天成DeepSData18 分钟前
验收一批标注数据时,一致性到底在比谁和谁
人工智能·深度学习·机器学习·数据集·deepsdata
码农小白AI27 分钟前
监督抽查报告要素不全?IACheck AI 报告文档审核 Agent 做报告要素完整性审查
人工智能
幻智星科技28 分钟前
多通道数据采集中collect_end信号的妙用
网络协议·架构·udp·硬件架构
海宇AI38 分钟前
零信任架构实战:基于海宇行驶OCR证识别构建自动化租车车队行驶证电子档案网关
运维·人工智能·架构·自动化·1024程序员节
大模型真好玩43 分钟前
大模型训练全流程实战指南实战篇(十七)— LLamaFatory预训练实战:从语料到模型
人工智能·agent·deepseek
努力实干1 小时前
第 4 课:MVC、MVP 与 MVVM 架构
架构·mvc
蒲公英eric1 小时前
逻辑回归与信用违约预测:从S曲线到分类器
人工智能·数学建模·逻辑回归
安睿杰翻译(上海)有限公司2 小时前
AI 同传技术链路拆解:准确率、时延瓶颈、术语库工程化与会议落地选型方案
人工智能
不老刘2 小时前
异构双 Agent 协同:构建无人值守的长任务自动化研发流水线
运维·人工智能·自动化·ai编程·1024程序员节