用途与实际影响
这项功能怎样使用
为什么需要它
媒体路径、相册和命名常常与人的记忆方式不同;整库浏览太慢,第二次复制又会扩大容量和重复治理。
举个实际例子
我可以说:“找我在新加坡现场拍的照片。”系统按已核对的拍摄地点查找;若问的是写着地名的截图,就按图片文字查,不混为拍摄地点。选中录音后也可以说:“找谈到交付时间的那段,告诉我从几分几秒开始。”它会核对原音并返回已有时间段,不按全文长度估算。
最后我会得到什么
拿到少量原件及其类型、已知日期、地点和匹配理由;需要一起看时,可得到不重复复制原件的临时浏览文件夹,用完清理不影响原件。查录音里的话时,还会给出从录音开头算起的时间段、有关文字和检查范围;文字可能识别有误,说话人的分组也不等于知道他的真实身份。
成功时
找到仍存在的原件和匹配依据;临时浏览链接与原件是同一文件。录音定位在复核原音后返回已有时间段,不播放、不启动模型、不写目录。
发现问题时
结果达到上限、地点未登记、日期未知或私密标记未被本次请求包含时,说明实际范围。录音片段低置信、只覆盖部分或有线索未命中时保留缺口,不把零命中当作从未说过。
入口不可用时
目录、原件或浏览链接不可用时只停止对应动作。选定录音没有可复用时间戳时,只说明单件本地转写接续;当前查询不自动重跑识别,也不提供视频内部定位。
从哪里开始
用地点、日期、画面或一句录音原话描述想找的内容。
需要准备什么
- 地点、日期、画面、类型或原话线索
- 录音内定位时选定的原音
从开始到拿到结果
- 1
系统核对并处理
区分现场地点与画面文字,只查已有目录;确认候选原件仍在,录音片段只复用同原音已有时间段。
- 2
交付与接续
交回少量原件、匹配理由和必要的起止时间;证据或原件不足时说明缺口,临时浏览目录用完精确清理。
技术实现与依据
这里保留实现、关键条件、精确入口、历史记录和验证结果。
当前保留集4,358项,查询按SQLite/FTS返回现存原件;没有几秒级耗时完成门;浏览使用同卷硬链接关键规则与设计选择
普通请求默认返回小结果;只有用户明确要求完整集合才用 all。
取消几秒级耗时硬门;先保证命中依据、内容、来源、时间和未知足够让 AI 正确判断,只有纯性能优化才以显著减少端到端耗时为目标。
place 只表示已复核的现场地点,不能从文件名或图片文字推断。
2026-09-02 截图观察的 OCR(光学字符识别) 证据 6,440/15,823,结构化 visible_text 4,287/15,823;空值不等于没有文字。
LocalOCR 负责精确文字,视觉认知负责场景与意义;已有真实文字查询路径,当前不按旧截图库存无差别重跑。以后只对新截图和真实未命中的有界候选补齐,并继续写回同一媒体条目。
当前没有人物证据,不能用 person 做全库检索。
当前757音频为754录音与3项音乐/铃声,后两类各自数量Unknown(未验证);目录消费既有时间、分类和可用ASR(自动语音识别),不为路径归位重新识别。
音频缺少 ASR(自动语音识别) 时只降低文字 query 召回,不影响按类型、日期、既有分类或原件定位,也不把缺文字写成音频不存在。
默认 search 只验 authority locator(权威原件定位记录) 当前存在,不计算 SHA-256;精确字节身份需要对选中原件单项计算并与返回的 content_sha256 比较。
browse --verify-hash 只证明 source 与新 hardlink(硬链接) 字节相同,不自动把两者与 catalog(目录) content_sha256 比较。
浏览目录只是入口,原件字节不复制。
本模块用到的名词
- place(现场地点)
- 已人工复核为实际拍摄现场的地点证据。
- query(文字线索)
- 普通描述、文件名、可见文字或录音/ASR(自动语音识别) 文字线索,不等于现场地点。
- FTS(全文检索)
- SQLite 内的快速文字召回;它与类型、类别、日期等结构化过滤一起使用。
- LocalOCR
- 本地批量或精确文字识别能力;它提供逐字文字证据,不替代图片场景与审美判断,也不拥有第二套媒体目录。
专业定义
不需要记路径,也不需要把全部媒体复制进另一套库;地点、描述、类别、类型和日期足够把结果缩成一小组原件。
解决什么
解决自然记忆与文件路径不一致、整库浏览成本高、临时导出重复占空间和旧 locator(原件定位记录) 指向缺失文件。
当前怎样实现
- SQLite 保存结构化日期、地点、类别、类型、描述、visible_text 与全文索引。
- search 直接使用条件/FTS,不加载完整 NDJSON(逐行 JSON 数据格式)。
- 历史截图文字来自 exact_localocr、逐项证据和少量原生视觉文字;原观察中2,184条旧OCR(光学字符识别)结果位于description,其中sufficient 982、low_confidence 1,202;此后原件清理改变现行条目,不能当作最新覆盖数量。LocalOCR objective sidecar(客观结果侧车文件) 尚未成为全库统一绑定。
- 录音行消费既有分类与 ASR(自动语音识别) 绑定文字,不触发音频模型;ASR(自动语音识别) 缺失时其他结构化轴继续可查。
- 候选返回前要求 source.authority_locator 是现存本地文件。
- browse 在 E 盘受管根创建 task-unique hardlink(硬链接),可选对小集合逐项核对哈希。
- clean 只接受精确受管目录并拒绝非受管内容。
执行流程
- 1
压缩成最小可靠过滤条件
- 2
执行 SQLite 条件/FTS
- 3
确认原件仍存在
- 4
返回少量候选
- 5
需要时创建同卷 hardlink(硬链接)
- 6
使用后精确清理浏览目录
边界
- 不全盘扫描。
- 不使用没有证据的人物过滤。
- 不默认包含被标为 private(私有) 的结果。
- 不复制原件进入知识库。
- 清理浏览目录不删除原件。
失败与恢复
- place 未登记
- 报告该现场地点当前没有复核证据;只使用用户另外提供的可靠过滤,不偷偷改成 query。
- 返回数等于 limit
- 表述为前 N 条或至少 N 条,不宣称完整集合。
- 可信规范原件已由本人删除
- 当前查询跳过该路径,不代用户删除或触发同步;现有每日任务移除失效索引与候选,并使 G 镜像和实际手机包跟随当前文件集合。
- 浏览目录混入外部文件
- clean 拒绝整个目录,保留原件和外部内容等待精确处理。
真实入口
personal_media.pysearch、browse、clean、过滤与当前目录实现
catalog.sqlite3当前可重建定位与全文索引
test_personal_media.py查询、stale locator(原件定位记录)、limit、浏览、清理、路径与性能回归
如何验证
- 2026-09-05历史查询返回2项;旧观测 239 ms 只作历史,不再有 750/250 ms 完成门。
- 隔离回归证明查询/状态不改库,维护清理缺失项,空手机计划只清固定桶内派生文件,重复同步无额外删除,离线根不批删。
- 复制数据库只刷新自己目录的种子,不沿旧绝对指针回写原库;JPEG 按真实图片打开性识别,不被 ffprobe 的视频流字段误分成视频。
- 现行精选910张照片;历史E/G哈希验收不直接覆盖清理后的当前集合。当前手机包与云端结果由各自Owner另行回读,不用精选目录存在替代。
- 画廊是媒体库的公开展示样本,不冒充完整精选集合。
与其他模块的关系
它是日常入口;分类与恢复改变目录内容,查询只消费当前目录,不拥有手机和云端动作。
