---
name: yichen-web-research
description: 逸尘自用的互联网研究总入口。用于跨平台且跨阶段、用户尚未确定工具，或明确要求对公司、产品、人物、技术、行业和领域做横纵分析、发展史加现状对比或有来源约束的系统深度研究；先生成有截止日期和证据闸门的计划，再把搜索发现、候选核验、有限归档、按需转写和证据综合路由到 yichen-unified-search、yichen-content-archive、yichen-bookmarks-export 与 yichen-asr。若用户只要求搜索、只处理已知链接、只导出私人收藏或只转写已有音视频，应直接使用对应子 Skill。Use when an internet-research request spans multiple stages, requires evidence-grounded longitudinal and cross-sectional synthesis, the correct child route is unclear, or the user explicitly invokes $yichen-web-research.
---

# 逸尘互联网研究

这是用户自有的研究路由层，不是 OpenCLI、AnySearch 或任何单一 CLI 的包装。底层后端可以替换，用户意图和安全边界保持稳定。

## 何时使用总入口

仅在以下情况使用本 Skill：

- 请求跨越两个以上阶段，例如“先搜索，再选出并归档来源”。
- 请求跨越多个平台且不止搜索，还需要候选确认、归档、转写或后续分析。
- 用户只描述研究目标，尚未指定搜索、归档或收藏导出。
- 需要先体检多个后端，再决定安全可用路线。
- 用户明确要求横纵分析、发展史与当前格局交叉、竞品或行业全景，以及有来源约束的系统深度研究。

单一明确动作直接路由：

单阶段搜索无论涉及一个还是多个平台，都直接进入 `$yichen-unified-search`；“跨平台”本身不是触发总路由的充分条件。

| 用户意图 | 目标 Skill |
|---|---|
| 横纵分析、发展史 + 当前格局、证据账本、交汇洞察或三情景深度研究 | `$yichen-web-research` |
| 关键词搜索、批量发现、平台站内搜索、候选核验，或显式有界的站点 URL Map | `$yichen-unified-search` |
| 已知 URL、URL 文件、已确认候选或明确容器的读取、下载、归档（含 X Post、Quote、Article） | `$yichen-content-archive` |
| 导出小红书、抖音或 X/Twitter 的私人收藏与书签链接 | `$yichen-bookmarks-export` |
| 已有音视频的字幕、ASR、口播粗剪或内容分析 | `$yichen-asr` |

## 固定流程

```text
研究目标
  -> yichen-unified-search
  -> 标准候选清单
  -> 是否由用户明确要求归档且范围已经限定？
       ├─ 否：返回候选，或继续获准的原文核验与分析
       └─ 是：yichen-content-archive
              -> 按需交给 yichen-asr、视觉分析或知识库 Skill
```

仅在用户明确要求归档且范围已限定时进入 `$yichen-content-archive`。搜索结束后不得自动归档或下载；收藏导出结束后也不得自动读取正文或下载媒体。归档与下载都需要独立、明确的当轮请求。

## 横纵研究模式

只有任务同时需要历史演进、当前横向结构和综合判断时才进入本模式。单个事实查证、搜索候选、已知链接读取或快速总结不得为了显得深入而扩展成横纵研究。

触发后完整读取 [references/hengzong-research.md](references/hengzong-research.md)，并按下列顺序执行：

1. 建立研究 brief，固定 `subject`、`goal`、`object_type`、`subtype`、`as_of`、`start_date`、`geography`、`audience` 和 `languages`。这些 key 必须出现；未知值保持 `unknown`，不得猜测。`start_date`、`geography`、`audience`、`languages` 是 scope keys，任一为 `unknown` 都进入不可保留的 scope gap，并阻止正式报告就绪。
2. 联网前运行纯离线计划器：

   ```bash
   python3 "${YICHEN_SKILLS_ROOT:-$HOME/.agents/skills}/yichen-web-research/scripts/plan_hengzong_research.py" --brief -
   ```

3. 只有 `coverage_dimensions.query_group_matrix.status=ready` 时，才把计划中各 workstream 的 `query_groups` 交给 `$yichen-unified-search`。`query_text` 必须是可直接搜索的自然语言，不得把 `facet:`、`axis:`、`search_language:`、`time_scope:` 或 `evidence_intent:` 伪装成搜索操作符。每个已知地区和语言都要形成有界覆盖；只有 subject 与 geography 都可靠本地化时才能标为 `localization_status=native`，否则保留原文并输出 localization gap。
4. 搜索 envelope 只是候选交接包。只有打开原文并逐主张核对后才标为 verified；搜索摘要、AI 摘要、排名和 `opened_original=true` 均不能单独证明事实。
5. 只有用户明确要求持久化原文或下载媒体，且范围已限定时，才通过 `$yichen-content-archive` 的独立安全门。搜索完成本身绝不转移归档授权。
6. 写作前把 canonical plan、绑定同一 `plan_id` 与 workstream 的 envelopes、来源 annotations、原子 claims 和 retained gaps 组成 bundle，运行纯离线整理器：

   ```bash
   python3 "${YICHEN_SKILLS_ROOT:-$HOME/.agents/skills}/yichen-web-research/scripts/assemble_hengzong_evidence.py" --bundle -
   ```

7. 只有 `scope_complete`、逐 workstream 基础 claim、非空 timeline、非空 cross-sectional matrix、逐地区/语言 coverage、矛盾处理、横纵交汇和三情景等结构门全部满足时才写正式报告。任何 `supports`/`contradicts` link 都必须含 `locator`、`event_date` 和 `scope`；`notes` 可选但提供后必须保留。缺少必填 link 字段的输入是 `invalid_bundle`，不是可披露 gap；缺少 `published_at` 的来源不具 temporal eligibility。
8. 普通缺口输出 `blocking`。只有真实的 coverage/claim gap 已执行至少两条结构化补搜，且每条 `query_or_path` 与 `route` 均彼此不同，并提供 `impact`、`disclosure`、`bounded_conclusion`，才可输出 `ready_with_disclosure`；retained disclosure 不得豁免任何结构门。固定 1–3 万字不是完成标准，完成度只由范围、证据与结构闸门决定。

`start_date` 之前的材料默认越界；只有明确标为 `pre_scope_context` 时才可作为透明前史保留，且不能计入 claim、coverage、timeline、交汇、情景或机会地图的证据资格。任何决策原因只允许 `explicit`、`supported_inference` 或 `unknown`；每条横纵交汇必须可回溯为 `past_event -> present_effect -> implication`。三情景必须包含 `horizon`、可观察 `triggers` 与 `invalidators`，不得编造概率。

行业研究的 `goal` 含未来、机会、机遇、前景或对应英文意图时，计划与报告必须包含非空 `opportunity_map`；其 evidence basis 必须绑定 ready claim IDs 并同时覆盖纵向与横向基础 claim。指定两种交付语言时，`report_contract` 必须把双语输出设为硬要求。

本模式基于、受启发并扩展 KKKKhazix/khazix-skills 的 `hv-analysis`，作者为数字生命卡兹克，固定参考上游提交 `7a5c4934be4106ac740ffdb95280bb81b3f4b83c`。完整归属与 MIT 许可见仓库根目录 `THIRD_PARTY_NOTICES.md` 及 `licenses/KKKKhazix-khazix-skills-LICENSE.txt`。

## 后端定位

- AnySearch：公共网页、批量搜索、垂直搜索和搜索候选的轻量原文核验。
- Firecrawl：只作显式的有界站点 Map，以及当前 AnySearch 候选的单页 Scrape 回退；不进入默认搜索链，也不声明支持 Crawl 或归档。
- 知乎 CLI 公开搜索：只作显式 `zhihu` 平台后端，由 `$yichen-unified-search` 的白名单适配器调用另行安装的 Open Platform CLI 兼容运行时进行公开站内搜索或显式热榜发现；本仓库不独立核验该运行时的厂商来源，并且不替换 AnySearch 的普通网页搜索。`global_search`、知乎直答（`zhida`/`answer`）与 `me` 账号命令不进入总路由。
- Twitter/X：关键词搜索交给 `$yichen-unified-search`，固定 Grok CLI 原生 `x_search` 优先；已知 X URL 交给 `$yichen-content-archive`，固定匿名 FxTwitter → Jina 优先。
- 平台原生 CLI/API：GitHub、YouTube、B站等结构化公共搜索。
- OpenCLI：仅作为部分平台的只读适配器，不是本体系的强制依赖或总入口。
- 本地平台 Skill：已知链接解析、媒体下载、公众号正文和批量归档。
- 浏览器或账号登录态：小红书、抖音的有界公开只读搜索，以及微博匿名访问门失败后的一次有界只读回退，可按子 Skill 的固定范围和限速规则自动复用现有会话；其他登录态读取按具体目标取得当轮授权。

不得因为某个后端已安装或浏览器已登录，就绕过子 Skill 的范围、限速和高风险授权门。

## 安全边界

1. 所有社交平台保持只读：不发帖、不评论、不点赞、不收藏、不关注、不私信，不改变账号状态。
2. 绝对不得操控微信桌面端或移动端 UI；不得发消息、发布、编辑、创建草稿、删除、群发或关注。
3. 小红书、抖音的有界公开只读搜索，以及微博匿名访问门失败后的一次有界只读回退，可自动复用现有 Chrome 登录态，无需逐次授权；必须遵守子 Skill 的单关键词、条数上限、串行与间隔规则。小红书最多 20 条，抖音最多 30 条，必须串行且请求间隔不少于 5 秒。发帖、评论、点赞、收藏、关注、私信、删除、账号变更、验证码处理以及私域读取必须停下，并由用户当轮明确提出和授权。
4. 私人收藏、书签、Feed 和账号后台数据必须取得当轮对具体平台与范围的明确授权；授权不可转移到下载。
5. 匿名公开路线优先。不得绕过验证码、登录墙、付费墙、限流、地区限制或访问控制。
6. 不打印或保存 Cookie、Token、API Key、登录凭证及敏感 URL 参数。
7. 不覆盖既有产物，不自动删除临时文件。任何清理都必须先获得用户明确允许，并且只能移入废纸篓。
8. 付费 API 或可能产生显著额度消耗的批量转写，在执行前说明范围和预计数量。
9. ASR 自动路由在任务提交后不得跨服务商重提；余额未知时不得表述为充足或不足。
10. Firecrawl Map 必须固定公开站点和输入路径，最多 100 条，只保留同源且位于输入路径范围内的公开 URL；默认禁止子域、外域、登录态、交互动作和持续监控。Map 只产生候选，不能自动跨过确认门进入归档。Scrape 只用于带有效短期回执的当前 AnySearch 候选，不扩展为 Crawl 或归档。
11. Firecrawl API Key 只从 `FIRECRAWL_API_KEY` 或 `${FIRECRAWL_KEY_FILE:-$HOME/.config/agent-secrets/firecrawl-api-key}` 读取；doctor 只根据环境变量是否非空，或私有文件的类型、owner、权限和大小报告是否存在，不输出密钥值、不读取凭据文件内容，也不发起网络或计费探针。
12. 知乎 CLI 兼容运行时只允许经统一搜索适配器暴露公开 `search`/`hot` 能力；不得暴露 `global_search`、`zhida`/`answer` 或任何 `me` 私人命令。doctor 只运行离线 `version`、`capabilities`、`auth status` 元数据检查，子进程使用最小环境白名单，只报告 Keychain 是否配置，不透传 stdout、stderr 或 Secret，也不发送搜索或热榜请求。

## 多后端体检

跨平台或登录态任务开始前运行：

```bash
python3 "${YICHEN_SKILLS_ROOT:-$HOME/.agents/skills}/yichen-web-research/scripts/doctor_yichen.py"
```

OpenCLI 相关任务再运行：

```bash
opencli doctor
```

体检只证明后端和安全契约可识别。它不授权任何写操作或私人数据读取；有界公开只读会话复用是否允许，以当前子 Skill 的固定范围和限速规则为准。

知乎通道缺少配置的 CLI 运行时或 Keychain 认证时只报告 `warn`，不把整个研究家族误判为结构损坏；统一搜索侧 `zhihu_adapter.py` 缺失才属于结构错误。该通道固定 `default_backend=false`、`network_probe_performed=false`、`public_commands_only=true`、`personal_commands_exposed=false`。

## 交接约定

搜索层至少交接：

```json
{
  "schema_version": "1.0",
  "request": {},
  "routes": [],
  "candidates": [],
  "coverage": [],
  "errors": []
}
```

归档层只接收用户已知链接、已确认候选或明确的有限容器；收藏层只输出链接文件和不可转移授权状态。各子 Skill 的当前 `SKILL.md` 与 references 是执行事实源。

## 唯一入口与子 Skill 调用

- 本 Skill 是唯一的互联网研究总入口，不保留旧名称兼容入口。
- 横纵研究是本总入口的一种显式研究协议，不新增兼容入口，也不改变 `$yichen-unified-search` 的候选搜索职责。
- 用户显式调用 `$yichen-web-research` 时，先按上表判断任务阶段；需要子 Skill 时，必须完整读取对应当前文件后再执行：
  - `${YICHEN_SKILLS_ROOT:-$HOME/.agents/skills}/yichen-unified-search/SKILL.md`
  - `${YICHEN_SKILLS_ROOT:-$HOME/.agents/skills}/yichen-content-archive/SKILL.md`
  - `${YICHEN_SKILLS_ROOT:-$HOME/.agents/skills}/yichen-bookmarks-export/SKILL.md`
  - `${YICHEN_SKILLS_ROOT:-$HOME/.agents/skills}/yichen-asr/SKILL.md`
- 子 Skill 是独立的执行规则，不是可递归调用的函数。路由后直接按目标 Skill 执行，目标 Skill 不得再回到本总入口。
- 若子 Skill、必要后端、登录态或额度不可用，如实报告具体缺口；不得把“已经正确路由”表述成“外部平台必然成功”。

## 按需读取更新后的执行规范

需要选择或排查后端时，读取 [后端就绪说明](references/backend-readiness.md)。横纵研究执行前，读取 [执行契约](references/hengzong-execution-contract.md)，保持证据与范围门禁。给定全文总结和单次事实查证不触发多阶段研究。有界站点归档须由用户明确指定同源路径、页数和深度上限，交给 `yichen-content-archive`，不得自动扩展站点。
