⌂ 门户
✓ A值校准 · 规格书①
🦋 蝴蝶效应 · 规格书②
🍣 推单Omakase · 规格书③
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自主边界
✅ Agent可以自动执行
D类战略扰动豁免标记
MEDIUM级预警生成和推送
通知Omakase暂停失真节点推单
写入inf_alerts预警记录
消化率恢复后自动解除预警
传导路径预测计算
❌ 必须人工确认
铁律③触发(消化率<50%两月)的处置决定
CRITICAL级预警的处置方案
经销商合同暂停或终止
C类窜货的处罚决定
预警豁免申请审批
A类压货的原因认定(压货 vs 真实需求下降)
+依赖关系
⚠️ 需要: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值和无失真判断 · 自动计算补货量 · 直接推单