# Deep Research

> Многоисточниковый разбор большого ВОПРОСА субагентами: декомпозиция на направления, параллельный обход, сборка с разведением конфликтов, адверсариальная верификация, отчёт с уровнем проверки каждого утверждения. Триггеры: «разберись подробно», «обзор по теме/аналогов», «что вообще есть по», «не изобретаем ли велосипед». Голое «разберись» — по объекту: один факт/число/ссылка → sci-search (вызывается, не заменяется); один артефакт на гейте → six-corner-audit; свой проект вширь → fact-audit.

- Skill: `vibeengineering-llc/deep-research` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add vibeengineering-llc/deep-research`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vibeengineering-llc/deep-research/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: VibeEngineering-LLC (https://skillmd.com/u/vibeengineering-llc)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/vibeengineering-llc/deep-research

---


# deep-research — многоисточниковый разбор субагентами

**Статус:** beta (боевого прогона не было) · **Версия:** 1.1.0 · **Обновлён:** 2026-08-05
· **Роль:** оркестратор прогона (субагенты получают выжимку `references/subagent-brief.md`
и сам скилл не читают)

Скилл про **оркестровку**, а не про метод. Метод и законы достоверности живут в
`sci-search`: citation-green, разметка ✅/📗/⚠️, приоритет источников, лестница
транспорта, карта доступности баз — оттуда, и здесь не переписываются. Здесь — как
развернуть эти законы на десяток параллельных агентов и собрать результат, не потеряв
провенанс.

Задача скилла — превратить вопрос, на который в одиночку уходит день чтения, в
управляемый прогон: разложить, разослать, собрать, добрать пробелы, проверить
находки чужими руками, выдать отчёт, где у каждого утверждения виден уровень проверки.

## Когда использовать

- Обзор состояния области: «что вообще есть по теме», «кто это уже решил».
- Проверка «не изобретаем ли велосипед» перед постройкой своего инструмента.
- Сравнение решений/подходов/приборов по нескольким осям сразу.
- Сбор фактуры под статью или концепцию, когда источников заведомо больше десятка.
- Разбор чужого утверждения, которое опирается на много источников сразу.

## Когда НЕ использовать

- **Один факт, одно число, одна ссылка** → `sci-search` напрямую. Фан-аут ради
  единственного значения — трата токенов и лишний слой пересказа между источником
  и ответом.
- Поиск по своему коду/репозиторию → `Grep`/`Glob`.
- Аудит готового артефакта (чужой статьи, кода, отчёта) → `fact-audit`.
- Вопрос, ответ на который выводится из первых принципов — сначала вывод.

---

## 1. Что доходит до субагента, а что нет

| Что | Статус | Практический вывод |
|---|---|---|
| `CLAUDE.md` (вся иерархия) | доходит ✅ | citation-green, запрет выдумки, actor≠verifier работают: они в корневом `CLAUDE.md` |
| Скиллы | **не преднагружаются**, но инструмент `Skill` и список скиллов субагенту доступны | приказать первым ходом `Skill("sci-search")`; агент не обязан догадаться сам |
| `MEMORY.md` (индекс) | ⚠️ наблюдался доставленным дословно (сверка 01.08), доки говорят обратное — возможна разница харнессов | не полагаться; связанные файлы памяти не доходят точно |
| `Explore`, `Plan` | пропускают `CLAUDE.md` вовсе | **для фактологии и вердиктов непригодны**, только поиск по коду |

Адрес проверки: `~/.claude/projects/…/memory/ref-subagent-spawn-rules.md` (доки Claude
Code 31.07.2026 + поправка по наблюдению субагента 01.08).

Отсюда правило, нарушение которого обесценивает весь прогон:

> **В ТЗ каждого субагента — и поискового, и верифицирующего — вставляется блок
> `references/subagent-brief.md` целиком, дословно.** Плюс приказ загрузить
> `sci-search` нулевым ходом. Одно не заменяет другое: скилл даёт полноту, блок
> страхует на случай, если скилл не загрузился, и задаёт приоритеты.

Ссылка вида «работай по правилам контура» без вставленного блока — пустая строка:
агент не знает, о каких правилах речь.

Для поисковых направлений — `general-purpose`. Для верификации — тоже
`general-purpose`: верификатору нужны `WebFetch`/`WebSearch` и браузер, а
`cavecrew-reviewer` имеет только `Read`/`Grep`/`Bash` и веб-источник открыть не может
(вернёт разбор текста задания, похожий на верификацию).

Управление глубиной: инструмент `Agent` принимает `model` и `subagent_type`, поля
`effort` у него нет — глубина задаётся моделью. Параметр `effort`
(`low`/`medium`/`high`) существует у `agent()` **внутри скриптов `Workflow`**; там и
применять: `low` — механический сбор реквизитов, `medium` — сверка утверждения с
первоисточником, `high` — разбор расхождений и адверсариальная верификация.

---

## 2. Разложение вопроса: углы, а не подтемы

Типовая ошибка — нарезать вопрос на последовательные подтемы («история → текущее
состояние → перспективы»). Такая нарезка даёт три пересказа одного корпуса: агенты
идут в одни и те же базы одними и теми же запросами.

**Правильная нарезка — по независимым УГЛАМ поиска**, каждый слеп к остальным и
физически ходит в другие места:

| Ось | Пример для вопроса «чем мерить радон в помещении» | Даёт независимость |
|---|---|---|
| По типу источника | статьи / нормативы / datasheet производителей | да |
| По языку и рынку | англоязычная литература / РФ-нормативы и eLIBRARY | да |
| По отрицанию | что в области **не работает** и почему отвергнуто | да |
| По сущности | приборы / методики / метрологические требования | нет, фасеты одного корпуса |
| По времени | действующая редакция / что заменено и чем | нет, фасеты одного корпуса |

Критерий независимости: два направления, найдя один и тот же факт, пришли к нему
**разными путями**. Тогда совпадение — триангуляция, а не эхо.

Две нижние оси — вторичные: они нарезают работу, но **триангуляцию по ним не
засчитывать**, совпадение между ними ничего не подтверждает.

Направление «по отрицанию» включать всегда: что уже пробовали и отбросили — самая
ценная и самая пропускаемая часть картины. Исключение — режим «глянь, что есть»
(§5), где оно опускается сознательно и это фиксируется в отчёте.

---

## 3. Доменные модули поиска

`references/search-modules.md` — семь модулей: научные статьи, стандарты и нормативы,
ядерные и физические данные, патенты, оборудование и datasheet, открытый код и
репозитории, русскоязычные источники. В каждом — грабли, специфичные для типа
вопроса; общая карта доступности баз не дублируется, она в `sci-search` §4.

Модуль вставляется в ТЗ субагента вместе с блоком из §4.

---

## 4. ТЗ субагента

Полный текст — `references/subagent-brief.md`. **Вставлять файлом целиком, не
пересказом**: при пересказе теряются ключи команд и оговорки. Меняется только строка
ЗАДАЧА, рабочий каталог, потолок и приложенный доменный модуль.

Отдельная часть того же файла — постановка для верификатора: тот же блок плюс
задание на опровержение.

---

## 5. Конвейер прогона

```
Ш1  Разведка вручную      — нащупать термины и границы вопроса, 1–2 запроса,
                            под загруженным sci-search
Ш2  Нарезка на углы       — §2
Ш3  Фан-аут               — по субагенту на угол, блок §4 + модуль §3,
                            свой рабочий каталог и потолок каждому
Ш4  Сборка                — §6, конфликты разводятся, не усредняются
Ш5  Добор пробелов        — новые направления из «не найдено» и «сверх ТЗ», в цикле
Ш6  Верификация находок   — §7, вслепую, чужими руками
Ш7  Отчёт + корпус        — §8, §9
```

**Ш1 не пропускать.** Фан-аут по неправильно понятому термину даёт пять качественных
отчётов не о том. Одна ручная разведка до спавна дешевле пяти перезапусков. Оркестратор
на Ш1 сам идёт в веб — значит сам работает под загруженным `sci-search`, как и любой
агент контура.

**Масштаб задаёт стартовое число направлений, но не критерий остановки:**

| Режим | Направлений | Добор | Верификация |
|---|---|---|---|
| «глянь, что есть» | 3–4 | не запускается, фиксируется в отчёте | ключевые утверждения |
| «разберись подробно» | 5–7 | до исчерпания | ключевые утверждения |
| «исчерпывающе» | 7+ | до исчерпания | каждая находка, несколько линз |

**Критерий остановки добора — всегда исчерпание, а не счётчик направлений:** два
подряд круга без нового = сухо. Счётчик «сделаю пять и хватит» отрезает хвост, а в
хвосте обычно лежит то, ради чего разбор затевался. Единственное исключение — режим
«глянь, что есть», где добор не запускается сознательно.

**Верификация обязательна для утверждений, на которых стоит вывод или решение, в
ЛЮБОМ масштабе.** Режим меняет её объём, не факт её наличия.

**Фон и параллельность.** Субагенты по умолчанию уходят в фон, уведомление приходит
по завершении. Правило жёсткое: **результат незавершённого агента не выдумывать и не
предсказывать**. Пока уведомления нет — направление «в работе», а не «вероятно,
нашло». Спросили о статусе до уведомления — так и отвечать.

**Провалившееся направление.** Пустой отчёт, обрыв или отчёт, явно нарушающий §4 —
регулярное событие на прогоне из пяти-семи агентов. Политика: сузить задачу и
перезапустить один раз; повторный провал — перевести направление в «не найдено» с
указанием причины провала, не в «здесь ничего нет».

Больше семи направлений или нужен детерминированный цикл — разворачивать через
**инструмент `Workflow(...)`** (не путать со скиллом `workflow`, который генерирует
шаблоны AGENTS.md и ничего не спавнит): фан-аут в скрипте, `pipeline` по умолчанию,
барьер только когда следующий этап нуждается в ПОЛНОМ наборе предыдущего. Если
инструмент в харнессе недоступен — три-семь параллельных вызовов `Agent` покрывают
типовой прогон без него.

---

## 6. Сборка: где теряется правда

Сборка — не склейка отчётов. Пять обязательных операций:

**Дедупликация по факту, а не по формулировке.** Два агента, нашедшие одно число в
одном источнике, — это один факт, а не подтверждение. Триангуляция засчитывается,
только когда пути независимы (§2).

**Конфликты источников разводятся.** Источники дают разное — в отчёт идут оба
значения с методиками и причиной расхождения. Усреднить или выбрать удобное —
потерять информацию, которая обычно и есть главный результат.

**Расхождение ОТЧЁТОВ — отдельный случай.** Два агента по-разному прочитали один и
тот же источник: не выбирать более уверенный отчёт, а идти к источнику самому либо
третьим агентом. Уверенность формулировки не коррелирует с правотой.

**«Не найдено» переносится как есть,** с перечнем мест поиска, и никогда не
конвертируется в «не существует». Если вывод строится на отрицании — отрицание
проверяется **другим методом**, чем то, которым найдено: грепом нашли отсутствие —
проверять чтением; поиском нашли — проверять через другую базу и другой язык.
Проверка отрицания тем же инструментом циркулярна.

**Утверждение без ссылки — главный подозреваемый.** Измерено на сплошном аудите
`comparison.html` (контур ARCH-BECQMONI, 30.07.2026, восемь слепых верификаторов,
свыше 460 проверенных утверждений): из 126 утверждений колонки BecqMoni 74 шли без
адреса `файл:строка`; обе блокирующие находки и все три меняющие практический вывод
неполноты оказались среди этих 74, и ни одно утверждение СО ссылкой неверным не
оказалось. Ссылка не оформление, а фильтр. Утверждение субагента без адреса в сводку
переносится только с ⚠️ и явной пометкой «адрес не предоставлен» — либо возвращается
агенту за адресом.

**Скачанное сохраняется.** PDF и снимки страниц остаются в каталоге прогона с полными
путями в отчёте. Через сутки URL может отдавать другое, и цитата станет
непроверяемой.

---

## 7. Адверсариальная верификация находок

`actor ≠ verifier` — свои же находки сам не заверяю. Ключевые утверждения (те, на
которых стоит вывод или решение) отдаются отдельному агенту **вслепую**: он получает
утверждение и адрес источника, но не рассуждения нашедшего и не выводы сводки.

**ТЗ верификатора включает блок `references/subagent-brief.md` целиком** — иначе он
не получит ни запрета выдумки, ни разметки, ни требования дословной цитаты и вернёт
«подтверждено» без основания. Верификатор — последний фильтр перед отчётом, экономить
на его ТЗ бессмысленно.

Задание формулируется на **опровержение**, не на подтверждение: агент, которому
сказали «проверь», склонен подтверждать. При сомнении — умолчание в пользу
опровержения.

Ключевая находка проверяется **не менее чем двумя разными линзами**, а не двумя
одинаковыми скептиками: содержание источника / актуальность редакции / соответствие
цитаты контексту / воспроизводимость. Разнообразие ловит то, чего избыточность не
ловит.

Исход фиксируется, а не стирается:

| Результат | Что делать |
|---|---|
| Все линзы подтвердили | остаётся с исходным уровнем |
| Часть линз не подтвердила | ⚠️ + описание разногласия в основном разделе |
| Большинство (≥2 из 2–3) опровергли | переводится в раздел «Отозванное и оспоренное» с указанием, кто и на каком основании не подтвердил |

**Тихо удалять опровергнутую находку нельзя** — теряется честность отчёта. Только
явный аддендум: расхождение верификатора с автором само по себе результат.

Общий свод правил адверсариальной проверки — `code-audit-core` и `censor` (шкала
severity, six-corner, адъюдикация необратимого); здесь — только та их часть, что
касается веб-фактологии.

---

## 8. Отчёт

```
### Вывод
3–7 предложений. Что установлено и с какой уверенностью. Прямо, без разгона.

### Найдено
| Утверждение | Источник (полный URL/DOI) | Дата обращения | Уровень | Цитата | Направление |
|---|---|---|---|---|---|

### Не найдено
Что искал и ГДЕ искал — перечень баз, запросов, языков.
Формулировка «не найдено в …», не «не существует».

### Расхождения
Где источники не сходятся, на сколько, почему, что рекомендовано.

### Отозванное и оспоренное
Что не подтвердила верификация, кем и на каком основании.

### Сверх задания
Что важного попалось, о чём не спрашивали.

### Уровень уверенности
Высокий / Средний / Низкий — с причиной.
```

Колонка «Направление» держит трассировку находки до породившего её ТЗ — без неё
непонятно, чей отчёт перепроверять при расхождении.

Сводка уровней обязательна: сколько утверждений ✅, сколько 📗, сколько ⚠️. Отчёт,
где всё ✅, — повод перепроверить, а не порадоваться.

Публичный текст по итогам — через `rn-article-style`; документ оператору — через
`md-doc` (обязательная HTML-версия).

---

## 9. Корпус

Факты уровня ✅ и 📗 дописываются в
`%USERPROFILE%\.claude\sci-search-corpus\verified-facts.jsonl` по формату `sci-search`
§9. **Пишет оркестратор на Ш4, сразу после сборки** — субагентам запись не поручается:
параллельный append нескольких агентов в один JSONL перемежает строки. Если направлений
много и запись хочется распараллелить — каждый агент пишет в свой
`verified-facts.<slug>.jsonl` в каталоге прогона, оркестратор сливает.

Перед прогоном корпус проверяется грепом: часть направлений может отпасть, не начавшись.

Запись — только Python с явным `encoding='utf-8'` либо `-Encoding utf8` в PowerShell:
наивный `Add-Content` на этой машине портит кириллицу.

---

## Анти-паттерны

- ❌ **Послать субагента, не вставив блок `subagent-brief.md`** (§1) — он получит
  задачу без правил и будет искать «как умеет»: реквизиты вместо содержания, уровни
  без цитат.
- ❌ Вставить блок пересказом, а не файлом — теряются ключи команд и оговорки.
- ❌ Использовать `Explore`/`Plan` для фактологии — они не видят даже `CLAUDE.md`.
- ❌ Дать верификацию агенту без веб-инструментов — он вернёт разбор задания, похожий
  на проверку.
- ❌ Нарезать вопрос на последовательные подтемы вместо независимых углов (§2) и
  принять эхо за триангуляцию; засчитать триангуляцию по вторичным осям.
- ❌ Пропустить ручную разведку и разослать пять агентов по неверно понятому термину.
- ❌ Остановить добор по счётчику направлений, а не по исчерпанию (§5).
- ❌ **Написать за незавершённого агента, что он «вероятно, нашёл»** — уведомление
  никогда не сочиняется.
- ❌ Усреднить расходящиеся источники или выбрать удобное значение.
- ❌ При расхождении отчётов выбрать более уверенный вместо похода к источнику.
- ❌ Превратить «не найдено» в «не существует» — и проверить отрицание тем же
  методом, которым его нашли.
- ❌ Перенести утверждение субагента в сводку без адреса источника (§6).
- ❌ Заверить собственные находки самому; дать верификатору задание «проверь»
  вместо «опровергни»; тихо стереть опровергнутую находку.
- ❌ Принять отчёт субагента на веру: он мог сам нарушить блок §4 — отчёт читается
  на предмет утверждений без ссылок и уровней, проставленных без цитаты.
- ❌ Не дописать проверенные факты в корпус — следующий прогон ищет заново.

## Связанные скиллы

- `sci-search` — метод и достоверность единичного факта; законы оттуда, этот скилл
  их разворачивает на параллельный обход.
- `six-corner-audit` — проверка ОДНОГО завершённого артефакта на гейте перед
  необратимым действием; ближайший сосед по силе триггера, не путать.
- `fact-audit` — сплошной аудит своего проекта вширь и ссылочной массы статьи целиком.
- `code-audit-core`, `censor` — общие правила адверсариального аудита и надзора;
  `code-audit-core` ограничен кодом внешнего заказчика через Telegram-intake.
- `terminology` — сверка терминов до написания, чтобы не чеканить своих.
- `rn-article-style`, `md-doc` — если по итогам пишется текст наружу или отчёт оператору.
- Скилл `workflow` — шаблоны многоагентных ролей уровня проекта; не путать с
  инструментом `Workflow(...)`, который делает фан-аут.

