合迹
EN

合迹 · 隐私政策

版本:v1.9 | 生效日期:2026 年 11 月 10 日 | 适用范围:合迹(Android 应用,包名 top.tooyang.everymark)及其官方站点 heji.wang

本政策由运营方「嘉兴市秀洲区王江泾镇合乐养生馆(个体工商户)」运营。
统一社会信用代码:92330411MAKCNXUY9B

v1.9 变更说明(2026-11-10 · 按现行代码纠正分类与语义模型下载口径):
① 分类链路纠正为「本机规则优先 → 规则不能确定时才调用你自己配置的外部大模型」;
本地语义模型不再参与分类决策,只用于重复检测与相似记录。此前版本写的「外部大模型优先、语义模型兜底」已不符合现行代码。
② 语义模型下载触发方式纠正:你在首启页同意隐私政策后,App 启动时会在后台幂等下载语义模型;
已经安装就跳过,不重复下载;也可以在设置里手动重试。下载内容只有模型文件,不含任何记录。
③ 出网路径仍是十条,不新增厂商、不扩大信息种类;本版只让第 3、5 条及相关交叉引用与现行实现一致。
④ 本版会让老用户重新看到一次首启同意页(政策正文变更按项目规则必须升版并重新征得同意)。
核证:lib/core/ai/auto_classifier.dart(规则先行、外部大模型保底)· lib/main.dart(同意后启动幂等下载)· lib/features/settings/semantic_service.dart(已安装直接返回)。

v1.8 变更说明(2026-11-05 · OCR 文字交给大模型解读):
① 第六节新增第 10 条出网路径 —— 「OCR 文字 → 外部大模型解读」;
全部出网路径由九条改为十条(第六节标题、第二节与第六节里的交叉引用一并改过)。
② ⚠ 这一条发的是什么 —— 照片上 OCR 认出来的文字(主体部分 —— 不含被判为背景噪音的字);
照片本身不发(照片那一路是第 8 条)、不发记录正文、不发别的记录。
③ ⚠ 什么时候才发 —— 四个条件同时满足才会发:
① 你自己配了外部大模型并填了 Key;
② 设置里「OCR 文字解读 · 走云端大模型」开着(默认开);
③ 这条记录的附件是图片 / PDF;
④ 该附件的 OCR 主体文字 ≥ 40 字(文字太少没有可解读的结构就不发)。
任意一条不满足 → 一段文字都不发(已经解读过的附件不重复发);没配外部大模型时这条链根本不存在(一次请求都不发)。
④ 发给谁 —— 你自己填的那家端点(与第六节第 5 条「记录分类 → 外部大模型」同一处端点,不新增厂商)。
⑤ 一条记录最多 3 个附件(与第六节第 8 条「图片内容识别」同上限)。
⑥ 拿回什么 —— 一段结构化解读(文档类型 / 报告日期(带原文证据)/ 一句话结论 / 关键项),
存在本机、不写进记录正文、不上传别的记录。
⑦ 不用于任何模型训练(与全文口径一致)。
⑧ 开关在哪 —— 设置 → 模型 → 「OCR 文字解读 · 走云端大模型」(默认开;
关掉 = 一段 OCR 文字都不发)。
⑨ ⚠ OCR 文字也会出境 —— 你若用的是境外 7 家里的任何一家,照片上认出来的字也会随之出境
(与正文、录音同一条提醒 —— 见第八节)。
⑩ 其余条款未删改 —— 只按本版新增的这一条出网路径,在第三节(收集口径)、
第五节(用途)、第八节(出境提示)、第十节(撤回同意)、第十一节(安全口径)
做了对应补充;其余条款一个字未删改。
(下文 v1.6 / v1.7 变更说明里出现的「九条」是那两版当时的口径 —— 本版起为十条。)
⚠ 本版会让老用户重新看到一次首启同意页(政策版本号变了 —— 见 docs/PLAN.md D310)。
核证日期:2026-11-05(代码:lib/core/ai/ocr_reading.dart · lib/features/settings/app_settings.dart)。

v1.7 变更说明(2026-11-05 · 品牌与包名更新):
品牌与包名更新:对外名 Everymark(中文版保留「合迹」)、Android 包名 top.tooyang.everymark、本地路径 everymark.db / everymark/blobs/。
① 对外品牌名:英文语境一律叫 Everymark;中文语境继续叫「合迹」(中文名不变)。
② Android 包名:更新为 top.tooyang.everymark(2026-11-05 起;旧包名同时停用 ——
变更记录见 docs/PLAN.md D409)。
③ 本地路径:本机 SQLite 库 heji.db → everymark.db;附件目录 heji/blobs/ → everymark/blobs/。
④ 其余条款一个字未改 —— 第六节九条出网路径、第七节权限表、第三节敏感域与敏感个人信息说明、第八节出境路径
等实体口径全部保持原样,本次只改名字 / 包名 / 路径。
④′ 附:两处过期事实按代码现状订正(不改变任何权利义务,只是把「已经不存在的功能名」改成现在真实的那个):
① 「整理台」→ 记录页的「待整理」筛选 —— 「整理台」页面已按 D324 退场(lib/features/tidy/ 目录已不存在),
留在政策里会指向一个用户找不到的功能;行为口径一个字没变(对已存在的未归类记录只给候选、不调模型、不发任何请求)。
② 采集路数在第一节按 lib/core/capture/capture_contract.dart:31-37 的枚举六项写为六路(计时一路已按 D252 删除)。
⑤ 官方站点 heji.wang 不变(域名与备案流程不变)。
⚠ 本版会让老用户重新看到一次首启同意页(政策版本号变了 —— 见 docs/PLAN.md D310)。
⚠ 包名变更 = 视为新 App(备案 / 商店 / 更新链路重来,老用户数据不迁移 —— 见 docs/PLAN.md D409)。
核证日期:2026-11-05(v1.6 变更说明原文保留在下方,作为版本历史)。

v1.6 变更说明(2026-11-03 · bot 退役 + 图片内容识别改走大模型):
① 第六节第 8 条换了内容 —— 原第 8 条「跟「合迹」bot 说话」(v1.3 新增)随 bot 退役删除
(App 内的 bot 会话界面与客户端代码已删);第 8 条改为「图片内容识别 → 外部大模型」。
② 图片内容识别怎么发生:只有四个条件同时满足才会发 —— 你配置了外部大模型并填了 Key、
设置里的「图片内容识别」开着(默认开)、这条记录正文信息很少、图不是小票/截图这类文字型图片。
满足时,提交那一刻最多发 3 张照片 + 你写的那几个字给你填的端点,换回一句内容描述,
跟附件一起存在设备上(不写进正文、不上传其他记录)。
③ 关掉开关 = 一张图都不发(设置 → 模型 → 图片内容识别);没配外部大模型时这个功能根本不存在 —— 一次请求都不发。
④ 出网路径仍是九条(第 8 条换了内容,没有净增)。
⑤ 图片识别结果不参与「地点」抽取 —— 那是模型生成的话,不是图上原样写着的字;地点抽取仍只用正文与 OCR 文字。
其余条款未删改(v1.3 变更说明原文保留在上方,作为版本历史)。
⚠ 本版会让老用户重新看到一次首启同意页(政策版本号变了 —— 见 docs/PLAN.md D310)。
核证日期:2026-11-03(代码:lib/core/ai/image_recognition_rules.dart · lib/core/ai/provider_client.dart · lib/core/ai/image_content_recognizer.dart)。

v1.5 变更说明(2026-11-02 · 新增「坐标 → 地名的逆地理编码」· 位置信息第 ② 层 · 第六节新增一条出网路径):
① 第六节「出网路径」由八条改为九条 —— 新增第 9 条「坐标 → 地名的逆地理编码」
(主人 2026-11-02 追加原话:「位置不坐标,是地图上的位置,比如哪个商场哪个小区」)。
② ⚠ 这一条要联网 —— 拿到坐标后把它交给地理编码服务,换成一个地点名(「XX商场」「XX小区」),
显示在这条记录时间后面。两条路:手机系统自带的地理编码(Android Geocoder · 零配置 · 默认开启 · 不需要任何账号或 key)
或 你自己在设置里填了高德 Web 服务 key 的那条(不填 key 就只有系统那一路)。
③ ⚠ 发出去的只有坐标 —— 不发正文、不发附件、不发任何记录内容;
只在主人提交一条记录的那一瞬间发一次,不做后台持续上报。
④ ⚠ 总开关 —— 设置里有一个「把坐标换成地名」开关(默认开);
关掉就完全不发任何反查请求,界面上只显示经纬度。
⑤ ⚠ 高德那枚 key —— 只存本机钥匙串、不进同步目录(D31 口径);反查只发坐标,不发正文。
⑥ ⚠ v1.4 的两句口径本版起不再成立:v1.4 写的「坐标不出设备,也不做反向地理编码」
与「不把坐标发给地理编码 API 去换地名」—— 本版起坐标可能被交给地理编码服务(见第六节第 9 条)。
其余条款未删改(v1.4 变更说明里的原文保留在上方,作为版本历史)。
⑦ 「我们不收集」那一栏没有新增条目 —— 位置从来就不是「不收集」,它一直是可选采集;
变的是「坐标会不会出去」这句话(见第三节与第六节第 9 条)。
⚠ 本版会让老用户重新看到一次首启同意页(政策版本号变了 —— 见 docs/PLAN.md D310)。
核证日期:2026-11-02(⚠ 该能力尚未做真机验收;实现侧代码由并行会话落地,见第十节「待补」)。

v1.4 变更说明(2026-11-02 · 新增「位置信息」这一类信息 · 授权可选):
① 新增「位置信息」 —— 每条记录可以带一个可读地点(从记录正文与照片 OCR 识别文字里抽出来的),
抽不到时带上最近的坐标(纬度 / 经度 · 用的是最近 5 分钟内的那次定位)。两层都拿不到就不带(不编造假位置)。
② ⚠ 定位权限是「可选」的 —— 只有你主动授权之后才会取坐标;不授权,应用照常工作
(只是少了坐标那一层;从正文里抽出来的可读地点仍然有)。
③ ⚠ 什么时候问你要这个权限 —— 采集面板打开时才申请,不是首启
(首启就弹权限框是商店审核最反感的做法,与通知权限 POST_NOTIFICATIONS 同一原则);只问一次(你拒了不再反复弹)。
④ ⚠ 坐标不出设备,也不做反向地理编码 —— 坐标只落在本机 SQLite 与你自己选的同步目录;
合迹不把坐标发给任何第三方定位服务,也不把坐标发给地理编码 API 去换地名
(离线反查地名必须联网 → 违背本 App「数据不出设备」的底线)→ 所以界面上显示的是坐标本身,不是地名。
每条记录只有一个坐标点,不记录你的移动轨迹。
(⚠ 本条已被 v1.5 取代 —— v1.5 起坐标会被交给地理编码服务换地点名,见 v1.5 变更说明 ②③⑥ 与第六节第 9 条。)
⑤ 新增两条自声明权限:ACCESS_FINE_LOCATION / ACCESS_COARSE_LOCATION
→ 自声明权限由 5 条变为 7 条(+ 2 条传递引入,共 9 行)。⚠ 清单实测待核:实现落地后需重跑 release 合并清单核验。
⑥ 第三节「关于『地点』」与「我们不收集」两处原口径已更正(原文写「不采集任何位置信息 · 没有定位权限」——
本版起不再成立)—— 其余条款未删改。
⚠ 本版会让老用户重新看到一次首启同意页(政策版本号变了 —— 见 docs/PLAN.md D310)。
核证日期:2026-11-02(代码事实逐条 file:line 见第九、十节;⚠ 位置能力尚未做真机验收,见第十节「待补」)。

v1.3 变更说明(2026-11-01 · D360 · 新增一条出网路径):
① 第六节「出网路径」由七条改为八条 —— 新增第 8 条「跟「合迹」bot 说话」(App 内建 DSH 原生客户端 · 主人 2026-11-01 拍板)。
② ⚠ 这一条含你输入的正文 —— 与第 5 条(外部大模型分类)同类:
但目标是你自己指定的那台 DSH 主机(默认局域网 192.168.1.99:3090),不是公网第三方。
③ ⚠ 那枚凭据的暴露面要说清 —— 它能读写你的整个 DSH 工作台、调用工具、用你的模型额度
→ 所以它只存本机钥匙串、30 天过期、换主机必须重登;合迹不保存你的 DSH 口令。

v1.2 变更说明(2026-10-30 · D318 · 口径变更):
① 分类口径变了 —— 主人 2026-10-30 原话:「使用了外部大模型是否可以把大模型能做的都归大模型做,
没使用外部大模型时才使用语义模型分类。大模型或语义模型不是用于未归类记录的语义归类,
而是用于记录的语义归类(记录提交时就触发大模型或语义模型进行归类)」。
→ 分类的第一顺位改成「你自己配的外部大模型」:配了供应商并填了 Key,记录提交那一刻,
那一条正文会发给你自己填的端点做分类;没配就全程在本机(本地语义模型 → 纯本地规则兜底),文本不出设备。
③ 第六节「出网路径」由七条改为八条(新增第 8 条「跟合迹 bot 说话」· D360 · 2026-11-01);
② 第六节「出网路径」由六条改为七条(新增第 5 条「记录分类 → 外部大模型」· D318 · 2026-10-30);
③ 删掉第六节里那两句绝对承诺(关于「文字正文绝不会上传给大模型」与「分类去重标签推荐全在本机」)——
在新口径下这两句是假话(配了外部大模型时,那一条正文就是会为了分类发出去);
④ 第八节补入第四种出境路径(用境外供应商做分类 → 文字正文出境);
⑤ 第三节「分类与标签」一行补入外部大模型这一来源;第十一节「默认配置下不出网」的例外由两条改为三条。
⚠ 本版会让老用户重新看到一次首启同意页(政策版本号变了 —— 见 docs/PLAN.md D310)。
核证日期:2026-10-30(代码事实逐条 file:line 见文末)。

v1.1 变更说明(2026-10-29,对照代码实测):
① 第六节「出网路径」由四条改为六条——补入自动更新检查与 ML Kit SDK 诊断用量遥测两条(见第六节第 5、6 条);
② 第三节补入首次启动的同意流程;
③ 第九节权限表按 release 合并清单实测重写(5 条自声明),补入 REQUEST_INSTALL_PACKAGES;
④ 第八节补齐三条出境路径(同步目标可出境 / 本地模型预设可改为远程地址 / 自动更新检查经 Cloudflare 节点);
⑤ 第三节「无法收集证件号」与「OCR 原样提取文字」的自相矛盾已改写;第六、十一节的「AES256」「默认无网」措辞按实现更正。
核证日期:2026-10-29(代码事实逐条 file:line 见文末)。


一、我们是谁

项 内容
运营者 嘉兴市秀洲区王江泾镇合乐养生馆(个体工商户)
统一社会信用代码 92330411MAKCNXUY9B
负责人 曹旅
联系方式 电话 189****8149;邮箱 yfxd**s@gmail.com
官方站点 https://heji.wang(ICP 备案通过后开放;在此之前该域名会被云侧「未备案不得对外提供服务」拦截,App 内的本政策离线快照不受影响)

二、一句话总结

合迹是一个本地优先的记录应用:你的记录、附件、分类和语义向量都存在你自己的手机里,默认设置下不会自动上传你的记录到任何服务器。

我们不要求你注册或登录,没有广告,没有第三方统计,没有崩溃上报,不把你的内容用于任何模型训练。

⚠ 有一件事必须说在前面(别被「默认不上传」骗了):合迹出厂包里有与你的记录无关、但确实会出网的路径 —— 自动更新检查(每小时最多一次,只取一个静态版本清单,服务端会看到你的 IP 与请求时间)、Google ML Kit SDK 自己的诊断用量遥测(不含你的记录内容,也不含你的输入,应用不提供开关),以及首启同意后的语义模型下载(只下载模型文件;已安装就跳过)。全部十条出网路径见第六节。

⚠ 还有一条要看你的设置:分类在记录提交那一刻先跑本机规则;规则不能确定时,才把你配置的外部大模型作为保底(配了供应商并填了 Key 才会用)。所以并不是每条记录都会出网分类;只有本机规则定不下来、且你已配置外部大模型时,那一条正文才会发给你填的端点(见第六节第 5 条)。

⚠ 还有一条跟位置有关(v1.5 新增 · 默认开着):你授权定位之后,提交记录的那一刻,合迹会把坐标(只有坐标,不发正文、不发附件)交给地理编码服务,换成一个地点名(「XX商场」「XX小区」)显示在时间后面。手机系统自带的那条地理编码默认开着(零配置、不需要任何账号或 key);设置里的「把坐标换成地名」可以关掉,关掉就一个反查请求都不发,界面上只显示经纬度。详见第六节第 9 条。

⚠ v1.6 新增一条跟照片有关(默认开、可关):配了外部大模型后,正文很少的记录会把最多 3 张照片发给你填的端点做「图片内容识别」(换回一句内容描述,跟附件一起存在设备上);图不是小票/截图这类文字型图片才会发。设置里关掉就一张图都不发;没配外部大模型时这个功能根本不存在。详见第六节第 8 条。

⚠ v1.8 新增一条跟照片上的「字」有关(默认开、可关):配了外部大模型后,照片上 OCR 认出 40 字以上文字的附件,会把认出来的文字发给你填的端点做「OCR 文字解读」(换回一段结构化解读:文档类型 / 报告日期(带原文证据)/ 一句话结论 / 关键项,存在本机、不写进正文);照片本身不发。设置里关掉就一段文字都不发;没配外部大模型时这条链根本不存在。详见第六节第 10 条。

三、我们收集哪些信息、来自哪里

首次启动时,我们会先问你一件事

合迹第一次打开时,唯一看到的界面是一页《隐私政策》摘要(可点开阅读全文),底部两个平级动作:「同意并开始」 / 「不同意」。

核证状态:首启同意页的代码已落地(lib/features/onboarding/:同意闸门 + 同意页 + 同意记录存储),但尚未与本文一同做真机验收;本文只描述形态与触发条件,不宣称已验收通过。

我们在本机记录什么

应用在你主动使用功能时,会在你自己的设备上记录以下内容:

类别 具体内容 来源
你输入的文字 笔记原文(一字不改地保存) 你手动输入
图像与音视频 拍摄或选取的照片、视频、任意文件、录音(原始文件字节) 你主动采集
机器提取的文本 照片里的文字(本机离线 OCR)、录音的转写文本 本机 OCR / 你配置的云端转写;⚠ 离线 OCR 的文字现在也可能被发给你自己填的端点做解读(第六节第 10 条)
位置信息(可选) 可读地点(从正文与照片 OCR 文字里抽出的店名 / 路名等);坐标(纬度 / 经度)—— 只有抽不到可读地点时才取;地点名(「XX商场」「XX小区」)—— 由坐标经逆地理编码解析得到 ① 本机正则抽取(正文 / OCR 文字)② 你授权后由系统定位取得(仅真机)③ 坐标 → 地点名:系统自带的地理编码服务或你自己配的高德 Web 服务(这一步要联网,见第六节第 9 条)
派生指标 金额、时长、录音振幅波形等由正文与附件在本机算出的指标 由本机正则与本地算法从上面内容算出
你手动建的实体 人 / 物 / 地点 / 组织的名称 你在详情页手动输入
语义向量 由记录正文在本机算出的 512 维向量 本机推理(ONNX Runtime)
分类与标签 分类名、标签名、分类版本 你整理或应用预置种子;自动分类先由本机规则判断,规则不能确定时才由你配置的外部大模型端点兜底;本地语义模型不参与分类决策
设备与时间 本机随机编号(下称「设备标识」)、创建时间、发生时间、到期时间 设备本地生成

关于「设备标识」:它是合迹首次运行时在本机生成的一串随机编号(存于 App 私有目录的 meta 表),唯一用途是区分同步分片的写入者(多台设备写同一个同步目录时用来判断同一行是谁写的)。
它不是 IMEI、不是 Android ID、不是广告 ID —— 合迹不读取任何系统设备标识。
依据:lib/core/record_repository.dart:42-65(生成与读取)、:289-293(合并时按 device_id 判定写入者)。

关于「地点」(2026-11-02 起口径已变 · 原「不采集任何位置信息」的表述本版起不再成立):
合迹现在可以有位置信息,但只在你授权之后。两层来源,先抽后 GPS:
① 先抽 —— 从记录正文与照片 / 图片的 OCR 识别文字里抽出一个可读地点(已有本机正则抽取器 lib/core/ai/text_extract.dart:234 的 extractPlaceHint,认「XX店 / XX公司 / XX市 / XX区 / XX路 / XX街 / XX广场 / XX中心」等)—— 这一层不需要任何权限,纯本机;
② 抽不到才用 GPS —— 真机采集时取最近的坐标(纬度 / 经度;用的是最近 5 分钟内的那一次定位),需要你授权定位权限。
两层都拿不到 → 这条记录就不带位置(不编造假位置:不用 IP 定位、不拿上次的坐标顶替)。
⚠ 坐标 → 地点名(逆地理编码 · v1.5 新增 · 第 ② 层) —— 有了坐标之后,合迹可以把它交给地理编码服务,
换成一个地点名(「XX商场」「XX小区」),显示在这条记录的时间后面。
⚠ 这一步要联网:只发坐标(不发正文、不发附件、不发任何记录内容),
交给手机系统自带的地理编码服务(零配置 · 默认开启 · 不需要任何账号或 key)
或你自己在设置里填了高德 Web 服务 key 的那条(不填 key 就只有系统那一路);
只在提交记录的那一刻发一次,不做后台持续上报。
设置里的「把坐标换成地名」开关默认开着 —— 关掉就完全不发任何反查请求,界面上只显示经纬度。
⚠ 反查失败就还是显示坐标(不编假地点)。
每条记录只有一个坐标点 —— 合迹不记录你的移动轨迹(授权后 App 会保持一个定位监听,只为拿到这个点;没有「你在哪」的列表)。
坐标只落在本机(SQLite 与你自己选的同步目录);⚠ 但坐标可能被交给地理编码服务(见上「坐标 → 地点名」与第六节第 9 条)——
不发正文、不做持续上报;你自己填的那枚高德 key 只存本机钥匙串、不进同步目录。
⚠ 网页预览版没有 GPS 那一层 —— 浏览器只在安全上下文(https 或 localhost)允许定位,而本预览页是明文局域网地址 → 浏览器直接拒绝 → 这一层只有真机 App 有(不是坏了)。

我们不收集:通讯录、通话记录、短信、蓝牙设备、IMEI / Android ID / 广告 ID 等系统设备标识、剪贴板内容。
位置信息不在这一栏 —— 它是可选采集(你授权才有,见上面的「关于『地点』」)。
⚠ 但位置不是「完全不出去」(v1.5 起口径):坐标可能被交给地理编码服务换一个地点名(只有坐标,见第六节第 9 条)——
我们(运营方)自己拿不到这些坐标(合迹没有服务器、没有账号、没有位置数据的副本)。

我们无法自动识别:照片里的人脸、车牌 —— 应用没有人脸识别、车牌识别能力。

但请注意(这里不绕弯子):离线 OCR 会把图片上的文字原样提取成文本,其中可能包含身份证号、银行卡号等身份与金融信息。应用不做这类信息的结构化识别,但原文会一字不改地进到记录里,与该条记录一起保存在你的设备上;一旦你启用云端转写或同步,这些文本会随对应内容一并离开设备;你配了外部大模型并开着「OCR 文字解读 · 走云端大模型」时,这些 OCR 文字也可能被发给你填的端点做解读(第六节第 10 条 —— 只发文字、不发照片)。

四、这些信息存在哪、保存多久

位置 内容 保存期限
手机应用私有目录 SQLite 库 everymark.db、附件 everymark/blobs/<sha2>/<sha256>(内容寻址,两级分桶)、本地语义模型、向量 直到你自己删除记录、卸载应用,或重置手机。我们没有这些数据的副本
系统钥匙串(Keystore 加密) 各家模型服务商的 API Key、WebDAV 用户名与密码、S3 Secret Key 随应用卸载清除
你自己选的同步目标 见第六节 由你选择的存储服务商按其规则决定
官方站点 heji.wang 仅公开静态页面(ICP 备案通过后开放) 不记录任何个人信息,无 Cookie、无统计脚本

我们不建设服务器端账号体系,因此我们手上不存在你的记录数据——删除权在你,不在我们这里。

关于位置信息的存放:坐标、可读地点与解析出来的地点名是每条记录的一个字段,与这条记录存在同一处 —— 本机 SQLite 库 everymark.db,以及(如果你启用了同步)你自己选定的同步目标。
合迹没有为位置信息建任何服务器、没有第三方定位服务账号、没有缓存服务器(高德那枚 key 是你自己的账号,不是我们的)。
⚠ 但反查那一路在服务商那边留过副本:把坐标交给地理编码服务的那一刻,那家服务商会按它自己的规则处理这次请求
(合迹不控制、也无法查看他们留了什么)→ 这一条写在第六节第 9 条与第八节。

关于备份:应用已关闭 Android 系统备份与换机迁移(数据库、附件、偏好全部排除)。换手机时数据不会自动过去,需要你重新同步并重新填写 API Key。

五、我们怎么用这些信息

仅用于为你本人提供记录、分类、搜索、导出、同步这些功能,以及你主动配置的模型转写、外部大模型分类、图片内容识别(v1.6 新增)、OCR 文字解读(v1.8 新增 · 把照片上认出来的字读成结构化解读)与同步。

我们不做下列事情:不用于广告与画像营销;不用于任何模型训练或二次分发;不用于人工审阅;不出售、不交换。

六、什么时候会出网(全部出网路径,共十条)

这十条就是全部。 合迹没有后台推送、没有广告、没有统计、没有崩溃上报;除下面十条以外,应用不发起任何网络请求。
核证日期 2026-11-03(依据:docs/compliance/PLAY-DATA-SAFETY.md 附录 A「出网路径总表(按代码)」)。

⚠ v1.8 新增了第 10 条(2026-11-05):出网路径由九条改为十条 —— 新增「OCR 文字 → 外部大模型解读」。
(下文 v1.6 那段说明里写的「仍是九条」指的是 v1.6 当时的口径。)

⚠ v1.6 改了第 8 条(2026-11-03):原来的「跟「合迹」bot 说话」随 bot 退役删除(App 内的会话界面与客户端代码已删);
第 8 条换成「图片内容识别 → 外部大模型」—— 那时候条数没变(仍是九条)。

⚠ 位置信息新增了一条出网路径(v1.5 · 2026-11-02 改):取坐标这一步仍然只是本机调用系统定位,不出网;
但「坐标 → 地名」这一步要联网 —— 坐标会被交给地理编码服务换成一个地点名(见下面第 9 条)。
v1.4 写的「坐标不出设备,也不做反向地理编码」「不把坐标发给地理编码 API 去换地名」本版起不再成立。
(坐标若随记录同步走同步目标,那仍属于第 2 条「手动同步」这条既有路径 —— 目标由你指定,开发者不接收。)

# 场景 发到哪里 发什么 触发方式
1 云端语音转写 你在设置里配置的模型服务商(18 家预设里只有 4 家真支持语音转写:OpenAI、SiliconFlow、智谱 GLM、MiniMax;或你自填的私有部署) 整段录音字节(WAV 16kHz 单声道) ⚠️ 配了供应商之后,录完音会自动发起(唯一「配好就会自动发生」的上传);⚠️ 只发一家(按你的配置顺序取第一家支持转写的服务商;失败就如实说失败,不会接着往下一家发)
2 手动同步 你自己填的目标:系统目录授权(SAF,这一路是纯本地写入,不出网)、WebDAV 服务器、或 S3 兼容对象存储 记录 NDJSON(含原话、OCR 与转写文本)、附件原件、分类表、设备清单(含本机随机编号与条数) 你点「立即同步」;不自动跑,没有后台任务
3 下载本地语义模型 hf-mirror.com(模型文件托管站) 仅模型文件,不含你的任何数据 你在首启页同意隐私政策后,App 启动时在后台幂等下载(已安装就跳过,不重复下载);也可以在设置里手动重试。首启同意之前不会发起这个请求
4 模型服务连通性测试 你配置的模型服务商 请求内容固定为 ping(8 个 token 上限) 你在设置页点「测试」
5 记录分类 → 外部大模型(D318 · 2026-10-30 新增) 你自己配置并填了 Key 的那家供应商的端点(域名随你所填的供应商变化:18 家预设里的任意一家,或你自填的私有部署 / 本地 Ollama / LM Studio) 那一条记录的正文(提交那一刻用来归类的那段文字;含附件 OCR 识别出的文字)—— 不含附件原件、不含录音 先跑本机规则;规则不能确定、且你已配置外部大模型并填了 Key 时,才在提交那一刻自动发起(不是后台任务,也不是你手动点)。规则能确定就不发。本地语义模型不参与分类决策,只用于重复检测与相似记录。没配外部大模型时,规则不能确定就留作未分类,正文不出设备。⚠️ 「待整理」筛选不会调模型 —— 它对已存在的未归类记录只给候选,不发任何请求
6 自动更新检查 发版时注入的版本清单地址(构建参数 --dart-define=EVERYMARK_UPDATE_URL=…;出厂包指向 https://heji.tooyang.top/update.json) 只有一个静态 JSON 版本清单(版本号 + 下载地址 + 校验值)——不带任何记录内容 冷启动后自动检查,每小时最多一次(lib/features/home/home_page.dart 的 _update.autoCheck();频控常量 kUpdateAutoCheckInterval,lib/core/update/update_config.dart)。⚠️ 服务端会看到你的 IP 地址与请求时间(任何一次 HTTPS 请求都会)。清单地址没有配时它什么都不做 —— 不发请求、也不报错
7 Google ML Kit(文字识别 SDK)的诊断用量遥测 Google 的诊断服务端点(端点地址在 SDK 内部,合迹不控制、也无法关闭) API 用量与性能指标、设备与应用信息、标识符、事件类型、错误码 —— 不含你的记录内容,也不含你的输入 ⚠️ 由 SDK 自身发起,合迹不提供任何开关(官方未提供关闭开关)。release 包内含 com.google.android.datatransport 组件(实测:合并清单含 JobInfoSchedulerService / AlarmManagerSchedulerBroadcastReceiver,release dex 含 CctBackendFactory)
8 图片内容识别 → 外部大模型(v1.6 · 2026-11-03 新增;取代原先的 bot 会话路径) 你自己配置并填了 Key 的那家供应商的端点(与第 5 条同一家;域名随你所填的供应商变化:18 家预设里的任意一家,或你自填的私有部署 / 本地 Ollama / LM Studio) 最多 3 张照片(PNG / JPEG / WebP,单张不超过约 4.5MB)与这条记录的少量正文(用来当语境)—— 不发其他记录、不发录音、不发文件;换回的是一句内容描述,跟附件一起存在设备上(不写进正文) 你提交记录的那一刻自动发起(仅当:配了外部大模型 + 设置里「图片内容识别」开着(默认开)+ 正文信息很少 + 图不是小票/截图这类文字型图片);任意一条不满足 → 一张图都不发|⚠️ 照片会离开设备、发给你选的供应商;设置里的开关可以彻底停掉
9 坐标 → 地名的逆地理编码(v1.5 · 2026-11-02 新增) 手机系统自带的地理编码服务(Android Geocoder · 零配置 · 默认开启 · 不需要任何账号或 key)或 你自己在设置里填了高德 Web 服务 key 的高德 Web 服务(不填 key 就只有系统那一路) 只有坐标(纬度 / 经度)—— 不发正文、不发附件、不发任何记录内容;拿回来的是一个地点名(如「XX商场」「XX小区」),只用于在这条记录的时间后面显示 你授权定位(Android 权限)且设置里的「把坐标换成地名」开着(默认开)→ 只在你提交一条记录的那一瞬间发一次;不做后台持续上报。⚠ 关掉那个开关 = 完全不发任何反查请求,界面上只显示经纬度。⚠ 反查失败就还是显示坐标(不编假地点)。⚠ 你自己填的高德 key 只存本机钥匙串、不进同步目录
10 OCR 文字 → 外部大模型解读(v1.8 · 2026-11-05 新增) 你自己配置并填了 Key 的那家供应商的端点(与第 5 条、第 8 条同一家;域名随你所填的供应商变化:18 家预设里的任意一家,或你自填的私有部署 / 本地 Ollama / LM Studio)—— 不新增厂商 照片上 OCR 认出来的文字(主体部分 —— 不含被判为背景噪音的字;最长 4000 字,超了只发开头并如实告诉模型)—— 不发照片本身(照片那一路是第 8 条)、不发记录正文、不发别的记录;拿回来的是一段结构化解读(文档类型 / 报告日期(带原文证据)/ 一句话结论 / 关键项),存在本机、不写进记录正文 你提交记录的那一刻自动发起(仅当:配了外部大模型并填了 Key 且 设置里「OCR 文字解读 · 走云端大模型」开着(默认开)且 这条记录的附件是图片 / PDF 且 该附件的 OCR 主体文字 ≥ 40 字);一条记录最多 3 个附件(与第 8 条同上限);任意一条不满足 → 一段文字都不发|⚠ 照片上的字会离开设备、发给你选的供应商;设置里的开关可以彻底停掉;不用于任何模型训练

⚠ 第 10 条发的是「照片上的字」,不是「照片」 —— 它发的是离线 OCR 认出来的文字(主体部分),
照片本身不发(照片那一路是第 8 条);也不发记录正文、不发别的记录。
关掉设置里的「OCR 文字解读 · 走云端大模型」= 一段文字都不发;
没配外部大模型时这一条根本不存在 —— 一次请求都不发。
拿回来的解读只存在本机(不写进记录正文),不用于任何模型训练。

⚠ 第 10 条与第 8 条不一样:第 8 条发的是照片本身,第 10 条发的是照片上认出来的文字 ——
也就是说图不出网,但图上的字可能出网(取决于你的端点配置与那个开关)。

⚠ 第 9 条与第 1、5 条不一样:它不含你的记录正文(只有坐标),但它默认开着 —— 手机系统自带的那条地理编码零配置、不需要任何账号或 key。
你可以在设置里关掉「把坐标换成地名」,关掉就一个反查请求都不发;你自己配的高德那条要你填了 key 才有。

关于「记录的文字正文会不会上传给大模型」—— 照实说:取决于你有没有配外部大模型。
配了并填了 Key,且本机规则不能确定 → 记录提交那一刻,那一条正文会发给你自己填的端点做分类(第六节第 5 条),分类结果回到你的设备;规则能确定就不发。
没配 → 分类全程由本机规则完成,不能确定就留作未分类,文字正文一次都不出设备;本地语义模型不参与分类决策。
去重与标签推荐仍然全部在本机完成。上传音频字节的只有第 1 条转写一路 —— 那不是「文字正文」,但它确实会把一段录音交给你指定的第三方。

关于「照片会不会上传给大模型」—— 同样照实说:取决于你的配置与设置。
配了外部大模型 + 设置里「图片内容识别」开着(默认开) + 这条记录正文信息很少 + 图不是小票/截图这类文字型图片
→ 提交那一刻,最多 3 张照片会发给你自己填的端点,换回一句内容描述(第六节第 8 条)。
任意一条不满足 → 一张照片都不发;没配外部大模型时这个功能根本不存在 —— 一次请求都不发。
识别结果只是附件的备注(跟附件一起存在设备上,不写进正文);它不参与「地点」抽取(地点只从正文与 OCR 文字里抽——那是图上原样写着的字)。

向量不同步:语义向量只留在你的设备上,同步时不会被推出去。

API Key 与密码永不同步:同步引擎只读写记录、附件、分类与清单四类文件,不读取钥匙串。

第 6 条与第 7 条的共同点:它们都不含你的记录内容;但它们确实会出网,且第 7 条不受应用开关控制。
所以本政策不再使用「默认无网」这种笼统说法 —— 精确口径见第十一节。
第 5 条不一样:它含你的记录正文,但只有你自己配了供应商才会发生,且目标是你自己填的端点。

七、第三方服务与 SDK 清单

应用内嵌的第三方组件,以及它们在本机还是远端:

组件 作用 在本机 / 远端
Google ML Kit 中文文字识别(随安装包内置) 照片离线 OCR 识别过程完全在本机(模型内置,不需下载);⚠️ 但同一个 SDK 自带诊断遥测通道,会向 Google 发送 API 用量与性能指标(见第六节第 7 条)—— 合迹不读取也不使用这些指标,且未集成 Firebase Analytics / Crashlytics / 推送 / 广告 SDK
ONNX Runtime 本机语义模型推理 本机
Android 系统 SQLite(sqflite) 本地数据库 本机
flutter_secure_storage 钥匙串加密存储(Android Keystore 加密的偏好存储,不是数据库加密) 本机
image_picker / file_picker / record / video_player / just_audio / share_plus / saf 调用系统相机、相册、文件选择器、录音、播放、分享、目录授权 本机(系统组件)
webdav_client(dio) 你选择 WebDAV 同步时的 HTTP 客户端 远端,仅在你启用 WebDAV 同步时
http 模型调用、模型下载、S3 同步、自动更新检查 远端,仅在你启用对应功能时(更新检查例外:出厂包已内置清单地址,冷启动自动触发,见第六节第 6 条)
Android 系统地理编码(Geocoder · 系统 API,不是第三方 SDK) 把坐标换成地点名(见第六节第 9 条) 远端(把坐标交给系统的地理编码后端;不需要账号或 key;只在提交记录那一刻用一次;默认开启,可在设置里关)
高德 Web 服务(你自己配的 key) 逆地理编码(坐标 → 地点名) 远端(仅当你填了高德 Web 服务 key 时才启用;只发坐标,不发正文)

我们没有集成:广告 SDK、第三方统计/埋点 SDK、崩溃上报 SDK、推送 SDK、用户行为分析服务。

关于「我们没有集成」与「ML Kit 遥测」不矛盾:合迹没有主动集成任何埋点/统计/崩溃上报 SDK;ML Kit 的诊断遥测是那个 SDK 自带的,我们无法关闭,也不使用它收集到的任何指标。

模型服务商预设清单(共 18 家,你可以自行修改地址与模型名,也可以填自己的私有部署):

其中只有 4 家提供语音转写接口(2026-10-29 逐家实测 + 官方文档核出):OpenAI、SiliconFlow、智谱 GLM(OpenAI 兼容的 /audio/transcriptions)与 MiniMax(自有 /v1/speech_to_text)。其余 14 家没有这个接口 —— 应用会如实说不支持,不会把你的录音发出去碰运气。

八、个人信息出境提示(重要)

如果你选择境外 7 家里唯一支持语音转写的 OpenAI 做语音转写,你的录音内容将被传输至该服务商位于境外的服务器,构成《个人信息保护法》第三十九条所称的个人信息出境。(境外其余 6 家没有转写接口,不会收到你的录音。)

除转写外,还有五条会出境的路(请一并知情)

⚠ 这五条不是「转写出境」那一类,但同样构成个人信息出境:它们的目标地址由你在应用里填写或由默认配置给出,合迹不替你判断它是不是境内。

# 出境路径 出的是什么 出境到什么程度
① 同步目标可以填在境外 记录正文 + 附件原件 + OCR / 转写文本(同步包里的四类文件:记录 NDJSON、附件字节、分类表、清单)一起走 ① WebDAV:你可以填任何地址,包括境外服务器;② S3 兼容对象存储:默认 endpoint 就是 https://s3.amazonaws.com —— AWS 在境外,也就是说不改任何设置、直接用默认 S3 目标就构成出境。想避免,请把 endpoint 换成境内对象存储(自建 MinIO / 阿里云 OSS / 腾讯云 COS 等)
② 「本地模型」预设可以被你改成远程地址 你选中的那条记录的文字正文(大模型请求体) 预设里的 Ollama(http://localhost:11434/v1)与 LM Studio(http://localhost:1234/v1)默认指向本机、不出网;但地址在应用里可以改(lib/core/ai/provider_presets.dart)。改成远程地址 = 文字正文会发到那个地址,包括你的内网机器或境外服务器
③ 自动更新检查经 Cloudflare 节点 不带记录内容,但每次检查你的 IP 地址与请求时间会到达境外的 CDN 节点 出厂包的版本清单地址是 https://heji.tooyang.top/update.json,该域名解析到 Cloudflare(实测 server: cloudflare、cf-ray: …-LHR,即境外边缘节点)。清单本身是公开的静态 JSON,不含你的任何数据;但「你的 IP 与请求时间到达境外节点」这一条仍然成立
④ 用境外供应商做分类(D318 · 2026-10-30 新增) 那一条记录的正文(提交那一刻用来归类的那段文字) 先跑本机规则;规则不能确定、且你已配置境外供应商并填了 Key 时,才把正文传到它的境外服务器做保底分类,构成个人信息出境。规则能确定就不发。不配外部大模型就没有这一条 —— 规则不能确定就留作未分类,文本不出设备;本地语义模型不参与分类决策
⑤ 用境外供应商解读 OCR 文字(D414 · 2026-11-05 新增) 照片上 OCR 认出来的文字(主体部分 —— 不含被判为背景噪音的字;照片本身不发、不发记录正文) 解读用的外部大模型与分类用的是同一家(你配了哪一家,解读就发给哪一家)。选境外 7 家里的任何一家 → 那些照片上的字传到它的境外服务器,构成个人信息出境。关掉设置里的「OCR 文字解读 · 走云端大模型」就没有这一条;不配外部大模型也没有这一条 —— OCR 全程在本机

一句话:合迹不会替你把数据送出境,但默认的 S3 endpoint 与更新检查的 Cloudflare 节点确实在境外 —— 属于第 ①③ 条的知情范围,请你在选同步目标时留意 endpoint。
第 ④⑤ 条由你自己决定:选境内供应商,或不配外部大模型(那就完全不出网)。

⚠ 位置信息(2026-11-02 新增 · v1.5 改口径):坐标不发给任何第三方定位服务(不查「你在哪」、不记轨迹),
但「坐标 → 地名」这一步会把坐标交给地理编码服务(第六节第 9 条)—— 这一步是否构成出境,取决于那个服务的后端在哪:
① 你自己配的高德 Web 服务在境内 → 不构成出境;
② 系统自带的地理编码服务,它的后端由设备与系统决定(带 Google 服务的机器上通常由 Google 提供 → 境外;
国内多数不带 GMS 的机器上通常没有这个后端 → 这一路直接失败、回落成显示坐标)——
⚠ 具体依设备而定 = UNVERIFIED(本机未实测):如果在你的机器上它落到境外后端,坐标就构成位置信息出境,
需要单独同意并在本表补一条。我们不替你判断 —— 你可以在设置里关掉「把坐标换成地名」,那样就一个坐标都不发。
但如果你把同步目标设在境外,坐标也会随这条记录一起走上面第 ① 条那条既有路径 —— 那时它构成位置信息出境,责任在你选的存储服务所在地。

九、权限逐项说明

口径:以下是 release 合并清单实测的全部 5 条自声明权限(自声明 = 合迹自己在 AndroidManifest.xml 里写的;传递引入的 2 条是第三方库带的,合迹不主动使用,也不向系统申请)。
核证日期 2026-10-29(build/app/intermediates/merged_manifests/release/processReleaseManifest/AndroidManifest.xml)。

⚠ 2026-11-02 增补:本次新增两条自声明权限(定位,见下表最后一行)→ 自声明权限由 5 条变为 7 条(+ 2 条传递引入,共 9 行)。
⚠ 清单实测待核:上表的 5 条是 2026-10-29 的 release 合并清单实测值;定位两条尚未随本次实现重跑清单核验 → 落地后需重跑合并清单核对行数与声明位置。

权限 为什么需要 什么时候弹窗 / 触发
相机 CAMERA 拍照记录 你点「拍照」时
麦克风 RECORD_AUDIO 录音记录 你点「录音」时
联网 INTERNET 你主动启用的云端转写 / 同步 / 模型下载;你配置的外部大模型做记录分类(D318)与做 OCR 文字解读(D414);以及出厂包内置的自动更新检查 同步、转写、模型下载:仅在你启用对应功能后;分类:你提交记录的那一刻(仅当你已配好供应商并填了 Key;没配就全程在本机);OCR 文字解读:同样在你提交记录的那一刻(同样需要你已配好供应商并填了 Key,且设置里的开关开着、该附件的 OCR 主体文字 ≥ 40 字);更新检查:冷启动后自动(每小时最多一次)
通知 POST_NOTIFICATIONS 只在应用内升级时用一条:装好新版本后发一条「新版本已安装,点这里打开」 你点「升级到 X」时(Android 13+ 需要你授权)
安装包 REQUEST_INSTALL_PACKAGES 仅用于应用内自升级:你点「升级到 X」时,由系统安装新版本(会话安装需要它) 不弹窗(这是系统安装权限,Android 只在安装那一刻弹系统的确认框);不上传任何数据、不读取任何设备信息
定位 ACCESS_FINE_LOCATION / ACCESS_COARSE_LOCATION(2026-11-02 新增 · 可选) 两件事:① 当这条记录从正文与照片 OCR 文字里抽不出可读地点时,取采集当时的坐标(纬度 / 经度)补上;② 把这个坐标解析成地点名(「XX商场」「XX小区」)显示在时间后面 —— 这一步要联网(只发坐标,见第六节第 9 条;设置里的「把坐标换成地名」可以关掉,关掉就不发)。两条一起声明(系统只弹一次框,你可以选「精确」或「大致」)。不用它也照常记录 采集面板打开时申请 —— 不是首启(首启就弹权限框是商店审核最反感的做法,与上面 POST_NOTIFICATIONS 同一原则)。⚠ 不授权 = 应用照常工作,只是记录里少了坐标那一层(正文抽出来的可读地点仍然有);⚠ 授权了但把「把坐标换成地名」关掉 = 不发任何反查请求,界面上只显示经纬度

关于定位权限(如实告知,不藏着):
- 可选 —— 只有你主动授权后才会取坐标;不授权,应用照常工作(只是没有坐标那一层)。
- 什么时候问 —— 采集面板打开时申请,不是首启。
- ⚠ 坐标可能被交给地理编码服务(v1.5 起口径变了) —— 坐标只落在本机 SQLite 与你自己选的同步目录;
合迹不把坐标发给任何第三方定位服务(不查「你在哪」、不记轨迹),
但会把它交给地理编码服务换成一个地点名(「XX商场」「XX小区」)→ 只发坐标,
不发正文、不发附件、不发任何记录内容,只在提交记录那一刻发一次,不做后台持续上报(第六节第 9 条)。
设置里的「把坐标换成地名」开关(默认开)关掉 = 一个反查请求都不发,界面上只显示经纬度。
你自己填的那枚高德 key 只存本机钥匙串、不进同步目录;反查只发坐标,不发正文。
- 只取一个点,不记轨迹 —— 坐标来自系统定位:提交那一刻用的是最近 5 分钟内的那一次定位(系统会缓存「上次的位置」),不等定位(不卡住「完成」);若提交时 GPS 还在路上,定位到了会补到这条记录上(最多等 8 秒)。授权后 App 会保持一个定位监听(系统定位服务自带门槛:30 秒 / 50 米才更新一次),只是为了拿到这个位置点 —— 每条记录只有一个坐标,没有你的移动轨迹,也没有「你在哪」的列表。
- ✅ 权限申请点已核:采集面板打开时申请(lib/features/capture/capture_controller.dart:294-303,注释写明「D381:主人打开『记一笔』时才问定位权限 · 不是首启」),且只问一次(主人拒了不再反复弹,同文件 :308)。数据层已落地(android/app/src/main/AndroidManifest.xml:43-44 声明两条权限;lib/core/db.dart:103-105 加 place / lat / lng 三列;lib/core/record_repository.dart:856 的 updateLocation 写入方法)。

关于 REQUEST_INSTALL_PACKAGES(如实告知,不藏着):这条权限只服务于「直接分发 APK」的场景 —— Google Play 明令禁止 App 自行下载安装更新(必须走 Play 的机制),国内五大商店同样限制「自更新」。
因此:如果你从应用商店安装,本权限实际不会被用到(合迹的商店渠道版本不靠自升级分发);只有当主人从直链下载 APK 安装时,「升级到 X」才会真正调用它。
依据:android/app/src/main/AndroidManifest.xml:20-24(清单内注释写明「走商店渠道上架时,这条权限要么去掉、要么在商店页说明里说清只服务于非商店分发」)+ :29(声明行)。

传递引入的 2 条(合迹不主动使用、不申请):ACCESS_NETWORK_STATE(由 androidx.media3 播放栈带入)、top.tooyang.everymark.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION(由 androidx.core 带入的自签名级广播保护)。

通知权限 POST_NOTIFICATIONS 曾于 2026-10-26 移除(当时它是为尚未实现的「到期提醒」声明的,声明用不到的权限会被应用商店审核追问),于 2026-10-28 加回来(D271):更新检查与提醒装完之后,Android 10+ 的后台启动限制会拦掉「App 自己弹回前台」,只剩发一条通知这一条路——没有它,装完新版本就找不回来了。这条通知只说一件事:新版本已安装,点一下就能打开;你点「升级到 X」时才会申请这个权限。

相册权限 READ_MEDIA_IMAGES / READ_MEDIA_VIDEO 已于 2026-10-26 从安装包中移除 —— 从相册选照片或视频走系统选择器按件授权(系统照片选择器),App 全程不读取你的相册目录、也不申请任何存储权限;声明用不到的权限同样会被商店审核追问。当前 release 合并清单里已不含这两条。

我们不申请通讯录、电话状态、蓝牙、存储空间读写权限。导出不申请「另存为」权限,而是走系统分享面板,由你选择去向。
(位置不在这一栏 —— 定位权限是本次新增的可选权限,见上表最后一行。)

十、你的权利与怎么行使

权利 在应用内怎么行使
查阅、复制 记录详情页查看;「设置 → 导出」生成 zip(记录 + 附件 + 分类 + 清单)后由系统分享面板带走
更正 记录详情页直接编辑正文、分类、标签、实体
删除 记录详情页删除(软删:这条记录被标记为已删除,标记会随同步上传,可在你自己的存储里清理);附件随记录删除;卸载应用会清除全部本机数据
撤回同意 关闭对应功能(删除供应商配置即停止转写与外部大模型分类;删除同步目标即停止同步);首启同意可在「设置 → 关于与合规」撤回(撤回后 App 停止一切应用侧网络行为,需重新同意才能继续使用);定位授权可在系统设置里关掉本 App 的定位权限 → 合迹不再取新的坐标(已经采到的坐标留在本机,随对应记录走下面的删除口径);「把坐标换成地名」开关可在设置里关掉 → 合迹不再发任何反查请求(界面上只显示经纬度);「OCR 文字解读 · 走云端大模型」开关可在设置里关掉 → 合迹不再把照片上认出来的文字发给你的大模型(关掉就一段文字都不发);删掉你填的高德 key 即停用高德那一路
注销 本应用无账号体系,卸载应用即等同于注销
解释规则 本政策;如仍有疑问,用第一节的联系方式找我们
投诉 同上联系方式。我们会在 15 个工作日内答复

位置信息的删除与导出(2026-11-02 新增 · 如实写):

删除的边界:应用只能删除你自己设备上和你自己选定的同步目标里的数据。我们没有你的云盘账号,无法替你删除云端副本;删除云端副本需要你在对应的存储服务里操作。

把同步目录交给 agent / 第三方工具之后(重要边界,请看)

合迹提供一条 MCP(Model Context Protocol)接入方式:它是一个你自己电脑上跑的 stdio 命令(不联网、不占端口),读取你自己的同步目录,给你的 AI agent 提供读写记录与附件的工具。

十一、我们怎么保护安全

十二、未成年人

合迹面向一般用户设计。若使用者未满 14 周岁,请在监护人陪同下使用,并由监护人代为完成需要同意的操作。我们不会主动收集未成年人的个人信息,也不会基于记录内容做画像或营销。

十三、本政策的更新

政策变更时,我们会在本页面更新版本号与生效日期。涉及处理目的、信息种类、出境路径的重大变更,会在应用内以显著方式提示,并重新征求同意。

十四、联系我们


本政策所述事实对应合迹 v1(Android)的实际实现(核对日期 2026-10-30;本版 v1.4 的位置相关部分核对日期 2026-11-02;本版 v1.5 的「坐标 → 地名」逆地理编码部分核对日期 2026-11-02;本版 v1.8 的「OCR 文字 → 大模型解读」部分核对日期 2026-11-05)。
逐条证据(file:line)见 docs/compliance/PLAY-DATA-SAFETY.md 附录 A「出网路径总表」与本文第六、七、九节的括注。
⚠ 本版还标着「待补」:① 位置能力尚未做真机验收;② v1.5 新增的逆地理编码(系统 Geocoder / 高德 / 设置里的总开关)尚未在真机上跑过,
③ 系统地理编码服务的后端在哪(是否境外)= UNVERIFIED(依设备而定)—— 验收后回填,不必再改本版的其余条款。
若应用行为与本政策不一致,以本政策为准并请向我们反馈。