语义搜索端到端:SigLIP2 引擎接线 + Moments/Spoken/Files 三组结果 + search_media#185
Merged
Conversation
…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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
引擎全在但零可达的根治: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 全绿。