Windows 桌面版 · 离线可用

EsprinNemo

Note, Nothing.

本地优先、离线可用的极简 Markdown 笔记应用。无账号体系,无云端托管, 笔记是数据目录下可直接打开、可备份、可迁移的 .md 文件。

网络功能仅两项,且均需手动配置后才可能发起请求:自建同步与 AI 助手。 语音转文本在本机识别,音频不出本机。

安装版与便携版可选 · 自动更新默认开启,可在设置中关闭

主界面 · 侧边栏 / 笔记列表 / 编辑器 / AI 面板
平台
Windows 10 / 11
存储
纯 Markdown(.md)
账号
无账号体系
默认网络
不发起外部请求

01界面

真实截图,而非效果图

下列图片均截自应用运行界面。浅色 / 深色主题、主题风格、圆角尺度、主题色与字体 都在设置中即时生效,切换无闪屏。

主题

浅色 / 深色 / 跟随系统三态,首屏渲染前同步注入,切换无闪屏。

主题风格

默认与 Alom 两档。Alom 以柔和投影与半透明材质区分卡片、浮层与背景,配合更大的圆角。

圆角尺度

纯方 / 微圆角 / 默认 / 大圆四档,拖动时连续跟随,松手后吸附至最近档位;卡片、按钮、输入框、标签、开关与滚动条一并跟随。

主题色

预设色板或自定义取色(#RRGGBB 与 #RGB),深浅主题下自动换算背景透明度与按钮文字色。

字体

界面字体与文档字体分别设置,西文与 CJK 分开配置、按字符逐个回退,并带实时预览;本机字体列表直接解析字体文件枚举。

界面布局

现代布局(默认)移除标题栏、标签栏移至工作区顶部;经典布局保留标题栏与标签栏。切换即时生效,编辑内容与已打开标签不受影响。

02功能特性

该有的都在,不该有的没有

无账号体系,无云端托管,无遥测。笔记与待办共用同一套存储格式、同一个编辑器与同一个废纸篓。

纯 Markdown 存储

笔记保存为 data/notes/{id}.md,标题、文件夹、标签、置顶与废纸篓状态以内嵌注释写在文件开头,可被任意编辑器直接打开。

待办清单

独立的待办入口,卡片左侧的勾选框可切换完成状态,已完成显示删除线。与笔记共用同一套存储格式、同一个编辑器与同一个废纸篓。

多标签页

可同时打开多篇内容,按住标签左右拖动调整顺序,Ctrl+Tab 依次切换。现代布局将该行标签置于工作区顶部。

文件夹与标签

侧边栏提供「笔记 / 待办 / 已置顶 / 废纸篓」四个入口,另有文件夹归类与标签过滤;在已置顶、废纸篓、文件夹与标签视图中笔记与待办混排。

搜索与排序

Ctrl+K 聚焦搜索框;排序支持修改时间、创建时间与标题 A-Z。侧边栏可收起,收起状态写入配置。

导出与废纸篓

右键菜单提供导出 Markdown、置顶、标记完成与移入废纸篓。废纸篓支持恢复与彻底删除,保留天数可选永不清理 / 10 / 30 / 60 / 365 天。

三种视图模式

编辑 / 分屏 / 预览一键切换,分屏即时对照内置的轻量 Markdown 渲染,配合加粗、标题、列表、引用、代码块等格式化工具栏。

小本本

屏幕右下角的便利贴小窗口,始终置顶、自动保存。未关联笔记时点击保存即新建一篇并关联,此后编辑的即为该篇。

托盘与后台驻留

托盘菜单可打开主窗口、唤出小本本、新建笔记 / 待办、进入设置或退出;托盘存在时关闭窗口仅收起界面,应用继续在后台运行。

开机自启

登录系统后自动启动并打开主窗口,实现方式为写入系统登录启动项。默认关闭,开发运行不提供该开关。

自动更新

启动后自动检查更新源并在后台下载,装好后询问是否重启安装;升级向导只有一条进度条,笔记与数据位置记录均不受影响。直连 GitHub 较慢时可打开 gh-proxy 加速。

拼写检查

可在设置中开启,编辑标题与正文时以红色波浪线标出拼写错误。

03随口记

语音转文本,音频不出本机

Ctrl+Shift+M 唤出,识别结果按句插入光标处(标题框或正文框), 插入后由编辑器自身的自动保存链路落盘。

  • 本机识别:识别走 Windows 自带的桌面识别引擎(System.Speech 的 DictationGrammar),由主进程拉起独立的识别进程完成。音频只进本机引擎,既不经过网络,也不经过渲染进程。
  • 语言要先在系统里装好:识别语言可选普通话 / 英语 / 日语,系统需为该语言安装「语音识别」功能。未安装时随口记拒绝启动,并列出系统当前可用的语言。
  • 引擎状态可见:设置页「系统识别引擎」一行显示系统已安装的识别语言与引擎标识,可随时重新检测。
  • 聆听反馈:顶栏按钮点亮成主题色,顶栏下方出现聆听条,显示当前状态与尚未定稿的实时片段;定稿的句子直接进正文。
  • 收尾:再点一次按钮、点聆听条上的「停止」或按 Esc 停止。切换条目、进入设置页或条目被移入废纸篓时自动停止,识别结果不会被插到别的条目上。
  • 麦克风权限:由系统识别进程访问麦克风,需在「设置 → 隐私和安全性 → 麦克风」中允许桌面应用访问麦克风。
聆听条
正在聆听 停止

定稿的句子直接写入正文。

尚未定稿的实时片段仅作提示,不写进笔记

界面示意

04AI 助手(可选)

不配置,就不联网

在设置中填写 API 站点、API Key 与模型即可使用,兼容 OpenAI 协议的站点可直接接入, 地址旁另提供 DeepSeek 与 Ollama 的快捷填入。关闭总开关后界面不再保留任何 AI 入口,配置原样保留。

  • 密钥交给系统密钥链:Windows 用 DPAPI、macOS 用 Keychain、Linux 用 libsecret。密钥不写入数据目录,备份、同步或分享数据目录都不会带走密钥。
  • 结合笔记提问:附带范围可选「仅当前内容 / 全部笔记 / 不附带笔记」,附带数量与字数均有上限。请求由主进程代理发出,密钥不经 IPC 往返。
  • 流式回答与多对话:逐字生成、可随时停止;回答可复制、插入当前笔记或存为新笔记。对话记录保存在本机 ai_chats/ 下,保留上限为 50 份对话。
  • 图片与文件:选择、拖入或直接粘贴截图,图片按多模态发送,文本文件内容内联进提问。单条消息附件上限 6 个,单张图片 10 MB,单个文本文件 1 MB。
  • Agent 模式:模型可调用工具搜索、阅读、新建与修改笔记,单次提问最多执行 6 步。每一步都列为带「撤销」的操作卡片,移入废纸篓前仍会单独确认。
  • 自定义人设:可填写系统提示词约束 AI 的身份与回答风格,留空则使用内置提示词。
对话面板

把本周的课堂记录整理成一篇提纲

list_notes read_note update_note_content 撤销

已按课堂记录整理出三级提纲,并写回原笔记。

复制 插入当前笔记 存为新笔记
Agent 模式 · 已执行 3 步 / 上限 6 步 停止

界面示意,内容为示例文本

05数据与隐私

笔记就在磁盘上,搬走就是全部

不上传、无遥测。除主动使用自建同步与 AI 助手、以及默认开启的自动更新检查外,不发起任何网络请求。

  • 数据目录可迁移:在设置中更改存放位置,自动迁移现有笔记并即时生效,无需重启。
  • 安装版与开发版隔离:安装版使用应用配置目录,便携版使用程序目录,开发运行使用项目内 data/,三者互不干扰。
  • 安装即可选位置:Windows 安装向导可分别选择安装位置与数据存放位置,之后也能随时在应用内调整。
  • 手改文件同样生效:直接往 notes/ 放入一个 .md,启动时会被当成新笔记载入并补齐元数据。
  • 整个目录即一份备份:复制数据目录即完成迁移,用 Git 初始化即获得完整历史版本;不存在索引文件,单篇文件自带全部元数据。
运行方式 位置记录文件 默认数据目录
安装版 %APPDATA%\esprin_nemo\data_path.json %APPDATA%\esprin_nemo\data
便携版 便携版目录下的 data_path.json 便携版目录下的 data/
开发运行(bun start) 不使用记录文件 项目内 data/
数据目录
data/
data/
├── notes/          # 笔记:{id}.md
├── todos/          # 待办:{id}.md
├── ai_chats/       # AI 对话:{id}.json
├── ai_files/       # AI 图片附件
├── config.json      # 界面与功能配置
└── scratchpad.json  # 小本本内容
<!--EsprinData title: "课堂记录" folder: tags: [课程] isPinned: false isTrashed: false createdAt: 1789837475335 updatedAt: 1789840300633 -->

06自建同步(可选)

删除即删除,日志即数据

默认关闭,未填写服务器地址时不会发起任何请求。数据以「操作日志」形式保存在自建服务端目录, 把日志从头重放一遍即为全部数据。

同步模型 客户端可见信息 删除的后果
文件快照 + 目录对比 远端存在 / 不存在某文件 「删除」与「从未见过」不可区分,其他设备会把本地缺失视为待上传,从而重新生成该文件
操作日志(本项目) 逐条 put / del 操作及其全局序号 删除是一条明确的删除标记,重放只会删除,不会反向产生写回

同步流程

  1. 1

    推送

    本地保存或删除后,渲染进程只发送路径通知;主进程读取文件、计算 SHA-256 并生成一条操作入队,约 0.8 秒(合并窗口)后推送至服务端,服务端分配全局序号并追加写入日志。

  2. 2

    拉取

    从「已应用到第几号」之后逐页取操作并重放:put 在本地哈希相同时跳过,否则原子写入;del 在本地不存在时不做任何事——这是删除不会被补回来的关键。

  3. 3

    通知界面

    重放实际改动了文件时,主进程通知界面重新载入数据,编辑器中未保存的内容会先落盘。

  • 服务端是单个 Python 文件:主体为 sync.py,仅使用标准库;支持多个账户,每个账户一份独立的操作日志,按行追加。
  • 令牌不进配置文件:访问令牌与 AI Key 共用系统密钥链存储;服务端只保存 HMAC-SHA256 摘要,明文仅在创建或重置时显示一次,可绑定设备。
  • 启动即同步:只要自建同步开启,每次启动都会先拉取并重放,再推送本地改动,与「自动同步」的间隔设置无关。
  • 彻底删除即从日志消失:被彻底删除的条目,其正文与修改历史会从日志中抹掉,只留一行删除标记;其余操作的序号不变。
  • 日志即数据:管理后台可下载整份日志;客户端能把日志导入本地数据目录,或摊成一个与数据目录同构的文件夹。
  • 鉴权与路径安全:同步接口一律要求凭据,未携带凭据一律返回 401;服务端只接受数据目录内的相对路径,绝对路径与 .. 一律拒绝。

07快捷键

常用操作全部对应到键盘

小本本窗口另有独立的一套。

快捷键 作用范围 功能
Ctrl + N主窗口新建笔记
Ctrl + Shift + N主窗口新建待办
Ctrl + K主窗口聚焦搜索框
Ctrl + S主窗口保存当前笔记或待办
Ctrl + Tab / Ctrl + Shift + Tab主窗口在打开的标签之间向后 / 向前切换(标签栏收起时不生效)
Ctrl + Shift + M主窗口开始 / 停止随口记(语音转文本)
Esc主窗口停止随口记
Ctrl + S小本本窗口未关联笔记时新建为笔记并关联;已关联时保存回该篇笔记
Ctrl + O小本本窗口打开笔记选择面板
Tab编辑器内插入缩进

08下载

Get EsprinNemo

当前仅面向 Windows:安装包(NSIS)与便携版均由 electron-builder 的 win 目标产出。

v3.1.3 最新发布

安装版与便携版均在 GitHub Releases 发布,两者都不需要账号,安装完成后即可离线使用。

向导式安装

安装向导可选择安装位置与数据存放位置;便携版每次启动解压到临时目录运行,不写注册表。

内置更新

启动后自动检查更新源并在后台下载,装好后询问是否重启安装;也可在设置中随时手动检查与安装。

不上传任何数据

没有遥测与账号体系,笔记始终是磁盘上的 .md 文件。

从源码运行
# 环境要求:Node.js 与 bun
bun install      # 安装依赖
bun run start   # 开发运行
bun run build   # 打包 Windows 安装包与便携版