# 诊断原料市场调研 Agent（market_intel_agent.py）

## 架构

```
每周 cron（DeepSeek/Hermes）
  ├─ web_search 竞品情报
  ├─ MCP 数据提取（客诉/商机中与竞品相关的内容）
  └─ 输出原始 JSON
        ↓
  Ollama qwen3:8b（本地）
  ├─ 整合分析
  ├─ 提取正面/负面案例
  └─ 输出 Markdown 市场情报
        ↓
  CloudBase 部署
  ├─ 数据/market_intel/{日期}_市场情报.md
  ├─ 数据/market_intel/latest.md（最新版覆盖）
  └─ 拜访卡生成时自动引用
```

## 脚本位置

`~/.hermes/scripts/market_intel_agent.py`

## Cron 配置

- Job ID: `d0396a78f936`
- 名称: 市场调研Agent-周报
- 调度: `0 9 * * 1`（每周一 9:00）
- Skills: baoyu-visit-card

## 竞品名单

`['诺唯赞', '翌圣', '康为世纪', '全式金', 'Takara', 'NEB', '赛默飞', 'Thermo Fisher']`

## 数据流

1. **Step 1: Web 搜索** — 由 Hermes `web_search` 工具在对话中执行（Python 脚本内无法直接调 web_search）
2. **Step 2: MCP 提取** — 从 `mcp_complaints.json`（客诉）、`opportunity_sandbox.json`（商机）中搜索包含竞品名称的记录
3. **Step 3: Ollama 整合** — 将 MCP 数据传入 qwen3:8b，输出 Markdown 市场情报
4. **Step 4: 部署** — `tcb hosting deploy` 到 CloudBase

## Ollama 输出清洗（Pitfall）

qwen3:8b 输出包含 `Thinking...` 思考文本（纯文本，非代码块）。需用正则清洗后保存：

```python
content = re.sub(r'^Thinking\.\.\..*?\.\.\.done thinking\.\n', '', content, flags=re.DOTALL)
content = re.sub(r'\x1b\[[0-9;]*[a-zA-Z]', '', content)  # ANSI escape codes
```

**Web 搜索补充**：首次运行时 Hermes 需在对话中补充 web_search 结果。后续由 cron 自动执行。

## 可靠性标注体系

- 🟢 确定 — 有官方公告/新闻佐证
- 🟡 推测 — 基于行业常识推断
- 🔵 待确认 — 无法验证，需人工核实

## CloudBase 部署路径

- `数据/market_intel/latest.md` — 始终为最新版（覆盖），拜访卡引用此路径
- `数据/market_intel/{YYYYMMDD}_市场情报.md` — 历史版本归档
