做广告投放这行久了,你会慢慢发现一个很普遍的现象:一提到“营销智能体”,大家脑海里先蹦出来的往往是自动调价、自动上计划、自动关停素材。仿佛只要把操作按钮交给 AI,优化师就可以在旁边喝茶看报表。但我在实际搭 AdAgent 这类系统以后,反而认为“自动执行”恰恰是最不重要的能力。真正决定一套系统能不能叫营销智能体的,是能不能稳定地回答四个问题:数据是不是自己的,判断是不是清楚的,学到的经验是不是能回流,优化目标是不是和业务增长同一个方向。这四条,我把它叫 AdAgent 的四大核心公理。
这四句话听起来像正确的废话,但落地的差距很大。很多系统一上来就追求“按钮自动化”,把广告平台接口封装成服务,再挂一个规则引擎,就开始宣称自己已经有智能体了。实际上,它只是一个带自动化的操作台,距离“智能体”还差着从感知、决策到复盘的一整条链路。这篇文章不聊概念,只拆实操。我会把四个公理分别讲透,给思路、给步骤、给字段设计、给排错经验,适合正在做营销技术平台、智能投放系统,或者准备给团队引进所谓“AI优化师”的读者参考。
1. 先搞清楚:营销智能体到底在解决什么问题
1.1 传统广告投放流程的低效点
传统投放流程里,优化师一天的工作大概长这样:早上打开后台,看昨天大盘消耗和成本,发现某个账户成本超了,于是翻计划列表,找是哪几条计划拖了后腿,再手动降价或者关停。如果素材跑量没那么好,还要从几十条素材里挑出几条做二次剪辑,重新上传。到了下午,还要回复群消息、写日报、同步给上级。
问题不在这些动作本身,而在动作背后的信息流是断裂的。数据要靠人去拉,拉了以后要自己拼口径,拼完以后要凭经验做判断,判断做完以后没有结构化记录,过两周复盘时谁也说不清当初为什么把出价从 2.4 调到 1.8。这不是某个团队的问题,这是行业普遍问题:过程不可见,经验不可复用,判断不可审计。
营销智能体要解决的不是把“手动降价”变成“自动降价”,而是把这段断裂的信息流重新打通,让每一次决策都有数据依据,每一次执行都有结果反馈,每一次经验都能沉淀成系统能力。这才是智能体和传统投放工具的分水岭。
1.2 “智能体”和“自动化脚本”的本质差异
自动化脚本的逻辑是 if-then,典型写法是:如果 ROI 低于 1.5,则把出价降低 10%。这个逻辑简单直接,但也非常脆弱。它只能回答“在某个条件满足时执行某个动作”,回答不了“为什么会出现这个条件”“这个条件会不会是暂时的”“动作做完以后应该用什么指标验证”。
智能体更像一个“感知-决策-行动-复盘”的循环。它要先感知环境:当前成本、点击率、转化率、竞争环境、预算消耗速度;再形成判断:成本超了,是素材衰了,还是流量波动,或者只是某一条计划的样本太少;接着决定行动:是降价、关停,还是只降低预算上限;执行之后还要复盘:这个动作有没有达到预期,下次遇到类似情况要不要换个策略。
两者最大的差别在于,自动化脚本的价值是“快”,智能体的价值是“对”。快是容易做到的,难的是在不确定的信息下持续做出有依据、可纠偏、能进化的判断。AdAgent 的四个公理,就是围绕这套循环重新定义“真正的营销智能体”,下面逐条展开。
2. 公理一:数据主权,Agent 的一切判断都要有据可依
2.1 为什么数据主权这么重要
广告投放系统不缺少数据,却普遍缺少“自己的数据”。大多数团队直接调用广告平台接口,把报表数据拉出来,展示在大屏上,就默认拥有了数据。但拉下来和拥有完全是两回事。数据主权指的是:数据从产生、清洗、建模、回溯到最终形成判断的整个生命周期,都在 Agent 内部受控,而不是散落在临时接口、Excel 表格和各家平台的口径里。
没有数据主权的最大问题是“知其然不知其所以然”。平台报表告诉你成本涨了,但它不告诉你为什么涨。你要排查原因,就需要把物料数据、转化明细、时段特征、多天历史放在一起交叉分析。如果这些数据没有沉淀在 Agent 自己的数仓里,每次都要重新拉、重新拼、重新算,那排查一次的成本极高,Agent 也就永远不可能形成对复杂情况的理解。
更现实的问题是口径不一致。平台报表里的“转化”是按平台归因模型算出来的,内部业务系统的“转化”可能按订单支付事件算。同一个数字,两边差 20% 是常态。如果 Agent 直接拿平台口径去做自动调价,它调的不是真实业务,而是平台展示出来的影子业务。
2.2 数据分层与口径统一
我建议把数据分层做扎实,分层不清晰,Agent 就是空中楼阁。
第一层是原始同步层,从广告平台、网站埋点、业务系统同步原始数据,不做任何加工,只做增量落库。第二层是事实明细层,把原始数据统一成事件表,每个事件必须有唯一标识、发生时间、归因到广告计划/素材的 ID。第三层是汇总指标层,按天、按计划、按素材聚合出系统要用的核心指标。第四层是决策特征层,专门为模型加工特征,比如“最近3小时成本走势”“近24小时转化均值”“素材生命周期阶段”。
关键点在第二层。口径统一不是靠口头约定,而是要落到一张口径注册表上。字段、业务定义、归因窗口、统计起点、更新频率,全部都写清楚。比如“有效转化”的定义是用户点击广告后 7 天内完成支付,且排除退款订单;“归因方式”是最后点击归因,且去重规则是同一用户 24 小时内只计一次。这些细节不定义清楚,后面所有模型都是沙上建塔。
2.3 落地一个最小数据闭环
不要想着一步到位建一个大而全的数仓,先做能支持决策的最小闭环。我实际落地时是先建三张表:广告指标日表、素材维表、决策日志表。广告指标日表是数据的核心底座,结构可以参考下面这个简化版本:
CREATE TABLE ad_metrics_daily ( agent_date DATE, ad_account_id STRING, campaign_id STRING, material_id STRING, impressions BIGINT, clicks BIGINT, cost DECIMAL(16,4), conversions BIGINT, ext_revenue DECIMAL(16,4), PRIMARY KEY (agent_date, ad_account_id, campaign_id, material_id) );粒度一定要到素材。只到账户或者计划层级的表,无法支撑素材生命周期管理和精细化调价。素材维表则保存素材的内容标签、上线时间、版本信息,帮助 Agent 在做决策时把“数量变化”和“内容变化”分离开。决策日志表放到公理二里细说。
这个最小闭环跑通以后,你会发现后续的模型训练、策略设计、问题复盘都有了统一数据源。这是 AdAgent 的底牌,也是所有公理的前提。
3. 公理二:决策可回溯,永远知道 Agent 为什么动手
3.1 可解释不是加分项,而是底线
很多做智能投放的人容易忽略一个问题:优化师凭什么信任一个自动调价的系统?答案不是“结果好就行”,因为结果好可能是阶段性的,一旦出问题,优化师需要一个解释。如果 Agent 把某条计划加价了,你问它为什么,它只能给出一个概率值,那优化师的所有经验都派不上用场,只能硬着头皮赌。
可解释性是底线,不是加分项。这个道理有点像招一个分析师,他给你提了一个建议,你一定会问“依据是什么”。如果他答不上来,哪怕建议是对的,你也不敢采纳。Agent 也一样,它的每一个决策动作,都应该像一份可查询的分析报告,包括当时的输入、触发的规则、参考的数据、风险等级和预期收益。
决策可回溯还要打通“事后审计”的链路。一旦投放效果出了问题,你能顺着日志一步步还原,究竟是哪条规则、哪个数据、哪个模型导致了误判。还原不了,就只能回滚配置,但根因永远找不到。
3.2 决策日志到底应该记什么
很多团队做日志只记一条“操作成功”,这是远远不够的。我建议每条决策记录至少包含这些内容:事件 ID、发生时间、对象 ID、动作类型、动作前后的状态快照、触发原因、规则链、数据版本、置信度、风险等级。下面是一个简化的日志结构:
{ "event_id": "dec-2025-06-01-0001", "created_at": "2025-06-01T10:23:00+08:00", "campaign_id": "campaign_12345", "action": "adjust_bid", "reason_title": "cost_jump_detected", "params_before": { "bid": 2.4, "status": "active", "daily_budget": 3000 }, "params_after": { "bid": 1.8, "status": "active", "daily_budget": 3000 }, "rulechain": [ "rule:ecpm_threshold", "model:predict_cvr", "rule:min_decision_interval" ], "data_version": "2025-06-01_08", "confidence": 0.86, "risk_level": "medium" }这里要特别强调 params_before 和 params_after 的重要性。存操作后的快照还不够,没有操作前的状态,就无法复现决策前的场景。rulechain 是触发链路,它告诉人这个动作不是凭空冒出来的,而是经过了哪些规则和模型的筛选。confidence 反映模型对自己判断的信心程度,低置信度动作应该被特殊标记。
日志的写入顺序也有讲究。先落日志,再执行动作。如果先执行再补日志,一旦执行失败,日志就丢了。我见过太多系统执行成功但日志缺失,导致审计时发现操作记录无法闭环,这是非常大的隐患。
3.3 人工闸门和控制边界
决策可回溯不代表所有动作都自动执行,更重要的是给决策设置人工闸门。不同动作的风险等级不同,要区别对待。我把常见动作分成三档:
低风险动作包括给素材打标签、给计划打预测标注,这类动作不影响预算消耗,可以自动执行,但日志照记。中风险动作包括出价调整幅度在 15% 以内、预算上限调整在 20% 以内,这类动作可以自动执行,但如果当天累计调整次数超过阈值,需要人为介入。高风险动作包括关停计划、恢复计划、出价调整幅度超过 50%,这类动作必须进入人工审批队列,Agent 只能给出建议,不能直接执行。
这个分级看起来保守,但它帮我们解决了一个核心问题:让 Agent 先跑起来,而不是让 Agent 先闯祸。跑通低风险和中风险的自动化,再逐步放开高风险动作。
4. 公理三:闭环学习,让每次投放都成为下一次的经验
4.1 闭环不是报表闭环,而是认知闭环
很多系统也提闭环,但它们理解的闭环是每天晚上把数据汇总一遍,第二天早上做二次计算。那不是闭环,那只是把数据从 A 表搬到 B 表。真正的闭环学习,是动作产生结果,结果改变认知,认知指导下一步动作。它至少包含四个环节:执行动作、观察结果、验证假设、更新策略。
举个例子。Agent 观察到某条素材成本上升,它不能直接下结论说素材衰退了。正确的做法是建立一个假设:素材衰退导致点击率下降,进而导致 ECPM 下降,所以系统竞争不到优质流量,成本上升。这个假设需要数据验证。如果 Agent 接下来观察到的点击率确实持续下降,转化率没有明显上升,那假设成立,可以降权。如果点击率没变化,只是转化率波动,那可能是流量质量问题,处理方式完全不同。
这种假设验证的过程能被沉淀到系统里,Agent 才真正在“学习”。我要求所有学习行为都留下记录:假设是什么、依据是什么、验证结果是什么、是否更新了策略。没有这些,所谓的学习就只是在调参数。
4.2 素材生命周期的自动管理
素材是广告投放中最活跃也最容易被忽略的变量。一个素材从上线到衰退,通常经历冷启动、增长、成熟、衰退四个阶段。Agent 的主要工作之一,就是自动识别素材处在哪个阶段,并执行对应策略。
冷启动阶段的特点是曝光少、转化样本不足,此时 Agent 不应该急着压价,而应该保障素材有足够的观察空间,可以适当给一些预算和保护期,比如上线后前 24 小时不以成本作为主要判断依据。增长阶段的特点是成本低于目标且消耗在上升,此时 Agent 可以逐步提升预算上限,但每次提升幅度要克制,避免突然放量导致成本抬升。成熟阶段的特点是成本稳定,此时减少频繁调价,让系统自然跑量。衰退阶段的特点是成本持续走高或转化持续走低,此时进入观察清单,连续拉响多次警报后降权或淘汰。
用一张表来记录不同阶段的动作要领,会非常直观:
| 阶段 | 典型信号 | Agent 的推荐动作 | 风险提示 |
|---|---|---|---|
| 冷启动 | 曝光少、样本不足 | 设置观察期,保障基础预算 | 不能只看小时级成本 |
| 增长 | 成本低于目标、消耗上升 | 小步提升预算上限 | 提速幅度控制在 20% 以内 |
| 成熟 | 成本稳定、量级稳定 | 稳住现状,减少干预 | 频繁调价会破坏系统模型 |
| 衰退 | 成本上升、点击率下滑 | 进入观察,持续三天后降权 | 不要单日斩仓,先观察趋势 |
这里的重点不是让 Agent 记住这张表,而是让它能从数据里识别出“这个素材现在更像哪个阶段”,并根据阶段动态调整动作。
4.3 避免“策略震荡”的三个硬规则
系统跑起来以后,最容易犯的毛病是策略震荡。比如模型今天判断成本要涨,就把出价调低;明天发现流量变差,又把出价调高;后天再调回来。来回几次,预算耗了,效果也没了。
要避免震荡,我用了三条硬规则。第一条是冷却时间,同类决策之间必须保持最小时间间隔,例如出价调整单条计划一天内不超过两次,且两次间隔不少于 4 小时。第二条是验证前置,下一次决策必须引用上一次决策的结果,如果上一次动作的效果还没验证清楚,不能再次动作。第三条是探索预算,每次只让很少一部分预算跑探索流量,比如总预算的 10%,这部分预算专门用来测试新的素材、新的人群和新的出价策略;剩下 90% 按已验证的策略执行。
这三条规则看似限制了 Agent 的自由度,实际上保护了系统的稳定性。真正成熟的智能体不是每天都在折腾,而是在绝大多数时间里保持克制,只在真正需要的时候出手。
4.4 把经验沉淀成 Agent 的记忆
模型参数只是记忆的一种形式,我还建议做一个显式的“经验库”。比如某类素材在周五晚上转化率偏低,某类人群在周末的点击成本反而更低,这些经验可以用结构化事件保存下来。经验库的作用是让 Agent 在新的一天启动时,能够带着历史认知看数据,而不是每天都在失忆状态下重新发现。
需要注意的是,经验要有时效性。广告环境变化快,上周的经验这周可能就不适用了。我通常给经验设置有效期,比如 7 天、30 天,到期后如果没有新的证据支持,就自动降权。经验库还需要人工复核入口,因为有些规律可能是统计假象,比如某天表现好只是由于竞争对手暂时缩量。
5. 公理四:业务目标对齐,别用过程指标自我感动
5.1 优化目标的“跑偏陷阱”
做投放的人都经历过类似场景:某条计划点击率特别高,ROI 也漂亮,优化师很兴奋,于是不断加预算。但过一段后发现,消耗上去了,利润没上来。原因可能是点击率高但购买客单价低,也可能是转化的人大量退款,或者吸引的是只看不买的羊毛党。
如果 Agent 的目标函数只包含点击率、曝光量、转化数这些过程指标,它很容易自我感动。点击率可以刷,转化数可以撞出来,真正对业务有价值的是订单毛利和长期用户回报。公理四要求 Agent 的目标函数必须和业务价值对齐,而不是和展示指标对齐。
在设定目标函数前,我强烈建议先和业务方对清楚一句话:这个广告到底在为哪个财务数字负责?是纯增量订单,是新客获取成本,还是老客复购率?每一个回答都会导向完全不同的优化策略。
5.2 用净贡献替代账面 ROI
账面 ROI 是很多投放后台默认的优化目标,但它有一个明显缺陷:只算收入,不减成本。一个订单售价 200 元,广告费花了 80 元,ROI 是 2.5,看起来不错。但如果这个产品成本是 150 元,加上物流和退换货损耗,这笔订单实际是赔钱的。优化师如果只盯 ROI,就会持续放大这种亏损。
AdAgent 的目标函数应该基于净贡献来定义。净贡献等于订单毛利减去广告费用,再减去无效订单成本和渠道扣罚。看起来很简单,但做起来难,因为它要求系统把业务侧的订单数据和广告侧的投放数据打通。这也是为什么公理一的数据主权那么重要:没有打通的数据,就没有办法计算净贡献。
一个简化的目标函数示例:
目标:最大化 E[订单毛利 - 广告花费 - 无效订单成本] 约束条件: 1. 当日广告花费 <= 账户日预算 2. 单计划 7 日 ROAS >= 1.8 3. 频次超标率 <= 1% 4. 品牌安全黑名单命中数为 0 5. 探索预算占总预算比例 >= 10%目标函数里要有约束条件,约束条件的存在是为了防止 Agent 为了最大化一个数字而牺牲其他指标。比如为了追求毛利最大化,它会疯狂放量,但如果加了频次约束,就能避免对同一批用户反复轰炸带来的体验伤害和转化衰减。
5.3 多目标分层与长期价值
现实中的营销目标从来不是一个。同一个账户里,有的计划负责拉新,有的计划负责促活,有的计划负责清库存。如果强行套同一个目标函数,系统会在不同目标之间反复横跳。我建议把目标分成三层来做。
第一层是红线约束,任何情况下都不能碰,比如品牌负面词曝光、敏感内容命中、超频投放。第二层是效率目标,在红线满足的前提下,优化净贡献、订单量、获客成本。第三层是长期目标,包括新客的 90 天生命周期价值、复购率、品牌搜索指数提升。这三层目标不是并列关系,而是优先级关系。红线约束永远优先,长期目标在短期数据不足以判断时可以放宽。
还要注意评估窗口的问题。很多系统拿“当日报表”去评估拉新计划,会觉得它效率很差,因为新客从点击到首次购买可能有几天甚至更长的决策周期。这时候应该用长周期归因来评估,比如看 7 天甚至 30 天的用户累计价值。短视的目标评估会杀死本来正确的计划。
6. 实测中最容易翻车的几个环节
6.1 数据断层导致的指标对照不稳
我在实操中见过最多的问题,就是广告平台回调的转化数和内部业务系统的订单数对不上。客户先质疑数据准确性,然后质疑整个 Agent 的可信度。排查这个问题不能只看汇总数字,要先拆解。
我会建议按以下顺序排查:先确认归因窗口一致,平台默认的转化窗口和内部定义的窗口很可能不同。再确认去重逻辑一致,同一个用户点击多次只算一次转化,还是每次点击都算。然后抽样比对明细,找出差异的集中点,看是某些计划差距大,还是某些日期范围差距大。最后要形成一个“口径对照表”,让客户能一眼看到两边数字的差异来源。
这个环节的核心教训是:永远不要在数据口径没对齐之前就让 Agent 做自动决策。一旦自动调价碰上了错误数据,造成的损失很难解释清楚。
6.2 模型震荡和预算失控
有一次我观察到一个现象:某条计划的消耗突然在半小时内翻了 3 倍,成本也跟着涨,Agent 连续做了 4 次降价动作,结果还是没有止住消耗。事后排查发现,问题的根源是模型对小时级数据过于敏感,把一次流量高峰误判为长期趋势,连续触发动作,反而打乱了系统原本的节奏。
解决这个问题,我后来加了两个机制。一个是决策冷却机制,单条计划 4 小时内最多执行一次出价调整,不允许连续动作。另一个是趋势平滑,用最近 3 小时和过去 24 小时的加权数据来做趋势判断,而不是只看瞬时值。这两个机制加上以后,策略震荡的频率明显下降。
6.3 决策日志缺失和审计盲区
系统上线之后最容易忽视的是日志的完整性。一开始我为了追求性能,把日志写成异步队列,结果高峰期队列积压,日志丢失了一部分。等到要做复盘时,发现某些关键动作没有记录,只能靠猜。
现在我的标准是“先写日志,后执行动作,且双写”。内存队列写一份,本地文件同步写一份,数据落库失败时能自动重试。日志完整率可以作为 Agent 系统健康的硬指标,低于 99.9% 就要告警。这听起来有点保守,但广告投放涉及真金白银,宁可慢一点,也不能让审计链路断掉。
6.4 目标函数权重失衡的潜在风险
如果一个系统同时优化订单量和 ROI,它大概率会找到一些“看起来完美”的作弊解,比如只投高客单价但转化极慢的人群,或者只投点击率极高但退货率也极高的品类。目标函数本身不会自动纠偏,约束条件才是防止跑偏的保险。
我建议每次调整目标函数之后,先回放历史数据,看过去的决策如果在新的目标函数下会怎么执行,是否会产生明显不合理动作。回放通过以后再上线,能避免很多不必要的试错成本。回放和灰度测试,是公理四落地最有效的两道防线。
6.5 常见问题速查表
| 现象 | 可能原因 | 排查顺序 | 落地建议 |
|---|---|---|---|
| 平台成本与内部订单成本对不上 | 归因窗口、去重口径不一致 | 先比对总数,再抽明细,再看窗口 | 统一口径注册表,建立自动对账任务 |
| 自动调价后成本反而上升 | 模型对小波动过度反应 | 查最近决策日志,看动作频率 | 加冷却时间,加趋势平滑,加置信度阈值 |
| 决策日志无法回看 | 异步队列丢失或写入失败 | 查队列积压、查写入重试机制 | 先写日志再执行,双写落盘 |
| 多目标同时优化但效果震荡 | 目标权重未归一化 | 检查目标函数里各目标的量纲 | 分层目标,优先级排序,不用并列权重 |
| 新模型上线后效果下降 | 数据分布漂移或过拟合 | 对比新旧模型在历史数据上的回放结果 | 灰度上线,先跑小预算验证再全量 |
这套思路走到最后,我自己最大的体会是:做营销智能体,最值钱的不是模型算法,而是对“决策边界”的设计。Agent 该动的时候要敢动,不该动的时候要能扛住诱惑。数据再造不出来可以先等,日志缺了必须补,目标没对齐绝对不上线。如果一个系统能做到动作都有依据、结果都能复盘、经验都能沉淀、目标都向着真实业务价值,那它才配得上“智能体”这三个字。反过来,如果只是为了节省人力和一键操作,那用规则脚本就够了,没必要搭一套新体系。我给所有准备做类似系统的团队的建议很简单:先把日志和权限做好,再把数据口径打牢,最后才考虑放开自动调价。顺着这个顺序走,可能慢一点,但不会翻车。