CLI
aacsearch-cli — инкрементальная синхронизация локальных файлов и поиск через AACSearch API.
AACSearch CLI
aacsearch-cli работает на вашей машине и обращается только к HTTP API AACSearch через сгенерированный TypeScript SDK. Локальный поисковый движок не запускается.
Индексация устроена как инкрементальный пайплайн (как в CocoIndex): target = transform(source). Файл — единица обработки со стабильным id; неизменённые файлы пропускаются, когда совпадают и content-hash, и transform fingerprint; удалённые файлы удаляют документы в индексе.
Установка
pnpm --filter @repo/sdk build
pnpm --filter aacsearch-cli build # также: pnpm --filter aacsearch-cli test
node integrations/aacsearch-cli/dist/cli.js --helpОпционально для PDF: предпочтительно Docling (pip install docling); запасной вариант pnpm add pdf-parse --filter aacsearch-cli. OCR в Docling по умолчанию выключен.
Опционально для семантических чанков кода: web-tree-sitter + WASM-грамматики (JS/TS/Python/Go/Rust/Java/JSON/Bash); остальные языки — size/overlap fallback.
Локальный стек (:3000): integrations/aacsearch-cli/examples/README.md.
Вход
aacsearch init --base-url https://search.example.com --index documentation --pipeline
aacsearch login --api-key aac_live_…init --pipeline создаёт aacsearch.yaml в текущем каталоге. Или задайте AAC_API_KEY и AAC_BASE_URL.
Конфиг пайплайна
Положите aacsearch.yaml или .aacsearch/pipeline.json в корень источника (или --config). См. integrations/aacsearch-cli/examples/aacsearch.yaml.
version: 1
index: documentation
sources:
- path: .
include: ["**/*.md", "**/*.txt", "**/*.csv", "**/*.html", "**/*.pdf"]
honorGitIgnore: true
maxFileSize: 10485760
concurrency: 4
localChunk:
enabled: false
parser: auto # auto | docling | pdf-parse
reembed: auto # auto при векторном индексе | true | false
transforms:
key: v1YAML frontmatter markdown (title, tags) попадает в метаданные. .gitignore учитывается по умолчанию (--no-gitignore отключает). Симлинки и слишком большие файлы пропускаются.
Инкрементальный update
aacsearch update ./docs --index documentation
aacsearch update ./docs --dry-run --explain
aacsearch update ./docs --local-chunk # код → tree-sitter при наличии
aacsearch update ./docs --parser auto
aacsearch update ./docs --reembed
aacsearch update ./docs --no-reembed
aacsearch update ./docs --urls urls.txt
aacsearch -q update ./docsПосле записей CLI может вызвать API reembed и напечатать reembed started job_id=… — эмбеддинги считает AACSearch API, не локальная модель. С --local-chunk неизменённые #cN чанки пропускаются (per-chunk contentHash). sync-status / doctors показывает парсеры, грамматики tree-sitter и режим reembed.
Live push (файловый CDC-стиль)
aacsearch watch ./docs --interval 400
aacsearch live ./docs --interval 200
echo '{"op":"upsert","path":"a.md"}' | aacsearch live ./docs --stdin-events
# мост от внешнего CDC (только относительные пути):
# my-cdc-tail | aacsearch live ./docs --stdin-eventsПри add/change — upsert файла; при unlink — удаление целевых документов. Всплески событий сливаются (debounce), один retry при ошибке upsert. CDC БД/Kafka — это коннекторы AACSearch в консоли / API; CLI live — только файловая система (и опциональный stdin NDJSON, см. examples/stdin-events.ndjson).
Поиск и операции с индексом
aacsearch search "pricing" --index documentation
aacsearch suggest "pri" --index documentation
aacsearch multi-search "pricing" --indexes documentation,help
aacsearch indexes
aacsearch create-index --name "Docs" --slug documentation
aacsearch delete <external_id> --index documentation
aacsearch reembed --index documentationScopes: запись документов — documents:write; search/suggest — search:read;
create-index — org-wide indexes:write.
Вне области CLI
Kafka/DB CDC (коннекторы AACSearch), локальные embedding-модели, CocoIndex Python DSL, lineage UI.
См. также TypeScript SDK.