起点 · 课程作业,方向调整
先做过移动端 SwiftUI 原型,很快意识到「网页收藏」这个场景天然发生在浏览器里——让用户复制链接再切到另一个 App,流程就断了。于是转向 Chrome 扩展。
SYSTEM · CASE STUDY
书签助手 · 收藏的瞬间,遗忘就开始了。
把浏览器书签变成可对话的知识库:自动聚类、语义搜索、RAG 问答;Chrome 扩展直接读现有书签,零迁移成本。我关心的不是收纳,是「再次被用上」。从课程作业的小 demo,迭代成一个评测驱动的 AI 产品原型。
展示在网页中保存当前内容、自动生成标签,并从「今日回顾」重新打开收藏的扩展流程。
收藏夹是最典型的「信息垃圾填埋场」:只进不出。人们在小红书、知乎、掘金和各类网站上收藏「想稍后再看」的内容,但绝大多数在保存的那一刻就被遗忘——过段时间既想不起当初为什么收藏,也无法按主题重新找到。
这个项目要解决的不是「存不下」,而是「存了取不回、也从不回看」。
用户真正的痛点不是「分类不准」,而是「存了就忘」。于是我把核心价值重新定义——从「更好的文件夹」转向「主动帮你重新想起」。
先做过移动端 SwiftUI 原型,很快意识到「网页收藏」这个场景天然发生在浏览器里——让用户复制链接再切到另一个 App,流程就断了。于是转向 Chrome 扩展。
能一键保存、抓正文、启发式摘要、关键词匹配分类、本地 JSON 存储。核心闭环通了,但分类很差、检索只能靠标题关键词。
这是把项目带出「作业范畴」的一步:围绕一个重新定义过的问题,把小 demo 重做成能持续迭代的 AI 产品。
扩展只负责交互和网页内容提取,后端负责富化、向量化、排序与存储。好处:AI 逻辑收敛成一份、API key 不进插件代码、无 AI 服务时插件仍可用、未来加移动端只是多一个调后端的客户端。
改进分类器只重跑 AI 层、换模型只重算向量层——都不丢用户的已读 / 收藏状态。这是「能持续迭代 AI 而不破坏数据」的前提。
一度「分类几乎全是 Other」,第一反应是「模型不行、该换模型」。但我先建了标注评测集用数据定位,发现真凶是配置 / 降级链路的 bug(后端没读到 key、直接把一切打成 Other),而非模型能力。修好后再用逐类指标发现并修复了总分掩盖的类别回归——全程不 train-on-test。
核心想法也被验证:网页收藏一旦加入内容提取、语义检索和主动回顾,会比传统书签明显更容易被「再次用起来」。
早期我盯着「能不能接上 AI、能不能生成摘要」,实测后才明白:用户首先要的是稳定保存、快速找回、清晰管理;AI 是增强,不是地基。这直接体现在「LLM 优先 + 本地降级」的设计上。
「分类全是 Other」时先用早期标注集量化归因,定位到是配置 bug 而非模型能力(本地 57%→96%);扩充到当前56条后,本地分类为92.9%、LLM路径为98.2%。先量化、先归因,再动手。
整体准确率看着没问题,但逐类 F1 暴露 LLM 在 Product 类崩到 0.40——是 taxonomy 边界设计问题,不是模型问题。用给 prompt 加类别定义消歧(刻意避免拿测试样本调参),整体回到 98.2%。
API key 从写死改为 .env + .gitignore;CORS 从全开收紧到只允许扩展来源;加 CI 与准确率门槛的冒烟测试。整理杂乱的原型/demo,只把完成度最高的浏览器插件版本作为正式仓库发布。
Chrome Extension (Manifest V3) · JavaScript / HTML / CSS · Python 后端 (SQLite) · LLM (NVIDIA API, Llama 3.1) · Embeddings (BGE-M3 / sentence-transformers) · scikit-learn(评测)· GitHub Actions(CI)