# Skill: WYHTB Writing Guide(看牛/看熊条件清单 operator 录入指南)

> ADVICE 集成 §4.2 · Skill 沉淀第 4 章 · 来源 FE-SKILLS-INTEGRATION.md §2.5("WYHTB 假设清单"机制),落地在 `thesis.set_wyhtb_conditions` + `decision._compute_contradiction` 第 1 优先级。

## 0. WYHTB 是什么

WYHTB = **What You Have To Believe** —— "看牛/看熊必须成立的条件清单"。

直接对应 Fundamental Edge `fe-scenarios` skill 的"WYHTB 机制":
- **bull**(看牛):"如果你看多这条主线,以下条件必须同时成立"
- **bear**(看熊):"如果你看空这条主线,以下条件必须同时成立"

每条 wyhtb 条件 3 个字段:`condition` / `met` / `notes`。

代码位置:[`agent/satellite_agent/thesis.py::set_wyhtb_conditions`](../satellite_agent/thesis.py)。

## 1. CLI 入口(wholesale 替换模式)

operator 一次替换整个清单(不是增删 — 简单可靠,适合外部维护 JSON 然后 `cat | xargs` 推上):

```bash
# 看
satagent wyhtb show
satagent wyhtb show --thread 核心网 --side bear

# 设(整个 thread + side 一次替换)
satagent wyhtb set --thread 核心网 --side bear --conditions '[
  {"condition": "5G NTN 商用进度大幅落后 (年内 ≤ 3 家运营商商用)",
   "met": false,
   "notes": "对应 trigger thread_sentiment_below; 当前 sentiment +2.25"},
  {"condition": "频轨争议或国家间制裁导致部署受阻",
   "met": null,
   "notes": "重点观察, 不可控因素"}
]'

# 清空(单 side)
satagent wyhtb clear --thread 核心网 --side bear
```

## 2. 字段写法(3 字段)

### 2.1 `condition`(必填,字符串)

**好的 condition 是可证伪的命题** —— 应该回答"如果满足这一条,我们的判断如何变化"。

| 好 ✅ | 不好 ❌ | 原因 |
|---|---|---|
| "5G NTN 商用进度大幅落后(年内 ≤ 3 家运营商商用)" | "5G NTN 进度不理想" | ✅ 有具体阈值可证伪 ❌ 主观无阈值 |
| "海格通信连续两季度营收同比下滑 > 30%" | "海格表现不好" | ✅ 时间窗 + 阈值 ❌ 无 measurable signal |
| "中国电信成立的天通公司在 2026 年底前未拿订单" | "天通公司可能不行" | ✅ 时间 + 事件 ❌ 主观 |

**关键**:`condition` 应该是 operator 写完后可以盖盖子的"假设",不是模糊判断。

### 2.2 `met`(必填,`true` / `false` / `null`)

operator **显式判断**当前状态。3 种值:

- `true` — 该条件**已经发生**(对 bear 来说 = 反方实证成立,对 bull 来说 = 看多论据强化)
- `false` — 该条件**当前未发生**
- `null` — **尚未评估**(待 operator 接入数据后判断)

V1 不自动联动 trigger 推断 met,operator 必须手填(详见 §5)。

### 2.3 `notes`(可选,字符串或 null)

通常文档化跟 trigger 的联动 / 数据来源 / 评估理由:

```
"对应 trigger thread_sentiment_below; 当前 sentiment +0.5 vs 阈值 -1.5"
"数据源: 工信部 5G NTN 商用许可公示页 https://..."
"评估理由: 已有中移动 + 中电信 2 家, 联通滞后, 算 partial mismatch"
```

## 3. 典型清单结构(每 thread 推荐 3-5 条)

### 3.1 core network(核心网)

**bull(看牛核心网)**:
```
1. 信关站招标 12 个月内有 ≥ 3 个项目落地  [可参考工信部新闻]
2. 头部运营商(中移动/中电信/中联通)至少 2 家在 12 个月内 NTN 商用
3. NTN 终端补贴 / D2C 标准 / 频轨 至少 1 项关键政策落地
```

**bear(看熊核心网)**:
```
1. 5G NTN 商用进度大幅落后(年内 ≤ 3 家运营商商用)
2. 频轨争议或国家间制裁导致核心网部署受阻
3. 头部运营商连续 2 季度核心网投资环比下降 > 20%
```

### 3.2 terminal(终端)

**bear(看熊终端)**:
```
1. 头部车企(比亚迪 / 蔚来 / 小鹏 / 理想)6 个月内未推前装卫星通信终端
2. 头部上市公司(海格 / 华力创通)连续 2 季度终端业务营收同比下滑 > 30%
3. 工信部 D2C 标准 12 个月内未落地
```

### 3.3 chip(芯片)

**bull(看牛芯片)**:
```
1. 国产卫星通信芯片(基带 + 射频)6 个月内有 ≥ 2 个流片成功
2. 头部芯片厂(复旦微 / 国博 / 北斗星通)签下头部终端厂订单
3. 芯片国产化率提升至 60%+(工信部口径)
```

### 3.4 operations(运营支撑)

**bull(看牛运营支撑)**:
```
1. 卫星移动通信牌照 12 个月内多家发出(增加竞争 / 多元化运营商)
2. 千帆星座 / 国电高科 / 时空道宇 至少 1 家拿规模商用合同
3. 海外业务(老挝 / 东南亚 / 中亚)6 个月内拿订单
```

## 4. wyhtb 在 decision 输出中的位置

WYHTB 直接消费在 `decide()` 的 4 段输出:

```markdown
## WYHTB Status (layer=judgment)

| 主线   | 看牛 met | 看熊 met |
|--------|---------|---------|
| 核心网  | 1/3     | 0/3 (待评估 2) |
| 终端    | —       | —       |
| ...

## 反方矛盾 (contradiction · layer=fact · source=wyhtb_bear)

### 核心网
- ❌ 未 met **5G NTN 商用进度大幅落后** (对应 trigger sentiment...)
- ⚪ 待评估 **频轨争议导致部署受阻** (重点观察)
```

代码位置:
- WYHTB Status 段:`decision._compute_wyhtb_status` + `decision.render_wyhtb_status_section`
- 反方矛盾段:`decision._compute_contradiction` 4 级 fallback(wyhtb_bear 第 1 优先)+ `decision.render_contradiction_section`

## 5. WYHTB vs Trigger 边界

**区别**:

| 维度 | WYHTB | Trigger |
|---|---|---|
| 性质 | **命题清单**(可证伪) | **硬阈值**(数据驱动) |
| 数据 | operator 手填 met | 自动跑 sentiment / event count / 公司集中度 |
| 触发 | 不自动 fire(只看 met 状态) | 自动 fire(命中即写 alerts) |
| 用途 | "如何崩塌"段、CEO 视角的"反方实证" | "如何崩塌"段的"距离触发的距离"、EH-3 飞书告警 |

**配合**:每条 wyhtb 条件理想情况下应有对应 trigger 数据点(写在 notes 里),形成"硬阈值 + 软命题"双轨。

## 6. v3 follow-up(自动联动 trigger metrics)

当前 V2 met 必须 operator 手填。V3 计划自动从 trigger metrics 推断:

- WYHTB 条件 "sentiment 跌破 -1.5" + 对应 trigger `thread_sentiment_below` 阈值 -1.5
- → 系统读 `triggers.evaluate_distance` 输出,自动判 met=true/false

设计草案见 [`ADVICE-INTEGRATION.md`](../../ADVICE-INTEGRATION.md) §5.1(中长 ROI follow-up)。

## 7. 与代码 / 测试的对应关系

| 功能 | 代码 | 测试 |
|---|---|---|
| set / get / clear | `thesis.set/get/clear_wyhtb_conditions` | `test_wyhtb.py::test_set_*` |
| met / total 计数 | `thesis.compute_wyhtb_status` | `test_wyhtb.py::test_status_*` |
| contradiction 第 1 优先 | `decision._compute_contradiction` | `test_wyhtb.py::test_contradiction_prefers_wyhtb_bear*` |
| WYHTB Status 段 | `decision.render_wyhtb_status_section` | `test_wyhtb.py::test_render_*` |
| 反方矛盾段 wyhtb_bear 分支 | `decision.render_contradiction_section` | 同上 |
| CLI 子命令 | `cli.cmd_wyhtb_*` | (CLI 端到端测试) |

## 8. 不构成投资建议

WYHTB 条件清单是 **operator 自己的判断模板**,代码层只提供存储 + 渲染 + 计数机制。

- 上面 §3 的典型清单**仅为示范**,operator 应根据自己的研究经验改写
- met 状态判断由 operator 负责,代码不强校验
- WYHTB 不构成任何投资建议,只是"假设 + 自审"的 self-discipline 工具
