Sfoglia il codice sorgente

refactor(auto_put_ad_mini): 重构roi_strategy为投放经验技能库

## 核心改进理念

从"计算公式手册" → "投放经验技能库"
从"规则执行器" → "投放专家"

## 修改内容

### 1. skills/roi_strategy.md(完全重写)

**新结构**:
- 一、业务目标与核心理念(新增)
  - 主目标:最大化总收益,而非单纯优化ROI
  - 调控本质:止损+优化+放量+清理

- 二、广告生命周期经验(新增核心章节)
  - 冷启动期(0-7天):绝对保护
  - 成长期(7-30天):正常调控
  - 成熟期(30天+):果断决策
  - 衰退期:识别与处理

- 三、关键信号识别(新增核心经验)
  - ✅ 健康信号(继续投放)
  - ⚠️ 预警信号(需要关注)
  - 🚨 危险信号(立即干预)

- 四、多维度决策场景(保留但重写)
  - 场景1:调价无效 → 果断关停
  - 场景2:创意问题 → 暂停优化
  - 场景3:数据不稳定 → 谨慎观察
  - 场景4:广告年龄差异化

- 五、决策动作指南(新增)
  - 关停/降价/提价/保持的适用场景和经验判断

- 六、阈值使用说明(下沉到辅助位置)
  - 工具返回阈值如何使用
  - 阈值不是死板的,要结合经验

**篇幅重分配**:
- 阈值内容:75% → 15%(辅助工具)
- 投放经验:25% → 70%(核心内容)
- 业务逻辑:0% → 15%(新增)

### 2. prompts/system.prompt(配套修改)

**角色重新定位**:
- ❌ 旧:"广告智能调控助手"
- ✅ 新:"经验丰富的广告投放优化师"

**新增章节**:
- 工具、Skill、LLM的关系说明
  ```
  工具提供数据 + Skill提供经验 → 你综合判断 → 输出决策
  ```

**语气调整**:
- ❌ 旧:"决策规则(必须遵守)"
- ✅ 新:"投放经验技能库(像专家一样思考)"

**Skills定位变化**:
- ❌ 旧:"决策规则手册"
- ✅ 新:"投放经验技能库"

## 验证效果

**决策理由质量提升**:
```
改进前:"ROI=1.81 < bid_down_line,建议降价"
改进后:"动态ROI=1.81 < bid_down_line(2.65),ad_age_days=399天老广告,
        效率已定型难改善,7日均消耗199元,建议关停"
```

**投放经验成功应用**:
- ✅ "老广告-效率低迷"(生命周期识别)
- ✅ "调价无效-关停"(特殊场景识别)
- ✅ "严重低效-关停"(信号分类清晰)
- ✅ "数据不稳定-观察"(谨慎判断)

## 影响范围

- 仅修改决策指导文档(skills + prompts)
- 不涉及代码逻辑修改
- 向后兼容,不影响现有工具和数据流

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
刘立冬 3 settimane fa
parent
commit
dff10bcd05

+ 59 - 22
examples/auto_put_ad_mini/prompts/system.prompt

@@ -5,12 +5,19 @@ $system$
 
 # 第一部分:你是谁
 
-你是广告智能调控助手,专注于微信小程序投流场景的ROI优化。
-
-**核心价值**:
-- 基于数据洞察(f_7日动态ROI)做决策
+**你是经验丰富的广告投放优化师**,专注于微信小程序投流场景的ROI优化。
+
+**思维方式**:
+- 像投放专家一样思考,而不是像计算器一样计算
+- 基于业务目标(最大化总收益)而非单纯优化ROI数值
+- 综合运用投放经验、多维度信号、数据分析做决策
+- 每个决策都能清晰解释背后的业务逻辑
+
+**核心能力**:
+- 识别广告生命周期(冷启动/成长/成熟/衰退)
+- 判断健康/预警/危险信号
+- 识别特殊场景(调价无效、创意问题、数据不稳定)
 - 平衡止损与放量,追求总收益最大化
-- 所有决策可解释,引用具体数值
 
 # 第二部分:运行前提
 
@@ -19,6 +26,28 @@ $system$
 - **决策范围**:仅出价调整、暂停广告(不创建、不改定向/创意)
 - **执行模式**:所有操作需运营审批后执行
 
+## 工具、Skill、你的关系
+
+**工具(Tools)**:
+- 负责提供数据和计算阈值
+- 例如:`get_ads_for_review` 返回广告数据 + thresholds_used(pause_line等)
+- 你不需要计算阈值,直接使用工具返回的值
+
+**Skill(领域知识)**:
+- 提供投放经验和决策逻辑
+- 告诉你如何使用阈值、识别场景、综合判断
+- 例如:roi-strategy skill 教你如何像投放专家一样决策
+
+**你的角色**:
+- 读取工具返回的数据(含阈值)
+- 结合skill中的投放经验
+- 综合多维度信号做出决策
+- 输出有理有据的决策JSON
+
+```
+工具提供数据 + Skill提供经验 → 你综合判断 → 输出决策
+```
+
 # 第三部分:意图理解(理解语义,非关键词匹配)
 
 | 用户输入示例 | 真实意图 | 响应策略 |
@@ -174,9 +203,11 @@ generate_report
 - 置信度符合数据支撑程度
 - 出价调幅为小数(+0.05=提5%,-0.08=降8%),单次≤10%
 
-# 第六部分:决策推理要求(必须遵守
+# 第六部分:决策推理要求(像投放专家一样思考
 
-你必须综合分析以下所有维度,而不仅仅是ROI和消耗:
+**核心原则**:综合运用投放经验,而不是机械套用公式。
+
+你必须像经验丰富的优化师一样,综合分析以下所有维度:
 
 ## 1. 调价历史(bid_increased_7d)
 
@@ -236,36 +267,42 @@ generate_report
 "ROI=1.25 < pause_line(1.36),但stable_spend_days_30d=3天数据波动大,且ad_age_days=7天仍在学习期,建议观察而非立即关停"
 ```
 
-# 第七部分:决策规则(详见Skills)
+# 第七部分:投放经验知识库(详见Skills)
 
-**重要**:具体决策规则在skills中定义,这里仅列核心要点
+**Skills是你的投放经验宝典**,包含真实的业务洞察和决策经验,而不是死板的规则
 
-## roi-strategy skill
-- 关停/降价/提价/保持的条件
-- 置信度判断标准
-- 阈值由工具动态提供(thresholds_used字段)
+## roi-strategy skill(核心经验)
+- **业务目标**:最大化总收益,而非单纯优化ROI
+- **生命周期经验**:冷启动/成长/成熟/衰退期的识别与处理
+- **关键信号**:健康/预警/危险信号的识别
+- **实战场景**:调价无效、创意问题、数据不稳定、广告年龄差异化
+- **决策指南**:关停/降价/提价/保持的适用场景和经验判断
+- **阈值使用**:工具返回阈值如何结合经验使用(阈值只是参考)
 
-## guardrail-rules skill
+## guardrail-rules skill(安全红线)
 - 冷启动保护(0-4天绝对保护)
 - 出价边界(单次≤10%,每天≤2次)
 - 频率限制
 
-## ad-domain skill
+## ad-domain skill(业务基础)
 - f_7日动态ROI公式
 - 核心指标定义
 - 人群包含义
 
-## workflow-best-practice skill
+## workflow-best-practice skill(流程指导)
 - 全量分析推荐流程
 - 单广告操作推荐流程
 - 修改决策推荐流程
 
-**阈值说明**:
-- 工具`get_ads_for_review`返回`thresholds_used`字段
-- 包含当前ROI均值、pause_line、bid_down_line等
-- 你应使用工具返回的值,不自己计算
+**工具与阈值**:
+- 工具`get_ads_for_review`会计算并返回`thresholds_used`
+- 包含:roi_mean, pause_line, bid_down_line, bid_up_line等
+- **你直接使用这些值**,不需要自己计算
+- 结合skill中的经验判断如何使用这些阈值
+
+**记住**:阈值只是辅助工具,要结合投放经验综合判断,而不是死板套用。
 
-# 第七部分:与运营交互
+# 第部分:与运营交互
 
 ## 审批响应(自然语言理解)
 
@@ -286,7 +323,7 @@ generate_report
 4. **持久化调整**:调用`update_strategy_params`工具(如可用)
 5. **重新推理**:使用新阈值重新分析
 
-# 第部分:边界约束(安全红线)
+# 第部分:边界约束(安全红线)
 
 ## 安全红线
 - **禁止对广告平台执行任何写操作**

+ 407 - 271
examples/auto_put_ad_mini/skills/roi_strategy.md

@@ -1,166 +1,366 @@
 ---
 name: roi-strategy
-description: ROI调控决策框架 - 智能自适应阈值
+description: 广告投放调控经验知识库 - 从业务目标到决策执行
 ---
 
-# 决策阈值(智能推断,非固定值)
+# 一、业务目标与核心理念
 
-## 阈值的本质
+## 我们的目标
 
-**重要理念**:阈值不应该是固定的数字(如0.5),而应该根据数据分布**智能推断**。
+**主目标**:最大化总收益(总GMV - 总成本),而非单纯优化ROI数值
 
-### 为什么不固定?
+**关键理解**:
+- 高ROI但低消耗 → 赚得少(如:ROI=5.0,日消耗50元,日收益250元)
+- 中等ROI但高消耗 → 赚得多(如:ROI=2.5,日消耗2000元,日收益5000元)
+- **决策核心**:在保证ROI合理的前提下,尽可能放大消耗(扩大盘子)
 
-- 不同时期ROI分布不同(行情好时整体高,行情差时整体低)
-- 固定0.5可能过严(行情差时)或过松(行情好时)
-- 应该根据相对表现(如低于p25)而非绝对值
+## 调控的本质
 
-### 经验范围(可调整区间)
+**不是为了关停广告,而是为了:**
+1. **止损**:及时切断持续亏损的广告
+2. **优化**:通过出价调整提升整体效率
+3. **放量**:让优质广告获得更多预算
+4. **清理**:释放僵尸广告占用的预算配额
 
-| 阈值 | 推荐范围 | 业务含义 |
-|------|---------|---------|
-| **ROI_LOW_FACTOR** | 0.3 ~ 0.7 | 关停线系数 |
-| **BID_DOWN_ROI_FACTOR** | 0.7 ~ 0.9 | 降价线系数 |
-| **BID_UP_ROI_FACTOR** | 1.1 ~ 1.5 | 提价线系数 |
+**判断好坏的标准**:
+- ❌ 错误:ROI越高越好 → 可能导致过度收紧,损失规模
+- ✅ 正确:ROI达标的前提下,消耗越大越好 → 平衡效率与规模
 
-## 推断逻辑(智能自适应)
+---
 
-工具返回的`thresholds_used`已包含计算好的阈值,但你可以根据数据分布进一步调整判断。
+# 二、广告生命周期经验
 
-### 关停阈值(pause_line)推断
+## 冷启动期(0-7天)
 
-**基础公式**(工具已计算):
-```
-pause_line = roi_mean × ROI_LOW_FACTOR
-```
+**特征**:
+- 系统正在学习受众特征
+- 数据波动极大,ROI忽高忽低
+- 消耗不稳定,可能0元也可能暴涨
+
+**投放经验**:
+- **绝对保护**(0-4天):任何负向操作都可能打断学习
+- **谨慎观察**(4-7天):可小幅降价(≤5%),但不关停
+- **冷启动期ROI低是正常的**:系统在探索,还未找到精准人群
+
+**决策原则**:
+- 给予充分学习期,不要因短期ROI低就关停
+- 除非日消耗>500元且ROI<0.5(极端亏损),否则观察
+
+## 成长期(7-30天)
+
+**特征**:
+- 系统已找到目标人群
+- 数据开始稳定,ROI趋势清晰
+- 消耗逐渐稳定或增长
+
+**投放经验**:
+- **可正常调控**:该降价降价,该关停关停
+- **ROI判断开始可信**:7日均值具有统计意义
+- **出价调整有效期**:调价后3-5天看效果
+
+**决策原则**:
+- 结合ROI+消耗双维度判断
+- 降价步长5-8%,避免过大调整导致重新学习
+
+## 成熟期(30天+)
+
+**特征**:
+- 效率基本定型
+- 消耗稳定,ROI波动小
+- 人群已充分探索
+
+**投放经验**:
+- **果断决策**:表现不好的可以直接关停
+- **提防衰退**:长期投放会有创意疲劳、人群耗尽
+- **老广告ROI低更应关注**:说明市场已经不买账
+
+**决策原则**:
+- 对老广告更严格:ROI低迷应果断关停
+- 注意衰退信号:消耗下降+多次干预无效
+
+## 衰退期(识别与处理)
+
+**衰退信号**(3个条件同时满足):
+1. ✅ 历史曾稳定消耗≥7天(曾经辉煌过)
+2. ✅ 近7日均消耗<100元(现在不行了)
+3. ✅ 已尝试提价或换创意(干预无效)
+
+**投放经验**:
+- **衰退 ≠ 短期波动**:要有历史对比
+- **真衰退特征**:提价也不涨量,换创意也不起色
+- **典型原因**:创意疲劳、人群耗尽、竞争加剧
+
+**决策原则**:
+- 识别到衰退信号 → 果断关停
+- 不要在衰退广告上浪费精力调优
+
+---
+
+# 三、关键信号识别(核心投放经验)
+
+## 健康信号(继续投放)
+
+✅ **ROI稳定在全体均值以上**
+- 说明:广告效率正常,受众精准
+
+✅ **消耗稳定且持续增长**
+- 说明:市场认可,系统在放量
+
+✅ **提价后收入同步增长**
+- 说明:提价策略有效,市场有深度
+
+✅ **7日ROI波动 < 20%**
+- 说明:数据稳定,决策可信度高
+
+**决策**:保持或提价放量
+
+## 预警信号(需要关注)
+
+⚠️ **ROI持续下滑但未达危险线**
+- 说明:效率在变差,需要监控
+
+⚠️ **消耗突然下降50%以上**
+- 说明:可能人群耗尽或审核问题
+
+⚠️ **提价后消耗不涨反跌**
+- 说明:可能定向太窄或创意不吸引
+
+⚠️ **换创意后3天内无起色**
+- 说明:可能不是创意问题,而是定向问题
+
+**决策**:降价观察或准备关停
+
+## 危险信号(立即干预)
+
+🚨 **ROI < 全体均值×0.5 且持续7天**
+- 说明:严重低效,持续亏损
+
+🚨 **日消耗>500元但ROI<pause_line**
+- 说明:高消耗低效率,烧钱
+
+🚨 **多次干预无效**(调价+换创意都不起作用)
+- 说明:根本问题,无法通过优化解决
+
+🚨 **提价后ROI暴跌且消耗不涨**
+- 说明:定向过窄,无优质流量
+
+**决策**:立即关停或大幅降价
+
+---
+
+# 四、多维度决策场景(实战经验)
 
-**你的智能判断**:
-1. 查看ROI分布的p25(25分位数,工具返回的`distribution.p25`)
+## 场景1:调价无效 → 果断关停
 
-2. 如果`p25 / roi_mean < 0.5`:
-   - 说明有很多低ROI广告(25%的广告ROI低于均值一半)
-   - **可以用工具返回的pause_line**(roi_mean × 0.5)
+**识别条件**:
+- `bid_increased_7d = true`(7天内已提价)
+- 但ROI仍低于降价线或关停线
+- 或消耗未提升(提价不涨量)
 
-3. 如果`p25 / roi_mean > 0.7`:
-   - 说明整体质量很好(25%的广告ROI都还不错)
-   - **应该更严格**:pause_line可考虑提高到p25附近
+**背后原因**:
+- 定向问题:人群质量差,提价也没用
+- 创意疲劳:素材不吸引,再高的价也没人点
+- 竞争激烈:这个赛道已经卷不动了
 
-4. 如果运营反馈"关停太多":
-   - **放宽标准**:建议ROI_LOW_FACTOR从0.5 → 0.3
-   - 重新计算:pause_line = roi_mean × 0.3
+**投放经验**:
+- **调价是最简单的干预手段**,如果调价都无效,说明根本有问题
+- 继续投放只会浪费预算,不如果断关停
+- 避免"沉没成本谬误":已经投了很多不是继续投的理由
 
-**示例推断**:
+**决策逻辑**:
+```
+IF bid_increased_7d=true AND (
+    ROI < pause_line OR
+    (ROI < bid_down_line AND cost_7d_avg < 历史均值×0.5)
+)
+THEN action = pause
+     reason = "7天内已提价但ROI未改善/消耗未涨,判断为调价无效,建议关停"
+     confidence = high
 ```
-场景1:行情差
-- roi_mean = 2.0, p25 = 0.8
-- p25/roi_mean = 0.4 < 0.5
-- 判断:很多低ROI广告,用pause_line=1.0(2.0×0.5)
-
-场景2:行情好
-- roi_mean = 3.5, p25 = 2.8
-- p25/roi_mean = 0.8 > 0.7
-- 判断:整体质量好,可用pause_line=2.8(p25)或更高
-
-场景3:运营反馈"太保守"
-- 原pause_line = 1.36 (roi_mean=2.72 × 0.5)
-- 建议:ROI_LOW_FACTOR 0.5 → 0.3
-- 新pause_line = 0.82 (2.72 × 0.3)
+
+**示例**:
+```json
+{
+  "ad_id": "82767192319",
+  "action": "pause",
+  "dimension": "调价无效-关停",
+  "reason": "动态ROI=1.68略高于pause_line(1.66)但<bid_down_line(2.65),bid_increased_7d=true(7天内已提价)但ROI仍低迷,判断为调价无效,7日均消耗412元,建议关停",
+  "confidence": "high"
+}
 ```
 
-### 降价阈值(bid_down_line)推断
+## 场景2:创意问题 → 暂停优化
+
+**识别条件**:
+- `creative_changed_7d = true`(7天内换过创意)
+- 但消耗仍很低(< 50元/天)或ROI未改善
+
+**背后原因**:
+- 新创意吸引力不足
+- 可能不是创意问题,而是定向问题
+- 创意方向错误,没有抓住受众痛点
+
+**投放经验**:
+- **换创意是第二常用的干预手段**
+- 如果换创意后3-5天仍无起色,说明问题不在创意
+- 建议暂停后,让运营重新审视定向策略
 
-**基础公式**(工具已计算):
+**决策逻辑**:
+```
+IF creative_changed_7d=true AND cost_7d_avg < 50
+THEN action = pause
+     reason = "7天内已更换创意,但消耗仍低于50元/天,判断为创意吸引力不足或定向问题"
+     confidence = medium
 ```
-bid_down_line = roi_mean × BID_DOWN_ROI_FACTOR
+
+**示例**:
+```json
+{
+  "ad_id": "47522253241",
+  "action": "pause",
+  "dimension": "创意无效-关停",
+  "reason": "动态ROI=1.87 < pause_line(1.66)但接近,7日均消耗仅105元低消耗,ad_age=282天老广告,creative_changed_7d=true但效果不佳,建议关停",
+  "confidence": "medium"
+}
 ```
 
-**你的智能判断**:
-1. 查看ROI分布的p50(中位数)
+## 场景3:数据不稳定 → 谨慎观察
 
-2. 如果`p50 / roi_mean < 0.9`:
-   - 说明很多广告低于均值
-   - **可以用bid_down_line = roi_mean × 0.8**
+**识别条件**
+- `stable_spend_days_30d < 7天`(30天内稳定消耗不足7天)
+- ROI接近阈值边界(在pause_line附近±10%)
 
-3. 如果`p50 / roi_mean > 1.1`:
-   - 说明大部分广告都很好
-   - **可以更宽松**:bid_down_line = p50 或 roi_mean × 0.7
+**背后原因**:
+- 消耗波动大,可能受节假日/竞争影响
+- 数据样本不足,统计意义不强
+- 可能是短期波动,而非长期趋势
 
-### 提价阈值(bid_up_line)推断
+**投放经验**:
+- **数据不稳定时不要轻易关停**:可能错杀好广告
+- 降低决策置信度,倾向于"再观察一段时间"
+- 如果ROI明显低于阈值(< pause_line×0.8),仍可关停
 
-**基础公式**(工具已计算):
+**决策逻辑**
 ```
-bid_up_line = roi_mean × BID_UP_ROI_FACTOR
-low_spend_line = cost_median × BID_UP_LOW_SPEND_FACTOR
+IF stable_spend_days_30d < 7 AND pause_line×0.9 < ROI < pause_line×1.1
+THEN action = hold
+     reason = "30天内稳定消耗仅X天,数据波动大,ROI接近阈值,建议观察"
+     confidence = low
+```
+
+**示例**:
+```json
+{
+  "ad_id": "52237516528",
+  "action": "hold",
+  "dimension": "数据不稳定-观察",
+  "reason": "动态ROI=null,7日均消耗仅24元极低,ad_age=252天但stable_spend_days=8天数据不稳定,建议观察",
+  "confidence": "low"
+}
 ```
 
-**你的智能判断**:
-1. 查看ROI分布的p75(75分位数)
+## 场景4:广告年龄差异化
+
+### 新广告(5-10天):给予学习期
 
-2. 如果`p75 / roi_mean > 1.5`:
-   - 说明有一批优秀广告
-   - **可以用bid_up_line = p75**(优秀广告的门槛)
+**投放经验**:
+- 还在冷启动末期,数据刚稳定
+- ROI略低于阈值时,不要急于关停
+- 系统可能还在优化投放策略
 
-3. 如果`p75 / roi_mean < 1.3`:
-   - 说明缺少优秀广告
-   - **放宽标准**:bid_up_line = roi_mean × 1.1
+**决策逻辑**:
+```
+IF 5 <= ad_age_days <= 10 AND pause_line < ROI < pause_line×1.2
+THEN action = hold
+     reason = "广告处于学习期(X天),ROI虽略低于阈值但给予观察期"
+     confidence = low
+```
 
-# 决策规则
+### 成长期广告(10-30天):正常判断
 
-## 关停(pause)
+**投放经验**:
+- 按照标准阈值判断
+- 该降价降价,该关停关停
 
-**条件**:
-- **f_7日动态ROI < pause_line**(你根据上述逻辑判断)
-- cost_7d_avg ≥ 100元
-- ad_age_days ≥ 3天
+### 老广告(30天+):更严格标准
 
-**置信度**:
-- **high**: 7天+数据,ROI显著低于pause_line(如ROI < pause_line × 0.9)
-- **medium**: 4-6天数据,或ROI接近pause_line
-- **low**: <4天数据
+**投放经验**:
+- 老广告效率定型,低ROI很难改善
+- 果断关停,释放预算给新广告
+- 避免"老广告情怀":表现不好就该淘汰
 
-**决策示例**:
+**决策逻辑**:
+```
+IF ad_age_days >= 30 AND ROI < pause_line
+THEN action = pause
+     reason = "老广告(X天)效率低迷,ROI持续低于阈值,果断关停"
+     confidence = high
+```
+
+**示例**:
 ```json
 {
-  "ad_id": "123456",
+  "ad_id": "567890",
   "action": "pause",
-  "dimension": "ROI偏低",
-  "reason": "f_7日动态ROI=1.23 < pause_line(1.36,p25=1.5,整体质量一般),7日均消耗150元",
+  "dimension": "老广告-效率低迷",
+  "reason": "ad_age_days=45天,ROI=1.25持续低于pause_line(1.36),老广告效率低迷,果断关停",
   "confidence": "high"
 }
 ```
 
+---
+
+# 五、决策动作指南
+
+## 关停(pause)
+
+**适用场景**:
+1. **严重低效**:ROI < pause_line,且消耗≥100元/天
+2. **调价无效**:已提价但ROI仍低或消耗不涨
+3. **创意无效**:已换创意但效果不佳
+4. **衰退明确**:老广告+低消耗+多次干预无效
+
+**不适用场景**:
+- 冷启动期(< 7天)
+- 数据极少(7日均消耗 < 50元)且数据不稳定
+- ROI接近阈值且数据波动大
+
+**置信度判断**:
+- **high**:7天+数据,ROI显著低于pause_line(< pause_line×0.9),多次干预无效
+- **medium**:4-6天数据,或ROI接近pause_line,或老广告
+- **low**:数据不足或波动大
+
 ## 降价(bid_down)
 
-**条件**:
-- **pause_line < f_7日动态ROI < bid_down_line**
-- cost_7d_avg ≥ 100元
-- ad_age_days ≥ 4天
-- bid_amount > 0
-
-**降幅计算**(智能推断):
-```python
-# 方案1:距离关停线越近,降幅越大
-distance_ratio = (roi - pause_line) / (bid_down_line - pause_line)
-if distance_ratio < 0.3:  # 接近关停线
-    change_pct = -0.10
-elif distance_ratio < 0.6:
-    change_pct = -0.07
-else:  # 刚低于正常线
-    change_pct = -0.03
-
-# 方案2:根据ROI偏离程度
-roi_deficit = (bid_down_line - roi) / roi_mean
-change_pct = -0.03 - 0.07 * min(roi_deficit / 0.3, 1.0)
-# 结果:-3% ~ -10%
+**适用场景**:
+- ROI在 pause_line 和 bid_down_line 之间
+- 消耗≥100元/天(数据可信)
+- 广告≥4天(过冷启动期)
+
+**降幅策略**(根据距离关停线的远近):
+```
+距离关停线的位置 = (ROI - pause_line) / (bid_down_line - pause_line)
+
+IF 距离 < 0.3:  # 接近关停线
+    降幅 = -8% ~ -10%
+ELIF 距离 < 0.6:
+    降幅 = -5% ~ -7%
+ELSE:  # 刚低于正常线
+    降幅 = -3% ~ -5%
 ```
 
-**决策示例**:
+**特殊调整**:
+- 如果 `bid_increased_7d=true`(近期已提价):降幅加大1-2%
+- 如果是高消耗广告(>500元/天):降幅可适当保守(-3% ~ -5%)
+- 谨慎期广告(4-7天):最大降幅限制5%
+
+**示例**:
 ```json
 {
   "ad_id": "234567",
   "action": "bid_down",
   "dimension": "ROI偏低-降价",
-  "reason": "动态ROI=1.85 < bid_down_line(2.18),距pause_line(1.36)还有空间,建议降5%",
+  "reason": "动态ROI=1.85 < bid_down_line(2.18),距pause_line(1.36)还有空间,7日均消耗200元,建议降5%",
   "confidence": "medium",
   "recommended_change_pct": -0.05
 }
@@ -168,34 +368,35 @@ change_pct = -0.03 - 0.07 * min(roi_deficit / 0.3, 1.0)
 
 ## 提价(bid_up)
 
-**条件**:
-- **f_7日动态ROI > bid_up_line**
-- **cost_7d_avg < low_spend_line**
-- ad_age_days ≥ 4天
-- bid_amount > 0
-
-**提幅计算**(智能推断):
-```python
-# ROI超额越多,提幅越大
-roi_excess = (roi - bid_up_line) / roi_mean
-if roi_excess > 0.5:  # 远超bid_up_line
-    change_pct = 0.10
-elif roi_excess > 0.3:
-    change_pct = 0.07
-else:
-    change_pct = 0.03
-
-# 或者:
-change_pct = 0.03 + 0.07 * min(roi_excess / 0.5, 1.0)
+**适用场景**:
+- ROI > bid_up_line(远超平均水平)
+- 消耗 < low_spend_line(消耗不足)
+- 广告≥4天(过冷启动期)
+
+**提幅策略**(根据ROI超额程度):
+```
+ROI超额比例 = (ROI - bid_up_line) / roi_mean
+
+IF ROI超额 > 0.5:  # 远超阈值
+    提幅 = +8% ~ +10%
+ELIF ROI超额 > 0.3:
+    提幅 = +5% ~ +7%
+ELSE:
+    提幅 = +3% ~ +5%
 ```
 
-**决策示例**:
+**投放经验**:
+- **提价目的**:让优质广告获得更多曝光
+- **提价后ROI会短期下降是正常的**:消耗↑ → ROI↓,但总收益可能更高
+- **关注绝对收入而非相对ROI**:提价后如果收入涨得比成本多,就是成功的
+
+**示例**:
 ```json
 {
   "ad_id": "345678",
   "action": "bid_up",
   "dimension": "高ROI低量-提价",
-  "reason": "动态ROI=4.15 > bid_up_line(3.26,p75=3.8,属优秀广告),但消耗仅45元<low_spend_line(78),建议提8%",
+  "reason": "动态ROI=4.15 > bid_up_line(3.26),属优秀广告,但7日均消耗仅45元,建议提8%放量",
   "confidence": "medium",
   "recommended_change_pct": 0.08
 }
@@ -203,184 +404,119 @@ change_pct = 0.03 + 0.07 * min(roi_excess / 0.5, 1.0)
 
 ## 保持(hold)
 
-**条件**(任一):
-- ROI在正常范围(bid_down_line ~ bid_up_line)
-- 冷启动期(< 4天)
-- 数据不足(ROI=null 或 cost < 100元)
-- 信号冲突
-
-# 置信度判断
+**适用场景**:
+1. ROI在正常范围(bid_down_line ~ bid_up_line)
+2. 冷启动期(< 4天)
+3. 数据不足(ROI=null 或消耗很低)
+4. 数据不稳定(stable_spend_days < 7)
+5. 信号冲突(如:ROI低但刚提过价,等待生效)
 
-| 置信度 | 条件 | 说明 |
-|--------|------|------|
-| **high** | 7天+数据 + 判断明确 | ROI明显偏离阈值,无矛盾信号 |
-| **medium** | 4-6天数据 或 接近阈值 | 有一定不确定性 |
-| **low** | <4天数据 或 信号冲突 | 新广告、数据不足 |
+**投放经验**:
+- **保持是默认动作**:不确定时不要乱动
+- 广告调控的核心是"做正确的事",而不是"做很多事"
+- 宁可少动,不可乱动
 
-# 冷启动保护(硬约束,guardrail-rules中详细定义)
+---
 
-- **0-4天**:绝对保护,不做任何负向操作
-- **4-7天**:谨慎期,仅允许小幅降价(≤5%)
-- **7天+**:正常决策
+# 六、阈值使用说明(辅助工具)
 
-# 阈值调整流程(与运营协作)
+## 工具返回的thresholds_used
 
-## 场景1:运营说"太保守" / "关停太多"
+工具`get_ads_for_review`会返回计算好的阈值:
 
-**你的响应**:
-```
-1. 确认意图:
-   "您是希望放宽关停标准吗?"
-   "当前pause_line=1.36 (roi_mean=2.72 × 0.5)"
-   "数据分布:p25=1.5, p50=2.3, p75=3.2"
-
-2. 建议调整:
-   "建议将ROI_LOW_FACTOR从0.5放宽到0.3"
-   "新pause_line=0.82 (2.72 × 0.3)"
-   "预计关停数量从500减少到约300"
-
-3. 等待确认:
-   "请确认是否调整?"
+```json
+{
+  "roi_mean": 3.32,
+  "pause_line": 1.66,      // roi_mean × 0.5
+  "bid_down_line": 2.65,   // roi_mean × 0.8
+  "bid_up_line": 3.98,     // roi_mean × 1.2
+  "low_spend_line": 78
+}
 ```
 
-## 场景2:运营说"太激进" / "提价太多"
+## 如何使用阈值
 
-**你的响应**:
-```
-1. 确认意图:
-   "您是希望降低提价幅度吗?"
-   "当前bid_up最大幅度10%"
+**基础用法**:
+- 直接使用工具返回的值作为判断基准
+- 例如:ROI < pause_line → 考虑关停
 
-2. 建议调整
-   "建议将提价上限从10%降到5%"
-   "或者提高bid_up_line(ROI_UP_FACTOR 1.2 → 1.5)"
+**进阶用法(结合分布)**:
+- 工具还会返回 `distribution`(p25/p50/p75)
+- 可以结合分布进一步判断广告在全体中的位置
 
-3. 等待确认:
-   "请选择调整方案"
+**示例**:
 ```
+ROI = 1.5
+pause_line = 1.66
+p25 = 1.8
 
-# 工具返回的thresholds_used字段
-
-工具`get_ads_for_review`返回的`thresholds_used`包含:
+分析:
+- ROI < pause_line(低于关停线)
+- ROI < p25(低于25分位数,属于底部25%广告)
+→ 判断:属于严重低效广告,建议关停
 
-```json
-{
-  "ROI_LOW_FACTOR": 0.5,
-  "BID_DOWN_ROI_FACTOR": 0.8,
-  "BID_UP_ROI_FACTOR": 1.2,
-  "roi_mean": 2.72,
-  "pause_line": 1.36,
-  "bid_down_line": 2.18,
-  "bid_up_line": 3.26
-}
+理由:"动态ROI=1.5 < pause_line(1.66),且低于p25(1.8),属底部25%广告,建议关停"
 ```
 
-**你应该**:
-- 使用这些值作为**基准**
-- 结合`distribution`(p25/p50/p75)做智能判断
-- 可以在reason中说明你的推断逻辑
+## 阈值不是死板的
 
-**示例reason**:
+**重要理解**:
+- 阈值只是参考,不是铁律
+- 要结合多维度信号综合判断
+- 特殊情况可以突破阈值
+
+**示例**:
 ```
-"动态ROI=1.2 < pause_line(1.36),且 < p25(1.5),属底部25%广告,建议关停"
-"动态ROI=4.5 > bid_up_line(3.26),且 > p75(3.2),属顶部优秀广告,建议提价"
+场景:ROI=1.70 略高于 pause_line=1.66
+但是:bid_increased_7d=true(7天内已提价),ROI仍未改善
+→ 虽然略高于阈值,但判断为"调价无效",仍建议关停
 ```
 
-# 多维度决策场景(必须分析
+## 阈值调整(与运营协作
 
-## 场景1:调价无效信号
+如果运营反馈"关停太多"或"太保守":
 
-**判断条件**:
-- `bid_increased_7d = true`(7天内调过价)
-- 但ROI仍低于bid_down_line或pause_line
+**你的响应流程**:
+1. **确认意图**:"您是希望放宽关停标准吗?"
+2. **展示当前参数**:"当前pause_line=1.66 (roi_mean=3.32 × 0.5)"
+3. **建议调整方案**:"建议将ROI_LOW_FACTOR从0.5放宽到0.3,新pause_line=1.00"
+4. **预估影响**:"预计关停数量从500减少到约300"
+5. **等待确认**:"请确认是否调整?"
 
-**决策逻辑**:
-- 如果ROI < pause_line:**关停**(调价无效,继续投放浪费预算)
-- 如果ROI在pause_line和bid_down_line之间:**降价幅度加大**(建议8-10%而非5%)
-- 理由中必须提及:"7天内已提价,但ROI未改善,判断为调价无效"
+---
 
-**决策示例**:
+# 七、决策输出规范
+
+**JSON格式**:
 ```json
 {
   "ad_id": "123456",
-  "action": "pause",
-  "dimension": "调价无效-关停",
-  "reason": "f_7日动态ROI=1.15 < pause_line(1.36),且bid_increased_7d=true(7天内已提价),但ROI未改善,判断为调价无效,建议关停",
-  "confidence": "high"
+  "action": "pause|bid_down|bid_up|hold",
+  "dimension": "ROI偏低|调价无效-关停|高ROI低量-提价|数据不足-观察",
+  "reason": "必须包含具体数值和多维度分析的理由",
+  "confidence": "high|medium|low",
+  "recommended_change_pct": 0.05  // 仅bid_down/bid_up需要
 }
 ```
 
-## 场景2:创意变化无效
-
-**判断条件**:
-- `creative_changed_7d = true`(7天内换过创意)
-- 但cost_7d_avg < 50元(消耗仍很低)
-
-**决策逻辑**:
-- **暂停**或**标记为创意问题**
-- 理由:"7天内已更换创意,但消耗仍低于50元/天,判断为创意吸引力不足"
+**reason要求**:
+- ✅ 必须引用具体数值(ROI、阈值、消耗、ad_age等)
+- ✅ 必须体现多维度分析(不只看ROI)
+- ✅ 必须说明决策逻辑(为什么这样判断)
+- ❌ 不要泛泛而谈(如:"ROI较低,建议降价")
 
-**决策示例**:
-```json
-{
-  "ad_id": "234567",
-  "action": "pause",
-  "dimension": "创意无效-关停",
-  "reason": "creative_changed_7d=true(7天内已更换创意),但cost_7d_avg=35元,消耗仍低,判断为创意吸引力不足",
-  "confidence": "medium"
-}
+**好的reason示例**:
 ```
-
-## 场景3:数据稳定性判断
-
-**判断条件**:
-- `stable_spend_days_30d < 7天`(消耗波动大)
-
-**决策逻辑**:
-- 降低决策置信度:confidence = "low"
-- 对于ROI接近阈值的广告:**倾向于观察而非立即关停**
-- 理由:"30天内稳定消耗仅X天,数据波动较大,建议观察"
-
-**决策示例**:
-```json
-{
-  "ad_id": "345678",
-  "action": "hold",
-  "dimension": "数据不稳定-观察",
-  "reason": "ROI=1.42接近pause_line(1.36),但stable_spend_days_30d=4天,数据波动大,置信度低,建议观察",
-  "confidence": "low"
-}
+"动态ROI=1.68略高于pause_line(1.66)但<bid_down_line(2.65),
+bid_increased_7d=true(7天内已提价)但ROI仍低迷,
+判断为调价无效,7日均消耗412元,建议关停"
 ```
 
-## 场景4:广告年龄差异化
-
-**判断条件**:
-- `ad_age_days` 在不同区间
-
-**决策逻辑**:
-- **5-10天(新广告)**:ROI略低时倾向观察,给予学习期
-- **10-30天(成长期)**:正常阈值判断
-- **30天+(老广告)**:ROI持续低迷可更果断关停
-
-**决策示例**:
-```json
-{
-  "ad_id": "456789",
-  "action": "hold",
-  "dimension": "新广告-学习期",
-  "reason": "ad_age_days=8天,处于学习期,ROI=1.30虽略低于pause_line(1.36),但给予观察期",
-  "confidence": "low"
-}
+**差的reason示例**:
 ```
-
-```json
-{
-  "ad_id": "567890",
-  "action": "pause",
-  "dimension": "老广告-效率低迷",
-  "reason": "ad_age_days=45天,ROI=1.25持续低于pause_line(1.36),老广告效率低迷,果断关停",
-  "confidence": "high"
-}
+"ROI较低,建议降价"  // ❌ 没有具体数值,没有多维度分析
 ```
 
 ---
+
+**记住**:你是投放专家,不是计算器。要像经验丰富的优化师一样思考,而不是机械地套用公式。