logo
0
0
WeChat Login
docs: mention hotlist app

书签语义搜索(带备注)- Chrome / Edge 扩展(工程化:Vite + TypeScript)

一个 MV3 浏览器扩展:

  • 一键索引你的书签(标题 / URL / 文件夹路径)
  • 为每个 URL 维护备注(持久化到本地 IndexedDB)
  • 支持向量检索:完全本地语义 embedding(MiniLM 384d)+ cosine similarity

安装(开发者模式)

  1. 安装依赖:npm i
  2. 下载本地模型(一次):npm run download-model
    • 若无法直连 Hugging Face,可用镜像:HF_BASE_URL=https://hf-mirror.com npm run download-model
  3. 构建产物:npm run build
  4. 打开 Chrome/Edge:chrome://extensions
  5. 开启「开发者模式」
  6. 点击「加载已解压的扩展程序」
  7. 选择 dist/ 目录(里面有 manifest.json

使用

  1. 点扩展图标打开搜索框
  2. 点击「重建索引」抓取书签并建立向量索引
  3. 输入关键词/句子进行搜索
  4. 在结果中直接编辑「备注」(对同 URL 的书签共享备注)
  5. 可在「选项」页调整“向量/关键词”权重并重建索引

新标签页(替代浏览器 New Tab)

  • 本扩展会通过 chrome_url_overrides 替代浏览器的新标签页。
  • 默认形态:iTab 风格桌面(壁纸 + 搜索中心 + 桌面图标/文件夹 + 右键菜单 + 设置抽屉 + Dock)。
    • 搜索:本地语义检索(书签标题/URL/路径/备注),↑/↓ 选择,Enter 打开;支持“置顶”把结果加到桌面图标。
    • 书签:Dock/应用中心打开「书签列表」抽屉,支持标签筛选(OR)与编辑标签/备注、置顶。
    • 热榜:应用中心打开「热榜」,支持预设/自定义 JSON 源;启用时会请求对应域名授权(默认不联网)。
    • 桌面:编辑模式下可拖拽排序、拖拽合并成文件夹、拖拽移入文件夹;文件夹弹层支持排序/重命名/解散。
    • 设置:壁纸上传/清除、遮罩/模糊、主题、搜索结果条数与权重、重建索引、重置桌面布局。
  • 旧版 Widget 仪表盘页面仍保留(可在「应用中心」打开 旧版仪表盘):newtab/newtab.html
    • 支持 lg/md/sm 断点布局、组件开关/拖拽/缩放;包含书签列表(标签筛选)与远程列表(可选)。

说明

  • 完全本地运行:embedding 使用 @xenova/transformers + Xenova/all-MiniLM-L6-v2(mean pooling,normalize=true,384 维)。
  • 数据都存本地(IndexedDB + chrome.storage.local),默认不上传、不联网;仅当你在旧版仪表盘启用「远程列表」并授权域名时,才会对该域名发起 HTTP(S) 拉取(模型下载仅发生在你运行 npm run download-model 时)。

向量检索

  • 书签规模 1k~5k:直接全量遍历计算 cosine similarity,并与关键词分数做加权重排。
  • embedding 计算在 MV3 offscreen document 中完成,避免 service worker 被回收导致模型反复加载。

目录结构(源码)

  • background/background.ts:MV3 service worker
  • popup/:弹窗页面(popup.html + popup.ts
  • options/:选项页(options.html + options.ts
  • src/:索引/向量/存储核心逻辑