Agent规格说明书 · 第②张 · 共3张
蝴蝶效应 Agent
Butterfly Effect Detection Agent
Layer 2.5 · 推理+预警
实时监控 · T+1
这个Agent存在的理由:供应链上的一个微小扰动,如果不被识别和拦截,会沿着IPO0→IPO13向下传导放大,变成系统性问题。 经销商多进了一批货(压货),门店动销数据看起来正常,但消化率在悄悄下降。两个月后,铁律③触发,整个区域陷入库存危机。
这个Agent的职责是在蝴蝶效应传导到下一个节点之前,提前2-3个IPO节点识别并拦截。速度就是一切。
⚠️ 关键前提:这个Agent依赖A值校准Agent提供的干净r值。如果r值本身是失真的(促销虚高、断货低估),蝴蝶效应的判断会产生大量误报。两个Agent必须按顺序运行:先校准,再检测。
0前置定义 · 四类失真模式
A类失真
压货失真
经销商进货量远超实际动销,库存在渠道内积压。表面上看公司出货漂亮,实际上是把库存压力转移给了经销商。消化率持续下降是核心信号。
信号:进货量↑ + 消化率↓ + 库存↑ + r值未变
铁律关联:铁律③(消化率<50%两月)
B类失真
促销扰动
短期促销制造虚假的动销高峰,促销结束后需求断崖式下跌。如果用促销期r值来预测正常期补货,会严重过量。
信号:r值突然↑↑ + 有促销事件标记 + 促销后r值回落
关联:A值校准Agent的剔除对象
C类失真
窜货失真
货物在非授权渠道流动,低价出现在不该出现的区域。价格体系被破坏,品牌溢价受损,正常渠道经销商受到冲击。
信号:区域价格低于底价 + 该区域进货量低 + 邻近区域进货量异常高
铁律关联:铁律①(价格底线)
D类失真
战略扰动
公司主动发起的正常操作(涨价前备货、年级迁徙过渡、新品首铺),会造成短期数据异常。这类失真是授权的,不需要拦截,但需要标记,避免被误判为A/B/C类。
信号:有管理层发起的战略事件标记
处理:标记为D类,保护期内不触发其他类预警
1业务合约
输入承诺
A值校准Agent提供的干净r值 + SAP/汉询的实时进出货和库存数据 + 价签识别的价格数据(未来接入)
输出承诺
准确分类的失真预警(A/B/C/D四类)+ 传导路径图(哪个节点是起点,会影响哪些下游节点)+ 处置建议 + 紧急程度评级
对谁负责
对Omakase推单Agent负责(失真节点的推单需要暂停或调整)· 对DOM和业务员负责(他们是处置执行者)· 对一本账负责(A类压货不应触发薪酬奖励)
成功标准
A类失真识别率 >85%(传导到下一节点之前)· 误报率 <15%(误报会产生不必要的人工处置负担)· D类正确豁免率 100%(战略扰动绝不能被误判)
失败标准
A类压货在触发铁律③之前未被检测到,或D类战略扰动被误判为A类导致正常业务被中断
2触发条件
实时
每日 T+1 · 全量扫描
每天凌晨数据同步完成后(预计07:00),对所有节点×SKU组合执行一次失真检测。这是主检测窗口,覆盖IPO2-IPO10。
CRON: 0 7 * * * · 依赖: 汉询数据T+1同步完成
实时
价格异常触发 · 铁律①监控
当任何节点检测到零售价低于底价(铁律①),立即触发C类窜货检测,不等T+1批次。需要价签识别Agent提供价格数据(目前待建)。
TRIGGER: price < iron_law_floor → 即时触发 · 优先级: CRITICAL
上游触发
A值校准完成后 · 重新评估
每次A值校准Agent完成校准,蝴蝶效应Agent用新的r值重新计算所有节点的真实消化率,可能触发新的预警或解除旧预警。
TRIGGER: inf_events.event_type = 'CALIBRATION_COMPLETE'
月度
月末 · 铁律③消化率检查
每月最后一天,计算所有经销商的消化率(月出货/月进货)。连续两月低于50%触发铁律③预警,升级为红色预警推送给管理层。
CRON: 0 20 L * * · 铁律③: 消化率<50%连续2月 → 红色预警
3数据读取
| 数据源 | 表名 | 关键字段 | 用于检测 | 重要性 |
| A值校准Agent |
inf_node_targets |
r_target, confidence, calibrated_at |
基准r值,计算真实消化率 |
核心 |
| 汉询/SFA |
inf_heartbeat |
r_actual, inflow_units, outflow_units, inventory_units, date |
实际动销 vs 进货量,计算消化率,识别A类压货 |
核心 |
| SAP事件 |
inf_events |
event_type, node_id, sku_id, start_date, end_date, initiated_by |
识别D类战略扰动(涨价/大促/年级迁徙),避免误判 |
核心 |
| 价签识别(待建) |
inf_price_scan |
store_id, sku_id, scanned_price, scan_date |
C类窜货检测,价格低于底价即触发 |
核心(未来) |
| 目标规则引擎 |
inf_target_rules |
rule_id, iron_law_type, threshold |
铁律①②③的阈值定义,触发对应预警级别 |
参考 |
| 历史预警 |
inf_alerts |
alert_type, node_id, sku_id, resolved_at, false_positive |
避免重复预警;学习历史误报模式 |
参考 |
4决策逻辑 · 四步检测流程
1
D类豁免检查(最先执行)
在所有检测之前,先查inf_events,识别当前是否有战略扰动保护期。保护期内的节点跳过A/B/C类检测,直接标记D类并记录原因。
FOR each node × sku:
IF EXISTS strategic_event(node, sku, today):
label = 'D_STRATEGIC'
SKIP A/B/C detection
LOG: event_type, initiated_by, expected_end_date
ELSE:
CONTINUE to step 2
2
A类压货检测 · 消化率计算
用过去30天的进出货数据,计算每个经销商节点的消化率。消化率是最核心的A类信号。
-- 消化率计算
digest_rate = SUM(outflow_30d) / SUM(inflow_30d)
-- A类判断规则
IF digest_rate < 0.75 AND inventory_trend = 'RISING':
→ A类预警候选(压货迹象)
IF digest_rate < 0.50 AND consecutive_months >= 1:
→ A类黄色预警(铁律③风险临近)
IF digest_rate < 0.50 AND consecutive_months >= 2:
→ A类红色预警(铁律③触发)→ 立即暂停推单
-- 排除误判:同时检查r_actual是否也在下降
-- 如果r_actual下降(真实需求下降)则不是压货,是市场问题
IF digest_rate < 0.75 AND r_actual_trend = 'DECLINING':
→ 不是A类,是真实需求问题,触发B类复查
3
C类窜货检测 · 价格地图扫描
比对各节点的实际售价与底价,同时检测区域间的进货量异常流动模式。
信号①
某区域零售价 < 铁律①底价 → 立即触发C类,不等批次
信号②
区域A进货量异常高 + 区域B进货量异常低 + 区域B出现低价 → 跨区窜货
信号③
电商平台出现低价(未来接入)→ 线上窜货,影响线下价格体系
⚠️ 当前限制:价签识别(A23)未上线前,C类检测只能基于进货量异常,无法直接检测零售价。这是最大的检测盲区。
4
传导路径计算 · 影响范围评估
检测到失真后,计算它会沿供应链向哪些下游节点传导,预估影响范围和时间窗口。
-- 传导路径(以A类压货为例)
SOURCE NODE: 经销商(IPO2-4)
↓ 如果不处置,预计T+14天传导到
LEVEL_1: 旗下所有门店(IPO8-10)→ 补货压力减少 → 货架断货风险
↓ 如果仍不处置,预计T+30天传导到
LEVEL_2: 消费者(IPO11-13)→ 断货体验 → 流失风险
↓ 同时向上传导
UPSTREAM: 公司仓库(IPO1)→ 出货减少 → 库存积压
-- 紧急程度评级
CRITICAL: 铁律触发 或 传导已到门店层
HIGH: 消化率<75% 且连续下降
MEDIUM: 消化率<75% 首次出现
LOW: 消化率75-85% 观察期
+传导链路 · A类压货案例
🦋 宝仓贸易(浦东)· 遵循自然500ml · A类压货传导路径
🏭
IPO1 · 公司仓库
公司发货正常
本月出货量+15%,表面健康。问题在下游,这里暂时看不到。
✅ 正常
🤝
IPO2-4 · 经销商 ← 失真起点
宝仓贸易 · 库存持续积压
进货量月增15%,但消化率从上月72%降至61%,库存环比+28%。r_actual未变,说明真实需求没有增长,是压货。
🔴 A类失真 · 消化率61% · 趋势恶化
🏪
IPO8-10 · 零售门店 ← T+14天预测
大润发金桥 · 补货将减少
经销商库存积压后会减少向门店补货。预计14天后门店库存水位开始下降,可能触发断货。
⚠️ 预测风险 · T+14天
👥
IPO11-13 · 消费者 ← T+30天预测
仁恒河滨城 · 断货体验风险
如果门店断货,VIP会员A088等高频用户会遭遇断货体验。高频用户一旦流失很难挽回。
💡 流失风险 · T+30天
5输出规格
📱
企微预警推送 · 分级接收
企业微信
根据紧急程度,推送给不同层级。CRITICAL推给DOM+城市经理,HIGH推给DOM,MEDIUM推给业务员。避免预警疲劳。
【🔴 铁律③预警】宝仓贸易 · 遵循自然500ml
────────────────────────
失真类型:A类 · 渠道压货
消化率:本月61% / 上月72% / 铁律阈值50%
库存水位:当前4.2a(正常2a满仓)
传导预测:T+14天影响旗下3家门店补货
⚡ 需要立即行动:
① 暂停本月对宝仓贸易的推单
② DOM王磊约谈经销商,了解压货原因
③ 检查浦东区是否有窜货情况(C类联查)
[确认已了解] [已安排处置] [申请豁免]
────────────────────────
处置期限:48小时内回复
🗄️
写入预警记录
inf_alerts
每条预警写入inf_alerts,包含失真类型、置信度、传导路径、处置状态、最终结果。这是学习数据。
INSERT INTO inf_alerts VALUES (
alert_type: 'A_CHANNEL_STUFFING',
node_id: 'DIST-BC',
sku_id: 'ZR5',
severity: 'HIGH',
digest_rate: 0.61,
confidence: 0.82,
cascade_nodes: ['STORE-BC-DL','STORE-BC-JL','STORE-BC-XLH'],
cascade_eta: 14, -- 传导预计天数
action_items: ['PAUSE_OMAKASE','DOM_FOLLOWUP'],
status: 'PENDING',
created_at: NOW()
)
🔗
通知Omakase暂停推单
内部事件总线
A类失真确认后,立即向inf_events写入OMAKASE_PAUSE事件,Omakase Agent收到后暂停对该节点的推单,直到消化率恢复。
INSERT INTO inf_events VALUES (
event_type: 'OMAKASE_PAUSE',
node_id: 'DIST-BC',
sku_id: 'ZR5',
reason: 'A_CHANNEL_STUFFING',
resume_condition: 'digest_rate > 0.65',
created_by: 'BUTTERFLY_AGENT'
)
📊
晨报异常摘要
v8.1 晨报中台
每日晨报中显示当日新增预警数量、各类型分布、最紧急的3条,让管理层一眼掌握全局健康度。
今日蝴蝶效应扫描结果 2026-04-14
──────────────────────
扫描节点:54个 · 发现异常:3条
🔴 CRITICAL: 0条
🟡 HIGH: 2条(宝仓贸易A类 · 宝山经销商A类)
🔵 MEDIUM: 1条(长宁遵循自然消化率预警)
✅ 健康节点:51个
──────────────────────
D类豁免:2个节点(618备货保护期)
6自主边界
+依赖关系
⚠️ 需要:A值校准Agent先完成校准
⚠️ 需要:inf_events事件表(D类豁免)
⚠️ 未来需要:价签识别(C类完整检测)
✅ 输出给:Omakase推单Agent(暂停信号)
✅ 输出给:一本账(压货期不计薪酬奖励)
✅ 输出给:晨报中台(每日摘要)
📊 使用:目标规则引擎(铁律阈值)
+核心SQL · Java团队实现参考
-- ① 计算经销商消化率(过去30天)
SELECT
node_id,
sku_id,
SUM(outflow_units) / NULLIF(SUM(inflow_units), 0) AS digest_rate,
SUM(inventory_units) / COUNT(*) AS avg_inventory,
COUNT(*) AS data_days
FROM inf_heartbeat
WHERE date >= DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY node_id, sku_id;
-- ② 检查是否有D类战略扰动保护
SELECT COUNT(*) FROM inf_events
WHERE node_id = ?
AND sku_id = ?
AND event_type = 'STRATEGIC'
AND start_date <= NOW()
AND end_date >= NOW();
-- ③ 写入预警
INSERT INTO inf_alerts (
alert_type, node_id, sku_id, severity,
digest_rate, confidence, cascade_nodes,
cascade_eta, action_items, status, created_at
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 'PENDING', NOW());
-- ④ 通知Omakase暂停推单
INSERT INTO inf_events (
event_type, node_id, sku_id, reason,
resume_condition, created_by, created_at
) VALUES (
'OMAKASE_PAUSE', ?, ?, 'A_CHANNEL_STUFFING',
'digest_rate > 0.65', 'BUTTERFLY_AGENT', NOW()
);
🦋 蝴蝶效应 Agent · 问答
A类 vs 真实需求下降
C类检测的盲区
D类豁免被滥用
两个Agent的协调
你好,我是蝴蝶效应 Agent 规格说明书。问我任何关于失真检测逻辑、传导机制、边界设计的问题。
第②张规格说明书完成
下一张:🍣 无菜单推单 Agent(Omakase)
依赖前两张的干净r值和无失真判断 · 自动计算补货量 · 直接推单