• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jhspider
V2EX  ›  程序员

做了个能用自然语言管理文件的 Android App,聊聊端侧 CLIP 模型选型和 Agent 架构

  •  1
     
  •   jhspider ·
    zhangjh · 9h 32m ago · 679 views

    用了快十年 ES 文件浏览器,今年彻底受不了了。打开就是信息流,操作三步弹一次广告,烂到 Play Store 都下架了。当然 Play Store 上文件管理器不少,但翻了一圈发现:能用的都只是"文件浏览器",没有一个真正把 AI 能力融进文件管理场景的。

    所以我自己写了一个:素流,主打跟我前一个素系列产品素言一样,杜绝广告和追踪,简洁、高效、好用。

    它首先是一个干净、快、功能完整的文件管理器(多标签页、跨目录剪贴板、压缩文件免解压直开、ePub/PDF 内置阅读、零广告零追踪,基础版免费),但核心差异化在于:端侧 AI 语义理解 + Agent 对话式操作——用自然语言搜图、智能识别近重复文件、对话式批量整理,这些是传统文件管理器做不到的事。

    举个例子:你说"把下载目录里所有发票截图和 PDF ,按日期重命名后移到 Finance 文件夹",它会告诉你找到了哪些文件、打算怎么做,你确认后才执行。

    技术上比较有意思的几个点:

    1. 端侧语义检索的模型选型:MobileCLIP + 翻译小模型 vs ChineseCLIP/多语言 CLIP

      这个选型纠结了挺久。直觉上用 ChineseCLIP 或者多语言 CLIP 一步到位最省事,但实际跑下来发现不行:

      • ChineseCLIP / multilingual-CLIP 模型体积大,量化后精度损失明显,而且视觉编码能力比 OpenAI 原版 CLIP 系列弱一截
      • MobileCLIP 是 Apple Research 开源的移动端优化 CLIP 模型( CVPR 2024 ,模型本身平台无关,ONNX 导出后 Android 直接跑),视觉编码质量高、推理快、模型小,但只支持英文文本编码

      最终方案是:MobileCLIP 做视觉编码 + Marian 翻译小模型把中文 query 翻成英文再做文本编码。两个模型加起来的体积比一个 ChineseCLIP 还小,而且视觉理解能力更强。翻译模型走的是 Helsinki-NLP 的 Marian ,int8 量化后 encoder + decoder 合计约 140 MB ,对比 ChineseCLIP 动辄 500MB+ 的体积仍然有优势,而且推理延迟在端侧可接受。

      等于用"小模型组合"打败了"大一统模型",在端侧资源受限的场景下这个思路挺有效的。

    2. Agent 架构——云端 LLM 只负责意图理解和步骤规划( BYOK 模式,用户自带 API Key ),所有文件操作在端侧执行。AI 知道你想做什么,但不知道你文件里有什么。

    3. 相似图片检测——基于向量距离做近重复分组,不是简单的 hash 比对,能识别截图裁剪、压缩后的"几乎一样"的图。

    放几张截图感受下:

    首页 语义搜索
    Agent 智能清理

    完整演示视频(功能比较多):B 站链接


    官网:

    下载:


    想问问各位 V 友:

    1. 你们现在用什么文件管理器?还是直接用系统自带的?
    2. "用自然语言管理文件"这个需求,你们觉得是真需求还是伪需求?

    独立开发,一个人撸的,欢迎使用和反馈。

    14 replies    2026-05-13 17:59:07 +08:00
    jackOff
        1
    jackOff  
       9h 16m ago
    文件管理 500MB ?我还是放弃吧,普通文件管理器也不是不能用,没那么大动力折腾这玩意
    jhspider
        2
    jhspider  
    OP
       9h 3m ago
    @jackOff 有得有失吧,现在主要功能在云端的 APP 都普遍几百 M 几个 G 的,素流作为纯本地端侧的 500M 不算大了吧。占用主要是 CLIp 模型比较大
    jackOff
        3
    jackOff  
       8h 35m ago
    @jhspider 如果你用 ai 的话你这个文件管理器最好是支持语音和聊天调度,因为很多普通人压根就不懂什么目录树,文件夹,可能连图墙模式都不好用,还有一点,文件管理器这条路限制太多了,ios,鸿蒙基本上给你锁死不让你访问公共路径,安卓也就目前还能这样子搞搞,估计后面也是锁死不让访问了
    jhspider
        4
    jhspider  
    OP
       8h 24m ago
    @jackOff Agent 模式就是支持聊天的方式来管理的,但也不能太激进了完全就不支持普通目录树的方式了。
    普通人基本上主要还是管管自己的相册和下载目录的,系统限制的主要还是应用目录,问题不大
    zhuiyun041
        5
    zhuiyun041  
       7h 11m ago
    你这个是不是只适配了 Android 高版本,我用 Android9 的手机试了下读不到任何文件,也没有获取存储权限
    jhspider
        6
    jhspider  
    OP
       6h 37m ago
    @zhuiyun041 啊?安卓 9 很老了吧,素流确实只支持安卓 10 以上了,版本太低的支持了也不能很好的运行
    zhuiyun041
        7
    zhuiyun041  
       3h 29m ago
    @jhspider 你 googlepaly 上设置的是 Android8 以上
    EdwardKot
        8
    EdwardKot  
       3h 22m ago
    牛啊,all-in-one 了
    greyfreedom
        9
    greyfreedom  
       2h 39m ago via Android
    看起来很不错啊,学习一下。
    sillyruoruo
        10
    sillyruoruo  
       2h 6m ago
    很好的思路,值得学习,尤其是图片处理思路。原先我只想过用多模态做语义识别图片,然后用类似 RAG 的方式再配合语义理解做类似 hybrid search 的召回,但这样感觉太重了,而且多模态对图片识别理解程度会有幻觉。
    XXWHCA
        11
    XXWHCA  
       1h 43m ago
    @jhspider #6 @zhuiyun041 #7 最小支持版本 Androd 8 ,但是没有声明和申请存储权限,所以读取不到任何文件。
    一个 APK 安装包 500M 的确影响很大,可以考虑模型动态下发会更友好
    XXWHCA
        12
    XXWHCA  
       1h 39m ago
    @jhspider #6 X86 架构对现在的手机来说是没有用的,可以直接去掉。模型动态下发和 cpu 架构精简,最少可以减少 400M 大小
    jhspider
        13
    jhspider  
    OP
       1h 25m ago
    @XXWHCA 最小支持 Android 10, 早上 V 友 @jackOff 反馈包体大后我就在改了,基础版本就做个 ES 浏览器的替代版本,不集成本地模型,满足一些对占用敏感的用户,需要 AI 功能的再提供实时模型下载,大概这两天就可以发个迭代版本了
    jhspider
        14
    jhspider  
    OP
       1h 19m ago
    @sillyruoruo
    @zhuiyun041 对,我 Google Play 上最小支持写错了,下个迭代会更新,代码里没有管 Android 10 以下的,minSdk 写的是 Android 8
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3382 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 11:18 · PVG 19:18 · LAX 04:18 · JFK 07:18
    ♥ Do have faith in what you're doing.