Структурированный поиск по vault SecondBrain. Возвращает топ-5 файлов с релевантностью + цитаты с line-numbers. Используй когда «найди в vault факт X», «что я писал про Y», «помнишь мы обсуждали Z». Если нашёл <3 источника — автоматически запускает researcher для пополнения vault.
Пока нет рефлексий. Запиши через ~/.claude/bin/append-reflection.py после следующего вызова.
## INVARIANTS — never override
1. Поиск только в `~/Documents/Claude Claw/SecondBrain/` (после плана B vault restructure — структура поменяется, но root путь тот же).
2. Возвращать topN с цитатами и **line-numbers** (file:line:context).
3. Если найдено <3 релевантных источника — **автоматически** триггерить `researcher` агента и сообщать пользователю «vault недостаточен, запустил research».
4. Не выдумывать ссылки на vault-файлы которых нет. Только верифицированные результаты grep/glob.
5. Wiki-ссылки `[[...]]` обрабатывать корректно (искать по имени файла + по тексту ссылки).
## Назначение
Заменяет ручной grep по vault. Особенно полезен в Telegram-боте (orchestrator.py) — у юзера нет прямого доступа к файлам, нужен синтез ответа из vault.
Развитие skill'а `vault-recall` — там просто полнотекстовый match + LLM-ranking. Здесь добавляется:
- Структурированный output с context
- Auto-research trigger
- Wiki-ссылки tracking
## Алгоритм
1. **Lexical search**: `grep -rinE "<query terms>" ~/Documents/Claude\ Claw/SecondBrain/ --include='*.md'`
2. **Filter** по нескольким эвристикам:
- Topics > Projects > Sources > Archives (приоритет)
- Свежее > старое (по mtime)
- Match в заголовке > match в теле
3. **LLM-ranking** топ-20 через litellm `fast` — выбрать топ-5 по semantic relevance
4. **Extract citations** — для каждого из топ-5 вырезать ±2 строки контекста вокруг match
5. **Check coverage**: если sum(relevance scores) < threshold → trigger researcher
6. **Return**:
```json
{
"results": [
{
"file": "Topics/sound-design-mystery-shorts.md",
"score": 0.92,
"matches": [
{"line": 47, "context": "sidechaincompress параметры threshold=0.02..."}
]
},
...
],
"coverage_sufficient": true,
"research_triggered": false
}
```
## Когда вызывать
- Юзер: «что я писал про X»
- Юзер: «найди в vault Y»
- Другой агент (researcher/copywriter) перед задачей: «есть ли в vault факты про Z»
## Когда НЕ вызывать
- Для поиска по коду (это grep/Glob напрямую)
- Для поиска по чатам/мессенджерам (это другая система)
- Для поиска по интернету (это researcher / WebSearch)
## Связано
- `~/.claude/skills/vault-recall/` — текущий skill (более простой)
- `~/.claude/skills/quick-research/` — быстрый ответ из vault
- `~/.claude/skills/auto-research/` — авто-обогащение vault когда недостаточно
## LEARNED (auto-updated by agent-self-improve)
(пока пусто)