Skip to content

语义搜索端到端:SigLIP2 引擎接线 + Moments/Spoken/Files 三组结果 + search_media#185

Merged
appergb merged 1 commit into
mainfrom
feat/search-wiring
Jul 2, 2026
Merged

语义搜索端到端:SigLIP2 引擎接线 + Moments/Spoken/Files 三组结果 + search_media#185
appergb merged 1 commit into
mainfrom
feat/search-wiring

Conversation

@appergb

@appergb appergb commented Jul 2, 2026

Copy link
Copy Markdown
Owner

引擎全在但零可达的根治:ort 静态链接(download-binaries,无运行时 dylib、lockfile 零新增);5 个命令(模型状态/下载+进度/索引状态/建索引+进度/查询);面板三组结果 1:1 上游顺序与上限(limit 20 先于 0.85 相对截断),Moments/Spoken 可拖上时间线且落为修剪片段(复用 MEDIA_DND_TYPE + 序列化 add 队列);search_media 解 stub(scope/limit 夹取/modelNotInstalled 引导语)。门禁:workspace 1518 + web 336 全绿。

…ments UI, search_media

The complete-but-unreachable visual search engine (embedder/tokenizer/indexer/
PALMEMB1 store/ranker/model download, feature ort-backend) is now wired:

- ort 2.0.0-rc.10 download-binaries links a STATIC libonnxruntime at build time
  (no runtime dylib to ship; zero new lockfile entries — ort was already an
  optional dep). ON for src-tauri, optional at the crate (offline default tests
  intact). Measured: ~75s first build, ~9s incremental; CI needs no new system
  packages (same build-time-network shape as whisper.cpp).
- Commands (src-tauri/src/search.rs, camelCase DTOs + serde tests, 12 tests):
  search_model_status / download_search_model (search://progress, SHA-256) /
  search_index_status / search_index_start (search://index {k,total}; per-asset
  skip-not-fail) / search_query -> {moments, spoken, files} with upstream's
  exact caps/ordering (limit 20 BEFORE the 0.85 relative cutoff, floor 0.05 —
  VisualSearch.swift:14-55; spoken keyword hits unranked, early-stop 20;
  frame = trunc(shotStart*fps) like secondsToFrame).
- Media panel: MediaSearch.tsx renders the upstream three groups in order
  (Moments / Spoken / Files, MediaTab+Search.swift:12-33) behind the existing
  search box; IndexStatus port (Smart-search download button -> progress ring ->
  Indexing k/total -> Retry). Moments/Spoken hits DRAG to the timeline via the
  existing MEDIA_DND_TYPE plus a source-range side-channel; drop builds a
  TRIMMED clip (trimStart=round(startSec*fps), clamped duration) through the
  serialized enqueueMediaAdd path; stills place full-asset (upstream parity).
  Plain filename filtering stays the zero-setup fallback. zh/en i18n.
- search_media MCP tool un-stubbed (10 dispatch tests): scope visual|spoken|
  both, limit clamp 1..=50, upstream status enum incl. modelNotInstalled
  guidance so agents report instead of polling.

Gates: fmt/clippy -D warnings clean; cargo test --workspace 1518; pnpm build
clean; pnpm test 336.
@appergb appergb merged commit e3efaa0 into main Jul 2, 2026
2 checks passed
@appergb appergb deleted the feat/search-wiring branch July 2, 2026 16:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant