2026 年 5 月

作者:展博


引言:为什么最强的模型,交付效果却不如人意?

2026 年,AI Agent 已经不是新鲜词。

企业 CTO 们纷纷入局:买 GPU、接 GPT-5、搭 LangChain、招 AI 工程师。但半年下来,真正产生业务价值的案例寥寥无几。

一个真实的对话

CEO:“我们投了 200 万做 AI,为什么 ROI 没提升?” CTO:“模型效果很好啊,GPT-5 的 benchmark 都是 SOTA…” CEO:“我要的是广告投放 ROI 提升 20%,不是 benchmark 第一。”

这个问题,几乎每个做 AI 转型的企业都会遇到。

核心矛盾模型能力 ≠ 业务结果

从最强的模型到最终的业务指标(ROI、用户体验、商业化变现),中间隔着至少 7 层漏斗。任何一层的缺失或薄弱,都会导致"叫好不叫座"。

本文将用 Ad Agent(广告投放智能体) 作为实战案例,系统讲解:

  1. AI 应用交付的 7 层漏斗模型(自顶向下设计方法)
  2. 技术选型:LangGraph vs 自研 vs Claude Code?
  3. 实施路径:从 Skill 验证到生产系统(含代码示例)
  4. 不同规模企业的最佳实践(<10 人 → 500 人)

一、AI 应用交付的 7 层漏斗

1.1 漏斗模型:最强的模型 ≠ 最好的业务结果

┌─────────────────────────────────────────────────────────────────┐
│  L1 业务指标层    最顶层:ROI、用户体验、商业化变现             │
│  ↓(很多团队在这里就断了)                                       │
│  L2 业务抽象层    基于指标定义场景和工作流                       │
│  ↓                                                              │
│  L3 应用设计层    基于编排的应用层,监控/审核/存储等              │
│  ↓                                                              │
│  L4 流程编排层    Human-in-the-loop,人/模型/系统协调联动         │
│  ↓                                                              │
│  L5 上下文工程层  高质量输入 → 高质量输出(Harness 工程)         │
│  ↓                                                              │
│  L6 模型调用层    合理调度模型,避免大材小用或力不从心             │
│  ↓                                                              │
│  L7 模型能力层    最底层:模型本身的推理、理解、生成能力           │
└─────────────────────────────────────────────────────────────────┘

关键洞察

  • 大多数团队的路径是 L7 → L1(反过来!)
  • 正确路径应该是 L1 → L7(自顶向下)

1.2 自顶向下设计:从业务目标出发

错误姿势(技术驱动)

CTO:"我们有 GPT-5,能做什么?"
  ↓
买 API、搭 LangChain、接各种 Tool
  ↓
做了一堆 Demo,好看但没用
  ↓
CEO:"200 万花哪了?"

正确姿势(业务驱动)

CEO:"我们的广告 ROI 太低(D1 ROAS < 0.8),哪些环节可以优化?"
  ↓
L1 业务指标层:定义成功标准(ROI +20%、CPA -15%)
  ↓
L2 业务抽象层:拆解场景
  - 低价值重复工作 → 自动化(搭建计划、推送创意)
  - 高价值决策工作 → 人主导(创意策略、渠道探索)
  - 无法替代 → 保留人工(预算审批、品牌决策)
  ↓
L3 应用设计层:定义功能模块
  - Campaign 创建、优化调整、效果监控、归因分析
  ↓
L4 流程编排层:设计 Human-in-the-loop
  - L0 自动执行(暂停广告、调整预算 ±10%)
  - L1 低风险(模型建议 + 自动执行)
  - L2 人工确认(生成方案 → 用户审批)
  - L3 严格审批(新建 Campaign、预算 >$1000/天)
  ↓
L5 上下文工程层:设计 Context Harness
  - 历史对话、业务规则、RAG 检索
  ↓
L6 模型调用层:选择模型、设计 Prompt、成本优化
  ↓
L7 模型能力层:底层 API(GPT-4o / Claude / Gemini)

核心原则:每一层都要 对齐上一层的需求,而不是反过来。


二、实战案例:Ad Agent 的 7 层设计

app / shopping 出海广告投放 场景为例,完整演示漏斗模型的应用。

2.1 L1 业务指标层(Starting Point!)

核心指标(对齐 UA Monitor / BI 平台):

指标类型具体指标目标
ROI 系列D1/D7/D30 ROAS、Payback Period、LTVD7 ROAS > 1.2
效率指标CPI、CTR、CVR、eCPMCTR +20%、CPA -15%
规模指标Spend、Installs、Impressions根据预算动态
质量指标Retention D1/D7、付费率D7 Retention > 30%

指标来源(已对接系统):

  • UA Monitor API → 实时 ROI 计算
  • BI 平台 → 历史基准、趋势分析
  • MMP (AppsFlyer) → 归因数据
  • 媒体平台 API → 消耗 / 展示 / 点击

关键:L1 层必须 可量化、可追踪、可归因

2.2 L2 业务抽象层(场景拆解)

UA 场景拆解

┌─────────────────────────────────────────┐
│  低价值重复工作 → 模型自动执行            │
│  ✓ 搭建广告计划(参数化、模板化)        │
│  ✓ 推送创意(批量上传、A/B 测试)        │
│  ✓ 日常数据拉取(定时任务、报表生成)    │
├─────────────────────────────────────────┤
│  高价值决策工作 → 人主导,模型辅助        │
│  ✓ 创意制作(模型生成文案,人筛选)      │
│  ✓ 策略调整(模型建议,人决策)          │
│  ✓ 渠道探索(模型推荐,人评估)          │
├─────────────────────────────────────────┤
│  模型无法替代 → 保留人工                  │
│  ✓ 渠道权限申请(需要人类 judgment)      │
│  ✓ 预算审批(战略决策)                   │
│  ✓ 品牌决策(价值观判断)                 │
└─────────────────────────────────────────┘

策略层(Strategies)

  • _default.json → 通用规则(8 条基础规则)
  • awareness.json → 内容推广专属策略
  • [可扩展] 不同业务线独立策略

输出:明确的 自动化边界人机协作界面

2.3 L3 应用设计层(功能模块)

核心应用场景

功能模块输入处理输出
① 创建 Campaign自然语言描述Intent 解析 → 配置生成 → 审批 → API 执行Campaign ID、预览链接
② 优化调整效果数据策略匹配 → 执行建议优化方案(Adjust Bid、换创意)
③ 效果监控多时间窗数据异常检测 → 诊断 → 干预告警、自动调整、人工通知
④ 归因分析MMP 数据多触点归因计算ROI 报告、渠道贡献度
⑤ 竞品情报素材库相似度检索 → 创意灵感竞品分析报告、创意建议

关键设计决策

  • 自然语言优先(降低使用门槛)
  • 审批流内置(防止模型犯错)
  • 可解释性(每次决策都要有 reasoning)

2.4 L4 流程编排层(Human-in-the-loop)

Action Engine(分级执行)

Risk Level 0(L0)- 自动执行
  - 暂停 CTR<0.5% 的广告
  - 调整预算 ±10%
  - 切换 A/B 测试胜出创意
  → 无需审批,但记录日志

Risk Level 1(L1)- 低风险,模型主导
  - 调整出价(±20% 以内)
  - 更换相似创意
  - 扩展相似受众(Lookalike 1-3%)
  → 模型决策 → 自动执行 → 通知用户

Risk Level 2(L2)- 中风险,人工确认
  - 新建 Campaign
  - 调整预算(>20%)
  - 更换受众定向
  → 模型生成方案 → 用户 Approve/Reject

Risk Level 3(L3)- 高风险,严格审批
  - 预算 >$1000/天
  - 新渠道接入
  - 品牌相关决策
  → 多级审批(执行者 → 经理 → VP)

Monitor(监控告警)

时间窗检查内容触发条件自动干预
T+2h异常诊断CTR 下降 >30%、消耗异常暂停广告、通知用户
T+24h趋势分析ROI 低于预期、CPA 超预算调整出价、切换创意
T+7d策略复盘周度 ROI、LTV 预测生成周报、策略建议

Learner(学习迭代)

  • action_log:记录所有操作(模型 / 人工)
  • effect_track:追踪操作效果(ROI 变化)
  • Schema 迭代:根据效果优化决策规则

技术实现:用 LangGraph 实现状态管理和条件跳转。

2.5 L5 上下文工程层(Context Harness)

为什么 Context 重要?

LLM 是"预测机器",不是"知识库"。 高质量的输入 → 高质量的输出。

Context Harness 设计

┌─────────────────────────────────────────┐
│  Context Harness(上下文工程)            │
├─────────────────────────────────────────┤
│  1. 历史对话上下文(最近 10 轮)           │
│     → 保持对话连贯性                      │
├─────────────────────────────────────────┤
│  2. 业务上下文(UA Monitor 指标)         │
│     → 实时 ROI 基线、历史基准             │
├─────────────────────────────────────────┤
│  3. 平台上下文(Meta/Google API 规范)    │
│     → API 参数约束、配额限制              │
├─────────────────────────────────────────┤
│  4. Schema 上下文(结构化输出契约)        │
│     → JSON Schema、类型约束               │
├─────────────────────────────────────────┤
│  5. RAG 检索(历史成功案例)              │
│     → 相似 Campaign 配置、最佳实践         │
└─────────────────────────────────────────┘

RAG 实现要点

  • 向量数据库:Pinecone / Milvus(存储历史 Campaign)
  • 检索策略:语义相似度 + 时间衰减 + 效果加权
  • 上下文窗口管理:优先级排序、截断策略

示例 Prompt(含 Context)

You are an Ad Campaign Optimization Agent.

## Business Context
- Current D7 ROAS: 0.95 (Target: 1.2)
- Current CTR: 1.1% (Historical avg: 1.3%)
- Budget remaining: $3200 / $5000

## Historical Success Cases (RAG retrieved)
1. Campaign "US_AppInstall_Q1" - CTR 1.8%, ROAS 1.4
   Config: {age: 18-35, interest: gaming, creative: video}

2. Campaign "EU_AppInstall_Q1" - CTR 1.5%, ROAS 1.3
   Config: {age: 25-40, interest: casual_games, creative: image}

## Platform Constraints (Meta Ads API)
- Daily budget min: $5
- Max audiences per adset: 50
- Creative aspect ratio: 9:16 (vertical), 1:1 (square)

## Task
Generate optimization 建议 for Campaign ID: 1234567890

Output JSON Schema:
{
  "actions": [
    {"type": "ADJUST_BID", "value": 0.85, "reason": "..."},
    {"type": "CHANGE_CREATIVE", "creative_id": "..."}
  ],
  "expected_roas_lift": 0.15
}

2.6 L6 模型调用层(合理调度)

常见错误

  • 所有任务都用 GPT-4o(成本高、延迟大)
  • 简单任务用 Claude Opus(大材小用)
  • 不缓存相似请求(重复调用浪费 Token)

正确策略

任务类型模型选择成本延迟示例
Intent 解析GPT-3.5 Turbo$0.5/M tokens~1s“创建 Campaign” → JSON
配置生成GPT-4o$5/M tokens~3sIntent → Meta Ads API Config
复杂推理Claude Opus 4.7$15/M tokens~5s跨平台预算分配策略
创意生成GPT-4o(多模态)$5/M tokens~3s文案生成、图片描述
代码生成Claude Sonnet$3/M tokens~2sMeta Ads API 脚本生成

成本优化技巧

  1. 缓存相似请求(广告文案生成,相似需求返回缓存)
  2. 混合模型策略(简单 → GPT-3.5,复杂 → GPT-4o)
  3. 自部署开源模型(Llama 3 部署在自有 GPU,成本降低 90%)
  4. 批量调用(多个 Campaign 同时优化,一次 API 调用)

防幻觉检查(H1-H7)

  • H1:输出格式校验(JSON Schema 验证)
  • H2:业务规则校验(预算范围、受众合理性)
  • H3:历史数据对比(与相似 Campaign 对比)
  • H4:API 约束检查(Meta Ads API 参数校验)
  • H5:人工审核(L2/L3 风险操作)
  • H6:A/B 测试验证(新策略小流量测试)
  • H7:实时监控(执行后效果追踪)

2.7 L7 模型能力层(底层 API)

模型选型(2026 年 5 月):

模型优势劣势适用场景
GPT-4o多模态、成本低推理能力中等配置生成、创意生成
Claude Opus 4.7推理最强、1M 上下文成本高复杂策略、跨文件分析
Gemini 3.5多模态、1M 上下文代码能力弱图像创意分析
领域微调模型广告语义理解、行业术语需要训练数据意图解析、创意推荐

自部署 vs API 调用

维度API 调用(OpenAI/Anthropic)自部署(Llama 3 / Qwen)
成本按 Token 计费($5-15/M tokens)前期 GPU 投入,后期边际成本为 0
延迟依赖网络(100-500ms)本地推理(<50ms)
定制化有限(Prompt Engineering)完全可控(Fine-tuning、LoRA)
适用场景MVP、低频调用规模化、高频调用(>1M tokens / 天)

建议

  • MVP 阶段:API 调用(快速验证)
  • 规模化后:自部署开源模型(降低成本)

三、技术选型:LangGraph vs 自研 vs Claude Code?

3.1 核心问题:企业如何搭建 Agentic 应用?

三种技术路线

方案描述适用场景代表案例
基于 LangChain/LangGraph使用成熟的 Agent 框架需要复杂决策流、多步骤协作CodeBuddy(腾讯)
基于 Claude Code 类工具在 AI 编程助手上构建 Skill快速验证、个人效率工具本文的 Skill 验证阶段
完全自研 Agent Loop从底层实现 ReAct Loop极致性能、完全可控OpenAI Codex、Antigravity

核心结论

  • LangChain/LangGraph 适合作为 编排层(状态管理、多 Agent 协作)
  • Claude Code 类工具开发辅助工具,不是 业务应用运行时
  • 生产级应用 需要:业务层(自研)+ 编排层(LangGraph 或自研)+ 工具层(自研)

3.2 为什么不能直接用 Claude Code 搭建业务应用?

维度Claude Code 类工具企业级 Ad Agent 应用
核心能力代码生成、文件操作广告投放、ROI 优化、归因分析
运行方式终端交互、按需触发7×24 小时运行、事件驱动
多租户支持不支持必须支持(SaaS 模式)
权限管理简单(文件读写)必须支持(RBAC、审批流)
数据隐私代码文件(低风险)客户数据(高风险,需私有部署)
执行频率按需(开发者触发)高频(每秒数百次 API 调用)

类比

  • Claude Code = “高级程序员”(帮你写代码)
  • Ad Agent 生产系统 = “自动化投放专家”(7×24 小时工作)

正确用法

用 Claude Code 加速开发(生成 LangGraph 代码、FastAPI 接口、React 组件)
    ↓
部署为独立的生产系统(FastAPI + React + PostgreSQL)
    ↓
客户通过 Web Dashboard 或 API 使用(不是通过 Claude Code 终端)

3.3 LangGraph vs 自研:什么时候该用哪个?

LangGraph 的优势

  • 开发速度快(现成的 State、Checkpoint、Human-in-the-loop)
  • 可视化调试(LangGraph Studio)
  • 社区支持好(大量教程、案例)
  • 性能中等(抽象层开销)
  • 成本控制难(无法精细控制 Token 消耗)

自研 Agent Loop 的优势

  • 性能极致(无抽象层开销)
  • 完全可控(定制化调度策略、资源隔离)
  • 成本低(无框架冗余代码)
  • 开发周期长(需要自己实现状态机、持久化)
  • 调试复杂(无现成可视化工具)

决策矩阵

企业规模阶段推荐方案原因
<10 人MVPLangGraph快速验证、人力有限
10-50 人V1.0LangGraph(决策)+ 自研(执行)平衡开发效率与性能
50-150 人V2.0自研 Agent Loop + LangGraph(可选)性能优化、成本控制
300-500 人V3.0完全自研平台化、生态建设

架构演进路径

阶段 1(<10 人):LangGraph All-in
    ↓
阶段 2(10-50 人):LangGraph(决策) + 自研(执行)
    ↓
阶段 3(50-150 人):自研 Agent Loop + LangGraph(可选)
    ↓
阶段 4(300-500 人):完全自研 + 开源贡献(反哺社区)

四、实施路径:从 Skill 验证到生产系统

4.1 为什么要用 Skill 形态验证?

Skill = 在 Claude Code / CodeBuddy 中自定义的 slash command(如 /create-ad-campaign)。

维度Skill 形态(MVP 验证)直接写生产代码
反馈周期分钟级(改 SKILL.md,立即测试)天级(改代码 → 测试 → 部署)
成本低(只在 Claude Code 里运行)高(需要搭建前后端、数据库)
失败成本低(只是 skill 报错,不影响生产)高(bug 影响客户数据)
适用场景验证 workflow、Prompt 设计生产部署、多租户、权限管理

最佳实践

Skill 验证通过(workflow 可行、Prompt 稳定、成功率 >80%)
    ↓
用 Claude Code 生成生产代码(LangGraph + FastAPI + React)
    ↓
部署到生产环境
    ↓
收集用户反馈 → 更新 Skill(快速迭代 Prompt) → 同步到生产代码

4.2 Phase 1:用 Skill 快速验证(1-2 周)

Step 1:创建 Skill 目录结构

mkdir -p skills/create-ad-campaign
cd skills/create-ad-campaign

touch SKILL.md
touch prompt-template.md
touch examples.md

Step 2:编写 SKILL.md(核心逻辑)

skills/create-ad-campaign/SKILL.md

# Create Ad Campaign Skill

## 触发方式
`/create-ad-campaign <自然语言描述>`

## 功能描述
根据用户自然语言描述,自动创建广告 Campaign。

## Workflow(LangGraph 风格)

### Node 1: parse_intent
输入:用户自然语言描述
输出:结构化意图 JSON
Prompt:
```
解析以下广告需求,输出 JSON:
用户描述: {user_input}

输出格式:
{
  "platform": "meta|google|tiktok",
  "objective": "APP_INSTALLS|TRAFFIC|AWARENESS",
  "budget_daily": 500,
  "geo_targeting": ["US", "CA"],
  "age_range": [18, 35],
  "interests": ["gaming", "mobile apps"]
}
只输出 JSON,不要有其他文字。
```

### Node 2: generate_config
输入:intent JSON
输出:Campaign 配置(符合 Meta Ads API 规范)
逻辑:
1. 查询历史相似 Campaign(RAG 检索 `memory/campaign-history.json`)
2. 生成 Campaign 配置
3. 预估性能(ROI、CTR)

### Node 3: human_approval
输入:Campaign 配置
输出:approved/rejected + 修改建议
逻辑:
- 展示配置给用户
- 等待用户确认(Approve/Reject/Modify)
- 如果 Reject,回到 Node 2 并附加修改建议

### Node 4: create_campaign
输入:审批通过的配置
输出:Campaign ID + 预览链接
逻辑:
1. 调用 Meta Ads API(`meta_ads_api` tool)
2. 记录日志到 `logs/campaigns.log`
3. 返回结果

## Tools 调用
- `meta_ads_api`: 调用 Meta Ads API
- `read_file`: 读取历史 Campaign 数据
- `write_file`: 记录日志

## 安全规则
- 预算 > $1000/天 需要二次确认
- 记录所有操作到 `logs/audit.log`
- 不自动创建,必须人工审批

Step 3:在 Claude Code 中测试 Skill

/create-ad-campaign "帮我创建一个美国市场的 App Install Campaign,日预算 $500,目标年龄 18-35 岁"

Claude Code 会执行 SKILL.md 定义的 Workflow

  1. 解析意图(调用 LLM)
  2. 生成配置(读取历史数据 + LLM 生成)
  3. 等待你确认
  4. 调用 Meta Ads API
  5. 返回 Campaign ID

Step 4:迭代优化(关键!)

问题优化方法
意图解析不准确调整 Node 1 的 Prompt,增加 Few-shot 示例
生成的配置不符合 API 规范在 Node 2 增加 API Schema 校验(用 Pydantic)
用户审批体验差优化展示格式(用表格代替 JSON)
历史数据检索不准确优化 RAG 检索(用向量搜索代替关键词)

迭代周期:每天测试 5-10 个案例,调整 Prompt,直到 Workflow 稳定。

4.3 Phase 2:用 Claude Code 生成生产系统(2-4 周)

核心思路:让 Claude Code 帮你写代码(FastAPI + LangGraph + React)。

示例 1:让 Claude Code 生成 LangGraph State 和 Nodes

对话示例

你:@Claude Code 帮我写 backend/app/agents/campaign_agent.py

LangGraph State:
- user_input: str
- intent: dict
- campaign_config: dict
- approval_status: str  # "pending" | "approved" | "rejected"
- campaign_id: str
- error: str

Nodes:
1. parse_intent: 解析用户自然语言 → intent JSON
2. generate_config: 生成 Campaign 配置
3. human_approval: 等待用户审批(中断点)
4. create_campaign: 调用 Meta Ads API

Edges:
- parse_intent → generate_config
- generate_config → human_approval
- human_approval → create_campaign (如果 approved)
- human_approval → generate_config (如果 rejected,带修改建议)

用最新的 LangGraph 语法(@langchain/langgraph 0.2+)

Claude Code 生成的代码backend/app/agents/campaign_agent.py):

from typing import TypedDict, Annotated, Literal
from langchain_core.messages import HumanMessage, AIMessage
from langgraph.graph import StateGraph, END
from langgraph.checkpoint.redis import RedisSaver
from app.tools.meta_ads_api import MetaAdsAPI
from app.tools.rag_retrieval import RAGRetriever
import json

# ========== State 定义 ==========
class CampaignState(TypedDict):
    """LangGraph State for Campaign Creation"""

    user_input: str
    intent: dict
    campaign_config: dict
    approval_status: Literal["pending", "approved", "rejected"]
    approval_comment: str
    campaign_id: str
    error: str
    messages: Annotated[list, "add_messages"]

# ========== Nodes 定义 ==========
def parse_intent(state: CampaignState) -> CampaignState:
    """Node 1: 解析用户自然语言 → intent JSON"""
    prompt = f"""
    Parse the following ad campaign request into JSON:
    User input: {state['user_input']}

    Output JSON format:
    {{
        "platform": "meta|google|tiktok",
        "objective": "APP_INSTALLS|TRAFFIC|AWARENESS",
        "budget_daily": 500,
        "geo_targeting": ["US", "CA"],
        "age_range": [18, 35],
        "interests": ["gaming", "mobile apps"]
    }}

    Output only JSON, no other text.
    """
    llm_response = call_llm(prompt)
    intent = json.loads(llm_response)

    return {
        **state,
        "intent": intent,
        "messages": state["messages"] + [AIMessage(content=f"Intent parsed: {intent}")]
    }

def generate_config(state: CampaignState) -> CampaignState:
    """Node 2: 生成 Campaign 配置"""
    rag = RAGRetriever()
    similar_campaigns = rag.search(state['user_input'], top_k=3)

    prompt = f"""
    Generate Meta Ads Campaign config based on intent:
    Intent: {state['intent']}

    Historical similar campaigns:
    {similar_campaigns}

    Output config in Meta Ads API format.
    """
    llm_response = call_llm(prompt)
    campaign_config = json.loads(llm_response)

    return {
        **state,
        "campaign_config": campaign_config,
        "approval_status": "pending",
        "messages": state["messages"] + [AIMessage(content=f"Config generated: {campaign_config}")]
    }

def human_approval(state: CampaignState) -> CampaignState:
    """Node 3: 等待用户审批(LangGraph 中断点)"""
    approval_status = state['approval_status']

    if approval_status == "approved":
        return {**state, "messages": state["messages"] + [AIMessage(content="Approved, creating campaign...")]}
    elif approval_status == "rejected":
        return {**state, "messages": state["messages"] + [AIMessage(content=f"Rejected: {state['approval_comment']}, regenerating...")]}
    else:
        return state

def create_campaign(state: CampaignState) -> CampaignState:
    """Node 4: 调用 Meta Ads API 创建 Campaign"""
    try:
        api = MetaAdsAPI()
        result = api.create_campaign(state['campaign_config'])
        return {
            **state,
            "campaign_id": result['id'],
            "messages": state["messages"] + [AIMessage(content=f"Campaign created! ID: {result['id']}")]
        }
    except Exception as e:
        return {
            **state,
            "error": str(e),
            "messages": state["messages"] + [AIMessage(content=f"Error: {str(e)}")]
        }

def route_after_approval(state: CampaignState) -> Literal["create_campaign", "generate_config"]:
    if state['approval_status'] == "approved":
        return "create_campaign"
    elif state['approval_status'] == "rejected":
        return "generate_config"
    else:
        return "human_approval"

def build_campaign_agent():
    graph = StateGraph(CampaignState)
    graph.add_node("parse_intent", parse_intent)
    graph.add_node("generate_config", generate_config)
    graph.add_node("human_approval", human_approval)
    graph.add_node("create_campaign", create_campaign)

    graph.add_edge("parse_intent", "generate_config")
    graph.add_edge("generate_config", "human_approval")
    graph.add_conditional_edges(
        "human_approval",
        route_after_approval,
        {
            "create_campaign": "create_campaign",
            "generate_config": "generate_config"
        }
    )
    graph.add_edge("create_campaign", END)
    graph.set_entry_point("parse_intent")

    redis_saver = RedisSaver(redis_url="redis://localhost:6379")
    app = graph.compile(checkpointer=redis_saver, interrupt_before=["human_approval"])
    return app

示例 2:让 Claude Code 生成 FastAPI 接口

你:@Claude Code 帮我写 FastAPI 接口:
   1. POST /api/campaigns/create - 创建 Campaign(触发 LangGraph)
   2. GET /api/campaigns/{thread_id}/status - 查询状态
   3. POST /api/campaigns/{thread_id}/approve - 审批通过
   4. POST /api/campaigns/{thread_id}/reject - 审批拒绝
   5. GET /api/campaigns - 查询 Campaign 列表(分页、筛选)

   要求:
   - 用 SQLAlchemy 操作 PostgreSQL
   - 用 Redis 存储 LangGraph 状态
   - 返回格式符合 Pydantic Schema

示例 3:让 Claude Code 生成 React 前端

你:@Claude Code 帮我写 React 组件:
   1. CampaignCreate.tsx - 自然语言输入 + 配置预览 + Approve/Reject 按钮
   2. CampaignList.tsx - Campaign 列表(表格) + 筛选 + 分页
   3. Dashboard.tsx - ROI、消耗、CTR 可视化(用 Recharts)

   要求:
   - TypeScript + Ant Design 组件库
   - 状态管理用 Zustand
   - API 调用用 Axios

4.4 Phase 3:Docker 部署和测试(1 周)

docker-compose.dev.yml

version: '3.8'

services:
  backend:
    build:
      context: ./backend
      dockerfile: Dockerfile.dev
    ports:
      - "8000:8000"
    volumes:
      - ./backend:/app
    environment:
      - DATABASE_URL=postgresql://user:pass@db:5432/adagent
      - REDIS_URL=redis://redis:6379
      - META_ACCESS_TOKEN=${META_ACCESS_TOKEN}
    depends_on:
      - db
      - redis
    command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

  frontend:
    build:
      context: ./frontend
      dockerfile: Dockerfile.dev
    ports:
      - "3000:3000"
    volumes:
      - ./frontend:/app
    environment:
      - VITE_API_URL=http://localhost:8000
    command: npm run dev

  db:
    image: postgres:15
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pass
      - POSTGRES_DB=adagent
    volumes:
      - postgres_data:/var/lib/postgresql/data

  redis:
    image: redis:7
    ports:
      - "6379:6379"

volumes:
  postgres_data:

启动开发环境

docker-compose -f docker-compose.dev.yml up -d
# 前端:http://localhost:3000
# 后端 API 文档:http://localhost:8000/docs

五、按企业规模的结构化建议

5.1 <10 人 Studio(初创期)

核心目标:快速验证、最低成本、聚焦核心差异化

维度建议
需求优先级1. 单平台广告投放自动化(如 Meta Ads)
2. ROI 基础分析
3. 简单 A/B 测试
技术选型• 后端:Python + LangGraph(快速开发)
• 前端:React + Vite(轻量)
• 数据库:PostgreSQL + Redis(All-in-One)
• 部署:Vercel + Railway/Render(无运维)
架构设计• 单体应用,按功能模块拆分
• 无微服务,但保留 API 边界
• LangGraph 管理 Agent 状态(广告计划生成 → 投放 → 监控 → 优化)
团队配置• 1-2 名全栈 + 1 名 AI 工程师
成本预估• 人力:$5-10K/月(3 个月 MVP)
• 基础设施:<$500/月
• LLM API:$200-500/月
关键指标• Time-to-Market < 3 个月
• 支持 10-50 个广告账户
• ROI 提升 > 20%(相比手动)

MVP 功能清单

✅ Meta Ads API 集成(广告创建、预算调整)
✅ 基础 ROI 分析(ROAS、CPA、Conversion Rate)
✅ LangGraph Agent(规划 → 执行 → 监控 → 优化)
✅ 简单 Dashboard(投放数据可视化)
❌ 暂不做什么:多平台、复杂 A/B 测试、多租户

5.2 10-50 人(成长期)

核心目标:多平台支持、初步规模化、数据驱动决策

维度建议
需求优先级1. 多平台广告管理(Meta + Google + TikTok)
2. 智能预算分配
3. 自动化 A/B 测试
4. 多租户支持(如果是 SaaS)
技术选型• 后端:Python(FastAPI)+ Go(高性能服务)
• 编排层:LangGraph + 自研状态机(混合)
• 数据库:PostgreSQL(主) + ClickHouse(分析) + Redis(缓存)
• 消息队列:RabbitMQ/Kafka(异步任务)
• 部署:Kubernetes(GKE/EKS)
架构设计• 微服务拆分:Ad Platform Service、Agent Orchestrator、Analytics Service、User Management
• LangGraph 负责复杂决策流(跨平台预算分配、A/B 测试策略)
• 自研执行引擎(高性能广告操作,避免 LangGraph 开销)
团队配置• 后端 3-4 人(Python + Go)
• 前端 2 人(React + Dashboard)
• AI 工程师 2 人(LangGraph + Prompt Engineering)
• DevOps 1 人(K8s + CI/CD)
成本预估• 人力:$50-80K/月(团队成本)
• 基础设施:$2-5K/月
• LLM API:$1-3K/月

架构图(简化)

┌─────────────────────────────────────────┐
│  Web Dashboard (React)                  │
└──────────────────────────┬──────────────┘
                           │
┌──────────────────────────▼──────────────┐
│  API Gateway (FastAPI)                  │
├─────────────────────────────────────────┤
│  LangGraph Orchestrator                 │  ← 复杂决策(预算分配、A/B 测试)
│    - State Management                   │
│    - Multi-Agent Coordination           │
└──────────────────────────┬──────────────┘
                           │
              ┌────────────┼────────────┐
              │            │            │
    ┌─────────▼──┐  ┌─────▼───┐  ┌────▼────┐
    │   Meta     │  │  Google  │  │  TikTok │  ← 自研执行引擎(高性能)
    │   Service  │  │  Service │  │  Service│
    └────────────┘  └──────────┘  └─────────┘

5.3 50-150 人(扩张期)

核心目标:企业级功能、高度定制化、合规与安全

维度建议
需求优先级1. 高级归因模型(Multi-touch Attribution)
2. 预测性投放(LTV 预测、Churn 预测)
3. 企业级权限管理(RBAC + ABAC)
4. 审计日志与合规(SOC 2、GDPR)
技术选型• 后端:Go 为主(性能敏感) + Python(AI 任务)
• 编排层:自研状态机 + LangGraph(可选)
• 数据库:PostgreSQL(分库分表) + ClickHouse(实时分析) + Cassandra(日志)
• 向量数据库:Pinecone / Milvus(广告创意相似度搜索)
• 监控:Prometheus + Grafana + Jaeger(链路追踪)
架构演进• LangGraph 降级为"可选组件"(仅用于复杂策略生成)
• 自研 Agent Loop 替代 LangGraph(性能优化、成本控制)
• 引入 RAG 层(历史投放数据、最佳实践库)
Model Fallback(主模型故障自动切换)
团队配置• 后端 8-10 人(Go + Python)
• 前端 4-5 人(React + 数据可视化)
• AI/ML 团队 4-5 人(自研模型、Prompt 优化)
• 数据工程师 2-3 人(ETL、数据仓库)
• DevOps/SRE 3-4 人(K8s、监控、安全)
成本预估• 人力:$150-250K/月
• 基础设施:$10-20K/月
• LLM API:$5-15K/月

关键技术决策

  1. 为什么开始自研 Agent Loop?

    • LangGraph 的抽象层在高频场景下有性能开销(每次状态转换都有序列化 / 反序列化)
    • 自研可以更精细地控制 Token 消耗(广告文案生成可以缓存相似请求)
    • 需要自定义调度策略(Priority Queue、资源隔离)
  2. RAG 层的价值

    • 存储历史投放数据(哪些创意在哪些受众上表现好)
    • 快速检索相似案例(新客户问"如何投放健身 App",检索历史成功案例)
    • 降低 LLM 调用成本(检索结果作为上下文,减少推理次数)

5.4 300-500 人(成熟期)

核心目标:平台化、生态建设、AI 原生架构

维度建议
需求优先级1. Multi-Agent 市场(用户可自定义 Agent 工作流)
2. 私有模型微调(基于客户数据的 LoRA 微调)
3. 实时决策引擎(<100ms 延迟的 Bid 优化)
4. 跨平台统一归因
技术选型• 后端:Rust(性能极致) + Go(业务逻辑) + Python(AI 研究)
• 编排层:完全自研(参考 LangGraph 设计但去除冗余)
• 数据库:分布式 NewSQL(CockroachDB/TiDB)
• 向量数据库:自研(基于 HNSW + 业务优化)
• AI 基础设施:vLLM + TGI(自部署开源模型)
架构特点Event-Driven Architecture(Kafka + Flink)
Agent 运行时隔离(每个客户一个沙箱,防止数据泄露)
Model Serving 平台(支持多模型、A/B 测试、灰度发布)
Fine-tuning Pipeline(自动化数据标注、训练、评估、部署)
团队配置• 后端 20-30 人(Rust + Go + Python)
• 前端 10-15 人(React + 可视化引擎)
• AI/ML 团队 15-20 人(自研模型、强化学习)
• 数据团队 10-15 人(数据仓库、Feature Store)
• 平台团队 10-15 人(K8s、MLOps、安全)
成本预估• 人力:$500K-1M/月
• 基础设施:$50-100K/月(分布式 + GPU 集群)
• 模型训练/推理:$50-200K/月(自部署模型降低 API 成本)

六、成本估算与 ROI 分析

6.1 不同规模企业的成本估算(3 个月 MVP)

企业规模人力成本基础设施LLM API总计(3 个月)
<10 人$15-30K<$1.5K$0.6-1.5K$17-33K
10-50 人$150-240K$6-15K$3-9K$159-264K
50-150 人$450-750K$30-60K$15-45K$495-855K
300-500 人$1.5-3M$150-300K$150-600K$1.8-3.9M

6.2 ROI 测算(以 10-50 人团队为例)

投入

  • 开发成本:$200K(3 个月 MVP)
  • 运营成本:$5K/月(基础设施 + API)

产出(假设服务 10 个客户,每个客户月费 $3000):

  • 年收入:$3000 × 10 客户 × 12 月 = $360K
  • 年成本:$200K(开发) + $60K(运营) = $260K
  • 第一年 ROI:($360K - $260K) / $260K = 38%

第二年(扩展至 50 个客户):

  • 年收入:$3000 × 50 客户 × 12 月 = $1.8M
  • 年成本:$200K(运营) + $300K(团队扩展) = $500K
  • 第二年 ROI:($1.8M - $500K) / $500K = 260%

关键:AI Agent 的边际成本极低(每个新增客户的运营成本 <$100/月)。


七、关键结论与行动建议

7.1 核心结论

  1. 模型能力 ≠ 业务结果

    • 必须跨越 7 层漏斗(L1 业务指标 → L7 模型能力)
    • 自顶向下设计,每一层对齐上一层需求
  2. LangChain/LangGraph 没有死,但角色在变化

    • 从"唯一选择"变成"编排层可选组件"
    • MVP 阶段用 LangGraph(快速开发)
    • 规模化后自研 Agent Loop(性能优化、成本控制)
  3. Claude Code 类工具是开发辅助,不是应用运行时

    • 它们本质是"AI 辅助编程",不是"AI 驱动业务"
    • 正确用法:用 Claude Code 加速开发(生成代码),部署为独立生产系统
  4. Skill → 生产系统是最务实的实施路径

    • Skill 验证(分钟级反馈、低成本试错)
    • Claude Code 生成生产代码(LangGraph + FastAPI + React)
    • 持续迭代(回到 L1-L2,确保对齐业务目标)

7.2 行动建议(按优先级)

立即行动(Week 1-2)

  • 组建小团队(1-2 全栈 + 1 AI 工程师)
  • 定义 L1 业务指标(ROI、CPA、ROAS)
  • 拆解 L2 业务场景(自动化边界、人机协作界面)

短期目标(Month 1-3)

  • 用 Skill 验证核心 Workflow(/create-ad-campaign)
  • 迭代 Prompt 直到成功率 >80%
  • 用 Claude Code 生成生产系统(LangGraph + FastAPI + React)
  • 部署 MVP,小范围试点(1-2 个客户)

中期目标(Month 3-12)

  • 多平台支持(Meta + Google + TikTok)
  • RAG 层(历史投放数据检索)
  • 预测性分析(LTV 预测、Churn 预测)
  • 企业级功能(RBAC、审计日志、SOC 2 合规)

长期目标(Year 1-2)

  • 自研 Agent Loop(替代 LangGraph)
  • 私有模型微调(基于客户数据)
  • 平台化(Multi-Agent 市场、用户自定义 Workflow)
  • 开源贡献(反哺社区、建立生态)

7.3 避坑指南

常见错误

  1. 技术驱动而非业务驱动(先买 GPU,再想应用场景)
  2. 盲目追求"全自动化"(忽略 Human-in-the-loop)
  3. 直接用 Claude Code 搭建生产系统(它是开发工具,不是运行时)
  4. 跳过 Skill 验证,直接写生产代码(反馈周期长、试错成本高)
  5. MVP 阶段就追求完美架构(过度工程化)

正确做法

  1. 业务驱动(从 L1 业务指标出发,自顶向下设计)
  2. 分级自动化(L0 自动、L1 低风险、L2 人工确认、L3 严格审批)
  3. 用 Claude Code 加速开发(生成代码),但部署为独立系统
  4. Skill 快速验证(分钟级反馈),再写生产代码
  5. MVP 追求"刚好能用"(快速验证,而非完美架构)

结语:AI Agent 的终局是"业务专家",而非"技术炫耀"

2026 年,AI Agent 已经从"能不能做"进化到"怎么用好"。

技术只是手段,业务价值才是目的

希望本文的 7 层漏斗模型、Ad Agent 实战案例、以及按企业规模的结构化建议,能帮你在 AI 转型的道路上少走弯路。

记住

  • 最强的模型 ≠ 最好的业务结果
  • 技术驱动 ≠ 业务成功
  • 全自动化 ≠ 最优解

真正的智能,是知道哪些该自动化,哪些该保留人工


延伸阅读


文档版本:v1.0 · 最后更新:2026-05-29