---
name: reference_vex_search
description: "vex (code-search CLI) установлен и проиндексирован; правило когда vex, когда ast-index"
metadata: 
  node_type: memory
  type: reference
  originSessionId: a02c76bd-13fd-4ebe-b133-375f6c469212
---

vex v1.11.0 — гибридный поиск по коду (vector+index), установлен в `C:\Users\Home\bin\vex.exe`
(в пользовательском PATH; в новых терминалах — просто `vex`, в уже открытых сессиях PATH не подхвачен — звать по полному пути). Проект BQ-System проиндексирован: структурный + **semantic** (16360 символов, embeddings enabled).

**Когда что** (подробно — `.claude/rules/search-tools.md`, закоммичено f2b0db4):
- **ast-index** — дефолт: символ по имени, **usages/callers**, outline. usages/callers по JS — ТОЛЬКО ast-index (vex их пропускает: чистый JS не binder-язык; `vex usages "audit"` → пусто, `ast-index` → все 10).
- **vex** — `vex search "..." --semantic`, `vex similar "X"` (по смыслу), `vex pattern --lang js '...'` (AST), `vex duplicates`, `vex show "X"` (компактное тело).
- Grep всё ещё запрещён (см. [[reference_sqlite_node]]).

**Гочи:**
- Модель MiniLM (~86 МБ) при прерванном скачивании бьётся → `failed to load ... Protobuf parsing failed`. Фикс: `Remove-Item C:\Users\Home\AppData\Local\vex\embeddings -Recurse -Force`, затем `vex index --semantic`. Качать в форграунде (фоновый процесс прервался на середине).
- После коммитов HEAD сдвигается → vex пишет "index may be stale" → `vex update` (инкрементально, semantic сохраняется из манифеста).
- `search`/`usages`/`show` берут индекс текущей папки и НЕ принимают `--path`; `pattern` требует `--lang`+`--path`.
- settings.json: правило `"Bash(vex:*)"` пользователь добавляет САМ — Claude не может сам себе выдавать права (классификатор блокирует self-modification).
