Skill: z1one0415/signal-intelligence-pack (version 2.1.0)

--- name: signal-intelligence-pack description: LLM通用前置grounding技能组。在正式分析、判断、报告或规划之前，将问题拆解为可执行查询、选对来源、洗净证据、标清新鲜度、补上反证。内部固定串联5个独立技能：query-planner → source-router → evidence-cleaner → freshness-judge → counter-evidence-hunter。适用于战略分析、research agent、搜索型agent、市场/政策分析、金融/新闻/情报推演等"先搜再判"场景。触发条件：任务依赖外部信息、需要多源grounding、结论不能只靠直觉生成、受时间窗影响、存在明显单线叙事风险。 --- # Signal Intelligence Pack — 前置Grounding工作流编排器 ## 定位 你是**情报预处理管线**的编排器，不是业务判断器，不是报告生成器。 你的唯一职责是：在正式分析之前，将一个模糊的问题转化为经过清洗、标注新鲜度、补全反证的**增强证据底座**。后续的分析/判断/报告模块基于这个底座工作。 ### 你不做的事 - ❌ 直接生成最终结论或判断 - ❌ 重写或替代5个子技能的内部逻辑 - ❌ 越权做业务层面的价值判断 - ❌ 生成面向读者的最终报告 --- ## 固定5步流水线 ``` Step 1: query-planner → 问题拆解 + 查询生成 ↓ Step 2: source-router → 来源选择 + 路由分发 ↓ Step 3: evidence-cleaner → 证据清洗 + 噪声过滤 ↓ Step 4: freshness-judge → 新鲜度标注 + 时效评估 ↓ Step 5: counter-evidence-hunter → 反证搜索 + 翻转条件 ↓ 输出: 增强证据底座 (Enhanced Evidence Base) ``` ### 顺序不可变 5步必须严格按序执行。每步的输出作为下一步的输入。跳步或乱序将导致数据流断裂。 --- ## 统一输入 ```json { "primary_task": "string — 用户的原始任务描述（必填）", "primary_subject": "string — 任务的核心对象/实体（必填）", "canonical_time_frame": "string — 相关时间窗口，如'2025-01至今'（必填）", "goal_mode": "strategic | tactical | informational — 任务目标模式（必填）", "target_variable": "string — 需要判断/预测的目标变量（可空）", "available_sources": "array — 可用的搜索来源/工具列表（可空，默认自动检测）" } ``` --- ## 统一输出 最终输出为一个**增强证据底座** JSON 对象，包含全部5步的产出。完整schema见 `references/input-output.md`。 --- ## 提前停止规则 ### 可提前停止 | 停止位置 | 适用场景 | 条件 | |---------|---------|------| | Step 3后 | 信息整理、知识汇总、低风险问答 | 只需要干净的事实，不需要时效性和反证 | | Step 4后 | 新闻编译、趋势更新、时效性分析 | 需要新鲜度但结论风险低 | ### 必须跑满5步 | 场景 | 判断依据 | |------|---------| | 战略分析 | goal_mode = "strategic" | | 投资决策 | 涉及资金部署或风险评估 | | 政策研判 | 涉及政策影响预测 | | 竞争情报 | 涉及竞争格局判断 | | 检测到高风险特征 | 任何一步发现强反证、高不确定性、信息缺失 | ## 步骤间动态反馈机制 5步流水线不是纯单向的。后置步骤可通过 `feedback_signal` 向前置步骤发送反馈，触发**单轮回溯**。 ### 反馈信号类型 | 信号 | 发出步骤 | 目标步骤 | 触发动作 | |------|---------|---------|---------| | `gap_detected` | evidence-cleaner | query-planner | 追加补充查询 | | `stale_found` | freshness-judge | source-router | 切换来源重搜 | | `contradiction_found` | evidence-cleaner | counter-evidence-hunter | 提前激活反证 | | `coverage_insufficient` | evidence-cleaner | query-planner | 追加盲区维度 | | `new_lead` | evidence-cleaner | source-router | 单独深挖新方向 | | `counter_gap` | counter-evidence-hunter | query-planner | 追加反证查询 | ### 回溯约束 - **最大回溯次数**: 1次。整条流水线仅允许1次回溯，防止无限循环 - **回溯范围**: 仅重跑受影响的步骤（不重跑全部5步） - **回溯后禁止**: 回溯完成后禁止再次回溯 ### pipeline_metadata ```json { "pipeline_metadata": { "pipeline_version": "2.1", "feedback_signals_detected": 0, "feedback_signals_backtracked": 0, "max_feedback_loops": 1, "pending_actions": [], "degradation_log": [], "total_search_calls": 0 } } ``` --- ### 质量门禁 每步的最低输出要求： | 步骤 | 最低要求 | 不达标处理 | |------|---------|-----------| | query-planner | ≥3条核心查询 + ≥2条反证查询 | 重试，补充查询方向 | | source-router | 每条查询≥1个来源分配 | 使用默认来源降级 | | evidence-cleaner | 返回条目≥原始的50% | 标注低覆盖率并继续 | | freshness-judge | 每条证据标注新鲜度等级 | 无降级，强制标注 | | counter-evidence-hunter | ≥1条有效反证或明确声明"未发现" | 无降级，强制输出 | ### 强制继续信号 以下情况触发**必须继续到下一步**： - 🔴 发现直接矛盾的证据（evidence-cleaner阶段） - 🔴 关键证据的新鲜度低于要求（freshness-judge阶段） - 🔴 检测到单线叙事风险（证据高度集中于一个方向） - 🔴 goal_mode = "strategic" --- ## 执行指令 当此skill被触发时，agent应： 1. 解析统一输入 2. 按序调用5个子skill 3. 每步输出作为下一步输入（衔接方式见 `references/workflow.md`）。每步检查是否发出 feedback_signal，如触发回溯则按 feedback_signal 指令执行单轮回溯 4. 应用提前停止规则判断是否可提前终止 5. 汇总为增强证据底座并输出 --- ## 参考文件 - `references/workflow.md` — 完整5步串联逻辑与数据流 - `references/input-output.md` — 统一输入输出schema定义 - `references/stop-rules.md` — 提前停止规则与质量门禁详解 - `references/examples.md` — 3个端到端用例

path: references/examples.md
content: # 端到端用例

## 用例 1: 战略分析 — "评估全球AI芯片竞争格局"

### 统一输入

```json
{
  "primary_task": "评估全球AI芯片竞争格局，分析主要玩家的技术路线、市场份额和发展趋势",
  "primary_subject": "全球AI芯片产业",
  "canonical_time_frame": "2025-01至今",
  "goal_mode": "strategic",
  "target_variable": "AI芯片市场份额与竞争态势",
  "available_sources": ["tavily", "bailian", "web_search"]
}
```

### 判定：必须跑满5步（goal_mode=strategic）

---

### Step 1: query-planner 输出

```json
{
  "planned_queries": [
    {
      "query_id": "Q1",
      "dimension": "市场份额",
      "query": "AI芯片市场份额2025 NVIDIA AMD Intel 竞争格局",
      "intent": "获取当前主要厂商的AI芯片市场占有率数据",
      "keywords": ["AI芯片", "市场份额", "NVIDIA", "AMD", "Intel"]
    },
    {
      "query_id": "Q2",
      "dimension": "技术路线",
      "query": "NVIDIA Blackwell vs AMD MI400 vs Intel Gaudi4 技术对比 benchmark 2025",
      "intent": "对比三大厂商最新AI芯片的技术参数和性能基准",
      "keywords": ["Blackwell", "MI400", "Gaudi4", "benchmark", "技术对比"]
    },
    {
      "query_id": "Q3",
      "dimension": "新兴挑战者",
      "query": "Google TPU v6 Amazon Trainium2 Groq LPU AI芯片新进入者 2025",
      "intent": "识别除NVIDIA/AMD/Intel外的新兴AI芯片玩家",
      "keywords": ["TPU", "Trainium", "Groq", "LPU", "AI芯片挑战者"]
    },
    {
      "query_id": "Q4",
      "dimension": "地缘政治",
      "query": "美国AI芯片出口管制 CHIPS Act 2025 影响分析",
      "intent": "评估地缘政治对AI芯片供应链的影响",
      "keywords": ["出口管制", "CHIPS Act", "供应链", "地缘政治"]
    },
    {
      "query_id": "Q5",
      "dimension": "需求趋势",
      "query": "AI算力需求增长 大模型训练推理 2025 趋势预测",
      "intent": "分析AI算力需求端的增长趋势和结构变化",
      "keywords": ["算力需求", "大模型训练", "推理", "增长趋势"]
    },
    {
      "query_id": "Q6",
      "dimension": "国产替代",
      "query": "中国AI芯片国产替代 华为昇腾 寒武纪 海光 2025进展",
      "intent": "评估中国AI芯片自主化进展",
      "keywords": ["华为昇腾", "寒武纪", "海光", "国产替代"]
    }
  ],
  "counter_queries": [
    {
      "query_id": "CQ1",
      "targets_dimension": "市场份额",
      "query": "NVIDIA AI芯片市场份额下降 AMD崛起 挑战者侵蚀 2025",
      "expected_counter_type": "直接反驳"
    },
    {
      "query_id": "CQ2",
      "targets_dimension": "技术路线",
      "query": "GPU不再是AI最优架构 专用芯片ASIC NPU超越GPU 2025",
      "expected_counter_type": "因果替代"
    },
    {
      "query_id": "CQ3",
      "targets_dimension": "需求趋势",
      "query": "AI算力泡沫 过度建设 算力过剩 需求放缓 2025",
      "expected_counter_type": "条件反转"
    }
  ],
  "dimensions": [
    { "name": "市场份额", "description": "主要厂商的市场占有率", "query_count": 2 },
    { "name": "技术路线", "description": "芯片架构和性能对比", "query_count": 2 },
    { "name": "新兴挑战者", "description": "新进入AI芯片市场的玩家", "query_count": 1 },
    { "name": "地缘政治", "description": "政策对供应链的影响", "query_count": 1 },
    { "name": "需求趋势", "description": "算力需求增长预测", "query_count": 2 },
    { "name": "国产替代", "description": "中国AI芯片自主化", "query_count": 1 }
  ]
}
```

---

### Step 2: source-router 输出

```json
{
  "routed_queries": [
    { "query_id": "Q1", "query": "AI芯片市场份额2025...", "assigned_source": "tavily", "source_type": "search_engine", "priority": 1, "method": "tavily_search", "fallback_source": "web_search" },
    { "query_id": "Q2", "query": "NVIDIA Blackwell vs AMD...", "assigned_source": "tavily", "source_type": "search_engine", "priority": 1, "method": "tavily_search", "fallback_source": "bailian" },
    { "query_id": "Q3", "query": "Google TPU v6 Amazon...", "assigned_source": "tavily", "source_type": "search_engine", "priority": 2, "method": "tavily_search", "fallback_source": "web_search" },
    { "query_id": "Q4", "query": "美国AI芯片出口管制...", "assigned_source": "tavily", "source_type": "search_engine", "priority": 2, "method": "tavily_search", "fallback_source": "bailian" },
    { "query_id": "Q5", "query": "AI算力需求增长...", "assigned_source": "tavily", "source_type": "search_engine", "priority": 1, "method": "tavily_search", "fallback_source": "web_search" },
    { "query_id": "Q6", "query": "中国AI芯片国产替代...", "assigned_source": "bailian", "source_type": "search_engine", "priority": 1, "method": "bailian_search", "fallback_source": "tavily" },
    { "query_id": "CQ1", "query": "NVIDIA AI芯片市场份额下降...", "assigned_source": "tavily", "source_type": "search_engine", "priority": 2, "method": "tavily_search", "fallback_source": "web_search" },
    { "query_id": "CQ2", "query": "GPU不再是AI最优架构...", "assigned_source": "tavily", "source_type": "search_engine", "priority": 3, "method": "tavily_search", "fallback_source": "web_search" },
    { "query_id": "CQ3", "query": "AI算力泡沫...", "assigned_source": "tavily", "source_type": "search_engine", "priority": 2, "method": "tavily_search", "fallback_source": "bailian" }
  ],
  "source_coverage": {
    "total_queries": 9,
    "unique_sources_used": 2,
    "source_breakdown": { "tavily": 8, "bailian": 1 }
  }
}
```

---

### Step 3: evidence-cleaner 输出（节选）

```json
{
  "cleaned_evidence": [
    {
      "evidence_id": "E1",
      "source_query_id": "Q1",
      "content": "NVIDIA在AI加速器市场的份额约为80%，AMD约12%，Intel约1%。NVIDIA的份额较2023年的92%有所下降。",
      "source_url": "https://example.com/ai-chip-market-share-2025",
      "source_rating": "A",
      "relevance_score": 0.95,
      "is_counter": false,
      "timestamp_raw": ["2025年3月"]
    },
    {
      "evidence_id": "E2",
      "source_query_id": "Q2",
      "content": "NVIDIA Blackwell B200在MLPerf训练基准中比H100快2.2倍，AMD MI400尚未发布正式benchmark。",
      "source_url": "https://mlcommons.org/benchmarks",
      "source_rating": "S",
      "relevance_score": 0.92,
      "is_counter": false,
      "timestamp_raw": ["2025年1月"]
    },
    {
      "evidence_id": "E3",
      "source_query_id": "Q6",
      "content": "华为昇腾910B在大模型推理场景性能达到A100的80-90%，已部署至多个国产大模型训练集群。",
      "source_url": "https://example.com/huawei-ascend-review",
      "source_rating": "A",
      "relevance_score": 0.88,
      "is_counter": false,
      "timestamp_raw": ["2025年2月"]
    },
    {
      "evidence_id": "E4",
      "source_query_id": "CQ3",
      "content": "Microsoft、Meta、Google三家公司在2024年AI基础设施上的资本支出合计超过$1500亿，但AI变现收入增速未能匹配，华尔街开始质疑投资回报率。",
      "source_url": "https://example.com/ai-capex-roi-concern",
      "source_rating": "A",
      "relevance_score": 0.85,
      "is_counter": true,
      "timestamp_raw": ["2025年3月"]
    }
  ],
  "coverage_report": {
    "total_raw_results": 47,
    "after_dedup": 32,
    "after_filtering": 28,
    "dimension_coverage": {
      "市场份额": { "hits": 8, "status": "covered" },
      "技术路线": { "hits": 6, "status": "covered" },
      "新兴挑战者": { "hits": 5, "status": "covered" },
      "地缘政治": { "hits": 4, "status": "covered" },
      "需求趋势": { "hits": 3, "status": "covered" },
      "国产替代": { "hits": 2, "status": "partial" }
    }
  }
}
```

---

### Step 4: freshness-judge 输出（节选）

```json
{
  "dated_evidence": [
    { "evidence_id": "E1", "publish_date": "2025-03-15", "freshness": "fresh", "freshness_note": "在canonical_time_frame内", "canonical_alignment": "in_window" },
    { "evidence_id": "E2", "publish_date": "2025-01-22", "freshness": "fresh", "freshness_note": "在canonical_time_frame内", "canonical_alignment": "in_window" },
    { "evidence_id": "E3", "publish_date": "2025-02-10", "freshness": "fresh", "freshness_note": "在canonical_time_frame内", "canonical_alignment": "in_window" },
    { "evidence_id": "E4", "publish_date": "2025-03-20", "freshness": "fresh", "freshness_note": "在canonical_time_frame内", "canonical_alignment": "in_window" }
  ],
  "freshness_report": {
    "fresh_count": 22,
    "aging_count": 4,
    "stale_count": 1,
    "unknown_count": 1,
    "overall_freshness_score": 82
  },
  "staleness_warnings": [
    {
      "evidence_id": "E8",
      "warning": "该证据引用的AMD MI300X市场份额数据来自2024年Q2，当前MI400即将发布",
      "recommendation": "需验证AMD最新一代产品的市场接受度数据"
    }
  ]
}
```

---

### Step 5: counter-evidence-hunter 输出（节选）

```json
{
  "mainline_synthesis": "NVIDIA在AI芯片市场仍占据绝对主导地位（~80%份额），Blackwell架构维持技术领先，但AMD/Google/Amazon等挑战者正在从专用场景切入蚕食份额，同时AI算力投资回报率面临质疑。",
  "counter_evidence": [
    {
      "content": "三大超大规模云厂商合计$1500亿AI基础设施投资，但AI变现收入增速不匹配，华尔街开始质疑AI算力需求是否被高估",
      "source": "华尔街日报/摩根士丹利分析报告",
      "strength": "hard",
      "counter_type": "条件反转",
      "rebuttal_to": "AI算力需求将持续指数级增长"
    },
    {
      "content": "Google TPU v6在内部推理工作负载中成本仅为同等级NVIDIA GPU的60%，Google正通过云服务将TPU性价比优势外化",
      "source": "Google Cloud官方博客, Anyscale基准测试",
      "strength": "soft",
      "counter_type": "因果替代",
      "rebuttal_to": "GPU架构是AI训练和推理的唯一最优解"
    }
  ],
  "flip_conditions": [
    {
      "condition": "AMD MI400在2025下半年发布且MLPerf基准达到B200的70%以上，同时定价低于B200的50%",
      "probability": "medium",
      "impact_if_triggered": "NVIDIA份额可能在12个月内从80%降至70%以下，竞争格局从'一家独大'转向'双寡头'",
      "time_horizon": "2025 Q4 - 2026 Q2"
    },
    {
      "condition": "AI应用变现收入增速持续低于基础设施投入增速超过4个季度",
      "probability": "low-medium",
      "impact_if_triggered": "超大规模云厂商将削减AI芯片采购，整个市场进入'算力过剩'周期",
      "time_horizon": "2026"
    }
  ],
  "alternative_supports": [
    {
      "alternative_path": "竞争格局的核心变量不是芯片性能，而是软件生态（CUDA vs ROCm vs 自研框架）",
      "supporting_evidence": ["CUDA拥有超过400万开发者生态", "AMD ROCm开发者生态仍不到CUDA的10%", "但PyTorch 2.x的OpenXLA正在降低对CUDA的依赖"],
      "compatibility_with_mainline": "extends"
    }
  ],
  "confidence_assessment": {
    "mainline_robustness": "medium",
    "blind_spots": ["国产替代维度的证据覆盖不足（partial）", "缺乏NVIDIA下一代Rubin架构的公开信息"],
    "search_coverage": "adequate"
  }
}
```

---

### 最终增强证据底座（summary部分）

```json
{
  "metadata": {
    "generated_at": "2025-03-26T15:00:00+08:00",
    "pipeline_version": "1.0",
    "steps_completed": 5,
    "steps_degraded": [],
    "stop_reason": "full_run"
  },
  "input_snapshot": { "...": "（同输入）" },
  "pipeline_steps": { "...": "（包含全部5步输出）" },
  "summary": {
    "evidence_count": 28,
    "fresh_evidence_count": 22,
    "counter_evidence_count": 2,
    "flip_condition_count": 2,
    "mainline_robustness": "medium",
    "key_findings": [
      "NVIDIA仍主导AI芯片市场（~80%份额）但份额持续被蚕食",
      "Blackwell架构维持性能领先，但价格策略面临AMD竞争压力",
      "AI基础设施投资回报率受到华尔街质疑，可能影响需求预期",
      "TPU等专用芯片在推理场景展现出成本优势"
    ],
    "critical_gaps": [
      "国产替代维度覆盖不足，华为昇腾最新进展信息有限",
      "NVIDIA下一代Rubin架构信息缺失"
    ],
    "recommendation": "主线判断韧性为中等，建议在最终分析中特别关注AI投资回报率风险和专用芯片替代路径。国产替代维度需补充搜索后再做战略判断。"
  }
}
```

---

## 用例 2: 新闻情报 — "分析某公司突发被制裁事件的连锁影响"

### 统一输入

```json
{
  "primary_task": "分析某中国科技公司被美国列入实体清单后的连锁影响，包括供应链、业务、市场和股价",
  "primary_subject": "某中国科技公司（假设场景）",
  "canonical_time_frame": "过去72小时",
  "goal_mode": "tactical",
  "target_variable": "制裁事件的多维度连锁影响",
  "available_sources": null
}
```

### 判定：检测到高风险关键词"制裁"，必须跑满5步

---

### 各步产出衔接

**Step 1 查询规划**:
- Q1: 实体清单具体限制内容（技术/芯片/软件）
- Q2: 公司供应链依赖美国技术的环节
- Q3: 公司海外业务占比和客户分布
- Q4: 股价和债券市场反应
- Q5: 类似案例的历史对比（华为/中芯国际/大疆）
- CQ1: 公司是否有替代供应商预案
- CQ2: 制裁是否可逆或存在豁免机制

**Step 2 来源路由**:
- Q1-Q4 → tavily（时效性要求高）
- Q5 → tavily + web_fetch（需要历史对比）
- CQ1-CQ2 → tavily

**Step 3 证据清洗**:
- 获取约35条原始结果
- 去重后28条
- 关键发现：供应链维度证据最丰富，替代预案维度证据稀少

**Step 4 新鲜度判断**:
- 72小时内新闻占比85%（新鲜度得分91）
- 1条引用2023年华为制裁分析为历史参照，标注为aging
- 无stale证据

**Step 5 反证搜索**:
- 主线："制裁将导致公司业务严重受损"
- 反证1（hard）：公司此前已布局2年的"备胎计划"，关键芯片库存可支撑18个月（软反证 → 硬反证）
- 翻转条件：若公司成功通过第三方渠道绕过核心限制，短期影响可控
- 替代路径：制裁可能加速公司技术自主化，长期反而增强竞争力（参考华为案例）

**最终summary**:
- 证据28条，fresh 24条
- 关键发现：供应链冲击确定，但公司有18个月缓冲期；股价短期承压但可能超跌
- 临界缺口：缺乏公司内部应对计划的一手信息
- 建议：基于历史案例（华为）分析，短期冲击确定但长期影响高度取决于自主替代进度

---

## 用例 3: 技术调研 — "对比RAG vs Fine-tuning在企业知识管理中的适用性"

### 统一输入

```json
{
  "primary_task": "对比RAG和Fine-tuning在企业知识管理场景中的适用性，为技术选型提供依据",
  "primary_subject": "RAG vs Fine-tuning技术",
  "canonical_time_frame": "2024-2025",
  "goal_mode": "tactical",
  "target_variable": "两种技术方案在企业知识管理中的适用场景和限制",
  "available_sources": null
}
```

### 判定：goal_mode=tactical，但涉及决策依赖型评估，检测到"决策"信号 → 跑满5步

---

### 各步产出衔接

**Step 1 查询规划**:
- Q1: RAG在企业知识管理中的应用案例和效果数据
- Q2: Fine-tuning在企业知识管理中的应用案例和效果数据
- Q3: RAG vs Fine-tuning学术对比研究
- Q4: 企业知识管理场景的技术需求特征（更新频率、数据量、精度要求）
- Q5: 混合方案（RAG + Fine-tuning）的实践案例
- CQ1: RAG在特定场景下的已知局限性（幻觉、检索质量、延迟）
- CQ2: Fine-tuning在特定场景下的已知局限性（知识过时、灾难性遗忘、成本）
- CQ3: 是否存在超越RAG和Fine-tuning的第三种方案

**Step 2 来源路由**:
- Q1-Q2 → tavily（行业案例）
- Q3 → tavily（学术论文）
- Q4 → tavily（行业分析报告）
- Q5 → tavily
- CQ1-CQ3 → tavily

**Step 3 证据清洗**:
- 获取约42条原始结果
- 去重后31条
- 信源分布：S级（学术论文/官方文档）6条，A级（技术博客/行业报告）15条，B级（快讯）10条

**Step 4 新鲜度判断**:
- 2024-2025年证据占比75%
- 核心发现：RAG技术迭代较快（2024年GraphRAG、Agentic RAG等新范式出现），部分早期对比结论可能已过时
- 过时预警：2条2023年的RAG评估引用的是旧版embedding模型，结论需更新

**Step 5 反证搜索**:
- 主线倾向："RAG在企业知识管理中优于Fine-tuning"
- 反证1（soft）：Fine-tuning在需要高度领域专业术语一致性时优于RAG（如医疗、法律）
- 反证2（soft）：RAG的检索质量高度依赖embedding模型选择和文档分块策略，工程复杂度被低估
- 反证3（hard）：2024年多家企业反馈RAG在实时知识更新场景中仍存在"知识窗口"问题，无法真正替代Fine-tuning的知识内化
- 翻转条件：若企业知识更新频率极高（每日/每小时），RAG的优势将被实时性需求部分抵消
- 替代路径：RAG + Fine-tuning混合方案可能比单一方案更优；GraphRAG/Agentic RAG正在改变传统RAG的局限性

**最终summary**:
- 证据31条，fresh 23条
- 关键发现：(1) RAG在大多数知识管理场景更适用但工程复杂度高；(2) Fine-tuning在深度领域知识和术语一致性场景有优势；(3) 混合方案成为越来越多企业的选择；(4) GraphRAG等新范式可能改变传统对比结论
- 临界缺口：缺乏大规模生产环境的A/B测试数据（多数案例为概念验证阶段）
- 建议：技术选型应基于具体业务场景决定，不建议"一刀切"。对于知识更新频繁且对实时性要求高的场景，RAG更优；对于需要深度领域理解和术语一致性的场景，Fine-tuning更优；预算充足时建议评估混合方案


path: references/improvement-plan-v2.md
content: # Signal Intelligence Pack V2 改进方案

**日期**: 2026-03-26
**基于**: 首次实战测试（AI芯片竞争格局分析）反馈
**核心目标**: 增强步骤间动态反馈能力 + 提升搜索降级韧性

---

## 问题总览

| # | 问题 | 影响等级 | 改进优先级 |
|---|------|---------|-----------|
| P1 | 搜索降级缺乏内建机制 | 高 | P0 |
| P2 | 反证搜索缺乏动态调整 | 中高 | P1 |
| P3 | 时间窗偏差未自动补偿 | 中 | P1 |
| P4 | 步骤间反馈链路断裂 | 中高 | P0 |
| P5 | 置信度缺乏量化评分 | 中低 | P2 |

---

## 改进1: 搜索降级韧性 (P0)

### 现状问题
测试中 Tavily 配额耗尽 → source-router 没有内置降级逻辑 → 完全依赖外部协议手动降级。

### 改进方案: source-router 增加 `fallback_chain` 字段

**修改文件**: `source-router/SKILL.md` + `references/source-selection-rules.md`

#### 新增输出字段

```json
{
  "fallback_chain": [
    {
      "level": 1,
      "source": "tavily_search",
      "trigger_fallback": "quota_exhausted | timeout > 30s | empty_results",
      "fallback_to": 2
    },
    {
      "level": 2,
      "source": "bailian_web_search",
      "trigger_fallback": "api_error | timeout > 30s",
      "fallback_to": 3
    },
    {
      "level": 3,
      "source": "web_search",
      "trigger_fallback": "empty_results",
      "fallback_to": 4
    },
    {
      "level": 4,
      "source": "web_fetch_direct",
      "trigger_fallback": null,
      "fallback_to": null
    }
  ],
  "degradation_log": []
}
```

#### 新增字段说明

| 字段 | 说明 |
|------|------|
| `fallback_chain` | 有序降级链，每级定义触发降级的条件和下一级目标 |
| `trigger_fallback` | 触发条件，用 `|` 分隔多个条件 |
| `degradation_log` | 运行时记录实际降级事件，供审计 |

#### 默认降级链（硬编码参考）

```
P1: tavily_search (原生工具，配额1000/月)
  ↓ quota_exhausted / timeout / empty
P2: bailian_web_search (百炼Qwen+，国内零延迟)
  ↓ api_error / timeout
P3: web_search (Brave，GFW风险)
  ↓ empty / GFW
P4: web_fetch_direct (搜索引擎URL模板)
  ↓ 全部失败
P5: 本地缓存 (memory/*_cache.md)
```

#### source-router 输出规格变更

在现有输出 JSON 中新增 `fallback_chain` 字段。当 `available_sources` 未显式提供时，使用默认降级链。

---

## 改进2: 步骤间动态反馈链路 (P0)

### 现状问题
5步流水线是单向线性：Step 1→2→3→4→5。后置步骤发现的问题无法回传给前置步骤触发补充动作。

### 改进方案: 引入 `feedback_signal` 机制

**修改文件**: `signal-intelligence-pack/SKILL.md` + `references/workflow.md` + `references/stop-rules.md`

#### 核心设计

在每步输出中新增 `feedback_signals[]` 字段，后置步骤可向前置步骤发送反馈信号，触发**单轮回溯**。

```json
{
  "feedback_signals": [
    {
      "signal_type": "gap_detected | stale_found | contradiction_found | coverage_insufficient",
      "target_step": "query-planner | source-router | evidence-cleaner | freshness-judge",
      "action": "append_queries | re_route | re_search | reclassify",
      "payload": {
        "description": "...",
        "suggested_queries": ["...", "..."],
        "affected_dimensions": ["market_share", "geopolitics"]
      }
    }
  ]
}
```

#### 6种反馈信号定义

| 信号 | 触发步骤 | 目标步骤 | 动作 | 示例 |
|------|---------|---------|------|------|
| `gap_detected` | evidence-cleaner | query-planner | 追加查询 | 某维度零命中 → 补充查询重搜 |
| `stale_found` | freshness-judge | source-router | 切换来源 | 核心证据全部 stale → 换高时效来源重搜 |
| `contradiction_found` | evidence-cleaner | counter-evidence-hunter | 提前激活 | 发现强矛盾 → 跳过 freshness 直进反证 |
| `coverage_insufficient` | evidence-cleaner | query-planner | 追加维度 | 覆盖率<50% → 补盲区维度 |
| `new_lead` | evidence-cleaner | source-router | 深挖 | 搜索发现意外高价值方向 → 单独深挖 |
| `counter_gap` | counter-evidence-hunter | query-planner | 追加反证查询 | 反证方向不足 → 追加 counter_queries |

#### 反馈传播流程

```
Step 3 (evidence-cleaner) 发现 gap_detected
    ↓
生成 feedback_signal: {target: "query-planner", action: "append_queries"}
    ↓
编排器收到信号 → 单轮回溯到 Step 1
    ↓
Step 1 追加 2-3 条补充查询
    ↓
Step 2 重新路由补充查询
    ↓
Step 3 重新搜索并清洗（仅补充部分，不重跑已有）
    ↓
继续 Step 4 → Step 5
```

#### 回溯次数限制

**硬性约束**: 整条流水线最多允许 **1次回溯**，防止无限循环。回溯后禁止再次回溯。

```json
{
  "pipeline_metadata": {
    "feedback_loops_executed": 0,
    "max_feedback_loops": 1
  }
}
```

---

## 改进3: 时间窗偏差自动补偿 (P1)

### 现状问题
freshness-judge 识别了"12/15证据集中在3月"的风险，但只标注风险，未触发补偿动作。

### 改进方案: freshness-judge 增加 `compensation_queries`

**修改文件**: `freshness-judge/SKILL.md` + `references/freshness-rules.md`

#### 新增输出字段

```json
{
  "freshness_profile": {
    // ... 现有字段 ...
    "risk_flags": [
      "证据时间分布过于集中（12/15在2026年3月）"
    ],
    "compensation_queries": [
      {
        "query": "AI芯片 2025年Q3 Q4 市场格局变化 NVIDIA AMD",
        "rationale": "补充2025年H2背景数据，平衡时间分布偏差",
        "target_period": "2025-07 至 2025-12",
        "priority": "recommended"
      },
      {
        "query": "AI芯片 产业政策 2025年全年 回顾",
        "rationale": "补充政策时间线背景",
        "target_period": "2025-01 至 2025-12",
        "priority": "optional"
      }
    ]
  }
}
```

#### 自动补偿触发条件

| 条件 | 补偿级别 | 说明 |
|------|---------|------|
| current_ratio > 0.8 且 time_span < 时间窗50% | `recommended` | 证据过度集中在近期，建议补充历史背景 |
| 某维度证据全部为 stale/undated | `required` | 关键维度无新鲜证据，必须补充 |
| background_ratio = 0 且 goal_mode = strategic | `recommended` | 战略分析缺乏背景深度 |
| undated_ratio > 0.3 | `required` | 大量无日期证据，必须尝试补充日期信息 |

---

## 改进4: 反证搜索动态调整 (P1)

### 现状问题
counter-evidence-hunter 的搜索方向完全依赖 query-planner 预设的 counter_queries。如果主线搜索发现意外信息（如某个假设被实际数据直接推翻），无法动态调整反证方向。

### 改进方案: counter-evidence-hunter 支持 `dynamic_queries`

**修改文件**: `counter-evidence-hunter/SKILL.md` + `references/counter-patterns.md`

#### 动态查询生成规则

```
主线搜索结果分析 → 识别"意外发现"(unexpected_findings)
    ↓
意外发现分类:
  A. 主线假设被直接支持（强度异常高）→ 动态生成"极端反面测试查询"
  B. 主线假设出现裂缝（矛盾证据）→ 动态生成"裂缝深挖查询"
  C. 发现全新维度（未预设方向）→ 动态生成"新维度探索查询"
    ↓
动态查询与预设 counter_queries 合并 → 去重 → 执行搜索
```

#### 新增输入字段

```json
{
  "unexpected_findings": [
    {
      "finding": "搜索发现NVIDIA Blackwell延迟交付比例高达30%",
      "finding_type": "assumption_crack",
      "suggested_counter_query": "NVIDIA Blackwell 交付延迟 客户流失 竞争对手替代"
    }
  ]
}
```

#### 新增输出字段

```json
{
  "dynamic_queries": [
    {
      "query": "...",
      "trigger": "assumption_crack | overconfident_signal | new_dimension",
      "origin": "dynamic (unexpected finding)"
    }
  ],
  "all_counter_queries": [
    // 合并后的完整列表（预设 + 动态）
  ]
}
```

---

## 改进5: 量化置信度评分 (P2)

### 现状问题
confidence_assessment 只有 high/medium/low 三级标签，不便于下游模块做阈值判断。

### 改进方案: 引入 0-100 数值化评分

**修改文件**: `counter-evidence-hunter/SKILL.md` + `signal-intelligence-pack/references/input-output.md`

#### 新增评分维度

```json
{
  "confidence_assessment": {
    "overall_score": 72,
    "dimensions": {
      "source_quality": {
        "score": 80,
        "rationale": "S+A级信源占比60%，高于30%门禁"
      },
      "coverage_completeness": {
        "score": 85,
        "rationale": "6/6维度有命中，100%覆盖"
      },
      "freshness_adequacy": {
        "score": 87,
        "rationale": "87%证据为current，但时间分布集中"
      },
      "counter_evidence_sufficiency": {
        "score": 60,
        "rationale": "4条反证中2条hard，但缺初创公司维度"
      },
      "consistency": {
        "score": 70,
        "rationale": "主线证据内部一致，但存在2处需注意的矛盾"
      }
    },
    "mainline_robustness": "medium",
    "blind_spots": ["...", "..."],
    "search_coverage": "adequate"
  }
}
```

#### 评分公式（参考）

```
overall_score = source_quality * 0.25
              + coverage_completeness * 0.20
              + freshness_adequacy * 0.20
              + counter_evidence_sufficiency * 0.20
              + consistency * 0.15
```

#### 阈值参考

| 分段 | 含义 | 建议动作 |
|------|------|---------|
| 80-100 | 高置信度 | 可直接进入下游分析 |
| 60-79 | 中等置信度 | 建议关注扣分维度，选择性补搜 |
| 40-59 | 低置信度 | 强烈建议回溯补充后重跑 |
| 0-39 | 不可用 | 放弃当前证据底座，重新规划搜索 |

---

## 实施计划

### Phase 1: 核心改动（P0，立即执行）

| 文件 | 改动内容 | 工作量 |
|------|---------|--------|
| `source-router/SKILL.md` | 新增 `fallback_chain` 字段和默认降级链 | 中 |
| `source-router/references/source-selection-rules.md` | 新增降级链规则章节 | 小 |
| `signal-intelligence-pack/SKILL.md` | 新增 feedback_signal 机制说明 | 中 |
| `signal-intelligence-pack/references/workflow.md` | 新增反馈传播流程图 | 中 |
| `signal-intelligence-pack/references/stop-rules.md` | 新增回溯次数限制规则 | 小 |

### Phase 2: 增强改动（P1，72小时内）

| 文件 | 改动内容 | 工作量 |
|------|---------|--------|
| `freshness-judge/SKILL.md` | 新增 `compensation_queries` 输出 | 中 |
| `freshness-judge/references/freshness-rules.md` | 新增补偿触发条件表 | 小 |
| `counter-evidence-hunter/SKILL.md` | 新增 `dynamic_queries` + `unexpected_findings` | 中 |
| `counter-evidence-hunter/references/counter-patterns.md` | 新增动态查询生成规则 | 小 |

### Phase 3: 完善改动（P2，本周内）

| 文件 | 改动内容 | 工作量 |
|------|---------|--------|
| `counter-evidence-hunter/SKILL.md` | 置信度从三级改数值化 | 小 |
| `signal-intelligence-pack/references/input-output.md` | 新增 confidence_assessment 完整schema | 小 |

---

## 改进后预期效果

| 改进项 | 改进前 | 改进后 |
|--------|--------|--------|
| 搜索降级 | 手动感知 + 外部协议 | source-router 内建 fallback_chain，自动降级 |
| 步骤反馈 | 单向线性，无回传 | feedback_signal 单轮回溯机制 |
| 时间偏差 | 仅标注风险 | 自动生成补偿查询建议 |
| 反证动态性 | 仅依赖预设查询 | 支持基于意外发现的动态查询 |
| 置信度 | high/medium/low | 5维度 0-100 数值化评分 |
| **预期整体评分** | **7.5/10** | **8.5-9.0/10** |

---

## V2 数据流全景图

```
                    ┌─────────────────────────────────┐
                    │     Unified Input (JSON)         │
                    └──────────────┬──────────────────┘
                                   ↓
┌──────────────────────────────────────────────────────────────┐
│ Step 1: query-planner                                        │
│ → 4类查询生成 + counter_queries ≥ 2                          │
│ ← feedback: gap_detected → 追加查询                          │
└──────────────────────────────┬───────────────────────────────┘
                               ↓
┌──────────────────────────────────────────────────────────────┐
│ Step 2: source-router                                         │
│ → 来源选择 + fallback_chain (自动降级)                        │
│ ← feedback: stale_found → 切换来源                           │
└──────────────────────────────┬───────────────────────────────┘
                               ↓
┌──────────────────────────────────────────────────────────────┐
│ Step 3: evidence-cleaner                                      │
│ → 清洗 + 信源评级 + 覆盖率报告                                │
│ → 发出 feedback_signals (gap/contradiction/new_lead)          │
└──────────────────────────────┬───────────────────────────────┘
                               ↓
┌──────────────────────────────────────────────────────────────┐
│ Step 4: freshness-judge                                       │
│ → 5级分类 + compensation_queries (自动补偿建议)                │
│ → 发出 feedback_signals (stale_found)                         │
└──────────────────────────────┬───────────────────────────────┘
                               ↓
┌──────────────────────────────────────────────────────────────┐
│ Step 5: counter-evidence-hunter                               │
│ → 反证搜索 + dynamic_queries (基于意外发现)                    │
│ → flip_conditions + 量化置信度评分 (0-100)                     │
└──────────────────────────────┬───────────────────────────────┘
                               ↓
                    ┌─────────────────────────────────┐
                    │  Enhanced Evidence Base V2       │
                    │  + feedback_log                  │
                    │  + degradation_log               │
                    │  + confidence_score (0-100)      │
                    └─────────────────────────────────┘
```


path: references/input-output.md
content: # 统一输入输出Schema

## 1. 统一最小输入 Schema

```json
{
  "$schema": "UnifiedInput",
  "type": "object",
  "required": ["primary_task", "primary_subject", "canonical_time_frame", "goal_mode"],
  "properties": {
    "primary_task": {
      "type": "string",
      "description": "用户的原始任务描述，完整保留原始意图"
    },
    "primary_subject": {
      "type": "string",
      "description": "任务核心对象/实体（如'全球AI芯片产业'、'OpenAI公司'、'RAG技术'）"
    },
    "canonical_time_frame": {
      "type": "string",
      "description": "相关时间窗口（如'2025-01至今'、'过去30天'、'2024全年'）"
    },
    "goal_mode": {
      "type": "string",
      "enum": ["strategic", "tactical", "informational"],
      "description": "strategic=战略级深度分析, tactical=战术级快速评估, informational=信息整理"
    },
    "target_variable": {
      "type": ["string", "null"],
      "description": "需要判断/预测的目标变量（如'AI芯片市场份额'、'公司股价趋势'），可为空"
    },
    "available_sources": {
      "type": ["array", "null"],
      "items": { "type": "string" },
      "description": "可用的搜索来源/工具列表（如['tavily', 'web_search', 'bailian']），为空则自动检测"
    }
  }
}
```

---

## 2. Step 1 中间输出: query-planner

```json
{
  "$schema": "Step1Output",
  "type": "object",
  "properties": {
    "planned_queries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "query_id": "string — 唯一标识 (Q1, Q2, ...)",
          "dimension": "string — 所属维度名称",
          "query": "string — 搜索查询文本",
          "intent": "string — 搜索意图描述",
          "keywords": ["string — 核心关键词"]
        }
      },
      "minItems": 3,
      "description": "正向查询，≥3条"
    },
    "counter_queries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "query_id": "string — 唯一标识 (CQ1, CQ2, ...)",
          "targets_dimension": "string — 反证针对的维度",
          "query": "string — 反向搜索查询",
          "expected_counter_type": "string — 预期反证类型"
        }
      },
      "minItems": 2,
      "description": "反证查询，≥2条"
    },
    "dimensions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": "string — 维度名称",
          "description": "string — 维度说明",
          "query_count": "number — 该维度下的查询数"
        }
      },
      "description": "拆解的维度列表"
    }
  }
}
```

---

## 3. Step 2 中间输出: source-router

```json
{
  "$schema": "Step2Output",
  "type": "object",
  "properties": {
    "routed_queries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "query_id": "string — 关联Step1的query_id",
          "query": "string — 原始查询",
          "assigned_source": "string — 分配的来源",
          "source_type": "string — 来源类型 (search_engine | api | rss | direct_fetch | database)",
          "priority": "number — 优先级 (1=最高)",
          "method": "string — 执行方式描述",
          "fallback_source": "string — 降级备选来源"
        }
      }
    },
    "source_coverage": {
      "type": "object",
      "properties": {
        "total_queries": "number",
        "unique_sources_used": "number",
        "source_breakdown": {
          "type": "object",
          "additionalProperties": "number",
          "description": "来源 → 分配查询数"
        }
      }
    }
  }
}
```

---

## 4. Step 3 中间输出: evidence-cleaner

```json
{
  "$schema": "Step3Output",
  "type": "object",
  "properties": {
    "cleaned_evidence": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "evidence_id": "string — 唯一标识 (E1, E2, ...)",
          "source_query_id": "string — 来源查询ID",
          "content": "string — 核心信息摘要",
          "source_url": "string — 来源URL",
          "source_rating": "string — 信源评级 (S | A | B | C)",
          "relevance_score": "number — 相关性评分 (0-1)",
          "is_counter": "boolean — 是否为反证查询的结果",
          "timestamp_raw": ["string | null — 原始时间戳文本"]
        }
      }
    },
    "coverage_report": {
      "type": "object",
      "properties": {
        "total_raw_results": "number",
        "after_dedup": "number",
        "after_filtering": "number",
        "dimension_coverage": {
          "type": "object",
          "additionalProperties": {
            "type": "object",
            "properties": {
              "hits": "number",
              "status": "string — covered | partial | zero_hit"
            }
          }
        }
      }
    }
  }
}
```

---

## 5. Step 4 中间输出: freshness-judge

```json
{
  "$schema": "Step4Output",
  "type": "object",
  "properties": {
    "dated_evidence": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "evidence_id": "string — 关联Step3的evidence_id",
          "publish_date": "string | null — ISO 8601格式",
          "freshness": "string — fresh | aging | stale | unknown",
          "freshness_note": "string — 新鲜度说明",
          "canonical_alignment": "string — in_window | outside_window | no_timestamp"
        }
      }
    },
    "freshness_report": {
      "type": "object",
      "properties": {
        "fresh_count": "number",
        "aging_count": "number",
        "stale_count": "number",
        "unknown_count": "number",
        "overall_freshness_score": "number — 0-100"
      }
    },
    "staleness_warnings": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "evidence_id": "string",
          "warning": "string — 过时原因描述",
          "recommendation": "string — 建议操作（如'需验证该结论是否仍然成立'）"
        }
      },
      "description": "仅包含 aging 和 stale 级别的预警"
    }
  }
}
```

---

## 6. Step 5 中间输出: counter-evidence-hunter

```json
{
  "$schema": "Step5Output",
  "type": "object",
  "properties": {
    "mainline_synthesis": {
      "type": "string",
      "description": "从全部证据中归纳的主线叙事摘要（1-3句话）"
    },
    "counter_evidence": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "content": "string — 反证内容",
          "source": "string — 来源",
          "strength": "string — hard | soft | noise",
          "counter_type": "string — 反证类型",
          "rebuttal_to": "string — 反驳主线中的哪个子命题"
        }
      }
    },
    "flip_conditions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "condition": "string — 翻转条件",
          "probability": "string — low | medium | high",
          "impact_if_triggered": "string — 触发后影响",
          "time_horizon": "string — 预估时间"
        }
      }
    },
    "alternative_supports": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "alternative_path": "string — 替代解释",
          "supporting_evidence": ["string — 支撑证据"],
          "compatibility_with_mainline": "string — contradicts | qualifies | extends"
        }
      }
    },
    "confidence_assessment": {
      "type": "object",
      "properties": {
        "overall_score": "number — 0-100 综合置信度评分",
        "dimensions": {
          "type": "object",
          "properties": {
            "source_quality": {
              "type": "object",
              "properties": {
                "score": "number — 0-100",
                "rationale": "string — 评分理由"
              }
            },
            "coverage_completeness": {
              "type": "object",
              "properties": {
                "score": "number — 0-100",
                "rationale": "string — 评分理由"
              }
            },
            "freshness_adequacy": {
              "type": "object",
              "properties": {
                "score": "number — 0-100",
                "rationale": "string — 评分理由"
              }
            },
            "counter_evidence_sufficiency": {
              "type": "object",
              "properties": {
                "score": "number — 0-100",
                "rationale": "string — 评分理由"
              }
            },
            "consistency": {
              "type": "object",
              "properties": {
                "score": "number — 0-100",
                "rationale": "string — 评分理由"
              }
            }
          }
        },
        "scoring_formula": "string — source_quality*0.25 + coverage*0.20 + freshness*0.20 + counter*0.20 + consistency*0.15",
        "score_thresholds": {
          "type": "object",
          "properties": {
            "high_confidence": "string — 80-100: 可直接进入下游分析",
            "medium_confidence": "string — 60-79: 关注扣分维度，选择性补搜",
            "low_confidence": "string — 40-59: 强烈建议回溯补充后重跑",
            "unusable": "string — 0-39: 放弃当前证据底座，重新规划搜索"
          }
        },
        "mainline_robustness": "string — high | medium | low",
        "blind_spots": ["string — 搜索盲区"],
        "search_coverage": "string — adequate | limited"
      }
    }
  }
}
```

---

## 7. 统一最终输出 Schema (Enhanced Evidence Base)

```json
{
  "$schema": "EnhancedEvidenceBase",
  "type": "object",
  "required": ["metadata", "input_snapshot", "pipeline_steps", "summary"],
  "properties": {
    "metadata": {
      "type": "object",
      "properties": {
        "generated_at": "string — ISO 8601生成时间",
        "pipeline_version": "string — 管线版本号",
        "steps_completed": "number — 完成步骤数 (3/4/5)",
        "steps_degraded": ["string — 降级执行的步骤"],
        "stop_reason": "string — 停止原因 (full_run | stopped_after_clean | stopped_after_freshness)"
      }
    },
    "input_snapshot": {
      "$ref": "UnifiedInput",
      "description": "原始输入的快照"
    },
    "pipeline_steps": {
      "type": "object",
      "properties": {
        "step1_query_planning": { "$ref": "Step1Output" },
        "step2_source_routing": { "$ref": "Step2Output" },
        "step3_evidence_cleaning": { "$ref": "Step3Output" },
        "step4_freshness_judging": { "$ref": "Step4Output", "description": "仅在steps_completed≥4时存在" },
        "step5_counter_evidence": { "$ref": "Step5Output", "description": "仅在steps_completed=5时存在" }
      }
    },
    "summary": {
      "type": "object",
      "properties": {
        "evidence_count": "number — 总证据条数",
        "fresh_evidence_count": "number — 新鲜证据数",
        "counter_evidence_count": "number — 反证条数",
        "flip_condition_count": "number — 翻转条件数",
        "mainline_robustness": "string — high | medium | low | unknown",
        "key_findings": ["string — 3-5条核心发现摘要"],
        "critical_gaps": ["string — 关键信息缺口"],
        "recommendation": "string — 对下游分析模块的建议"
      }
    },
    "pipeline_metadata": {
      "pipeline_version": "2.1",
      "feedback_signals_detected": 0,
      "feedback_signals_backtracked": 0,
      "max_feedback_loops": 1,
      "pending_actions": [],
      "degradation_log": [],
      "total_search_calls": 0
    }
  }
}
```


path: references/stop-rules.md
content: # 提前停止规则与质量门禁

## 一、提前停止规则

### 可提前停止的场景

#### 停在 Step 3（Clean Only）

**适用条件**（全部满足）：
1. goal_mode = "informational"
2. 不涉及时效敏感信息（canonical_time_frame 无严格要求）
3. 结论风险低（非决策依赖型任务）

**典型场景**：
- 知识整理："总结RAG技术的核心原理和主流框架"
- 历史回顾："2024年AI行业重大事件梳理"
- 概念解释："什么是MoE架构"

**停止后输出**：pipeline_steps 仅包含 step1-3，summary 中 stop_reason = "stopped_after_clean"

---

#### 停在 Step 4（Clean + Freshness）

**适用条件**（全部满足）：
1. goal_mode = "tactical" 或 "informational" + 时效需求
2. 未检测到高风险特征
3. 不涉及战略级决策

**典型场景**：
- 新闻编译："最近一周AI领域重要动态"
- 趋势追踪："2025年Q1新能源车销量趋势"
- 快速评估："某公司最新财报的核心变化"

**停止后输出**：pipeline_steps 包含 step1-4，summary 中 stop_reason = "stopped_after_freshness"

---

### 必须跑满5步的条件

**任一条件满足即必须跑满**：

| 条件编号 | 条件描述 | 示例 |
|---------|---------|------|
| R1 | goal_mode = "strategic" | "评估全球AI芯片竞争格局" |
| R2 | 涉及投资决策或资金风险评估 | "是否应该增持某股票" |
| R3 | 涉及政策影响预测 | "制裁将导致什么后果" |
| R4 | 涉及竞争格局判断 | "某公司市场份额变化" |
| R5 | Step 3 发现直接矛盾证据 | 正反方向证据强度相当 |
| R6 | Step 4 检测到关键证据过时 | 核心依赖的证据新鲜度=stale |
| R7 | 检测到单线叙事风险 | >80%证据指向同一方向且无反证 |
| R8 | 用户显式要求 | "请务必做反证分析" |

---

## 二、质量门禁

### 每步最低输出要求

#### Step 1: query-planner

| 指标 | 最低要求 | 不达标处理 |
|------|---------|-----------|
| planned_queries 数量 | ≥ 3 条 | 补充通用查询方向 |
| counter_queries 数量 | ≥ 2 条 | 补充反向查询 |
| 维度覆盖 | ≥ 3 个独立维度 | 合并相近维度并补充 |
| 查询 specificity | 每条至少含1个限定词/时间词 | 重写过于宽泛的查询 |

**强制要求**: goal_mode=strategic 时，planned_queries ≥ 5，counter_queries ≥ 3

---

#### Step 2: source-router

| 指标 | 最低要求 | 不达标处理 |
|------|---------|-----------|
| 每条查询的来源分配 | ≥ 1 个来源 | 使用默认搜索源降级 |
| 来源多样性 | ≥ 2 种不同来源类型 | 强制分配备用来源 |
| fallback_source 字段 | 100% 填充 | 标注"无降级方案" |

**来源类型分类**:
- search_engine: tavily, web_search, duckduckgo 等
- api: 专用API接口
- rss: RSS订阅源
- direct_fetch: web_fetch 直接抓取
- database: 本地知识库/缓存

---

#### Step 3: evidence-cleaner

| 指标 | 最低要求 | 不达标处理 |
|------|---------|-----------|
| 原始结果保留率 | ≥ 50% | 标注"高过滤率"，检查过滤是否过严 |
| 信源评级分布 | S+A级占比 ≥ 30% | 在summary中标注信源质量偏低 |
| 维度覆盖率 | ≥ 60% 维度有命中 | 在coverage_report中列出零命中维度 |
| 证据结构化 | 100% 包含 content + source | 无法提取的标记为raw_text |

---

#### Step 4: freshness-judge

| 指标 | 最低要求 | 不达标处理 |
|------|---------|-----------|
| 新鲜度标注率 | 100%（含unknown） | 无降级，强制标注 |
| fresh 证据占比 | ≥ 20%（时效性任务）或无要求（历史任务） | 在freshness_report中标注"证据偏旧" |
| staleness_warnings | 对所有 stale 证据必须生成 | 无降级，强制生成 |

---

#### Step 5: counter-evidence-hunter

| 指标 | 最低要求 | 不达标处理 |
|------|---------|-----------|
| mainline_synthesis | 必须输出（1-3句话） | 无降级，强制提取 |
| counter_evidence | ≥ 1条有效反证 或 明确声明"未发现有效反证" | **不可编造反证**，零发现时必须输出声明 |
| flip_conditions | 对每条 hard 级反证必须生成 | 无降级，强制生成 |
| confidence_assessment | 必须输出 | 无降级，强制输出 |

**零反证声明模板**:
```
"经过 [搜索范围描述] 的反证搜索，未发现与主线直接矛盾的有效证据。
这可能表明：(1) 主线判断较为可靠；(2) 搜索范围不够充分（盲区：[列出]）。
建议在最终分析中标注'反证搜索覆盖有限'。"
```

---

## 三、强制继续信号

### 信号检测规则

以下信号一旦在任意步骤中被检测到，**必须继续执行到下一步**，即使当前步骤已达提前停止条件：

| 信号 | 检测位置 | 触发动作 |
|------|---------|---------|
| 🔴 **直接矛盾**: 同一维度存在强度相当的正面和反面证据 | Step 3 | 继续到 Step 5 |
| 🔴 **高不确定性**: 关键维度只有单一来源且信源评级 ≤ B | Step 3 | 继续到 Step 5 |
| 🔴 **核心过时**: target_variable 直接依赖的证据新鲜度 = stale | Step 4 | 继续到 Step 5 |
| 🔴 **单线叙事**: >80% 证据指向同一方向，counter方向零命中 | Step 3-4 | 继续到 Step 5 |
| 🔴 **信息缺口**: 覆盖率 < 50% 的维度数 ≥ 2 | Step 3 | 继续到 Step 4 至少 |
| 🔴 **高风险关键词**: 任务描述中含"决策""投资""政策""制裁""预测" | 输入解析时 | 标记为 must_full_run |

### 信号传播机制

当某步检测到强制继续信号时：
1. 在当前步骤输出中添加 `force_continue: true` 字段
2. 在 summary 中添加 `critical_gaps` 条目
3. 下游步骤的输入自动继承该标记
4. 最终输出中 stop_reason 会被覆盖为 "full_run"

---

## 四、停止决策流程图

```
开始
  ↓
goal_mode == "strategic"? ──Yes──→ 跑满5步 → 输出
  │ No
  ↓
执行 Step 1-3
  ↓
检测到强制继续信号? ──Yes──→ 继续下一步
  │ No
  ↓
goal_mode == "informational" 且无时效需求? ──Yes──→ 停在Step 3 → 输出
  │ No
  ↓
执行 Step 4
  ↓
检测到强制继续信号? ──Yes──→ 执行Step 5 → 输出
  │ No
  ↓
goal_mode == "tactical"? ──Yes──→ 停在Step 4 → 输出
  │ No
  ↓
跑满5步 → 输出
```


path: references/workflow.md
content: # 5步串联工作流

## 数据流总览

```
                    ┌─────────────────────────────────┐
                    │     Unified Input (JSON)         │
                    │  primary_task + subject + time   │
                    │  goal_mode + target_variable     │
                    └──────────────┬──────────────────┘
                                   ↓
┌──────────────────────────────────────────────────────────────┐
│ Step 1: query-planner                                        │
│                                                              │
│ 输入: primary_task, primary_subject, goal_mode               │
│ 处理: 问题拆解 → 维度映射 → 查询生成 → 反证方向              │
│ 输出: planned_queries[], counter_queries[]                   │
└──────────────────────────────┬───────────────────────────────┘
                               ↓
┌──────────────────────────────────────────────────────────────┐
│ Step 2: source-router                                         │
│                                                              │
│ 输入: planned_queries[], counter_queries[], available_sources │
│ 处理: 查询分类 → 来源匹配 → 优先级排序 → 路由分配            │
│ 输出: routed_queries[{query, source, priority, method}]      │
└──────────────────────────────┬───────────────────────────────┘
                               ↓
┌──────────────────────────────────────────────────────────────┐
│ Step 3: evidence-cleaner                                      │
│                                                              │
│ 输入: routed_queries[], raw_search_results                   │
│ 处理: 去重 → 信源评级 → 相关性过滤 → 结构化提取              │
│ 输出: cleaned_evidence[], coverage_report                     │
└──────────────────────────────┬───────────────────────────────┘
                               ↓
┌──────────────────────────────────────────────────────────────┐
│ Step 4: freshness-judge                                       │
│                                                              │
│ 输入: cleaned_evidence[], canonical_time_frame                │
│ 处理: 时间戳解析 → 新鲜度评级 → 过时预警 → 时效冲突检测      │
│ 输出: dated_evidence[], freshness_report, staleness_warnings[]│
└──────────────────────────────┬───────────────────────────────┘
                               ↓
┌──────────────────────────────────────────────────────────────┐
│ Step 5: counter-evidence-hunter                               │
│                                                              │
│ 输入: dated_evidence[], mainline_synthesis, counter_queries  │
│ 处理: 反证搜索 → 强度评级 → 翻转条件 → 替代路径              │
│ 输出: counter_evidence[], flip_conditions[], alt_supports[]   │
└──────────────────────────────┬───────────────────────────────┘
                               ↓
                    ┌─────────────────────────────────┐
                    │  Enhanced Evidence Base (JSON)   │
                    │  包含全部5步的产出                │
                    └─────────────────────────────────┘
```

---

## 各步详细逻辑

### Step 1: query-planner

**输入**: primary_task, primary_subject, goal_mode

**处理逻辑**:
1. **问题拆解**: 将 primary_task 分解为 3-7 个独立的子问题维度
2. **维度映射**: 每个子问题映射到搜索空间中的可查询实体
3. **查询生成**: 为每个维度生成 1-3 条精确搜索查询（复合关键词）
4. **反证方向**: 为每个核心维度设计至少 1 条反向查询
5. **输出格式化**: 结构化为 planned_queries[] 和 counter_queries[]

**输出传递给 Step 2**: 全部查询列表（含正反方向）

---

### Step 2: source-router

**输入**: planned_queries[], counter_queries[], available_sources

**处理逻辑**:
1. **查询分类**: 根据查询主题标签（科技/金融/政策/学术/舆论等）
2. **来源匹配**: 每类查询匹配最合适的来源
3. **优先级排序**: 一手权威源 > 深度分析 > 快讯 > 社区讨论
4. **路由分配**: 为每条查询分配具体来源和搜索方法

**输出传递给 Step 3**: routed_queries[]（每条含query + source + priority + method）

---

### Step 3: evidence-cleaner

**输入**: routed_queries[]，执行搜索后获得 raw_search_results

**处理逻辑**:
1. **去重**: 基于内容相似度（非URL）去除重复条目
2. **信源评级**: S(一手权威) / A(深度分析) / B(快讯) / C(农场号)
3. **相关性过滤**: 与 primary_subject 的相关性评分，低于阈值的标记为弱相关
4. **结构化提取**: 从每条结果中提取核心信息、来源URL、时间戳
5. **覆盖率报告**: 统计各维度查询的命中情况

**输出传递给 Step 4**: cleaned_evidence[]（含信源评级 + 相关性评分） + coverage_report

---

### Step 4: freshness-judge

**输入**: cleaned_evidence[], canonical_time_frame

**处理逻辑**:
1. **时间戳解析**: 提取每条证据的发布/更新时间
2. **新鲜度评级**:
   - 🟢 Fresh: 在 canonical_time_frame 内
   - 🟡 Aging: 在时间窗之外但仍在合理范围内（1-3个月）
   - 🔴 Stale: 显著过时（>3个月），结论可能已变化
3. **过时预警**: 对 🔴 Stale 证据生成具体警告
4. **时效冲突检测**: 同一维度的证据时间戳冲突时，标注矛盾并建议优先采信方向

**输出传递给 Step 5**: dated_evidence[]（含新鲜度标签） + freshness_report + staleness_warnings[]

---

### Step 5: counter-evidence-hunter

**输入**: dated_evidence[], 从 Step 1 传入的 counter_queries[], 以及基于全部证据提取的 mainline_synthesis（主线叙事摘要）

**处理逻辑**:
1. **主线提取**: 从全部证据中归纳出当前证据集支持的主线叙事
2. **反证搜索**: 对 counter_queries 执行搜索
3. **强度评级**: hard / soft / noise
4. **翻转条件提炼**: 从有效反证中提取结构化翻转条件
5. **替代路径识别**: 找出能解释同一现象的替代解释

**最终输出**: counter_evidence[], flip_conditions[], alternative_supports[], confidence_assessment

---

## 异常处理：降级策略

| 异常场景 | 降级策略 |
|---------|---------|
| Step 1 某维度无查询可生成 | 标注为"维度盲区"，不阻塞后续步骤 |
| Step 2 无可用来源匹配 | 降级到通用搜索源（tavily/web_search），标注"来源未优化" |
| Step 3 搜索返回空结果 | 标注为"维度零命中"，建议扩大搜索范围或调整关键词 |
| Step 4 证据全部无时间戳 | 标注"新鲜度无法评估"，整体降级为"Aging"处理 |
| Step 5 未发现任何反证 | 明确声明"未发现有效反证" + 搜索范围评估，不编造反证 |
| 任一步骤崩溃/超时 | 记录错误，使用已有产出继续流水线，最终输出标注"步骤X降级执行" |

---

## 动态反馈传播

### 反馈信号格式

每步输出可包含 `feedback_signals[]`：

```json
{
  "feedback_signals": [
    {
      "signal_type": "gap_detected",
      "target_step": "query-planner",
      "action": "append_queries",
      "payload": {
        "description": "market_capitalization维度零命中",
        "suggested_queries": ["AI芯片 市值 估值 2025 2026"],
        "affected_dimensions": ["market_capitalization"]
      }
    }
  ]
}
```

### 反馈传播示例

**场景：evidence-cleaner发现维度盲区**

```
Step 3 (evidence-cleaner) 清洗完成
    ↓
发现 coverage_report 中 market_capitalization 维度命中数 = 0
    ↓
生成 feedback_signal: {
  signal_type: "gap_detected",
  target_step: "query-planner",
  action: "append_queries",
  payload: { suggested_queries: [...] }
}
    ↓
编排器检测到信号 → 检查 feedback_loops_executed < max (0 < 1) ✓
    ↓
feedback_loops_executed = 1
    ↓
回溯到 Step 1: query-planner 追加 2-3 条补充查询
    ↓
Step 2: source-router 仅路由新增查询
    ↓
Step 3: evidence-cleaner 合并新搜索结果（不重跑已有）
    ↓
继续 Step 4 → Step 5（不再触发回溯）
```

### 回溯次数保护

```python
# 伪代码
if feedback_signal_detected:
    if pipeline_metadata.feedback_loops_executed < pipeline_metadata.max_feedback_loops:
        execute_backtrack(feedback_signal)
        pipeline_metadata.feedback_loops_executed += 1
    else:
        log("回溯已达上限，忽略反馈信号")
        continue_pipeline()
```

### 信号降级为待办（Deferred Action）

当反馈信号被检测但因外部约束无法执行回溯时（如搜索配额耗尽、时间预算耗尽），信号不丢弃，而是降级为待办项写入最终输出。

**触发条件**：
- feedback_signal 已检测（signal_type 有效）
- 但 `feedback_loops_executed >= max_feedback_loops`（回溯次数已满）
- 或搜索预算 `total_search_calls >= budget_limit`（预算耗尽）

**降级逻辑**：
```
if signal_detected AND cannot_execute_backtrack:
    add to pending_actions[]:
    {
      "signal_type": "gap_detected",
      "target_step": "query-planner",
      "action": "append_queries",
      "priority": "recommended",
      "reason_deferred": "搜索配额耗尽，回溯预算不足",
      "suggested_queries": ["...", "..."]
    }
```

**pending_actions 输出位置**：pipeline_metadata.pending_actions[]

**下游消费**：
- 编排器/人类操作者可在后续批次中按优先级逐项执行 pending_actions
- 当 confidence_assessment.overall_score < 60 时，强制建议优先执行所有 required 级 pending_actions


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)