首页
/ Ente Locker 个人笔记(Personal Notes)完全指南:端到端加密存储、组织与分享

Ente Locker 个人笔记(Personal Notes)完全指南:端到端加密存储、组织与分享

2026-09-10 23:41:09作者:董灵辛Dennis

导读

本篇文章围绕 Ente Locker 的「个人笔记(Personal Notes / Note)」信息类型展开,讲解如何在 Ente Locker 中以端到端加密方式存储任意文本——从私密日记、安全提醒到机密会议纪要。读完本文,你将掌握笔记的创建、编辑、组织(集合)、搜索与分享(公开链接 / 协作者共享)的完整实操流程,并了解其背后的数据模型与加密上传机制。

个人笔记是什么

在 Ente Locker 中,Note(个人笔记) 是用于安全存储任意文本内容的信息类型。它适合保存那些不属于其他固定类别的敏感信息——Locker 的其他信息类型包括账户凭据(用户名/密码)、实物记录(卡片/证件)等,而笔记是其中最通用、最灵活的一种。

从数据模型上看,笔记在客户端仅由两个字段构成:标题(title)正文(content)。在 mobile/apps/locker/lib/models/info/info_item.dart 中定义如下:

class PersonalNoteData extends InfoData {
  final String title;
  final String content;

  PersonalNoteData({required this.title, required this.content});

  factory PersonalNoteData.fromJson(Map<String, dynamic> json) {
    return PersonalNoteData(
      title: json['title'] ?? '',
      content: json['content'] ?? '',
    );
  }

  @override
  Map<String, dynamic> toJson() {
    return {'title': title, 'content': content};
  }
}

其中 InfoType.note 是 Locker 的四种信息类型之一(notephysicalRecordaccountCredentialemergencyContact,见 info_item.dart)。

典型使用场景

官方文档推荐的笔记用途包括:

  • 私密日记条目(private journal entries)
  • 安全提醒(secure reminders)
  • 敏感的会议纪要(sensitive meeting notes)
  • 私人想法与创意(private thoughts and ideas)
  • 加密草稿(encrypted drafts)
  • 机密信息(confidential information)

由于所有内容在上传前都会经过端到端加密,即使服务端被攻破,攻击者也无法读取你的笔记明文。

创建一条笔记

在 Ente Locker 移动端创建笔记的完整步骤:

  1. 打开 Ente Locker
  2. 点击 + 按钮
  3. 选择 Note(笔记)
  4. 为笔记输入一个标题
  5. 在文本框中写入笔记正文
  6. 选择一个或多个集合(Collections)
  7. 点击 Save(保存)

背后的实现细节

创建界面由 personal_note_page.dart 中的 PersonalNotePage 驱动,它继承自通用的 BaseInfoPage 基类(base_info_page.dart)。表单包含标题输入框与正文输入框,正文输入框被标记为 isRequired: true,意味着正文不能为空才能保存(校验逻辑见 personal_note_page.dart)。

一个贴心设计:当标题留空而正文非空时,客户端会自动从正文首行生成标题。生成规则是取第一行内容,截取前 5 个单词、最长 40 个字符,超长时以 ... 结尾(见 personal_note_page.dart)。因此在快速记录时,你完全可以只写正文、不填标题。

保存时,笔记会作为 FileType.info 类型的文件上传。其内容被封装进 pubMagicMetadata(可公开元数据),并在客户端加密后再传输到服务端(见 info_file_service.dart):

final pubMagicMetadata = PubMagicMetadata(
  info: {'type': infoItem.type.name, 'data': infoItem.data.toJson()},
  noThumb: true,
);

如果在保存时未选择任何集合,客户端会自动将笔记放入「未分类(Uncategorized)」集合(见 base_info_page.dart)。

笔记核心功能

富文本内容

笔记支持纯文本内容,并且没有字符数限制——官方明确说明"Write as much as you need - there's no character limit"。正文输入框为多行输入(TextInputType.multiline),查看模式下正文最多可展开到 24 行(见 personal_note_page.dart)。

提示:由于没有字符上限,一篇笔记可以容纳很长的加密草稿或完整日记。相关内容也可参考 FAQ:笔记是否有字符数限制FAQ:笔记能否格式化文本

组织(集合)

笔记可以通过**集合(Collections)**进行组织,将相关内容归组。例如:

  • 创建一个 "Work"(工作)集合,存放与工作相关的笔记
  • 创建一个 "Personal"(私人)集合,存放私人条目

在编辑界面底部,你可以通过集合选择器(CollectionSelectionWidget,见 personal_note_page.dart)勾选一个或多个集合,同一篇笔记可以同时属于多个集合。关于集合的完整介绍参见集合(Collections)文档

保存时的集合归属逻辑值得一提(见 base_info_page.dart):

  • 新笔记若未选集合,自动进入「未分类」集合;
  • 编辑已有笔记时,如果选中了「收藏(Important)」集合,会通过 FavoritesService 同步收藏状态;
  • 集合变更会通过 CollectionService.sync() 与云端同步。

搜索

你可以使用搜索功能快速定位笔记。搜索匹配的是笔记的标题(title)。搜索界面与结果视图的实现参见 item_list_view.dartsearch_result_view.dart。更详细的搜索能力参见搜索(Search)文档

编辑笔记

编辑已有笔记的步骤:

  1. 点击一条笔记将其打开
  2. 点击编辑按钮(查看模式右上角的铅笔图标)
  3. 修改内容
  4. 点击 Save(保存)

编辑状态由 BaseInfoPageState 管理:打开笔记时通过 InfoFileService.extractInfoFromFile 从文件元数据中还原出 PersonalNoteData(见 info_file_service.dart),编辑后通过 MetadataUpdaterService.updateFileMetadata 增量更新元数据;若标题发生变化,还会同时写入 editedName(编辑名)与 editTime 时间戳(见 info_file_service.dart)。

此外,笔记页还内置了未保存更改保护:编辑模式下若标题或正文发生变化,返回时会弹出「放弃更改」确认对话框(hasUnsavedChanges 逻辑见 personal_note_page.dart),避免误触返回丢失内容。

分享笔记

笔记支持两种分享方式:

方式一:通过公开链接分享单篇笔记

  1. 长按要分享的笔记
  2. 点击分享按钮
  3. 点击 Share link(分享链接)

这会生成一个公开分享链接(share link),任何获得链接的人都可以访问这篇笔记。链接管理界面由 share_link_sheet.dart 实现,支持创建、复制与删除分享链接,删除时需二次确认;其网络请求封装在 links_client.dart(如 DELETE /files/share-url/{linkID})。公开链接的更多能力(密码保护、设备限制、过期时间等)参见公开链接(Public Links)文档

方式二:与其他 Ente 用户共享

要把笔记共享给另一位 Ente 用户,请将该笔记加入某个集合,并共享该集合——笔记会随集合一起被共享给协作者。集合共享的详细说明参见共享(Sharing)文档与用户共享(Share with users)文档

与其他信息类型的对比

信息类型 核心字段 适用场景
个人笔记 Note title + content 任意自由文本,无固定结构
账户凭据 Account Credential name + username + password + notes 网站/应用登录信息
实物记录 Physical Record name + location + notes 卡片、证件等实物位置
紧急联系人 Emergency Contact name + contactDetails + notes 紧急情况下可联系的他人信息

四种类型共享同一套 InfoItem 数据模型(类型标识 + 数据 + 创建/更新时间)与加密上传管线,因此笔记可以随时与其它类型一样被加密、同步、收藏与搜索。参见信息类型总览

常见问题(FAQ)

关于笔记的常见问题集中在信息类型 FAQ

小结

Ente Locker 的个人笔记以最简洁的「标题 + 正文」模型,承载了端到端加密的任意文本存储能力:创建零门槛(标题可自动生成)、无字符上限、集合多维组织、标题级快速搜索,并通过公开链接与集合共享两种方式安全分发。其底层实现——PersonalNoteData 数据模型、InfoFileService 加密上传管线、BaseInfoPage 通用编辑框架——共同保证了笔记与其他信息类型一致的加密强度与使用体验。

热门项目推荐
相关项目推荐

项目优选

收起
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.15 K
2.77 K
kernelkernel
deepin linux kernel
C
34
18
docsdocs
暂无描述
Markdown
900
5.83 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
929
1.85 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
860
1.36 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.94 K
1.03 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.37 K
1.47 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
534
603
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
548
398
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Markdown
77
23