帮助与功能

LightNote 所有功能的完整文档——与在应用中按 F1 键打开的帮助相同。使用下面的目录跳转到任意功能。

✍️ 代码编辑器 🧠 笔记与第二大脑 🤖 Vibe coding(AI + MCP)

LightNote 帮助

适用于 Windows 的轻量代码与笔记编辑器。侧边栏列出各章节,并跟随你正在阅读的位置。 窗口顶部的 首页 和 返回 按钮可回到开头,搜索 框可在本帮助的文本中查找(Enter 向前,F3 / Shift+F3 导航)。随时按 F1,本帮助会在与当前界面对应的章节处打开。

目录

编辑

工具

自动化(AI / 脚本)

参考


概述

LightNote 将文件夹作为工作区打开,左侧是文件树, 右侧是编辑标签,底部是状态栏。通过侧边栏顶部的细条,可在 资源管理器(树)、搜索、版本控制(Git)、 文件历史、待办项(TODO/FIXME 和笔记中的任务)等各章节之间切换。

不仅是代码和笔记,你还可以在合适的位置打开并编辑各种格式: 表格(通过 DuckDB 的 Parquet/CSV/JSON 以及 Excel .xlsx)、PDF、图像 (包括动画 GIF)、作为文件夹的 .zip、块 笔记本(.lnb)、任务看板(.lnt)、 自定义表格(.lnd)、数据库连接 (.lnc)、SSH 连接(.lns)。它还具备集成终端、 全局搜索(ripgrep)、简化的 Git 版本控制、AI CLI 集成、 MCP 服务器以及用于自动化的命令行(lnote)。

初次使用?介绍材料(欢迎工作区)可随时通过帮助 → 重新打开欢迎导览再次查看。

工作区与窗口

根文件夹与窗口

你打开的根文件夹就是工作区。仅打开它不会创建任何内容。 关闭时,LightNote 只会写入一个小的会话文件(记录打开过的标签及其位置)。 只有当你在工具 → 工作区设置中启用版本控制(Git)或 MCP 时, 工作区才会变成拥有自身持久设置的“项目”。

常规设置适用于整个应用程序,而工作区设置仅适用于 当前打开的文件夹。设置和状态保存在中央数据库中,而不会散落在文件夹内。

LightNote 以单实例运行。打开第二个文件夹时会复用同一进程 (多窗口、省内存)。它带有一个列出工作区、含搜索框的启动器和一个托盘图标 (通过右键菜单可将常用项置顶)。 请参阅每日笔记与托盘。每个标签都可以通过 标签栏的右键菜单设置颜色标记。 对于反复使用的笔记,可在工作区根目录创建一个含 .md 文件的 Modelos (或 Templates)文件夹,并使用 文件 → 从模板创建新笔记…。 同一个列表里还内置了四个学术模板 —— 学术论文、阅读笔记、实验记录和实验方案:选中其中一个,就会把该 .md 写入这个文件夹,此后它就归你随意修改。

整理和编写模板。Templates 的子文件夹会成为分类:工作/会议.md 显示为 工作/会议,文件夹采用该模板时记录的也是这个名字。{{title}}、{{date}}、{{time}} 和 {{date:dd/MM/yyyy}} 这些字段在创建时填入——标题就是笔记的名字,创建后尚未写入任何内容时立即重命名,标题会随之重做——而代码里(反引号之间或代码块中)不会替换任何内容,这样模板就能讲解自己的语法。在模板中,它们和待填写的字段一样带有相同的底色(在格式编辑器中还有表示语法的实线边框);在普通笔记里它们不着色,因为在那里它们不起任何作用。模板的 frontmatter 会带入笔记,但描述模板本身的 description: 和属于文件夹的 citation-style: 除外。模板和提示词(Prompts/ 文件夹)是工具而不是内容:它们不参与按含义搜索,也不进入 AI 聊天的上下文,其中声明的标签和 aliases: 也不计入——文本搜索仍然能找到两者。打开模板时,编辑器顶部的横幅会说明这是模板,并提供插入字段、显示语法和预览——现在创建的笔记是什么样。模板库(在工具菜单中,与文件 → 从模板创建新笔记…打开的是同一个)会列出全部模板,支持按名称和描述搜索,按子文件夹分组,并显示预览;新模板也在这里创建——也可以由打开的笔记创建,这时它的标题和今天的日期会变成字段。 模板库还会显示一个来自网站分组:由我们发布的模板,使用界面语言,只在你打开模板库时才去获取。导入就是复制——模板会变成你在 Templates 中的文件,此后两者之间不再有任何关联:网站上修正过的模板不会追上你已经导入的那一份,而同名的自有模板始终优先。没有网络时,模板库会说明未能获取,并继续显示这台电脑上已有的模板。

待填写的字段。模板可以留下空位:{{ask:会议主题}} 是自由填写的字段,{{choice:草稿|复核|定稿}} 是一个列表。它们在创建时不会被替换——笔记诞生时它们就标记在正文里,这也正是它们在今日笔记、lnote 和 MCP 中同样有效的原因,那里没有可以提问的界面。在笔记中,格式编辑器把每个字段显示为一个带虚线边框的标签,框住它的文字(问题,或第一个选项);点击会整体选中字段,接着按下的键就会替换它。在选择字段上,点击还会打开列表:选一项就把字段换成它,不选而关闭列表则字段仍处于选中状态,可以直接输入别的内容。创建笔记时,光标已经落在第一个字段上;此后 Tab 和 Shift+Tab 在字段之间移动(状态栏会显示当前是第几个),Alt+↓ 用键盘打开选择字段的列表,Esc(或离开字段所在的行)让 Tab 恢复平常的作用。在模板本身中,显示语法 默认开启:字段显示为带实线边框的 {{…}},点击会把光标放进字段里,便于修改问题或选项;关闭时,模板显示为由它创建的笔记的样子。这六个字段也在 / 菜单和 插入 → 模板字段 中——仅限模板文件。在文本编辑器中,字段按文件里的原样显示,花括号带颜色,拼写检查不会进入其中。

新建文件

新建文件并选择类型。 新建菜单(☰ 文件、活动栏的新建按钮,或文件夹右键菜单中的新建)提供新建笔记 (.md)、新建文本文件 (.txt),以及包含常用语言的新建代码文件子菜单。三者都会立即以默认名称在磁盘上创建文件,并在文件树中打开名称编辑:只预选名称部分,因此输入标题不会把扩展名一起删掉。若接受建议的名称,只需点击编辑器开始书写。子菜单之外的扩展名,请先创建文件再重命名(F2):更改扩展名即更改视图——把 .txt 改成 .md,同一个标签页会以笔记方式重新打开,带阅读视图和大纲;反之则回到代码编辑器。LightNote 的专有扩展名(.lnc、.lne、.lnq、.lnh、.lns 以及各类 bundle)是例外:其扩展名声明了内容的格式,因此重命名会先询问确认,并在标签页打开期间被拒绝。

没来得及使用的新文件。如果你关闭刚创建的文件的标签页时没有重命名、没有保存、也没有输入任何内容,该文件会进入回收站,状态栏会提供撤消 —— 这样误触新建就不会在文件夹里留下残留。任何表明这个文件属于你的操作都会让它保留下来:重命名、保存(Ctrl+S)或输入任何内容。

草稿是一个 Markdown 编辑器。草稿标签页(它不是磁盘上的文件)使用和笔记相同的文本编辑器:标记高亮、拼写检查、[[ 自动补全,以及对 wiki 链接和标签的 Ctrl+单击。没有的东西照旧——没有文件,所以没有自动保存,也没有视图模式;内容在关闭应用后仍在,关闭标签页则消失。

新文件创建在哪里。新建始终在资源管理器中已标记的文件夹内创建,并且始终恰好有一个被标记。树的顶部是根文件夹行,显示工作区名称:它和其他条目一样,点击它即可把目标恢复为根目录。选中某个文件夹会把标记移到该文件夹;选中文件则标记包含它的文件夹。在不显示文件夹的列表模式下,标记留在根行上,并由该行显示实际的目标。根行的右键菜单提供新建和新建文件夹。

单个文件与收藏

若要打开单个文件而不将其变成工作区,请使用打开单个文件…(托盘菜单): 独立窗口会显示文件树,但没有 Git、MCP 或主题覆盖。若在 设置 → 常规 → 功能中启用,LightNote 会集成到 Windows 资源管理器的菜单中 (按用户,无需管理员权限):除了“打开方式”列表,右键菜单还会新增—— 任何文件上的“用 LightNote 打开”,以及文件夹上的“作为 LightNote 工作区打开”(在 Windows 11 中位于显示更多选项内)。文件在该独立 窗口中打开;文件夹则作为工作区打开。

在 Windows 资源管理器中一次选中多个文件时——即使它们位于不同的 文件夹——也会全部在同一个独立窗口中打开,一个标签页挨着一个标签页 (而不是每个文件各开一个窗口)。该窗口的标签页会被记住:关闭后再次打开, 同样的文件会回来。由于这里的重点是标签页,文件树默认是收起的——按 Ctrl+B(或活动栏顶部的按钮)即可显示。

回到某个会话。独立文件窗口在任何地方都叫独立文件——包括标题栏,也就是其他窗口显示工作区名称的位置,这样你可以在 Alt+Tab 中区分它们。在托盘菜单的打开下,当有已保存的标签页时,该项会加上(N 个标签页)后缀,点击即可全部找回。它也是启动器的第一行,与工作区并列。此外,重新打开 LightNote 时,会恢复退出时打开的全部内容:每个窗口回到各自的文件夹,独立窗口也一起回来。如果你更希望只打开上次使用的文件夹,请在设置 → 常规 → 界面 → 启动时打开中更改。退出前关闭的窗口不会恢复——关闭就是在说“我不再需要这个空间了”。

收藏夹:侧边栏有一个 收藏夹 区域,包含你固定的项目 (文件树或标签页的右键菜单 → 添加到收藏夹)以及最近打开的文件。固定项按 文件夹保存,并以相对路径存储,因此移动工作区后仍然保留。

在独立窗口中打开标签页:在标签页的右键菜单中,在新窗口中打开 会在独立窗口中重新打开该文件(便于将笔记放在代码旁边)。依赖工作区的类型 (.lnc、.lne、.lns 和捆绑包)无法分离。

资源管理器

在标签页打开时移动文件。在树中将文件拖到另一个文件夹,标签页会跟着走——它保持打开,指向新的位置。剪切粘贴以及移动整个文件夹(其中文件的标签页一同跟随)同理。按住 Ctrl 时,拖动为复制而非移动。拖到 LightNote 之外始终是复制:把文件从树中拖走,或从标签栏拖动标签页本身,放到 Windows 的文件夹、邮件或 Teams 对话中,原文件仍留在你的工作区。在程序内,标签页依然只是标签页:把它拖到另一个窗格只是移动标签页,带着它经过编辑器或文件树既不会写入也不会移动任何东西。

多选。 在三种视图模式下,树都支持 Ctrl+单击(逐个)和 Shift+单击(范围)。选中多个项目后,右键菜单将作用于整个选择:剪切和复制(与 Windows 资源管理器互通)、删除(只确认一次)、复制副本、复制哈希、压缩为 .zip(只生成一个压缩包,每个项目以自己的名字放在顶层)、应用颜色、收藏、Git(add/restore)以及复制路径(每项一行)。只对单个项目有意义的操作——就地重命名、属性、打开方式、转换——会被禁用,原因显示在提示中。在选择之内右键单击会保留选择;在其外单击则只选中被点击的项目。同时选中一个文件夹和它里面的东西不会重复执行操作:内部项目会被丢弃。

不打开也能看。 单击文件本就会打开一个预览标签页(会被复用,在标签栏上以斜体显示)。用方向键浏览树时,空格键做同样的事,并把焦点交还给树,方便你继续往下看。

文件工具。 资源管理器的右键菜单中有 文件工具 子菜单:批量重命名(按扩展名/通配符/正则过滤 + 带实时预览和冲突检测的规则流水线)、拆分文件(按行、大小或正则分隔符)、合并文件(可选仅保留第 1 个 CSV 表头)、创建副本、复制哈希(MD5/SHA-256)以及 压缩为 .zip / 解压到此处。 选中多个项目时,批量重命名和合并文件接收的正是所选项目(而不是扫描整个文件夹)——合并会遵循选择的顺序。

独立窗口的导航。 树的上方有后退(Alt+←)、前进(Alt+→)和向上按钮,还有一条可点击的文件夹路径——点击任一段即可跳到该层级。鼠标侧键同样可以后退和前进。要输入路径,请单击该条的空白处或按 Ctrl+L;Esc 取消并恢复路径。切换标签也会移动显示的文件夹:由于独立窗口汇集了不同文件夹的标签,单击某个标签即可导航到该标签的文件夹。

菜单与缩放

菜单。活动栏顶部的 ☰ 按钮汇集了文件、编辑、视图、窗口、工具、AI 和帮助菜单。AI 操作有独立菜单(活动栏的魔杖按钮也可打开)。在工具中,各组收入子菜单:运行(F5/F6/F8、lint、发送到终端、宏)、捕获(今日笔记、快速捕获、快速任务、录音、便签)和工作区(配置、快照、导出副本、移动文件夹)——后者也在齿轮菜单中。新建菜单在出现的三处完全一致:☰ 文件、新建按钮,以及文件夹右键菜单中的新建。

任何视图中的缩放。缩放级别只在一个地方:状态栏右侧的 − 100% + 一组按钮。中间的按钮会打开标准列表——适应宽度和适应窗口(仅在内容本身有尺寸时提供,例如 PDF 和图片)、200%、150%、120%、100%、75%、50% 各级,以及自定义…,当前生效的一项会打勾。所有带缩放的视图(代码、笔记、PDF、图片、HTML 和表格)快捷键一致:Ctrl++、Ctrl+−、回到 100% 的 Ctrl+0,以及 Ctrl+鼠标滚轮。没有缩放的视图里这组按钮根本不会出现;处于适应模式时,标签显示宽度或窗口而不是百分比。 缩放属于标签页,而不是文件:长时间未用而被释放内存的标签页,或重新打开 LightNote 后恢复的标签页,会保持你当时的缩放;重新从头打开该文件则从 100% 开始。

代码编辑器

打开、高亮与格式化

文本/代码文件会在带语法高亮的编辑器(Scintilla)中打开。 具有注释切换(Ctrl+/)、行的移动与复制、书签(Ctrl+F2)、 符号/函数列表、基于单词的自动补全、缩进参考线、自动换行、缩放, 以及对磁盘上文件变更的检测。启用版本控制后, 边距会标示自最新版本以来新增/更改的行。

还有宏(记录/回放一系列编辑。Ctrl+Shift+R / F4, 工具 → 宏)、格式化(美化)(Shift+Alt+F)、 用于插入字符或边框的标签工具栏 ASCII 表、拼写检查 (Hunspell)。pt-BR 和 en-US 已内置;其他语言可在设置 → 笔记与写作 → 拼写 的表格中按需下载(每种语言一行,带下载/移除按钮)。 要跟踪正在写入的日志文件,请使用标签专属工具栏上的 监视(tail -f)按钮。非常大的文件(约 1 MB 以上)会以 仅加载当前可见块的虚拟化轻量编辑器打开。 也可以从文件 → 在轻量编辑器中打开…手动强制使用。

格式化与检查(linter): Shift+Alt+F 会在已安装时用该语言的 外部格式化工具(black、prettier、clang-format、gofmt、rustfmt 等)格式化文档, 离线时回退到内置格式化工具(JSON/XML);F7 运行该语言的 linter (ruff、eslint、shellcheck、luacheck 等),并在编辑器和问题面板 (底部窗格,可导航)中以下划线标出问题。二者都在设置 → 格式化和 → Linter中提供带添加的目录,以及保存时格式化 / 保存时检查 选项。用 F6 在输出面板中运行文件(捕获退出码与耗时,可停止/重启), 或用 F8 只运行一段。

以代码方式打开的 .md 一键就能变回笔记。当打开的文件是笔记时,编辑器工具栏会显示作为笔记打开——这是树形菜单中打开方式 → 代码的反向操作,把标签页还原为笔记视图,带格式化编辑、阅读、大纲和属性。只有在可以切换时按钮才出现:过大的笔记仍留在代码编辑器中。

多光标、历史与定义

更多编辑功能: 逐个匹配的多光标(Ctrl+D,全部用 Alt+F3)、 复制行(Ctrl+Shift+D)、合并行(Ctrl+Shift+J)、按作用域 扩大/缩小选区(Ctrl+Shift+Space / Ctrl+Alt+Space)、矩形选择 (Alt+拖动)、全部折叠/展开、代码片段(Ctrl+J,可在 设置 → 编辑器中编辑)、跳转到文件中的符号(命令面板中的 #) 与项目中的符号(Ctrl+T 或 ##)、导航历史(Alt+←/→)、 编辑器顶部的面包屑导航、列标尺、括号配对着色、自动闭合/包裹配对, 以及保存时清理(去除行尾空格、末尾换行)——都在设置 → 编辑器中。

本地历史与剪贴板: 每次保存时,LightNote 都会独立于 Git 保留文件的一个版本 (文件 → 本地历史…,可恢复)。Ctrl+Alt+V 打开剪贴板历史, 以粘贴之前复制的条目。Ctrl+Shift+T 重新打开最近关闭的标签;标签可以固定 (右键菜单),从而避免因闲置被释放。

转到定义:在标识符上按 F12 或 Ctrl+单击即可跳转到它在项目中的定义处;Shift+F12 查找其用法。

缩略图与文本操作

缩略图。 编辑器右侧边缘显示整个文档的缩略图:它呈现代码的“形状”(缩小后的语法高亮颜色),并标出当前可见区域。点击或拖动即可跳转到文件的任意位置。可在视图 → 缩略图或设置 → 编辑器中开启/关闭。 代码标签页自身工具栏上的缩略图按钮(位于 ASCII 旁边)可直接开关,无需离开编辑器。缩略图左侧边缘有一条标记条:蓝色表示有书签的行(与边栏上的圆点相同),琥珀色表示快速查找的匹配项——这样你可以一眼看出它们在整个文件中的分布,包括屏幕之外的部分。

文本操作。编辑菜单(以及编辑器的右键菜单)中有行(移动、复制、删除、排序、合并、反转、编号)和清理(去除空白、删除空行/重复行、制表符 ↔ 空格)子菜单。选中文本时,右键菜单还提供将选区另存为新文件…:把片段写入当前文件旁的新文件并在标签页中打开(原文件不变)。

Markdown 与维基链接

显示模式

.md 笔记会以编辑器和阅读并排的方式打开(可配置)。 在光标所在段落之外,标记会淡化显示,使页面看起来像一篇完成的文档。

快捷键:Ctrl+B/Ctrl+I 应用加粗/斜体,Ctrl+E 循环切换视图模式(编辑 → 分栏 → 格式化 → 阅读)。

/ 菜单:在格式化编辑器中,于行首(有缩进也可以)或空格之后输入 /,插入列表就会在光标处打开。输入即可筛选(/表格、/标注、/h1),用 ↑/↓ 选择、Enter 插入;Esc 或空格关闭列表,已输入的内容保留为文本。右侧一列显示该项写入的标记 — 下次可以直接输入。在代码块、公式和表格单元格中不会打开该菜单。

阅读模式:Ctrl+E 的最后一个模式与格式化编辑是同一个界面,但是只读的——正因如此,它可以显示文件里没有的内容:[TOC] 标记的目录。[files] 标记的文件夹列表和用 ![[笔记]] 嵌入的笔记正文也会出现在格式化编辑里。这些都不会写入 .md:文件里保留的仍是标记,生成出来的文字也不接受编辑。在该模式下单击即可跟随链接、wiki 链接和标签(无需 Ctrl),编辑类按钮则被禁用——包括撤销、剪切和粘贴,它们此前会作用于屏幕外的文本编辑器。复制仍然可用,复制的就是你看到的内容。 Ctrl+F 在屏幕上的内容中查找;替换那一行被禁用,原因写在提示里——在这里替换不会写进文件。

阅读模式里的带单位计算。以 = 结尾的行会得到结果:3,5 km / 2 s = 显示为 3,5 km / 2 s = 1,75 km/s。文件不会改变 —— 和 [TOC]、排好的引用是同一个想法。它做量纲分析,这正是它的立身之处:1 km + 1 s = 会被拒绝并指出这两个单位,因为在那里返回 2 的计算器不是更差,而是在说谎;在实验记录里,这个错误会一路活到论文里。把同一个量的不同单位相加是可以的,并会换算(2 h + 30 min =),结果会用你写的单位给出。它认识 SI 词头、物理常数(c、h、k_B、N_A、g 等)、显式换算(3 km in m,也可用 to 和 ->)以及不确定度:(2,00 ± 0,05) m / (1,0 ± 0,1) s = 会传播误差,并只写出测量允许的位数。代码和公式不参与 —— 在 ``` 围栏里、反引号之间或 $…$ 中,行尾的 = 是别的东西的语法。不是算式的行(合计 =)会安静地保持原样。默认是关闭的:在设置 → 功能 → 学术 → 带单位的计算器里打开。

间隔重复卡片。 给笔记加上 #flashcards 标签,它就成为一个 牌组:在其中,每一行 问题::答案 就是一张卡片,::: 会同时生成反向卡片,两行之间单独一行的 ? 构成多行卡片, ==这样== 则成为填空。没有标签,任何笔记都没有卡片——这正是为了避免 编程笔记里的 std::vector 变成一张你从未写过的卡片。工具 → 卡片 → 复习卡片 打开复习会话:答案会一直藏着,直到你主动要求(这就是整个功能——把两边一起看 就是重读,而重读记不住),四个评分上直接写着各自能买多少时间。安排复习的是 FSRS,与 Anki 相同的算法。卡片的身份是「问题」:改正答案不影响复习计划, 而改写问题会让那张卡片退休并开始一张新的——这是对的,因为你学的正是问题。历史记录保存在 笔记旁边的开放文件里(笔记.md.cards.ndjson):可以用 Git 版本管理, 任何编辑器都能读,代价是文件夹里多一个文件。导出到 Anki 会写出它能导入的文本文件 ——复习计划不会一起走,因为 Anki 的文本导入不接受它;计划仍留在 .ndjson 里。

代码块

代码块会带上颜色。声明了语言的围栏(```python)会逐个标记高亮显示,使用与代码编辑器相同的配色——包括为本窗口选择的代码主题。格式化编辑、阅读模式、导出的文件以及询问笔记的回答中都有效。未声明语言的围栏仍为单色,没有可用高亮的语言也是如此:文本绝不会因此消失。

折叠、固定与导出

折叠章节和固定标题在格式化编辑和阅读模式下同样有效。Ctrl+Shift+[ 折叠光标所在的章节,Ctrl+Shift+] 展开它;点击标题左侧的小箭头效果相同,视图 → 折叠/展开所有标题 作用于当前显示的界面。滚动时,滚出顶部的标题会固定在顶部的横条中——点击其中一个即可跳转到该章节。折叠是界面状态:.md 不会改变,折叠的文字仍留在文件中。

导出:PDF 和 HTML 都由与阅读模式相同的文档生成——导出的文件就是你刚刚读到的内容,包含目录、文件夹列表和嵌入的笔记。HTML 是自包含的(本地图片会被内嵌),PDF 使用矢量文字,因此可以检索。HTML 采用语义化标记——标题带锚点、提示框用 <aside>、表格带表头、脚注可返回——并且公式是 MathML:真正的文字,可复制、可朗读,放大也不会模糊。 主题随格式而定:HTML 保留你在屏幕上看到的颜色,包括深色主题(文件自带背景);PDF 始终使用浅色纸张,因为它是用来打印和发送的——如果你的内容主题是深色,就用默认的浅色主题打印;你已经在用的浅色主题则会保留。 Word、OpenDocument、LaTeX、Typst 和 EPUB 由 LightNote 自己生成,无需安装任何东西。.docx 和 .odt 带有标题、列表、表格、脚注和图片,公式会成为可编辑的公式(在 Word 中是 Word 公式,在 LibreOffice 中是 Math 对象);.tex 带有完整的导言区,可用 pdfLaTeX、XeLaTeX 和 LuaLaTeX 编译。如果文件夹里有文献目录且学术一节已开启,.tex 会带活的引用:[@键] 变成 \autocite,[bibliography] 记号变成 \printbibliography,并在旁边写入只含所引文献的 refs.bib——应用会告诉你它写了。请用 biber 编译。.typ 是同一件事在 Typst 上的做法:几秒即可编译,无需安装 LaTeX 发行版;公式通过 mitex 包(首次编译时下载)以 LaTeX 形式带过去,引用写作 @键 并配 #bibliography。.epub 是电子书:每个一级标题为一章,带导航目录,图片作为包内文件,并采用与 HTML 相同的语义化标记。.ipynb 是 Jupyter 笔记本:正文变成文本单元格,内核语言的代码块变成代码单元格——只有它,因为代码单元格会被送给内核,把 Mermaid 图变成单元格后,第一次运行就会被当作 Python 执行。内核取自笔记属性里的 kernel 键,没有则取最常见的代码块语言。输出不会被编造:单元格输出为空,因为结果来自运行——这和导入笔记本时丢弃已保存输出是同一条规则。还有Markdown 目标:同一篇笔记按目标的方言输出——GitHub 用 > [!NOTE] 提示框,MkDocs 用 !!! note,Docusaurus 用 :::note,Pandoc 用 ::: {.note},也可以用 Obsidian 写法或严格的 CommonMark。wikilink 会转成相对链接(Obsidian 除外),而 %%…%% 注释不会被发布,因为它是私人的。如果装了 Typst(winget install --id Typst.Typst),导出完成后会直接给出编译 PDF;没装时按钮变成安装 Typst...,打开安装向导。如果课程或客户给了 Word 模板,请在工作区设置 → 引用与参考文献 → Word 模板中指定它的 .docx:导出的文件会带上模板的样式、纸张、页边距和页眉。某篇笔记可以在属性里写 reference-docx: moban.docx 来改用别的模板。三者都从阅读模式的 Markdown 出发——引用已格式化,图片已编号——,没能带过去的内容会在导出结束时告诉您。Mermaid 图和化学结构以图片形式放入:在 .docx、.odt 和 EPUB 中画在浅色纸上,在 HTML 中使用屏幕配色;只有通过没有窗口可供绘制的 lnote 导出时,它们才会以代码块输出。此外还有标记文本目标…:reStructuredText、AsciiDoc、Org mode、MediaWiki 和纯文本,同样由 LightNote 自己写出。每一种都用它自己的原生写法,而不是模仿:方框在 Sphinx 里是 .. note::,在 AsciiDoc 里是 [NOTE],在 Org 里是 #+begin_note;公式分别是 .. math::、latexmath:[]、纯 LaTeX 和 <math>;脚注则是 footnote:[] 和 <ref>。纯文本不带任何标记——表格按列对齐输出,正好放进邮件或提交信息里。目标格式没有的东西会在最后告诉您:MediaWiki 的核心没有方框(它会变成带粗体标签的引用),reStructuredText 没有删除线。想不写文件就带走一段内容,可以用编辑器右键菜单中的将选区复制为(未选中时为将笔记复制为):可粘贴到 Word、Google 文档或邮件中的带格式文本、GitHub Markdown、LaTeX 和 Typst。LaTeX 和 Typst 仅含正文——没有导言区和标题——因为目标文档已经有了;这段内容需要的宏包,以及依赖目标文档文献目录的引用,会在状态栏中提示,%%…%% 注释也不会带过去。RTF 位于更多格式 (pandoc),通过单独的程序 pandoc 完成(winget install --id JohnMacFarlane.Pandoc):没有它时,这个目标会显示为禁用并附上原因,同一子菜单里的安装 pandoc...会打开向导并完成安装。如果 pandoc 已装在别处,请在向导的已经装了:从磁盘中选择...或设置 → 代码工具 → 外部程序中指定文件。

带选项导出...是导出菜单的第一项——标签页的菜单和文件 → 导出笔记是同一个菜单。它列出所有目标格式,可以按名称、用途和扩展名搜索(wiki 找到 MediaWiki,sphinx 找到 reStructuredText),并且只显示对所选格式有效的选项:笔记还没有 [TOC] 时的开头加目录;决定断字和文档自动生成的标签的文档语言;LaTeX 和 Typst 的引用(保持活引用,或在正文中解析);带有“设为此文件夹的默认模板”复选框的Word 模板;HTML 和 EPUB 的公式用 MathML 还是图片(适合旧的电子书阅读器或贴进邮件的 HTML);PDF 的纸张,A4 或 Letter;以及随后用 Typst 编译 PDF。适用但无法使用的选项会禁用并说明原因(例如文件夹里没有参考文献时的活引用),依赖缺失程序的目标格式会当场提供安装。最后一次的选择会按文件夹记住,对话框会按您离开时的样子重新打开;菜单里的直接项目仍然使用出厂设置导出,免得几周前的一次选择改变快捷方式生成的文件。笔记里写的 [TOC] 在所有目标格式中都有效:在 Word 和 LibreOffice 中成为目录(Word 在打开时更新),在 LaTeX 中成为 \tableofcontents,在 Typst 中成为 #outline(),在 HTML 和 Markdown 中成为链接列表。在将选区复制为的带格式文本里,公式和图以图片形式带过去,替代文本是 LaTeX 源码:那里不知道文本会被粘贴到哪里,而在 Word、Google 文档和邮件里显示一致的只有图片——需要可编辑的公式时,请导出 .docx 或 .odt。

整个文件夹也能导出:文件 → 导出文件夹...(或在树中右键点击一个文件夹)会把它的笔记变成一个 HTML 站点——每条笔记一个页面,如果没有笔记已经变成 index.html,还会生成一个索引页——,或者一套 .docx / .odt,或者按目标方言写成的 Markdown 目录树。子文件夹结构保持不变,笔记之间的链接和维基链接会指向导出的文件(在 Word 和 LibreOffice 里也是,从一个文档指向另一个),文件夹内部的图片和附件也会一起带走,位置照旧。文件夹外面的东西不会被复制:它保持你写下的样子,最后的报告会连同没有目标的链接一条条列出来。目标文件夹必须是空的——或者你勾选 替换同名文件——而且不能包含被导出的文件夹。没有窗口也行:lnote folder-export --path . --format html --out site,以及 MCP 的 folder_export 工具;在那里嵌入、[files] 和图号不会被解析,因为解析它们的是窗口。

格式化编辑

格式化编辑(WYSIWYG):第四种模式显示笔记的成品样子——标题用标题字号、 列表带项目符号、表格是网格、图片就在正文里——而不是标记。文件仍然是同一个 .md:写文件的是 LightNote 而不是 Qt,所以加粗、斜体、维基链接、嵌入和提示框 都能经受住来回转换。进入该模式又不作编辑地离开,文件一个字节也不会变。工具栏只提供 Markdown 能表示的东西——标题、加粗、斜体、删除线、代码、列表(含任务复选框)、引用、 链接、表格和水平线;对齐、缩进和字号不在其中,因为保存时会丢失。

在表格里,Tab 在单元格之间移动,在最后一个单元格上创建下一行。 在表格右侧的空白处(点击某行右边时光标会落到那里)按 Enter,会在表格末尾新增 一行,光标停在第一个单元格。 在单元格里,Enter 就地换行(写入文件时是 <br>,这是 Markdown 表格唯一接受的形式),Ctrl+Enter 则在下方新增一行,光标停在同一列。 把鼠标移到表格上会出现低调的手柄:行的左边是上下移动它的一对箭头(也可以 拖动把它带到别处),列的上方是左右移动它的一对,下边框和右边框上各有一个 +,分别新增一行和一列。第一行是表头,不会移动。这些在右键菜单的 表格里也都有;那里还有 删除表格,这是整张表格移除的安全做法。

在方框(<details> 或 :::)里,最后一行用于闭合 方框,无法删除:正是它让下面的内容不会被方框吞进去。要在保留文字的前提下取消 方框,请使用右键菜单里的移除方框。Enter 总是新增一行。在空的列表项里, 它离开列表而不新增行(和 Word 一样);在空段落里,它新增空行。文件中的一个空行是段落之间 的正常分隔,不会显示为空行;从第二个开始才会显示,并按你写的样子回到文件里。

拖动图片右边缘可以调整大小,宽度会以 ![alt|300](foto.png) 的形式写入文件。工具栏有十二个控件:粗体、斜体和标题直接放置,其余按用途分入两个菜单——格式作用于已经写下的内容(标记、列表、引用、表格对齐以及文本操作),插入则创建新内容(链接、图片、表格、块、图表、公式、提示框)。格式化表格和文本菜单仍属于文本编辑器:在这里它们显示为禁用,并说明原因。淡化标记移到了显示按钮,与在四种模式下都可用的阅读栏和打字机滚动相邻。而插入菜单在这里提供与文本编辑器相同的内容——高亮、上标、下标、维基链接、脚注、提示框(callout)、可折叠块、目录和定义列表——即这个模式已经会显示却不会创建的一切。

阅读模式显示的东西,格式化编辑现在也显示。 表情符 :fire: 显示为 🔥,==高亮== 显示为黄色标记,^2^ 和 ~2~ 显示为上标和下标,#标签 显示为药丸形,裸露的网址显示为链接。文件保持写下来的形式:打开笔记不会改写任何内容。在已渲染的片段内部编辑会保留标记——在高亮中间输入仍然是高亮——而紧接其后输入的字符会留在外面。注释 %%…%% 仍然可见,只是淡化:把它藏起来会让它既看不见又无法编辑。

标注在格式化编辑中也会变成方框。 以 > [!NOTE](或 [!TIP]、[!IMPORTANT]、[!WARNING]、[!CAUTION])开头的引用会显示为带颜色的竖条和标题,和阅读模式一样:标记让位给类型的名称,或者在你写 > [!TIP] 我的标题 时让位给你自己的标题。文件里仍保留写下的标记,编辑标题也不会改变标注的类型。 Obsidian 和 MkDocs 的提示框名称同样能识别:[!SUCCESS]、[!ABSTRACT]、[!FAILURE]、[!QUESTION] 及其别名(tldr、missing、faq)会落到最接近的提示框,从那里带来的笔记直接就有颜色;导出时,每个目标会收到它认识的名称。

这是全新安装时的默认模式。已经在使用 LightNote 的用户会保留原有模式;如需更改,请使用设置 → Markdown → 打开笔记时的默认视图。点击大纲中的标题会在当前模式内跳转,不会把你带出格式化编辑或阅读模式。

对齐表格的列。将光标放在表格内,右键菜单会提供 表格 → 列对齐:左对齐、居中、右对齐 或 默认。对齐作用于 整列——Markdown 就是这样表示的——并会写入文件的分隔行(:--、:-:、--:);默认 会回到 ---。菜单上的勾选告诉你当前生效的是哪一个:在屏幕上,--- 列和 :-- 列看起来一样。

大纲显示屏幕上的内容。标题列表来自你正在看的那个面:在 格式化编辑 中,刚输入的标题会立即出现,不必等文本传到文本编辑器;在 阅读模式 中,它还包括用 ![[笔记]] 嵌入的笔记的标题——它们也是你正在阅读的内容。两种情况下,单击条目都会跳到正确的标题。而在 分屏模式 下,滚动现在是双向的:滚动阅读窗格会带着文本编辑器一起走,就像反方向一直那样。

标记在输入时变成格式。输入 **测试** 会应用加粗并去掉星号; *斜体*、~~删除线~~、`代码` 以及下划线形式同理。 在行首,#  到 ######  变成标题,-  和 1.  变成列表(输入的数字就是起始编号),- [ ]  变成带复选框的任务,>  变成引用,单独一行的 --- 按 Enter 变成水平线。会画出东西的标记在空格时就生效; 只有标题要等第一个字符,因为空标题在屏幕上什么也不显示。Ctrl+Z 只撤销这次转换, 把字面标记还回来——这是真的想写星号的人的出路。粘贴也会转换:带标记的文本粘贴进来会以格式化的样子出现,没有标记符号。这里的判定比输入时更谨慎——只有明确的标记才会触发——因为粘贴时你看不到结果成形:这样一段满是 * 和 _ 的代码仍然是代码。代码块里不转换任何东西,因为那里标记本身 就是主题。要全部关闭:设置 → 常规 → 输入时转换标记。 从 Word、Google 文档或网页粘贴时,进来的是带结构的文本:标题、列表(包括 Word 那种底层并不是列表的)、表格、链接、行内代码,以及带语言的代码块。来源的字体、字号和颜色不会进来:Markdown 无法表达它们,留着只会多出一段保存后就消失的蓝色 Arial 文字。 随文本一起粘贴的图片,如果是 Word 或浏览器放在临时文件夹(会自动清空)里的,就会成为笔记的附件;指向互联网的图片保持原样,它的右键菜单提供 把图片下载到工作区。

图片、链接与维基链接

图片和链接。插入图片有三条路:工具栏的 插入 → 图片…、 输入 ![](foto.png),或者把文件拖进笔记——拖图片插入图片,拖 .md 笔记插入 [[维基链接]],其他文件则变成以文件名为标签的可点击链接; 一次拖入多个文件时,每个各占一行。保存的路径尽可能相对于笔记所在的文件夹,这样移动笔记库之后笔记仍然能用。 链接的地址不会出现在正文里(看到的是标签),所以鼠标悬停时会显示在状态栏, Ctrl+点击可以打开:网址交给浏览器,本地路径在 LightNote 里打开。

编辑已有的链接:把光标放进去,用工具栏的 链接 按钮(或右键菜单的 编辑链接…)——对话框会带着文本和地址打开。链接上的右键菜单还有 复制链接地址 和 删除链接,后者去掉链接而保留文字。在 [[维基链接]] 上有 打开笔记 和 复制目标;在 #标签 上有 搜索标签 和 复制标签。在图片上有 替代文本…(格式化模式里看不到,但它会写入文件、进入搜索),拖过手柄之后还有 原始大小,把图片还原成它本来的大小。在网址图片上会出现 把图片下载到工作区:文件会放到笔记旁边的 附件/,笔记指向它—— 否则笔记就得依赖那个网址一直存在。 还有最短的一条路:选中一段文字再粘贴网址,它会变成 [文字](网址),而不是替换掉选中的内容。两个编辑界面都适用。 在下载之前,网络图片会显示成一张写着网址和菜单路径的卡片——LightNote 渲染笔记时不会访问网络,而以前那里只有一个空的破图方框,什么也不说明。

标记也可以取消。 在格式菜单里,高亮、上标和 下标在光标位于其中时会显示为已勾选,点击就是取消标记,而不是再 应用一次。键盘上有快捷路径:把光标放在带格式文本的末尾, Ctrl+Shift+Backspace 会还原字面标记并少一个字符——粗体变成普通 文本的 **粗体*——补上缺少的定界符就会重新形成格式。粗体、斜体、删除线、 代码、高亮、上标和下标都适用。单独的 Backspace 删除一个字符,这里和别处 一样。

不离开笔记也能编辑图表。在格式化编辑器里,Mermaid 图表和 $$…$$ 公式是画出来的;要改源文本,把光标放上去按 Ctrl+Enter, 或用右键菜单里的编辑此块…。底部的条会显示文本,条打开时笔记处于锁定状态,关闭它 (✕、Esc、Ctrl+Enter、点一下笔记)就是应用,回头路是 Ctrl+Z。同一个菜单里的 提取为新笔记…会把选中的片段写到旁边一篇新笔记里,并在原处留下一个 [[wikilink]] —— 标记也一起带走,所以标题、列表和表格会完整地到达新笔记。字段只显示内容本身:```mermaid 与 ``` 两行(或 $$)变成了工具条标题栏中的类型选择器,它还能在图表、公式和代码块之间切换。Enter 会保留该行的缩进——在 Mermaid 这类依赖缩进的语言里,这是每一行都要做的动作。块的右键菜单提供复制 Markdown 代码和复制图片——代码粘到任何 Markdown 编辑器都会重新绘制,图片则可以粘到邮件或聊天里。两者在仅阅读模式下同样可用。

让 AI 来改。块的编辑栏打开时,标题行里的 AI 按钮会展开一行, 在那里写下要改什么 —— “加一条回到起点的出错路径”、“把求和换成积分” —— 按 Enter 发送。输入框旁边有一个按钮,显示由哪个 AI 来回答: 它的菜单只为这个块换助手,不动你的默认 AI,并且带有 查看将要发送的内容。 值得看一眼,因为 AI 收到的不只是这个块,还有笔记的标题和小节以及 周围的文字 —— 正因如此,你才可以要求图表反映那里写的内容。回答会填进字段, 图当场重画:Ctrl+Z 会把你原先写的内容找回来。LightNote 会用自己的渲染器 检查回答,画不出来时,把被拒绝的那一行和那个命令告诉模型,只请求一次 修正 —— 再不行就照样写进去,并把原因留在栏里,方便你手动改那两行。 这个按钮只在图表、公式和化学结构上出现。

指向某个小节,以及用属性打标签。[[笔记#小节]] 会在那个小节处打开笔记——锚点指的是标题文字——而 ![[笔记#小节]] 只嵌入那一段(到下一个同级或更高级的标题为止,包含其中的小标题)。对不上任何标题的锚点 会在状态栏说明,嵌入保持原样:在那里换成整篇笔记,等于悄悄给出另一样东西。另外,frontmatter 里的 tags: 现在算作笔记的标签,两种写法都算(tags: [a, b] 和分行的列表)——它们会进入 Bases、标签搜索以及助手看到的内容,和正文里的 #标签 一起。 不写笔记名时,锚点指向笔记本身:[[#结论]] 会跳到该小节而不打开任何标签页,![[#结论]] 则把该小节嵌入到你所在的位置。锚点还可以嵌套:[[论文#方法#样本]] 指的是方法里面的那个样本,而不是笔记中第一个同名标题。 第三种形式指向一个块:以 ^id 结尾的行(或紧接在块下方、只有 ^id 的一行)就是 [[笔记#^id]] 的目标。LightNote 不会创建这些标识符,它只把你带到你写下的地方。而当目标不是笔记时,锚点指的是它内部的位置:[[论文.pdf#page=3]] 会在那一页打开 PDF。

标签面板。侧边栏的条带里有一个标签分区:笔记中所有 #标签 的树,按 / 嵌套(#project/alpha 和 #project/beta 成为 project 的分支),旁边是笔记数——按笔记计数,而不是按出现次数。选中一个标签,下方就列出带有它的笔记(父节点也会显示分支里的);双击打开笔记。面板读取索引,因此两种来源都看得到:正文里的 #标签 和 frontmatter 里的 tags:。在笔记里 Ctrl+单击某个标签会打开这个面板并选中它——以前打开的是对 #标签 的全文搜索,那样找不到在 frontmatter 中声明标签的笔记。要找正文里字面出现的地方,请继续用全局搜索。

维基链接: 输入 [[ 会从工作区的笔记中自动补全, 链接会以 ]] 自动闭合。按住 Ctrl 单击 [[笔记]] 会打开对应的笔记。 连接面板会显示笔记之间的关联。 Obsidian 的内嵌图片也会显示:![[照片.png]] 会被画成图像,![[照片.png|300]] 还会遵守宽度。文件里保留的仍是你写下的写法——图片路径绝不会被写进去替换掉这个记号。 不是图片的附件会变成卡片:![[论文.pdf#page=3]]、![[讲课.ogg]] 和 ![[地图.canvas]] 会显示为带文件名的方框,可以点击——PDF 会在你指定的页码打开。Obsidian 的 .canvas 和 .base 多一行,说明文件仍在文件夹里,而 LightNote 不绘制它。不存在的目标保持你写下的样子:在那里放一张卡片,等于承诺一个已经丢失的文件。 在句子中间,图片照样显示,附件则只显示文件名,Ctrl+单击即可打开:在那里放一个方框会把段落拆开。 同一则笔记的另一个名字:在笔记属性里写 aliases: [抽样, 抽样方法],[[抽样]] 就会打开它——别名也会进入 [[ 的自动补全。若有同名文件,文件始终优先于别名。别名来自文件夹的索引,应用在打开工作区时会在后台重建它:刚写下的 aliases: 会在下一次扫描后生效,而不是同一秒。

提示框、脚注与扩展标记

丰富阅读: 用围栏包起来的代码块会显示在带语言标签和复制链接的框中; ~~删除线~~ 和 ==高亮== 会被渲染;GitHub 风格的标注 (> [!NOTE]、[!TIP]、[!WARNING]、 [!IMPORTANT]、[!CAUTION])会变成彩色框。#hashtag 标签会高亮,并可用 Ctrl+单击打开对该标签的搜索;顶部的 YAML frontmatter 块(---)也会高亮。标签工具栏上有一个按钮可将笔记导出为 PDF/HTML,还有居中且可切换的阅读栏,以及笔记的显示模式。 Zen 模式(F11)和打字机滚动有助于无干扰地写作。

脚注可以双向跳转。 引用 [^1] 显示为上标数字,Ctrl+单击它会跳到定义处;在定义处,[^1]: 标记仍然可见——它是跳转的目标,你需要看到它才知道正在编辑哪条脚注——在它上面 Ctrl+单击则回到引用处。与许多 Markdown 查看器不同,编辑器不会给脚注重新编号,也不会把定义移到末尾:文件的顺序是你的。 Obsidian 和 Pandoc 的行内写法 —— ^[脚注的正文] —— 同样会渲染:正文写在调用脚注的位置,阅读模式下它会带编号出现在末尾。文件里保留的仍是你写下的内容,导出时它会变成 Word、LaTeX、Typst 和 EPUB 中真正的脚注。

MkDocs 的标注(!!! note 加上用 4 个空格缩进的正文)在格式化编辑中按写下的样子保留:正是缩进让正文属于该标注,所以其中的文字不会获得富文本格式——作为交换,打开笔记并保存不会破坏这个结构。

带结束标记的方框也会显示为方框。 :::tip … :::(Docusaurus)和 <details> … </details> 会获得带颜色的竖条和标题,紧凑写法和带空行的写法都一样。开始标记让位给类型名称、你写的标题,或 <summary> 里的文字;结束标记从屏幕上消失,但仍留在文件里,因为应用自己写下的标记不该原样留在页面上。留在屏幕上的是方框的最后一行:正是它界定了方框,也是把光标放进去继续写的地方,而且它删不掉——删掉的话,下面的内容就会被方框吞进去。要在保留文字的前提下取消方框,请使用右键菜单里的移除方框。定义列表的 : 仍然会淡化。 <summary> 必须与 <details> 在同一行才会变成标题:单独占一行时它会按原样显示,方框保留默认名称。

行内 HTML 与代码块。 <kbd>、<mark>、<sub> 和 <sup> 在格式化编辑中同样会被渲染——标签消失,只留下内容,和阅读模式一致。用围栏包起来的代码块会获得一个方框,角落显示语言名称和复制——在格式化编辑和阅读模式下都可用,而那正是最常复制代码的地方。它只取围栏里的内容(不含标记),并短暂显示已复制;两个标签都只在不压住代码时才出现。

阅读的更多功能:开头的 YAML frontmatter 块不会显示在渲染后的笔记中——它在属性面板中编辑。#hashtag 标签会变成可点击的标签块,点击后打开该标签的搜索(与编辑器中的 Ctrl+单击相同)。Obsidian 风格的注释(%%这段不会显示%%,或用只含 %% 的行包围的块)只保留在文件里。除了 GitHub 的标注框,Docusaurus(:::tip 标题 … :::)和 MkDocs(!!! note "标题" 加缩进正文,以及 ??? note)这两种写法也会渲染成同样的框——阅读文档仓库时很方便。

阅读的新功能: 除了 ~~删除线~~ 和 ==高亮==,还支持上标 ^x^、下标 ~x~、 快捷表情(:rocket:)、URL 自动链接、脚注 [^1]、可折叠块 <details>、定义列表、 任务 - [ ]/- [x](⬜/✅)以及 [TOC] 标记(可点击的目录);还支持本地图片和行内 HTML (<kbd>、<mark>…)。大纲面板 (标签工具栏)会跟随光标浏览标题,插入按钮(或右键菜单 → 格式/插入)可应用任何标记。

标题、文件夹与文本操作

固定标题(sticky scroll):滚动时,包含顶部行的标题会固定在编辑器顶部的条带中;点击即可跳转到该章节(在设置 → Markdown 中开关)。在树中右键单击文件夹可创建/打开文件夹笔记(带 frontmatter 的 index.md),可用作索引。

文件夹笔记与文件列表:双击文件夹会打开其 index.md(若存在)。在任意笔记中,单独占一行的 [files](或 [arquivos])标记会在格式化编辑和阅读中被替换为该笔记所在文件夹的文件列表(可点击的链接)——即时生成,不向文件写入任何内容(与 [TOC] 相同)。

文本与行操作。 代码编辑器的操作在笔记中同样可用——通过标签栏的格式按钮下的文本子菜单、 右键菜单,以及编辑菜单的行与清理子菜单:把当前行(或选中的多行)上/下 移动(Ctrl+Shift+↑/↓)、复制(Ctrl+Shift+D)、删除 (Ctrl+Shift+L)、排序(A→Z / Z→A)、反转顺序、合并行、删除 重复行或空行、删除空格以及大小写(大写/小写/反转)。行编号…会打开 一个对话框,可设置起始值、步长、前导零和分隔符;使用默认值 (". ")即可得到有效的 Markdown 有序列表。有选区时只作用于选区(会扩展到整行); 没有选区时作用于整个文档——始终只占一步撤销。标签栏还提供 AI 按钮:询问 / 用 AI 编辑,与代码中相同的 Ctrl+K / Ctrl+I;还有询问笔记,即用工作区的笔记来回答的聊天。

可折叠标题:点击标题左侧的小箭头(或使用 Ctrl+Shift+[ / Ctrl+Shift+])即可折叠或展开该小节;视图菜单中有折叠/展开所有标题。 折叠纯粹是视觉效果——绝不会写入文件——并且 LightNote 会在会话之间记住它。从大纲或搜索 跳转到已折叠小节内部时,会自动展开该小节。

活页夹:把文件夹当作一部作品

这是什么:一个文件夹,其中的笔记按你声明的顺序成为章。写书、写毕业论文、做课程、写手册、写运维手册或工作日志,机制都一样。在文件夹的右键菜单中选择转换为活页夹,会打开一个按当前顺序排列笔记的窗口:拖动排序后确认。顺序保存在该文件夹 index.md 的 chapters: 键里——那是你自己的文本文件,会随笔记一起移动,在任何机器上都继续有效。 子文件夹也可以写进顺序:它的各章会进入它出现的位置,而它在自己的 index.md 中声明自己的顺序——一本书就是这样有了“部”。子文件夹的封面不会成为文档的页面;它用来声明那一层的顺序,以及用来导航。

导航:声明顺序后,笔记的工具栏会显示第 3 章,共 12 章,两侧各有一个箭头(Alt+PgUp 和 Alt+PgDn);中间的按钮列出所有章。大纲面板改为显示两级:作品的各章,以及当前打开那一章下面的标题。到了作品的两端,对应的箭头变灰。在没有声明顺序的文件夹里,这些都不会出现,一切照旧。

笔记模板:活页夹可以声明在其中创建的笔记从哪个模板开始(template: 键)。内置五个模板——书籍章节、毕业论文章节、课时、操作步骤和日志条目——选择其一会把它保存为 Templates 文件夹中的文件,在那里可以随意修改。在活页夹内部创建的笔记会自动进入顺序;从外面放进来的文件会留在顺序之外,直到你把它收进来。重命名一章会同时修正键,并保留它的位置。 若想从现成的作品结构开始,文件夹右键菜单中的从模板构建结构…会一次写入两个键——顺序和章节模板——并保留你已经写好的封面;只要还有声明了却尚不存在的章节,大纲就会显示一个按钮,一次把它们全部创建出来,每一章都已经出自该文件夹的模板。不会覆盖任何内容:已经存在的章节保持原样。

合并为一个文档:导出文件夹时,勾选将各章合并为一个文档会生成一个文件,各章按声明的顺序排列。由于文本是在渲染之前合并的,脚注、图、表和引用随后会在整个文档中统一编号——从某一章引用另一章的图也开始生效。不在声明顺序中的内容不会包含,报告会说明是哪些。

属性、主题与缩放

笔记属性:属性侧栏把 YAML frontmatter 显示为带类型的字段 (文本、数字、日期、复选框),顶部有类型选择框。设置类型和属性,正是把笔记汇集到 基库的前提。

笔记主题:属性面板中的主题下拉框用于设定这篇笔记的外观 (正文的颜色与字体),而不会改动应用其余部分的主题。 所选内容会写入 frontmatter(theme 键),因此它会随文件一起移动: 在任何机器上打开这篇笔记,外观都一样。 旁边的按钮会把颜色写进笔记本身,这样即使对方没有这个主题,看到的也一样。 没有该键时,笔记跟随工作区的主题。 如果不希望从外部收到的笔记改变你的外观,请在设置 → Markdown 中 关闭尊重笔记中声明的主题。

LightNote 尚未认识的主题:主题列表是从网站下载的单个文件, 因此,如果笔记引用的主题是在你上次更新之后发布的,就会找不到它。 这时笔记会以工作区的主题打开,属性面板会给出提示,并附上查看可用主题的快捷方式。 LightNote 会自行查找更新后的列表——每个会话一次,在后台进行,不会让笔记等待。 如果你希望它从不获取任何内容,请在设置 → 功能中 关闭在线获取工具目录。

Ctrl++ 和 Ctrl+−(或 Ctrl+鼠标滚轮)可改变笔记的大小,Ctrl+0 回到 100%——适合阅读长笔记而不改动所有笔记的字体。编辑器与阅读一起缩放:分栏模式下两侧始终一样大。直接写在笔记里的 <svg> 也会在阅读中绘制:可以把 AI 生成的图表直接粘进来,不必另存为文件。

多少词,算哪一段。状态栏统计笔记的词数并估算阅读时间;旁边的 章节 N 是光标所在章节的词数 —— 与大纲高亮的范围相同,从该标题起, 到下一个同级或更高级的标题为止。在设置 → 笔记与写作里设定 每日目标后,还会出现今天 N/M:今天打开的笔记中增加的部分。 删除不会倒扣 —— 修改自己的文字不该变成惩罚 ——,没打开过的笔记不计入,到了午夜 清零。

图表(Mermaid)

工作方式

Mermaid 图。写有流程图(flowchart/graph,四个方向都支持)、时序图(sequenceDiagram)或饼图(pie)的 ```mermaid 围栏,会在阅读模式、导出的文件以及询问笔记的回答中被画成图——图大多正是从那里来的。绘制遵循笔记主题(墨色、纸色与强调色),因此在两种主题下都与周围文字相配。在格式化编辑(默认模式)里图形同样会被绘制,上方带有块工具条(复制、编辑、删除)。编辑会在下方打开一条含源码的工具条:打开期间笔记处于锁定状态,图形会随着输入重新绘制;关闭即应用(没有保存也没有取消),Ctrl+Z 一步撤销整次改动,清空字段则删除该块。在分栏模式下,点击图形会把光标带到原始文本的围栏处。在文本编辑器里一切仍是文字:按 Ctrl+E 查看图形。在列表项中,图表(以及 SMILES 结构、块级公式、[files] 和 ![[笔记]])在格式化编辑中保持为文本,在阅读模式中才会绘制:在那里,列表项的标记无法写回文件。

子图(subgraph … end,包括嵌套)会画成带标题的方框,连线从真正的节点出发穿过边框;子图的 id 也可以作为连线的端点(sub --> X)。作者声明的颜色同样生效:classDef、class、:::类名 和 style(填充、描边、线宽、虚线与文字颜色)。要新建一个,请用笔记工具栏的插入 → 图表(Mermaid):会直接放入所选类型的现成骨架。菜单里直接列出最常用的六种;所有图表…会打开一个包含全部 33 种的选择器,按用途分组,带搜索(按名称,或按图表所展示的内容)和每一种的实际绘制预览——一共 33 张图,看图比读名字更快做出判断。图的前置元数据——首行之前两道 --- 之间的块——也会被读取:title 会成为画在图上方的标题(正文中的 title 优先),LightNote 认识的 config 键会传到图里(gitGraph.mainBranchName、gantt.displayMode,以及 packet 的 bitsPerRow、把整行镜像的 bitOrder: descending 和 showBits: false);不认识的键会被忽略,而不会拒绘整篇笔记。

时序、实体、类与状态

时序图支持 participant/actor(可用 as)、各种箭头(->>、-->>、-x、-))、激活(+/- 与 activate/deactivate)、备注(Note left of/right of/over)、loop/alt/else/opt/par 块,以及 autonumber。尚未支持绘制的内容——其他图种——依旧显示为代码块;子图内的 direction 和 linkStyle 会被忽略。 Mermaid v11 的节点语法(A@{ shape: rounded, label: "文字" })也能读取,并会绘制 v11 的形状目录:doc、lin-doc、docs、tag-rect、win-pane、hourglass、bolt、flag、das 等,每一个都是名称所说的符号,不会退回长方形——用长方形代替文档等于另一张图。Mermaid 没有的名称会让整张图退回代码块,并指出所在行。边 ID(A e1@--> B)和 e1@{ animate: true } 会被接受并忽略:动画不会绘制。带类型的参与者(participant DB@{ "type": "database" })会在泳道上方画出 UML 符号——boundary、control、entity、database、queue、collections——在那里声明的 "alias" 与 as 等效。

erDiagram 也会绘制:每个实体变成带属性的方框,基数显示在关系的两端(||--o{、}o--||、|o、|{);-- 是标识关系,.. 是非标识关系。别名 p[Person] 只改方框上的名称,不改关系引用的 id。subgraph … end 在这里同样有效:里面的实体会被包进带标题的框,子图可以嵌套,而框的 id 也可以做关系的一端(CLIENTE ||--o{ Vendas : faz),此时连到边界而不是同名的实体。

classDiagram 同样如此:三个分区的方框(名称、属性和方法,以方法的括号区分)、独立成行的 <<interface>>、作为方框的 namespace,以及六种关系(<|--, *--, o--, -->, ..>, ..|>)。注意方向:A <|-- B 中三角形在 A 一侧,继承的是 B。引号中的基数显示在两端("1" --> "*")。泛型 List~T~ 显示为 List<T>,成员中也一样。棒棒糖接口(bar ()-- foo)会在 () 所在的那一端的框上方画一个圆(且仅那一端),关系线接到圆上;namespace 也可以嵌套,内层 } 之后的类会回到外层命名空间。

stateDiagram-v2 绘制状态机:[*] 表示开始(实心圆)和结束(带环的圆),state X { … } 变成方框,<<fork>>/<<join>> 变成横条,<<choice>> 变成菱形。复合状态内的 -- 分隔并发区域,以虚线标示。

时间线、旅程、象限与甘特图

timeline 也会绘制:每个时期变成时间线上的一列,事件在其下方堆叠,section 用彩色横带把时代分组。多个事件的两种写法都可用——同一行用冒号分隔(2004 : Facebook : Google),或在下一行续写(: 另一个事件);这里除 title、section、direction 之外的每一行都是自由文本。direction TD(竖向时间线)尚未支持绘制,会保留代码块。

journey(用户旅程)也会绘制:每个任务变成旅程轴上的一个方框,1 到 5 的评分把它的表情上下移动——正是这些表情连成的起伏,才是这种图存在的意义。section 把阶段分组,参与者化作任务上的彩色标记,图例在左侧。这里的语法是严格的(任务: 评分: 参与者, 参与者),与 timeline 不同:没有名称和评分这一对就无处安放表情,所以格式错误的行——或超出 1 到 5 的评分——会拒绝该图并指出所在行。

而 quadrantChart 会画出四象限平面:x-axis 和 y-axis 给两条轴的两端命名(--> 右边可省略),quadrant-1 到 quadrant-4 标注各个区域,每个点写成 名称: [x, y],x 与 y 取 0 到 1。请注意编号:它用的是数学平面的顺序,而不是阅读顺序——quadrant-1 在右上角,从那里逆时针推进;y = 1 在顶部。点的颜色和半径可以直接给出(P: [0.5, 0.5] radius: 10, color: #109060),也可以来自类(P:::类名 加 classDef),直接样式优先于类。超出 0 到 1 的坐标不会被截断,而是指出所在行并拒绝该图——坐标就是平面上的位置,截断会把点放进你没写的象限。

gantt 会画出进度计划:dateFormat 说明你所写日期的格式(默认 YYYY-MM-DD),axisFormat 说明坐标轴标签的格式(%m/%d),section 把任务分组成条带。每个任务写成 文字 : 标记, id, 开始, 结束——标记 done、active、crit、milestone 放在最前面,可以组合;开始是一个日期或 after 另一个id,结束是日期、时长(5d、2w、3h、45m)或 until 另一个id。只写一项时,任务从上一个任务结束的时刻开始。after 可以引用在笔记后面才声明的任务;而一个到处都不存在的 id,或者循环依赖,会指出所在行并拒绝该图,而不是把条形放到今天。excludes weekends(也可以是 excludes monday 或某个日期)会按被排除的天数把每个任务的结束往后推,因此改变条形的长度;includes 2026-03-07 优先于周末,用来说明那个周六照常上班。里程碑显示为菱形,todayMarker off 去掉今天那条线。把多个任务叠在同一行的 displayMode compact 也能绘制:在这里,只有任务所占的范围(包括标签)不碰到已有内容时,它才会共用同一行。vert 标记(开始 : vert, v1, 20:15, 0m)把时刻画成贯穿整张图的竖线,不占用任何行,它的标签落在坐标轴下方。dateFormat X(或 x)把日期读作以秒(或毫秒)为单位的 Unix 时间,而坐标轴上的 %s/%Q 再把它写回去。Mermaid 不认识的 tickInterval(1decade)会像在那边一样静默忽略,坐标轴回到自动。

思维导图、需求、Git 与 C4

mindmap 的层级来自缩进:一个条目的层级就是其文字开始的列,不用大括号也不用箭头(制表符按算到下一个 4 的位置计,和编辑器里一样)。第一个条目是根节点——如果在同一列再出现一个条目,那就成了第二个根,此时会指出所在行并拒绝该图。每个条目都可以声明形状:[方形]、(圆角)、((圆形))、{{六边形}}、))爆炸(( 和 )云朵(;不写分隔符就是圆角。::icon(...) 和 :::类名 会被识别并忽略(我们没有打包图标字体,而类名指向这里并不存在的外部 CSS)。图是左右两侧展开的——根节点居中,分支分到左右两边——每个分支有自己的颜色,后代继承它,枝条也随层级加深而变细。它是一棵树,而不是 mermaid 那样的力导向模拟:在思维导图里层级就是内容,所以必须能从位置读出来;而且切换主题时图会重绘,一个从随机初始位置收敛的布局会让整张图每次都重新排过。

treeView(treeView-beta)用来画项目的目录树,并且接受两种写法:缩进(自己敲的时候)和 tree 命令本身的字符(├──、│、└──)。正是后者让你能把终端输出直接粘进笔记——那里光看缩进不够,因为 │ 和空格占同一列,而只有前者说明这一支还没结束。末尾的斜杠表示目录(src/),带空格的名称要加引号,## 文字 会在行尾挂一条注释,:::highlight 则突出名称。icon(...) 会被识别并忽略,跟思维导图的 ::icon() 一样:图标包靠 JavaScript 从 Iconify 加载,Mermaid 自己默认也不会画。

ishikawa(ishikawa-beta)用来画原因分析的鱼骨图:第一项是“结果”(右端的鱼头),下一层是类别(鱼骨),再里面两层是原因和子原因。一共三层;第四层会指出所在行并拒绘——Mermaid 里并没有这一层。鱼骨在主轴上下交替,这正是两个相邻类别能放下而文字不相互压压的原因;你书写原因的顺序,在两边都是从上到下读。

venn(venn-beta)用来画互相交叉的集合:set A["值得做"] 声明一个,union A,B["做得出来"] 给共同区域命名(并集用它所交叉的集合来称呼),紧接在它下面的 text A1["React"] 则把一条条目放进那个区域。集合最多三个,第四个会指出所在行并拒绘:四个圆没有任何摆法能凑出全部区域,而“差不多对”的图会藏掉你声明过的区域。标签后面的 :数字(set A["Alpha"]:20)缩放圆——面积随数字变化——但不缩放交集:交集也成比例的是另一种图(欧拉图),需要数值优化。style A fill:#ff6b6b 给集合上色,带逗号时(style A,B color:#333)作用于那些集合的并集。

cynefin(cynefin-beta)画的是斯诺登用来分类决策的框架:五个领域名称固定——complex、complicated、chaotic、clear、confusion——位置也固定(四个象限,中间是 confusion);你选的是每个领域里面放什么。每条条目占一行,要加引号;complex --> complicated : "发现了规律" 画出两个领域之间的迁移。不在这五个里的名称会指出所在行,并告诉你有哪些,然后拒绘。clear 与 chaotic 之间的边界画成波浪线:在模型里那是一道悬崖,形状把这件事说出来——这里的波形始终一致,笔记不会每次打开都变一个样。

swimlane(swimlane-beta)画的是按责任人分泳道的流程:语法就是流程图的(同样的形状、箭头、标签和 classDef),只是每个 subgraph 不再是框,而是一条泳道。每个节点都必须在某条泳道里——落在外面的节点会拒绘,因为说不清这件事是谁的——泳道嵌套泳道也会拒绘。LR 时泳道是行,流向向右;TB 时是列,流向向下。沿着流向的位置由到达每个任务的最长路径决定,而所在的带子属于它的主人:就算挤一挤会更紧凑,任务也绝不离开自己的泳道。

agentflow(agentflow-beta)画的是带 AI 代理的流程,实际上是流程图的另一套词汇:箭头一模一样,flow id["名称"] … end 扇演 subgraph 的角色(且可嵌套),global … end 放所有代理都要查的东西,connector id["名称"] 声明一个外部系统。真正不同的是形状,它说明每一步的角色:@{ shape: input }、task、tool(工具调用)、decision、refdoc(参考文档)和 action(最终动作)。文档用 -.- 连接,不带箭头:它是被查阅的,而不是流程的一步。用文字描述代理的键(instruction、params、returns、connectorRef、protocol、endpoint)会被读取,但绘制时忽略。这些形状名只在这里有效;在 flowchart 里会拒绘,因为 Mermaid 在那边也没有它们。

usecase(usecase-beta)画的是 UML 的用例图:用 actor 声明的会成为小人,其余全部是用例,画成椭圆——这正是这种图要展示的区分。用例可以写成 Id("标签")、Id[标签]、只写 Id,或只写引号里的文字;systemBoundary "名称" … end 是系统边界,note for X "文字" 挂上一条注释。关系就是 UML 的那几种:--> 表示关联,--|> 是泛化(空心三角在更一般的一端),A ..> : include B(目标写在冒号之后)画出虚线的「include」,extend 同理。只描述角色而不改变图形的键(type、business、icon)会被读取并忽略,<<刻板>> 则进入标签。json 节点目前还画不出来,会保留代码块:它是跨多行的数据树,而在代码块里 JSON 依然是可读的文本。

wardley(wardley-beta)画的是 Wardley 地图:纵轴是对用户的可见度(越靠上越是用户看得到的),横轴是从 Genesis 到 Commodity 的演化程度。注意这对数字的顺序:component 茶 [0.63, 0.81] 是 [可见度, 演化程度]——第一个数字是纵轴;读反了依旧能画出来,只是在讲另一种战略。anchor 是顶部的用户,A -> B 连起价值链(名称可以带空格,加不加引号都行),A +> B 是流动(线更粗;+<> 双向,+'文字'> 带标签),evolve 烧水壶 0.62 画出通向目标位置的虚线箭头。还支持 evolution(改掉横轴阶段名)、size、(build)/(buy)/(outsource)/(market)、(inertia)(阻力条)、label [dx, dy]、pipeline X { … }、note、accelerator/deaccelerator,以及带编号的 annotation 和 annotations 图例。

eventmodeling 画的是事件建模:一条分为三条泳道的时间线——上面是界面,中间是命令(和读模型),下面是事件。每行写成 tf 02 cmd AddItem:数字是时刻(列),中间的词是类型,由它决定泳道——ui、cmd/command、pcr/processor、rmo/readmodel、view 和 evt/event(长写法等效)。泳道不用声明:它就是这套方法本身。rf(resetframe)开启新的切片,带一条虚线分隔——那里是故事重新开始的地方。帧的结构写在花括号里({ description: string }),或用 [[Data]] 引用 data Data { … } 块,而那个块可以写在后面;->> 02 ->> 03 则按编号把这个帧连到嗂养它的那些时刻。

railroad(railroad-ebnf-beta、-abnf-beta、-peg-beta 或 railroad-beta)把文法画成铁路图:每条规则都是一条可以用手指跟着走的路径,能写出来的就是能走通的。规则写作 名称 = 表达式 ;(PEG 为 名称 <- … ;),可以跨多行——它到 ; 才结束。引号里的文字是终结符(胶囊形),单独的名称是另一条规则(矩形);|(或 /)是选择,? 可选,+ 一次或多次,* 零次或多次,( )、[ ]、{ } 分别是分组、可选和重复。ABNF 把重复写在前面(1*( ALPHA / "-" )、*DIGIT),PEG 支持 !x、&x 谓词——它们不消耗输入,所以进入标签——railroad-beta 则接受函数写法(sequence(choice(terminal("+"), …)))。四种写法归到同一张图:上方的旁路是可选,下方的回路(箭头朝后)是重复。

requirementDiagram 把需求和元素画成带分区的方框:声明的类型(requirement、functionalRequirement、performanceRequirement、interfaceRequirement、physicalRequirement、designConstraint)以书名号显示在名称上方,id、text、risk、verifymethod 各字段成为一行(element 里则是 type 和 docref)。关系(satisfies、traces、derives、verifies、refines、copies、contains)写成 a - satisfies -> b,也可以写成镜像的 b <- satisfies - a,而镜像写法里先写的名字是终点。只有 contains 是实线,符号画在包含方那一侧;其余都是虚线,箭头在终点。带空格的名称要加引号。

gitGraph 画的是仓库的历史:每个 commit 让时间前进一步,branch 名称 开出一条新泳道并直接切换过去(相当于 git switch -c),checkout 回到另一条,merge 把两条合起来。属性用冒号写:commit id: "文本" tag: "v1" type: HIGHLIGHT(也可以是 REVERSE),branch 名称 order: 2 改变泳道的顺序;cherry-pick id: "…" 要求给出一个真实存在的提交 id。形状说明类型——普通提交是实心圆点,突出显示的是方块,回退的是带 X 的圆,合并是双环,cherry-pick 是带缺口的圆——因为在某些主题下调色板的两种色调看起来很接近,只有形状能把它们分开。LR:(默认)、TB: 和 BT: 会转动时间轴。对不存在的分支执行 checkout/merge 会指出所在行并拒绝绘制,而不是凭空造出一条你没要的泳道。

C4 系列(C4Context、C4Container、C4Component、C4Dynamic、C4Deployment)也会绘制,而且在它里面一切都是宏——语法里没有任何箭头。每个元素都变成一个方框:类型用书名号写在上面,名称加粗,描述在下方,例如 Person(alias, "名称", "描述")、System、Container、Component,以及 Db、Queue、_Ext 各种变体。在 Container 和 Component 里,第三个参数是技术(Container(app, "App", "C++/Qt", "它做什么"));其余的第三个参数就是描述。边界(Boundary、Enterprise_Boundary、System_Boundary、Container_Boundary,以及 C4Deployment 的 Node)会打开花括号,变成带标题的框,也可以嵌套。连线写作 Rel(a, b, "标签", "技术");BiRel 两端都有箭头,Rel_Back 指向反方向。C4Dynamic 会按出现顺序给关系编号。位置提示(Rel_U、Rel_D、Rel_L、Rel_R)和 Update…Style 会被接受并忽略——排布由与其他图相同的布局决定,颜色来自笔记主题。引用了未声明别名的关系会指出所在行并拒绝绘制,而不是凭空造出一个你没写过的方框。

看板、图表与数据包

kanban 里缩进就是语法,只有两层:外层是泳道,内层是卡片(id[标签],或者只写文字)。卡片后面的 @{ ticket: LN-9, assigned: 'ana', priority: 'High' } 不会进入卡片正文:工单号和负责人放在专门的页脚里,优先级(Very High、High、Low、Very Low)会变成左边色条的颜色,按从暖到冷排列。所有泳道都在同一条线上结束,没有卡片的泳道也照样显示——正是它告诉你那一列是空的。这是一块画出来的板,用来在笔记里讲清一个流程;真正用来干活、可以拖动卡片的板,是应用自带的任务面板。

xychart(xychart-beta)在两条轴上绘制柱形和折线:x-axis "标题" [一月, 二月, 三月] 给出分类(含空格或逗号的名称用引号括起来),y-axis "标题" 0 --> 100 固定刻度范围,每一条 bar [10, 40, 90] 或 line [20, 30, 80] 添加一个系列,每个分类一个值,顺序与分类的声明顺序一致。值的个数不符的系列会指出该行并拒绝绘制:柱形会挪到别的分类上,图表就开始说另一件事了。不写 y-axis 时刻度取自数据,只要数据不低于零就从零开始——从最小值开始会夸大柱形之间的差距,而这并不是谁选的;范围一旦声明,超出范围的值会被拒绝,而不是冲出绘图区。x-axis 也接受连续区间(0 --> 100),不写时分类就是序号。两个柱形系列并排绘制,而不像 mermaid 那样重叠——重叠时后面那个会消失。xychart-beta horizontal 目前还画不了,仍保持为代码块,因为按纵向绘制会交给你一张轴被对调的图。系列可以有名称(bar "开放" [10, 40]、line "封闭" [20, 30]):这些名称会在图上方组成图例,并沿用各自系列的形状——实心柱、带点的线——因为单靠颜色分不开。在折线系列里,数值可以带标签([540 "PaLM", 65]),画在点的上方;柱状图则像 Mermaid 一样忽略它。

radar(radar-beta)在从中心发散的轴上绘制一条或多条曲线的轮廓:axis a["标签"], b, c 声明轴(该行可以重复),curve x["名称"]{80, 60, 90} 为每个轴给出一个值,顺序与轴的声明顺序一致;也支持具名写法({a: 80, c: 90, b: 60})。注意方向:第一个轴朝上,绕行方向为顺时针。max 和 min 固定刻度范围(不写 max 时取读到的最大值),超出范围的值不会被裁剪,而是指出该行并拒绝绘制;ticks 改变环的数量,graticule circle 让环变成圆形,showLegend false 去掉图例。值的个数与轴数不符的曲线同样会被拒绝:那不是一幅画到一半的图,而是另一幅图。

packet(packet-beta)绘制数据包的比特分布:每个字段写成 0-15: "标签",区间两端都包含在内——0-15 是十六个比特。单个比特写作 4: "标签",相对写法 +16: "标签" 取接下来的十六个,这样在中间插入字段时就不必重新数一遍。字段必须连续:出现空隙或重叠都会指出该行并拒绝绘制,因为两者都会悄悄挪动后面的全部内容。每行 32 个比特,跨行的字段会画在两行上,标签放在较宽的那一段;网格上方的数字标出每个字段的起始位置,以及每行的最后一个比特。

网格、面积、架构、流向与 ZenUML

block(block-beta)绘制方块的网格,其中的位置就是你书写的顺序:columns 3 指定网格有几列(不写时全部排成一行),每个方块可用流程图的各种形状(a["标签"]、b(("圆"))、c{"菱形"}),a:2 让方块占两列,space(或 space:2)留出空位。block:id … end 把一个网格嵌进另一个,可有自己的 columns,外面变成一个框。箭头就是流程图的写法(a --> b,带标签写作 a -- "文字" --> b),但这里它们只引用已声明的方块:指向不存在名称的箭头会指出该行并拒绝绘制,而不是在你没写过的格子里凭空造出一个方块。列间距会一直增大到箭头标签放得下,这样它就不会碰到旁边的方块。块箭头(a<["去程"]>(right))是一个箭头形状的框:方向写在括号里(right、left、up、down,或者用 x 表示两个水平方向、y 表示两个垂直方向),且可以组合((x, down));自创的方向会指出所在行并拒绘整张图,而不是随便画成一个箭头。

treemap(treemap-beta)绘制面积图:每个矩形的面积与数值成正比,缩进表示层级,深度不限。叶子声明数值("名称": 12),分区不声明任何数值——它的值是子项之和;允许它自带总数就会出现一个对自身构成撒谎的矩形,所以那会指出该行并拒绝绘制。含空格或冒号的名称要用引号括起来;classDef 和 :::类名 可以上色。排布采用 squarified,让矩形尽量接近正方形——总沿同一个轴切分会得到无法用眼睛比较的长条,而比较面积正是这个图唯一要做的事。标签和数值只在能完整放进矩形时才显示:被边缘截断的文字什么也说明不了。

architecture(architecture-beta)绘制服务及其之间的连接:service api(server)[API] 声明一个组件,group yun(cloud)[云] 开启一个边界,后缀 in yun 把服务放进去(分组可以嵌套),junction j 创建一个拐角用来折线。决定位置的是连接所用的“边”:a:R -- L:b 把 a 的右边贴到 b 的左边,也就是把 b 放在 a 的右侧;L、R、T、B 都可用,箭头出现在有 < 或 > 的一侧(-->、<-->,或不带箭头的 --)。端点上的 {group} 后缀会把线引到分组的边界,而不是里面的方块。图标就是 Mermaid 内置的那五个——cloud、database、disk、internet、server——其他任何名称都会指出该行、列出可用名称并拒绝绘制。其余的(如 logos:aws-lambda)来自 Iconify,只在发布页面的人用 JavaScript 注册了图标包的地方才显示,连 GitHub 都没有注册:在这里接受它们,等于交给你一张在别处都复现不出来的图。align row a b c(或 align column)把列举的成员放在同一行——或同一列——;不存在的名称会指出所在行并拒绘整张图,而不是默默地保持原来的排列。

sankey(sankey-beta)绘制流向图,带子的粗细就是数值:正文里没有任何箭头——它是三列 CSV(来源,去向,数值),一行一条连接,靠在两端重复同一个名称把流向串起来。含逗号的标签要放在引号里,标签内部的引号写成两个("固定 ""成本""");同一组来源/去向重复出现时会相加。节点竖条的高度取流入与流出中较大的那个,这样分出去比收进来多的节点,出去的带子才不会溢出边框。列由到每个节点的最长路径决定,没有去向的节点排到最后一列。数值小于等于零、指向自身的连接以及环都会拒绝该图并指出所在行——环里不存在最长路径,为了画出来而剪掉一条连接,展示的就是你没有写过的流向。这里没有 title:正文是纯 CSV,接受它在 LightNote 里能画好,在 Mermaid 里却是语法错误。

zenuml 是同一张图的另一种写法——时序图——用代码而不是箭头来写。同步调用只写目标(Store.register(item)),发送方是包住它的那个块:在 Store.register() { Stock.reserve() } 里,调用 Stock 的是 Store。最外层的调用者是发起者,@Starter(Ana) 给它命名;不写则使用一个火柴人 User,且只有在某个调用需要时才出现。异步消息写作 A->B: 文本(开口箭头,没人等待),而 A->B.method() 是写明发送方的同步调用。{} 用来嵌套,return x 返回给发起外层调用的那一方(中间夹一个 if 不影响这一点),x = A.m() 是同一个返回的另一种写法,new A(args) 创建对象,// 注释 会变成下一条消息上方的备注。块有 if/else if/else、while/for/forEach/loop、opt、par 和 try/catch/finally;} else { 不会另开一个框,而是用分隔线继续同一个框。@Actor 画火柴人;其他注解器(@Database、@Boundary 等)会变成标签里的构造型(«Database» Stock),因为这里不绘制它们的图标——名字仍然显示,这才是要紧的。带空格的名字要放在引号里。请留意这个块最终会去哪里:在 Mermaid 里 zenuml 是需要页面用 JavaScript 注册的外部图,GitHub 并不注册,所以在这里能画出来的同一则笔记,在那边仍然是代码块。

而当 LightNote 读不懂某个图时,会在块的下方说明原因和所在行。尚未支持的类型不会给出提示,因为你写的并没有错。

数学与化学(LaTeX)

公式(LaTeX)

数学公式(LaTeX)。句中的 $E = mc^2$ 和独立成块的 $$…$$ 会在阅读模式、导出的文件以及询问笔记的回答中绘制为公式。绘制遵循笔记主题。在格式化编辑中,成块的公式同样会被绘制,上方带有块工具栏(编辑、复制、删除);句中的公式也一样,稳稳落在文字行上。要编辑它,双击它或按 Ctrl+Enter,它会在同一个栏里打开;在它后面按退格会让它变回 $…$,就地编辑。在文本编辑器中一切仍是文本:按 Ctrl+E 查看公式。入门请使用笔记工具栏的插入 → 公式 (LaTeX)。公式使用系统数学字体绘制(Windows 上为 Cambria Math),而不是笔记正文字体:数学斜体、文本字体没有的符号,以及随内容变高的括号和根号都来自它。若系统没有安装数学字体,LightNote 会退回笔记字体,并自行绘制这些符号。

所支持的子集包括希腊字母、运算符与关系符、指数 ^ 与下标 _、\frac、\sqrt(可带次数)、带可伸缩定界符的 \left…\right、带上下限的 \sum/\prod/\int、正体函数(\sin、\log 等)、\text/\mathrm/\mathbf/\mathbb \mathcal/\mathfrak/\mathsf/\mathtt/\boldsymbol 等字母表、\binom、\overset/\underset、\bmod/\pmod、\big…\Bigg 系列,空格 \,/\quad/\hspace,环境 cases、matrix/pmatrix/bmatrix/vmatrix、aligned、gathered 和 array(支持 | 与 \hline)、\overbrace/\underbrace、\begin{CD}、\begin{tikzcd}(交换图表)、\xrightarrow、\boxed/\cancel、\not、\substack、\|/\middle、\smash、\textcolor/\color(保留色相,明度按笔记主题调整)、\colorbox/\fcolorbox(背景保留你写的颜色,文字按背景调整)、\tag(公式的标号,紧接在公式后;在 align 中每行一个,排成一列)、\phantom、\displaystyle,以及中缀形式 \over/\atop/\choose。支持范围不止此表:比较符号的各种变体(\leqslant)、逻辑(\land、\vDash)、统计算子(\argmax)、可伸缩的双箭头(\xRightarrow)和双方括号(\llbracket)也都支持。旧式 TeX 的字体开关({\rm d}x、{\bf A}、{\cal L})和狄拉克记号(\braket{\phi|\psi})也可以用。在公式内定义的宏(\newcommand、\def)在该公式结束前有效,直接输入的 Unicode 符号(x ∈ ℝ)等同于对应的命令,\text{…} 里可以用 $…$ 写数学,单独的公式可以用 \\ 分成多行。$$ 块中的 \label{eq:name} 会在阅读模式下给公式编号(与 {#eq:name} 共用计数),正文里的 \eqref{eq:name} 会变成带括号的编号。LaTeX 写法同样有效:句中的 \(…\) 和成块的 \[…\] 会同样绘制——这正是 ChatGPT 常用的形式。无法绘制的内容仍按你写的原文显示。

带斜箭头的交换图(\begin{tikzcd})。\begin{CD} 只能画水平和垂直的箭头,而最常见的交换三角形需要斜箭头。每个对象是一个单元格(& 分隔,\\ 换行),箭头写在单元格里:A \arrow[r, "f"] \arrow[rd, "g"'] & B。方向是 r/l/u/d 的连写(rd 是斜向,rr 是两列),\ar 和缩写(\rar、\dar、\drar)是同一种箭头。引号里的标签默认落在向右箭头的上方;'(或 swap)把它换到另一边,这决定了名字落在图形内还是图形外。hook(包含)、two heads(满射)、dashed、Rightarrow、equal 也都可用。弯曲(bend left)以及这个子集不会画的选项会说出名字后拒绝:把两条弯曲的箭头画成直线,它们会叠在一起,变成声称只有一条。

正文中的 $ 不会变成公式:要 $5 和 $10 里的价格仍是价格,因为开头的 $ 后面不能是空格,结尾的 $ 前面也不能是空格、后面也不能紧跟字母(PATH=$dir1:$dir2 因此不会变成公式);用反引号包住的 $x$ 仍是代码。 如果没有画出来,LightNote 会说明原因:在 $$ 块下方显示一行,行内公式则每种提示只显示一次,并指出无法读取的命令或分隔符。 如果粘贴进来的公式用的是 \(…\) 写法,而你更想要 $…$,格式化 → 将公式统一为 $ 会改写选区(或整篇笔记)——只在文本编辑器里可用,那里才看得到笔记的字符。

化学:mhchem 与 SMILES

化学。mhchem 记法也能绘制:\ce{2 H2 + O2 -> 2 H2O} 会自动将下标归位,-> 和 <=> 变成箭头(可用 ->[\Delta] 加标注),Na+ 和 SO4^2- 变成电荷,(aq) 和 (l) 以正体紧跟在后,^{227}_{90}Th 对齐同位素,v/^ 表示沉淀和放出的气体。\pu{123 kJ//mol} 书写带单位的量——双斜线会变成分式。偏移的平衡(<=>> 和 <<=>)会把反应偏向一侧的箭头画长,显式写出的键(\bond{~}、\bond{~-}、\bond{...})像教科书一样叠加线条,Kröger–Vink 记号(O''_{i,x}、Li^x_{Li})把有效电荷放在上标。变量用斜体,元素用正体:NO_x 中的 x 是变量,Fe^{II} 中的 II 是氧化态。

LaTeX 中的结构式(\chemfig)。\ce 写化学式,\chemfig{...} 则在同一个公式里画出骨架——\chemfig{H_3C-[:30]CH_2-[:-30]OH} 是乙醇,\chemfig{*6(-=-=-=)} 是苯。角度由你定:[:30] 是绝对角,[::45] 是相对于上一根键的角,[3] 按八分之一圈计。键是 -、=、~,立体化学的楔形键是 >、<、>:、<:、>|、<|——尖端落在手性中心上。括号挂一个支链,*6(...) 闭合一个正多边形环(**6(...) 会画出芳香环的圆);从环上的顶点出发、没有写角度的键指向环的外侧。元素符号以正体输出,线条在字母前停住。chemfig 的起点与终点节点([,,1,2])会说明理由后拒绝:它们决定键接到标签的哪一部分,忽略它们就会画出另一个结构。 稠环写在第一个环的内部,紧接在两者共用的键之后;内部的环少写一个键——那一边已经画过了。萘写作 \chemfig{*6(-=-*6(-=-=-)=-=)}。

化学结构式 (SMILES)。 在 ```smiles 代码块里写一行 SMILES(CC(=O)Oc1ccccc1C(=O)O),就会在阅读模式、 格式化编辑、导出的文件以及询问笔记的回答中绘制成骨架式。 它和 \ce 互补:那个写化学式,这个画分子。遵循骨架式的 惯例——碳不写出来(它就是顶点),杂原子用主题的强调色写出元素符号, 芳香环(c1ccccc1)内部加一个虚线圆。立体化学会画出来:[C@H] 和 [C@@H] 变成楔形键(朝向读者的键是实心楔,朝后的键是虚线楔,窄端在立体中心),F/C=C/F 和 F/C=C\F 按写法画成反式和顺式。纸面上无法表示的(如 @SP1 这类非四面体的命名形式)会被接受,图中的说明文字会写明它只是被声明而没有绘制。 一个代码块只画一个结构:行中间的空格会被拒绝,因为在 SMILES 里空格表示 结构到此结束。读不出来时,LightNote 会说明哪里不对(括号、环编号、元素), 代码块保持你写的样子。开始时,请用笔记栏的插入 → 结构式 (SMILES)。

笔记中的日历

```calendar 代码块会在笔记中画出日历,在阅读模式、格式化编辑和打印中都会显示。它是真正的表格,不是图片:可以选中、复制(粘贴到 Word 或 Excel 会保留单元格),也可以用 Ctrl+F 查找事件。第一行决定是哪种日历:月份(2026-09)显示整月;日期(2026-09-24)显示包含该日期的那一周,列是星期,行是时间;week 则显示没有日期的一周——课程表、日常安排、值班表。之后的每一行是一个事件或一个选项,以 %% 开头的行是注释。开始时,请使用笔记栏上的插入 → 日历(月历、周历或无日期的周历,插入时已填好示例),或输入 /calendar。

月历。事件以日期数字开头:15: 论文答辩 标记一天,22-26: 学术会议 标记一段时间,没有文本的 24: 只突出显示那一天。时间段的文本显示在第一天;跨到下一周时,也会显示在下一行的开头。

```calendar
2026-10
15: 论文答辩
22-26: 学术会议
```

周历。事件以星期的名称开头——mon、tue,thu 或 mon-fri——后面跟时间:mon 09:00-10:30: 会议。时间可以写成 09:00、9h30 或只写 9;没有时间的事件放在最上面的全天一行(fri: 截止)。因为星期用名称书写,把代码块复制到下一周时只需改第一行。days: mon-fri 按列表顺序选择列;hours: 8-18 固定范围(省略时为 8 点到 18 点,并扩展到能容纳所有事件;指定后,范围外的事件会被拒绝);step: 30 是每行的分钟数。较长的事件只在第一行写出带时间的文本,后续各行只着色。

```calendar
2026-10-14
days: mon-fri
mon,wed 09:00-10:30: 团队会议
tue 14-16: 学习
tue 16-17: 复习
fri: 提交项目
```

三种形式都适用:title: 替换标题栏的标题(无日期的周历只有设置它时才显示标题栏),week: monday 让一周从星期一开始(默认取笔记的语言;有 days: 时以列表顺序为准),today: no 去掉今天的标记——在无日期的周历中,标记的是今天的星期。首尾相接的事件使用不同颜色,以免看起来像一个事件。月份和星期的语言取笔记的语言(frontmatter 中的 lang 键),周末也遵循该语言的习惯。今天只在屏幕上标记:纸上和 PDF 中不标记,因为读的人会在另一天阅读。要修改日历,请在它上面按 Ctrl+Enter,在栏中编辑源文本——在单元格里输入不会改变任何内容,因为表格是由源文本生成的。栏打开时,表格会随着输入重新生成;关闭栏即应用修改,Ctrl+Z 可一步撤销整个修改。导出时(Word、OpenDocument、HTML、LaTeX、GitHub 的 Markdown),日历会变成带标题的普通表格。源文本无法读成日历时,LightNote 会指出行和片段,代码块保持你写的样子。在引用或列表中,日历会在阅读模式中显示,在格式化编辑中保持为代码。

编号与交叉引用

给图加一个标签,阅读模式里它就有了带编号的图题: ![水循环](cycle.png){#fig:cycle} 会变成图片,下面跟着 图 1 — 水循环。表格的标签写在紧接其后、以冒号开头的一行里: : 采集的样品 {#tbl:samples}。块级公式则在收尾的 $$ 上带 {#eq:mass} 时,于右边空白处得到编号。 此功能默认是关闭的:在设置 → 功能 → 学术 → 编号与交叉引用里打开。LightNote 是一个也能写论文的简单编辑器;不写学术文章的人,不该为此付出用不到的菜单和选项。-numeracao

接着只要指过去:@fig:cycle 变成图 1, [@fig:cycle] 变成(图 1),-@fig:cycle 只留 编号。这是刻意与引用共用同一套语法。在中间插入一张图,全部会自动重新 编号 —— 计数属于整个文档,按阅读顺序来。

编号靠标签,是可选的:没有 {#fig:…} 的图片和今天完全 一样。而不存在的标签会原样保留,与引用相同:那是引用断掉的提示。

编号的章节(ABNT NBR 6024):在笔记属性里写 section-numbers: true,标题就会带上编号 —— 1、1.1、 1.1.1 ——,左对齐、用一个空格分隔、末尾不加点。带 {#sec:method} 的标题可以用 @sec:method 指向;没有 编号时,引用会变成该节的标题。

单独一行的 [list of figures] 和 [list of tables] 会生成规范要求的目录,就像 [TOC] 生成大纲一样。这些都属于阅读 模式(以及导出的 PDF/HTML):编辑器里文件保留你写下的内容,正因如此才能在 不动笔记的前提下重新编号。

引用与参考文献

正文中的引用写作 [@键]——键就是该文献在你的参考文献中的名字。 输入 @ 时,LightNote 会列出它认识的文献,并显示作者、年份和标题; 写进笔记的只有键。此外还有 [@键, p. 45](带页码)、 [-@键](作者名已经在句中时)和 [@a; @b](一次引用多篇)。 此功能默认是关闭的:在设置 → 功能 → 学术 → 引用与文献目录里打开。LightNote 是一个也能写论文的简单编辑器;不写学术文章的人,不该为此付出用不到的菜单和选项。-citacoes

阅读模式下引用会变成排好的文字——(Silva, 2020, p. 45)——而单独 一行的 [bibliography] 会变成你引用过的文献列表,顺序按格式 要求排列。编辑器中键仍然可见,因为你编辑的就是键。

文献目录是工作区里的一个文件:文件夹中任何 .bib、 .ris 或 .csl.json 都算数。正因如此,它能随笔记通过 Git 或 U 盘一起带走,在另一台电脑上照常可用。打开这类文件会显示文献列表, 每条都带着可直接复制的键。

添加文献:工具 → 文献目录 → 通过 DOI 添加文献接受 DOI 或 arXiv 标识符,其余信息自动取回;从 Zotero 导入会读取本机正在运行的 Zotero 7 的文库(请先勾选首选项 → 高级 → 允许本机其他应用与 Zotero 通信)。

格式属于文件夹,而笔记可以另作主张。默认格式在工具 → 工作区设置 → 引用中选择(ABNT、APA 7 或温哥华格式);投向别处的笔记可在属性中写 citation-style: apa。参考文献中不存在的键会原样保留, 便于你看出该改哪一个。

连接图

工具 › 连接图(Ctrl+Alt+G)将工作区中的 所有笔记显示为一张交互式图。每个节点是一个 .md 笔记,每条线是一个维基链接。节点会自动布局(物理动画), 并可拖动。悬停时相邻节点会被强调,其余则淡化。 单击会打开笔记。滚动可缩放(靠近时显示名称), 拖动背景可平移。

标签工具栏: 按名称筛选(淡化不匹配的笔记)、 切换孤立笔记(无链接的笔记,灰色显示)、力度滑块 (斥力・距离・引力)、使图形适应窗口、重新扫描笔记。 连接越多的笔记节点越大,并按第一层文件夹分别着色。

相似笔记。笔记内的连接小栏会列出入链、出链和按名字的提及。它的末尾是相似笔记:谈论相近主题的笔记,即使没有链接也没有共同词语。它由你按需计算(点击计算),而不是每次切换笔记都算,因为遍历索引要读磁盘。每一行都显示名字、相近的程度,以及促成这条建议的片段——没有这个依据就无从判断它是否可靠。它不消耗任何 AI 调用:使用的是已经存在的语义索引,所以这个小节只在设置 → 常规 → 功能中开启语义增强(嵌入)后才出现。

表格(Parquet・CSV・JSON・Excel)

打开与查询

.parquet 文件会作为表格打开。.csv、 .tsv、.json 会作为文本打开,并在树的右键菜单中 提供作为表格打开。读取通过 DuckDB 分页进行 (按需),排序(单击表头)和筛选都交给引擎处理。 结构按钮会显示列、类型、行数,对 Parquet 还会显示行组和压缩。 该视图为只读。

表格上方的自由 SQL 栏接受任意 DuckDB 查询。 视图 t 代表当前打开的文件。从树中文件夹的 右键菜单选择将文件夹作为表格打开,可将相同格式的 所有文件作为一个表格读取。可从表格菜单将当前视图 导出(CSV/Parquet/JSON),并可从树的菜单将表格文件 转换为另一种格式。自由形式的 SQL 也可通过命令行的 query 命令或 MCP 使用。

Excel 电子表格(.xlsx)会以带工作表选择器的 只读表格打开。使用轻量读取器,无需安装 Excel。

Excel 工作表

忠于文件。工作表按文件自身的格式显示:数字、货币、百分比和日期遵循在 Excel 中设置的格式——保存为 3750.5 且带货币格式的值会显示为 ¥3,750.50,百分比显示为 15% 而不是 0.15。字体 (名称、字号、加粗、倾斜、下划线)、文字颜色、填充颜色、每个单元格的边框、对齐方式、 自动换行、缩进、旋转文字和列宽也都来自文件。数字靠右、文本靠左,与 Excel 一致。

当工作表自带颜色时,网格会绘制在白色背景上:Excel 的配色是为白纸挑选的,在深色 主题上会无法辨认。完全没有格式的文件仍沿用 LightNote 的主题。工作表按写入时的顺序 打开——点击表头即可排序,与其他表格一样。

原始布局与缩放。当工作表使用合并单元格、自定义行高或隐藏网格线时,标签页会以原始 布局模式打开(工具栏按钮),按 Excel 的方式还原这些排布。该模式只管排布——颜色、字体、 边框和数字格式在两种模式下都有效;开启期间无法排序和筛选,因为重新排序会让合并的区块留在 错误的行上,需要排序时请关闭该按钮。不含这些内容的工作表以普通模式打开。缩放与所有视图一致,位于状态栏(参见工作区与窗口);在网格上同样可以用 Ctrl+鼠标滚轮。设置为 Excel 表格的工作表同样会显示颜色:表格样式内置于 Excel、不随文件传输,因此表头和条纹由 主题还原。

复制、筛选与图表

复制为。在 LightNote 任意表格(Parquet/CSV/JSON、Excel、SQL 结果、任务、基础库)的右键菜单中,复制为会把选区以已排版的形式放入剪贴板。带格式的表格 (Teams、Outlook…) 会在支持富文本的程序中(Teams、Outlook、Word、Excel)粘贴为真正的表格,带边框和表头(不支持富文本时自动回退为 TSV)。其余以纯文本粘贴:Markdown 表格(可直接放进笔记)、CSV(按 RFC 4180 加引号)、TSV(制表符分隔)、HTML(<table> 标记)、JSON、JSONL(每行一条记录)、YAML,以及代码子菜单——生成可直接粘贴到源文件的字面量:Python(字典列表)或 JavaScript / TypeScript(对象数组)。在 JSON、YAML 和代码中,数字单元格不加引号输出——但原始文本会被保留,因此像 007 这样的 ID 仍是文本。Ctrl+C 仍按 TSV 复制,与以前相同。

所有表格行为一致:Ctrl+F 聚焦快速筛选(“任意列包含”),计数器显示剩余行数,并提供导出为 CSV 的导出——.xlsx 表格、任务和基础库同样如此。网格的右键菜单依旧提供复制为。

结果图表。表格的侧边栏有一个图表按钮(柱状图、折线图或散点图):聚合在 DuckDB 中执行(不会拉取原始行),并有一个添加到今日笔记按钮将图表保存为图像。结构面板还包含按列剖析——数值列的迷你直方图以及其他列的最常见值。

多个图表与数据透视表。 想交叉两个字段并汇总第三个字段,或想为一张表保留多个图表,请看 分析区。

分析区:数据透视表与多个图表

图表与统计

表格标签页有两种模式,由栏中的 数据 和 分析 两个按钮切换。数据 就是平常的表格;分析 是一块看板,同一数据源上可以并排放置任意多个 图表 和 数据透视表——每个占一张卡片,带可编辑的标题、一个显示选择器的齿轮按钮和一个 ⋮ 菜单(移动、复制、移除)。

真正的统计。除了柱状、折线和散点,图表还能画箱线图:每个类别一个盒子,含四分位数、粗线的中位数,须画在Tukey 栅栏(1,5 × IQR)上 —— 而不是最小值和最大值。在某列的均值上,误差选择器会加上表示离散的须:± 标准差(描述数据本身)、± 标准误或± 95% 置信区间(描述均值本身的精度)。这三项只在选择均值时出现,因为“求和 ± 偏差”没有意义。Y 轴对数复选框切换为对数刻度,适合跨越多个数量级的数据;若存在零或负值,它会被忽略并给出提示,因为那里没有对数,而悄悄丢掉那个点会让图表说谎。在散点图里,趋势线会画出带 R² 的回归直线,它是在数据库中用全部行拟合的 —— 而不是屏幕上那份抽样点。图下方还有一行所选列的描述统计(n、均值、标准差、95% 置信区间、最小、四分位、中位数与最大),这是一条独立的查询:从柱子推算会得到“均值的均值”,只有当各组大小相同时它才等于真正的均值。

数据透视表与合计

数据透视表。 选择放到 行 和 列 上的字段(每个轴可以嵌套多个,拖动可调整层级顺序)、放到 值 上的字段,以及汇总方式:求和、计数、去重计数、平均值、最小值 或 最大值。不选值字段时统计行数。它也在表格侧边的迷你栏里,就在图表旁边,方便不离开数据快速查看。

聚合在数据库里执行,返回时已经汇总——没有原始行上传,因此几千万行的 Parquet 依然可用。由于查询是标准 SQL,数据透视表在 SQL 客户端的 所有 数据库上都能用(SQLite、DuckDB、PostgreSQL、MySQL、SQL Server 和 Oracle),而不像图表只支持 DuckDB。

汇总。 行汇总 和 列汇总 复选框会加上收尾的一行和一列。在 平均值 下,总计是 加权 的,而不是平均值的平均值——当各组大小不同时后者是错的。去重计数 无法汇总(不同集合的并集不能由各部分之和得出),因此那里的复选框会被禁用,并在提示中说明原因,而不是显示一个错误的数字。

保存在哪里、CSV 与分组

分析保存在哪里。 保存在 数据文件旁边的 JSON 里(sales.parquet → sales.parquet.analysis.json):开放格式,随数据一起进入 Git,也能原样交给同事。分析文件 按钮会在标签页中打开该 JSON;清空分析会删除该文件。作为表格打开的整个文件夹没有独立路径,所以那种分析不会保存——按钮会说明这一点。每张卡片还有 添加到今日笔记:图表作为图片加入,数据透视表作为 Markdown 表格 加入,在笔记里仍是可复制、可编辑的文本。

打开 CSV 只有一个动作,分隔符判断错时另有出路。 作为表格打开 通过 DuckDB 打开,带自由 SQL、图表、数据透视表和分析区。分隔符有时无法识别(各行列数不一致时最常发生),表格就会只有一列,整行内容都塞在里面。这时表格上方会出现一条提示,说明该文件看起来有多少列,并提供宽容读取:它逐行读取,不要求各行列数相同,正是搜索和 AI 所用的同一种读法;可以筛选和排序,但没有自由 SQL、图表或数据透视表。若文本尚未保存,或想自己指定分隔符,请使用视图 → 作为分隔文件查看…。

按模式分组。 在日期或编码列里,不同取值几乎和行数一样多,按值分组说明不了什么。模式掩码 把每个字母换成 A、每个数字换成 N,其余保持不变:2027/10/10 变成 NNNN/NN/NN。于是几百万行归为两三种形状,而不符合这些形状的正是脏数据(写成 10-10-2027 的日期、缺少前缀的编码)。在图表里是 X 轴旁边的 模式 复选框;在数据透视表里,右键点击某个字段的卡片(按字段生效,可以把编码的形状与普通维度交叉);在 结构 面板里,每列最常见的模式会显示在最常见的取值下面。计算在数据库中执行。在 SQLite 和通用 ODBC 上,该选项会被禁用并说明原因:缺少掩码所依赖的文本函数。

PDF 与图像

.pdf 文件在原生查看器(Qt6::Pdf,无重型依赖)中打开,由 CPU 渲染,不使用 WebEngine。图像在图像视图中打开;动画 GIF 在动画视图中播放。

标签页工具栏提供六个侧边面板,一次显示一个:目录(保存在文件本身中的目录——若 PDF 没有目录,按钮会被禁用并说明原因)、缩略图(随滚动渲染的页面一览)、搜索、链接、属性(标题、作者、日期、页面与文件大小)和高亮(你高亮过的段落,按阅读顺序排列)。

搜索(Ctrl+F)会遍历整个文档:匹配项在页面上高亮显示,并连同上下文列出,F3 / Shift+F3 在它们之间跳转。扫描是逐步进行的,因此列表会随着文档被遍历而增长。

页码输入框既接受编号也接受印刷页码:在前言部分使用罗马数字编号的文档中,输入 1 会跳到印刷的第“1”页,而不是第一张纸。页面模式按钮可在连续滚动与单页显示之间切换。

受密码保护的 PDF 在打开时会要求输入密码(最多三次);取消则只是不打开该标签页。在同一次运行中不会再次询问:应用会在因闲置而释放标签页后自行重新打开它,那样等于是它自己制造了麻烦。在提示框中勾选“记住此文件的密码”,密码在以后的运行中同样有效:它由 Windows 保护(仅限本机的你),绝不会进入 Git 或云端,也不会随配置导出一起带走。要全部删除:设置 → 功能 → PDF 密码。受保护的 PDF 不会在启动时自动重新打开——与其在显示窗口之前排起一串密码提示,不如等你自己去打开。

在工具栏的操作菜单中:复制本页文本、导出整个文档的文本、将页面复制或另存为图像,以及将页面发送到今日笔记。链接面板之所以存在,是因为 Qt 的 PDF 组件会自动跳转内部链接,却忽略外部链接——网址正是从这里打开的,并会先行确认。

高亮。高亮按钮打开荧光笔:在页面文字上拖动,这段内容就被高亮;旁边的箭头用来选颜色。高亮附着在文字上而不是矩形上——所以缩放和翻页方式改变时它不会跑位,也因此在没有文字层的扫描件上无法使用(这时程序会说明原因,而不是什么都不做)。在高亮面板里,单击可跳到该页,右键菜单可以添加批注、复制段落或删除。工具栏的动作菜单里,复制高亮和将高亮保存为笔记…会用 Markdown 写出读书笔记:每段内容成为一条引用,并按页附上一个能打开 PDF 相应位置的链接(lunwen.pdf#page=12)。代价:高亮保存在 PDF 旁边的文件里(lunwen.pdf.highlights.json,可读的文本,可用 Git 做版本管理),而不在 PDF 内部——所以它们在 LightNote 里看得到,在别的 PDF 阅读器里看不到。如果文件被换成另一个版本,失去位置的高亮会被标记出来,而不是画到错误的句子上。

限制:在荧光笔之外无法用鼠标选择文本,因为 Qt 的 PDF 组件不提供该功能。要带走内容,请使用“复制此页文本”、导出文档,或高亮本身。

图像:为截图添加标注

工具

图像会在带有独立工具栏的标签页中打开:除了旋转、镜像和缩放,它还带来标注工具——从截图、指出重点,到把成果带进文档的完整路径。 而且不必先有截图:新建 → 新建空白图像会在标记的文件夹里创建一张白色的 .png 纸,并直接以画笔打开 —— 打开图像时默认的“移动”在这里没有东西可拖。

初始工具是移动:拖动仍然移动图像,和以前一样。选择用来选取一部分——拖动创建,从内部拖动移动,用四角和四边的手柄调整大小;Esc 取消选择,Del 擦除该区域的内容。在移动模式下,Shift+拖动同样是选择。在任何工具下,鼠标中键都可以移动图像。

吸管从图像本身取色:左键送到边框颜色,右键送到填充颜色。它读取的是已标注后的图像,所以也能重复你刚做的那处标注的颜色。

其余工具用于绘制:矩形、椭圆、箭头、直线、高亮(半透明,像荧光笔)、画笔(自由绘制)、画刷、编号步骤(自动编号 1、2、3……)、文本、模糊和聚光(使所选区域以外的部分变暗)。绘制时按住 Shift 可锁定正方形/正圆和 45° 角。

颜色、粗细与模糊

颜色有两种,对应两个按钮:边框色(同时也是线条色和标签色)和填充色,后者可以是无。没有填充时,矩形和椭圆只画轮廓,编号步骤和文本以边框色作为背景,标签则用白色或黑色——取对比更强的那个。选择填充后,它成为形状的内部和标签的背景,而边框色成为文字的颜色。

画刷用填充色涂抹,大小等于线条粗细——通过粗细旁边的按钮切换圆形或方形。单击一次就会留下痕迹。把填充设为白色,它就是橡皮擦:盖住下面的东西。

粗细作用于线条、标签的大小以及模糊的块大小;在忽略它的工具中会变灰。颜色和粗细会在会话之间记住。Ctrl+Z 和 Ctrl+Y 撤销和重做标注,清除标注一次删除全部(同样可以撤销)。

模糊是用来隐藏的(令牌、电子邮件地址、路径等)。标签页打开期间标注是可逆的,但在保存或复制时,该区域的像素会被真正破坏:输出的文件不会在任何地方保留原始内容。

剪切、粘贴、旋转与截屏

有三个名字相近、作用不同的操作。剪切(Ctrl+X)把所选区域复制到剪贴板并擦除该区域,用填充色涂上(没有填充色时为白色)——而选择框仍留在原处,因此紧接着粘贴会把这块内容原封不动地送回它出来的位置,处于浮动状态:这就是移动图像局部的做法。Del 就是不复制的剪切。而图像菜单中的仅保留所选区域正好相反:保留该区域、丢弃其余部分,并改变图像的尺寸。

这一家族的其余成员:复制带走标注后的图像或仅所选区域;粘贴把剪贴板中的图像作为浮动粘贴带进来——用同样的手柄移动和调整大小,然后在外面点击(或按 Enter)即可保留,Esc 则丢弃;Ctrl+A(或 Ctrl+T)选择整幅图像。此外还有保存(把标注写入文件本身)、另存为...,以及发送到今日笔记,它会把 PNG 保存到 Anexos/ 并在笔记中插入 ![]()。只要还有未保存的标注,标签页就带着星号,关闭时会询问是否保存。

图像按钮汇集了作用于整幅图的操作:旋转、镜像、按百分比调整大小、缩小到 1600 / 1200 / 800 px 宽(截图天生就比文档所需大得多)、裁掉纯色边框、添加边距、投影,以及将标注写入图像——最后这项当场把标注变成像素,这样就能在标注之上做模糊。调整大小会一并带走标注和线条粗细。

不离开 LightNote 就能截屏:托盘菜单中的捕获屏幕...(或 Ctrl+Alt+P)会冻结桌面,拖动选择区域(Esc 取消),截取的部分会在新标签页中打开,随时可以标注。

限制:已经画好的标注不能移动也不能编辑——用 Ctrl+Z 撤销后重画;动画 GIF 和 WebP 在动画视图中打开,没有标注功能;.svg 在读取时会被栅格化,因此保存时会询问 PNG 的目标位置。

HTML 页面(.html)

从树中打开的 .html 会成为一个预览标签页,背后是真正的布局引擎:弹性盒、浮动块、定位、媒体查询、渐变、CSS 变量和 CSS3 选择器。正因如此,AI 生成的那种带指标卡片、表格和图表的现代报告,在这里看起来和浏览器里一样,而不是变成一堵文字墙。

文本可以选中:拖动选择,双击选中一个词,Ctrl+A 选中整页,Ctrl+C 复制(右键菜单里有复制和全选)。

顶部工具栏提供大纲(页面标题,点击可跳转)和查找(Ctrl+F,高亮所有匹配,F3 和 Shift+F3 在其间移动,Esc 关闭)。缩放已经离开标签页工具栏:和所有视图一样,它只在状态栏一个地方(参见工作区与窗口)。

导出 PDF 会按 A4 分页,文字保持矢量——PDF 仍可搜索,文字仍可选中。标签页还会跟随磁盘上的文件:重新生成报告后,它会自动更新且不丢失阅读位置。此外,没有自定义颜色的页面会跟随应用主题;定义了自己颜色的页面则按其设计显示。

链接可用:指向同一文件夹中其他文件的链接就地打开,#锚点 滚动到对应小节,网址则在浏览器中打开。

它不做的是 JavaScript 和联网——不下载任何东西。当页面依赖这些时(脚本、<canvas>、<iframe> 或远程资源),会出现带在浏览器中打开的提示条。做报告的小技巧:让 AI 生成不用 JavaScript、不用 CDN 的 HTML,图表用内嵌 SVG——这样在这里就能完整打开。

即便如此,仍有一些内容可以响应点击,而且不执行任何脚本:<details> 折叠块可以通过标题展开和收起(页面中存在折叠块时,工具栏会出现全部展开),一组标签页可以切换显示的面板,点击表格标题可以排序——再次点击同一列会反转顺序,数字列按数值排序而不是按文本排序。当标签页与面板的对应关系不明确时,不做任何改动:页面保持原样。

respondem ao clique

有两项会自动替换,因为引擎没有它们:display:grid 和 gap 会变成等效的弹性盒,内嵌的 <svg> 会被绘制。box-shadow 被忽略。要回到旧查看器,请在设置 → 常规 → 功能中取消勾选完整布局的 HTML 查看器。

打印

文件 → 打印…(Ctrl+P)会打开分页预览:纸张按实际输出的样子显示,包含页边距、分页位置和页码。打印按钮就在预览里,与缩放、翻页和纸张设置并排。可以打印笔记、代码、HTML 页面、图片和已打开的 PDF;在其他界面该项会保持灰色并说明原因。 同样的按钮也在各个界面自己的工具栏上:笔记里在导出按钮旁边;代码、PDF、图片和 HTML 页面则在各自的工具栏上。

落到纸上的内容与阅读模式所显示的一致:转录已解析、图号就位、私有注释(%%…%%)被排除。即使内容主题是深色,纸张也会以白底输出——整页黑色既浪费墨水,也与交给别人的文档格格不入。页边距为左右 20 mm、上下 15 mm,页脚带有第 X 页 / 共 Y 页。在预览中,页边距按钮可在文档页边距和打印机能达到的最小值之间切换;PDF 和图片一开始就用最小值,因为文件本身已经带有自己的页边距。在它旁边,主题用于切换打印件的颜色:默认是自动,正是它把深色主题换成白纸;列表中是目录里和你自己的浅色主题——用 Dracula Dark 阅读的人可以用 Dracula Light 打印,同一套配色,只是为纸张而做。深色主题不在其中,因为在纸上它们会把整页都涂满。 已在使用的主题会在列表中标注(使用中):选它不会改变页面。

在代码中,语法以彩色输出在白纸上,行号位于页边距处,并且长行会换行而不是被截断:纸上没有横向滚动,超出页边距的部分就再也够不到了。图片会连同你画的标注一起输出,小图不会被放大——它按原尺寸居中打印。GIF 打印当前显示的那一帧。

通过 LightNote 打印 PDF 会把页面栅格化,你的高亮也会一并输出;若追求最佳排版质量,请用系统的 PDF 阅读器打印,那里文字仍是矢量的。导出为 PDF(文件 → 导出笔记)是另一回事,一切照旧:想让文件里也有页码或文档页边距,就在带选项导出…中勾选那两项;它们默认关闭,以免改变已在导出的人的 PDF。文档很长时会跳过预览,因为预览会同时把所有页面保存在内存中;应用会直接打开没有这个限制的打印对话框。

作为文件夹的 Zip(.zip)

.zip 会在专用标签中打开。左侧是成员的树(名称・大小・日期), 右侧是所选成员的内容(文本/代码、渲染后的 Markdown、图像、PDF), 它们都在内存中打开,不会向磁盘解压任何内容。文本和 Markdown 可编辑, 按 Ctrl+S 会改写 .zip 中的成员。

同一个标签页还能打开 .7z、.rar、.tar(含 .tar.gz、.tar.bz2 和 .tar.xz)、.cab 和 .iso——这些是只读的:可以浏览、查看和提取成员,但不能编辑。只有 .zip 可写,因为它是我们能够安全重写的唯一格式(.rar 是专有格式,连自由库也无法压缩它)。

图像和 PDF 为只读。非常大的成员(以及 .parquet) 仅提供解压到…。不支持创建、重命名或删除成员。

受密码保护的成员可以正常读取:打开其中一个时,LightNote 会要求输入密码(最多三次);勾选“记住此文件的密码”后就不再询问——默认在同一次运行中有效,勾选后在以后的运行中同样有效(由 Windows 保护,仅限本机的你;在设置 → 功能中可全部删除)。请注意该格式与 PDF 的一个差别:.zip 的加密是按成员进行的,而目录保持明文,因此即使没有密码,文件列表也会完整显示——受保护的只有内容。含有加密成员的 .zip 不会在启动时自动重新打开。

块(.lnb)

块捆绑包是名称以 .lnb 结尾的文件夹,在树中被视为 一个单独的项目(双击打开)。每个块都是磁盘上的实际文件, 其顺序保存在捆绑包根目录的 blocks.json 中。它像笔记本一样工作, 由层叠的代码或文本单元格组成。 Jupyter 笔记本从这里进来:在树里右键点击 .ipynb,选择导入为块 (.lnb)。每个单元格都变成真正的文件 —— 可版本管理、可被搜索 ——,而 .ipynb 仍留在原处,因为导入不是转换。笔记本里保存的输出不会一起来:在这里运行单元格,才会得到带时间和命令的真实结果。

每个单元格都有名称、类型按钮(设置解释器/词法器)以及复制、插入、删除、 运行按钮。运行到此处会依次运行直到当前单元格的所有代码单元格。 输出(stdout+stderr)显示在单元格正下方的面板中。可从树(新建)或 文件 → 新建创建。

Ctrl+Enter 执行获得焦点的单元格 — 与 SQL 编辑器相同的操作。

结果会被保存(就像实验记录本):运行结束后,每次执行都会成为捆绑包内 saida/<单元格>/ 下的一个 .md 文件 —— 包含时间、退出码、 耗时、命令以及输出本身。由于是 Markdown,可在任何编辑器中阅读,随笔记本一起在 Git 中版本管理, 并可被AI 聊天检索到。重新打开捆绑包时,面板上方会恢复 上次运行条:点击它即可查看结果,无需重新运行。

历史:该条旁边的历史按钮会列出该单元格之前的执行(时间和退出码)—— 便于比较同一单元格在不同时间返回的内容。每个单元格保留最近 10 条;如需更改,请编辑 捆绑包 blocks.json 中的 historyLimit 键(0 关闭保存)。 过大的输出会被截断(文件中标记 truncated: true)。重命名单元格或更改其类型时, 历史会一并带走;删除单元格会把其历史送入回收站。

让 SQL 单元格连接真实数据库:通过顶部的条(选择连接…)把笔记本指向一个 .lnc 连接,sql 类型的单元格就会在数据库中执行, 而不再走解释器。SELECT 的结果会成为输出文件中的表格(真正的 Markdown, 任何查看器都能格式化显示);INSERT/UPDATE 等会报告改动了多少行, 数据库报错则中止脚本并记下失败的语句。每次查询最多取 100 行(若还有更多,文件会注明)—— 结果是一份记录,而不是整表的副本。

连接以相对路径保存在 blocks.json 中,因此移动或同步文件夹后笔记本仍可用。 若想要自包含的笔记本,可把 .lnc 本身放进捆绑包:它算配置,不会变成单元格。 它与数据库标签页是同一个连接——在一处连接对另一处同样生效,密码遵循 安全口令的规则。未指定连接时,sql 单元格仍像以前一样由所配置的解释器运行。

任务(看板 / 甘特图)

任务捆绑包(.lnt)会打开一个任务看板,具备看板(状态列,拖动卡片)、 甘特图(基于工作量的排程)和日历视图。 每个任务可以有标题、列(状态)、以小时为单位的工作量,以及关联的 .md 笔记。 任务也可通过 MCP 和 CLI 由 AI 处理 (创建・移动・更新・读写笔记)。

任务笔记就是一篇普通笔记。内嵌面板现在显示与 .md 笔记相同的界面:Ctrl+E 在文本编辑器、阅读和格式化编辑之间切换,笔记主题、大纲和属性同样适用。它仍会自动保存——包括你刚在格式化模式下输入的内容,在切换任务或关闭标签页时一并保存。在独立标签页中打开笔记时,也会遵循你的视图偏好,而不是强制使用文本编辑器。

每个任务的字段: 除状态和工作量外,每个任务还有优先级 (为卡片边框着色并对表格排序)、截止日期(逾期时显示红色标记)、多个标签、 子任务清单(卡片上显示进度徽标)和重复(完成一个重复任务会生成下一次)。 可在右键菜单(表格/看板)和属性面板中编辑它们。

捕获与列表: 托盘的快速任务能理解自然语言 (例如 Pay bill tomorrow 5pm #home !high;表示日期、时间和优先级的词需用 英语或葡萄牙语书写)。模板按钮可保存/应用任务模板; 按截止日期分类可筛选今天/未来 7 天/逾期;已保存视图会保存 筛选与排序;托盘/启动器会为今天到期或已逾期的任务显示提醒。

看板: 可按状态、优先级或标签对列分组,创建泳道,为每列设置 WIP 上限(超出时列头变红),并对卡片排序。Linear 风格的键盘操作: ←/→ 移动焦点,Ctrl+←/→ 移动卡片,N 新建,Space 完成/重开, Delete 删除。还有日历视图(按截止日期)。

内嵌笔记: 选中一个任务会在各视图旁显示它的 .md 笔记 (切换任务时自动保存);笔记按钮可切换编辑器,在标签中打开笔记会在 独立标签中打开它。归档一个任务会将其从所有视图中隐藏;显示已归档开关 可显示已归档的任务(淡化)。

在任务设置中可以设置完成的任务在 N 天后归档:打开看板时,停留在最后一列超过该天数的任务会被自动归档(0 = 关闭)。

笔记默认以内嵌方式打开(双击任务),并在输入时自动保存——任务在关闭时从不询问“保存吗?”。笔记内同样可用 AI 操作(Ctrl+K / Ctrl+I)。

标签栏。依赖所选任务的操作(删除、依赖、历史 (Git))以及导出 CSV 都收进了 ⋮ 按钮。视图按钮汇集按到期日的列表、已保存视图和显示已归档——它们都作用于表格。Ctrl+F 聚焦快速筛选,右侧计数器显示筛选后剩下多少任务。

自定义表格(.lnd)

自定义表格(.lnd,文件 → 新建)是你的 小型数据库。你可在运行时定义列(文本・数值・日期・带颜色的固定列表・ 路径・标签・密码),并像电子表格一样录入行。还支持排序和 筛选。路径字段会把行整理成一棵树 (例如 家/办公室)。

密码单元格使用安全口令逐个加密, 在需要时显示。与任务一样,捆绑包以适合 Git 的文本(NDJSON)保存, 因此可进行版本控制,并在多台机器之间合并。

在文本列中,打开单元格会显示一个浮动的多行编辑器。 Enter 换行,Ctrl+Enter 确认。在网格中文本以单行显示 (带 …),完整内容显示在工具提示中。要更改列的类型, 请使用表头菜单。文本 → 密码的转换会用安全口令 加密值,密码 → 文本的转换会要求确认以及 PIN/安全口令后 将内容作为明文写入(不可撤销)。其他转换会保留值。


基库(笔记的已保存查询)

基库(.lnq,位于文件 → 新建 → 新建基库)是对笔记的 已保存查询:按类型和属性筛选,并以表格或看板查看结果。 基库不存储任何数据——行就是你的 .md 笔记,每个单元格的事实来源是笔记的 frontmatter。删除 .lnq 不会丢失任何笔记。

编辑单元格即写入笔记。 在表格中修改属性,只会重写该文件 frontmatter 的那一行。 在看板中把卡片从一列拖到另一列,会写入分组属性的新值(例如从在读改为 已读)。

每条笔记在 frontmatter 中声明自己的属性(type、status、 author 等)。使用笔记的属性侧栏,可以把它们作为带类型的字段 (文本、数字、日期、复选框)来编辑,而不是直接写 YAML——参见 Markdown 笔记。

.lnq 采用 NDJSON(每行一条记录),专为 Git 设计:两台机器可以 并行编辑同一个基库——一台新增列,另一台调整筛选条件——合并时会保留双方的修改且不产生 冲突。

声明的架构(可选)。 LightNote 默认会根据笔记实际使用的内容推断每个 类型的字段——你无需声明任何东西。若想固定架构,请打开工具 → 笔记类型...(或笔记 属性迷你栏上的齿轮按钮):声明每个类型的字段、它们的数据类型(文本、 数字、日期、复选框、选项列表)以及默认模板。有了架构,选项列表字段会 变成只含允许值的下拉框;声明的字段即使还没有任何笔记使用,也会出现在 Base 的列与 筛选选择器中;应用类型模板按钮会插入笔记的骨架。架构位于 .lightnote/types.ndjson——可合并的 NDJSON,与笔记一起纳入 Git 版本管理; 删除它不会改动任何笔记,只是回到推断模式。

筛选中的相对日期。条件的值里可以写 today、yesterday、tomorrow、7 days ago、in 2 weeks 这样的词(还有 3 months ago、in 1 week)。这样 截止 = today 和 截止 < today(逾期)明天依然成立——以前只能手写当天的日期,保存下来的查询 24 小时就过期了。值始终是一个时间点,区间来自它与运算符的组合:修改时间 > 7 days ago 就是"这周动过的"。该字段没有可读日期的笔记不参与任何日期比较,包括否定比较。手写的 ISO 日期(2026-09-01)仍然按文本处理。

索引在后台运行。Base 和工具 → 查询笔记(SQL)在显示结果前会扫描笔记——对每个文件做一次 stat,再读取自上次以来改动过的那些。现在这件事发生在窗口之外:Base 立刻打开,在自己的工具栏上写着正在建立笔记索引…,扫描结束后再填入内容;这期间重新索引按钮是禁用的,因为对同一个文件夹再扫描一次并没有意义。


文件内搜索与待办项

在文件与文档中搜索

要在侧边栏的搜索标签中进行全局搜索,请使用 Ctrl+Shift+F。 它使用 ripgrep,支持正则表达式・区分大小写・全字匹配・批量替换。 在当前文件内,用 Ctrl+F 查找,Ctrl+H 替换。

搜索同样覆盖文档。除了 .md 笔记,它还会读取 PDF、电子表格 (.xlsx/.ods)、Word 文档 (.docx)、LibreOffice 文本 (.odt)、演示文稿 (.pptx) 和电子书 (.epub) 中的文字。AI 聊天和按含义 搜索同理。命中 PDF 时,文件会在该片段所在的页面打开。提取出的文字存放在工作区 之外的缓存中,文件改动时自动更新,文件被删除后也随之清除。 第一次是要花时间的:打开一个有很多 PDF 的工作区会启动一次要几分钟的提取,在它结束之前,这些文档还没有进入搜索。搜索标签页会在过程中说明这一点(正在准备文档(80 个中的 12 个)),并在可以重新搜索时提醒你。从第二次开始,只重做变动过的文件。

同样支持:.rtf、.xps/.oxps、LibreOffice 演示文稿(.odp)、视频字幕(.srt/.vtt)、纯文本表格(.csv/.tsv)、已保存的网页(.html/.mhtml)、归档邮件(.eml)、Jupyter 笔记本(.ipynb)、文献目录(.bib/.ris)以及纯文本文件(.txt)。 文本标记语言有自己的读取器:reStructuredText(.rst)、AsciiDoc(.adoc)、Org(.org)和 Typst(.typ)。章节变成标题,列表和表格变成本应用的写法,公式会被绘制,序言则不入索引:否则 #set page(...) 和 :stem: latexmath 会变成索引片段,章节名也不会随正文一起传递。字幕中的命中会打开说出这句话的时刻。 扫描版 PDF 不会悄无声息地消失。有页面却没有文字的文档(每页都是图片,没有 OCR)会带着一行说明进入索引,搜索标签页也会告诉你有多少个——没有这句话,你会去找书里确实有的词,找不到,然后以为搜索坏了。 你也可以让它变得可读:装上 Tesseract 之后(LightNote 会引导你一键安装),PDF 的 ⋯ 菜单里会出现识别文字(OCR)…。它每个文档只跑一次,可能要几分钟——跑完之后,这些文字就和其他 PDF 一样进入索引。搜索标签页的提示会带你到第一个这样的文档。缓存以明文保存文本。它位于你的用户文件夹,在工作区之外:能访问它的人就能在那里读到你文档的内容,即使原件存放在加密磁盘上。.lne 文件(加密笔记)从不进入缓存——它存在的意义正是不在磁盘上可读。

LaTeX 由专门的读取器处理。.tex 文件不会被当作纯文本读取:导言区被排除在外,\section 变成标题,\cite 变成 [@key],公式原样通过 —— 绘制它的正是绘制你笔记中数学公式的那个引擎。命中会在它来源的那 一行打开文件。文件的右键菜单里(文件打开时也在标签页的工具栏里)有导入为笔记 (.md): 笔记就建在旁边,.tex 仍留在原处,导入两次也不会覆盖。反方向是笔记工具栏上的导出为 LaTeX (.tex)...。

文档预览与源代码

打开文档会显示文字预览。.docx、.odt、 .epub 或 .pptx 以只读方式打开,显示提取出的文字和文档中的图片 —— 没有 Word 样式、图片的定位、复杂表格或修订记录。标签页仍然是该文档:名称、文件夹和 会话都指向它,而不是缓存。.xlsx 电子表格仍在表格视图中打开,那里能看到 更多内容。

把文档变成笔记。通过文件 → 将文档导入为笔记...(可一次多个)、树的右键菜单,或预览本身的导入为笔记 (.md)按钮,.docx、.odt、.epub、.rtf、.pptx、.html、.eml、PDF 或 LaTeX 会变成文件旁边一条可编辑的笔记。一起过来的有带标题、列表、链接和表格的文字、脚注、变成 LaTeX 公式的 Word 公式,以及图片——图片保存在笔记旁边的 附件 文件夹里。文档的标题、作者和日期成为属性,source 说明笔记来自哪个文件。原文件仍留在原处——导入不是转换——,再次导入会创建 名称 02.md,而不会覆盖您编辑过的内容。Jupyter 笔记本(它会变成块)、.csv(以表格打开)、.bib/.ris 文献(引用直接读取它)和源代码不会出现这个选项。结构来自文档的样式:即使样式名称被翻译,也能识别 Word 的标题;字符样式带来粗体、斜体和代码,引用和代码段落变成我们的块,自动目录变成一个由笔记保持更新的 [TOC];从 .rtf 带来列表、表格和链接,从 HTML(包括 Word 和 Google 文档保存的)和 EPUB 带来标题、嵌套列表和表格。

查看这个文件夹用了多少其他编辑器的写法。 在 工具 → 检查文件夹兼容性... 中,LightNote 会读取已打开文件夹里的笔记,并把找到的内容分成三组:它会绘制的(维基链接、嵌入、标注、标签、高亮、公式、脚注、任务、块标记);保留在文件中但不绘制的(插件查询 dataview、tasks、query,.canvas 画布,.base 数据库,以及块嵌入);以及可以转换为本应用写法的内容。是否转换由你决定,绝不会是保存的副作用:勾选结构,查看并排预览并确认——每个被修改的文件在写入前都会记入文件历史,有未保存更改的打开文件不会处理。目前有两项转换,在 Obsidian 那边都不会有任何损失(那边两种写法都能读):指向本文件夹的 obsidian:// 链接变为 [[笔记]](指向其他仓库的不会转换,因为那会改变目标),行内脚注 ^[文本] 变为 [^n],定义放在末尾。

把整个 Notion 资料搬过来。在 Notion 中使用 Export → HTML(或 Markdown & CSV)并勾选 Include subpages,把下载的 .zip(或文件夹)放进工作区,建好目标文件夹,然后运行 lnote vault-import --path <导出> --out <目标>(也可以在 AI 助手里用 vault_import 工具)。不需要解压,整个工作区的导出里面还套着一个 .zip,也一样。每个页面会变成一则笔记:页面属性变成笔记属性,Notion 的彩色标注变成这里的框(HTML 里由颜色决定类型;Markdown 不保存颜色,框会作为普通提示到达),待办会带着勾选状态到达,公式会变成 LaTeX 公式,折叠块会变成 <details> 框(折叠标题会变成标题),页面目录会变成 [TOC],页面之间的链接会被改写到新笔记上——两个同名页面可以共存,因为第二个会变成 名称 02.md,而链接仍然指向正确的那一个。数据库会作为 .csv 复制到 Anexos。在 Notion 里写的 #话题 仍然是文字:它在那里不是标签,在这里也不会变成标签。不会覆盖任何东西,旁边还会写下一则报告笔记,说明进来了多少笔记和附件,并列出没有找到目标的链接——这些链接保持原样。

这个操作就在菜单里。文件 → 从其他应用导入... 会打开助手:选择你导出的文件夹或 .zip(Evernote 的 .enex 也可以),来源应用会通过文件名的形式识别 — 如果没有识别出来,就在旁边的列表里选一个。整个文件夹都会被读取,包括子页面。目标位置已经填好了工作区里的一个新文件夹,以应用命名,这样导入的资料不会和你自己的笔记混在一起。读取和写入都在窗口之外运行,最后屏幕会说明进来了多少条笔记和附件,以及改写了多少条链接。

支持五个应用。Notion 用以 HTML 或 Markdown 导出的文件夹或 .zip;Evernote 用 .enex;Joplin 用 .jex(或 MD + Front Matter 文件夹);Logseq 用图谱文件夹 — 里面有 logseq/config.edn 的那个;Roam Research 用导出的 .json。在所有这些里,笔记本和命名空间都会变成文件夹,日志会以 yyyy-MM-dd 的名字放进日记文件夹,任务变成 - [ ],高亮变成 ==像这样==,块引用变成那个块的文字加上它所在页面的链接 — 其他应用的语法不会进入你的工作区。这里没有对应写法的内容,例如 Logseq 的查询或 Roam 的表格,会保留为行内代码,报告会说明出现了多少次。

源代码也可以进入按含义搜索。在工作区 → 本文件夹设置里有把源代码纳入按含义搜索:代码文件会和笔记一起被索引,每个函数或类一个片段——这正是「超时是在哪里处理的?」这类问题能命中整个函数、而不是在 if 中间被截断的片段的原因。它尊重 .gitignore。默认关闭,且按文件夹设置:笔记变化很慢,代码整天都在变,一个正在开发的仓库会产生几万个片段——每一个都是你的嵌入提供方要计费的调用。

高亮、标记与待办项

高亮与标记是两回事。快速查找(Ctrl+F)只是用琥珀色高亮匹配项: 这是临时的,关闭查找栏或清空输入框后就会消失。而编辑 → 高级查找…中的标记全部 则是你的主动决定——它把匹配项涂成红色,并在对应的行上添加书签(边栏上的蓝色圆点), 直到你使用清除标记为止。两者互相独立:关闭快速查找不会抹掉你标记的内容, 清除标记也不会抹掉查找的高亮。二者都会显示在缩略图的标记条上,各用各的颜色。 清除标记只会删除标记全部添加的圆点:你自己用(Ctrl+F2)在匹配行上加的书签会保留下来。

侧边栏的待办项章节会把代码中的 TODO/FIXME 标记以及工作区 Markdown 笔记中的任务 (- [ ])汇集到一处。单击即可直接跳转到对应行。

版本控制(简易 Git)

克隆仓库

要在已有的仓库上工作,请使用文件 → 克隆 Git 仓库...——这一项也在起始界面上,以及尚未成为仓库的文件夹的版本控制面板里。粘贴仓库页面显示的 HTTPS 或 SSH 地址;页面本身的网址也可以,整条复制的 git clone ... 命令同样可以。选择父文件夹和文件夹名:向导会显示它将创建在哪里,并在那里已经有东西时提醒你。高级选项里有分支、浅克隆(只取最后一个提交)和子模块。

当服务器要求登录时,LightNote 会在一个窗口里询问:用户名和令牌、SSH 密钥的密码短语,或者对这台电脑从未见过的服务器密钥的确认——这时窗口会显示指纹以及该服务公布清单的链接,默认是不信任。回答直接交给 Git,LightNote 不会保存;保存它的是 Git 的凭据管理器,前提是它已安装(Git for Windows 自带 Git Credential Manager)。信任该密钥会把它写入 ~/.ssh/known_hosts,就像 ssh 自己会做的那样。

如果克隆失败,界面会说明发生了什么并给出出路:SSH 密钥被拒绝时改用 HTTPS,公司代理检查 HTTPS 时使用 Windows 证书,连接中途断开时只下载最后一个提交,Windows 不让创建文件时使用长路径。技术细节里有 Git 的消息,无法识别的内容可以交给 AI。结束后,向导会在本窗口或新窗口中打开克隆好的文件夹。

对打开的文件夹做版本控制

版本控制按工作区选择启用。在工具 → 工作区设置中 启用后,LightNote 会创建一个 Git 仓库(如果还没有),并显示 版本控制侧边栏(Ctrl+Shift+G)。

在自动模式下,LightNote 会在常规设置中选定的时机(保存时・关闭标签时・ 关闭窗口时)自动保存版本(提交)。在手动模式下, 你在面板中写一条消息来保存版本。状态栏的指示器会显示状态 (无更改、X 项更改…),单击会打开工作区设置。 你可以查看每个文件的差异,并还原(放弃)未保存的更改。

自动化按文件夹分为 3 个级别(在工作区设置中):手动(不自动)、 自动提交(自动保存版本,但不同步)和全自动(提交并同步——提交后 推送+定期拉取;需要无提示的 Git 凭据)。面板会显示相对于远程的↑ 待发送 / ↓ 待接收 状态行;当有待发送的版本时,主按钮会从提交变为同步——这样就能清楚地看出, 保存之后还需要同步。

Git 面板和树的 Git 菜单提供按文件的 添加 (git add) 和 还原 (git restore),以及唯一的 查看更改,它会打开比较界面。

比较界面把两个版本并排对齐显示:相同的内容始终两两相对,每一侧显示各自文件的行号。被替换的行显示为琥珀色,行内改动的部分会被高亮。统一视图按钮切换到补丁格式,交换两侧更换比较基准,F8 / Shift+F8 在各处更改之间跳转。

历史与变更条

代码编辑器和笔记工具栏上的 历史 按钮会打开当前文件的版本列表(就是侧边栏的同一个部分)。它把 提交 和 LightNote 每次 Ctrl+S 记录的 本地保存 汇集在一起,因此在不是仓库的文件夹里也能用。每一行显示主题、作者、时间以及增删的行数;圆点用于区分你自己的提交、LightNote 自身的保存和来自 AI 会话的提交。若有未提交的更改,它就是第一行。点击某个版本会显示该版本中的更改;打开整个版本、与当前版本比较、比较选中的两个版本都在右键菜单里。

启用版本控制后,页边的彩色条标出自上次提交以来更改的行 —— 代码编辑器和笔记都有,并且它会跟随你的输入:撤销回原样时它就消失,不必等到保存。要关闭请用视图 → 更改条;关闭后它不只是被隐藏 —— 根本不会进行计算。点击色条会显示该片段原来的样子,并提供 还原此片段(Ctrl+Z 可撤销)、复制原内容,以及 在差异中查看——直接打开定位到该行的完整比较。关于本地历史有一点要注意:它按路径保存,因此重命名文件会丢失它的本地保存 —— Git 的提交不会。

快照与备份

从版本控制面板的 ⋯ 菜单(或工具):

  • 创建快照: 为当前状态加上日期时间标签,以便日后回退。
  • 还原快照: 选择一个快照和操作 — 在保留历史的同时取回文件(推荐)、 将历史回退到该时点,或作为独立副本打开。
  • 导出副本(.zip): 将整个工作区压缩为一个自包含文件 (嵌入项目标记),用于发送或在别处保存。
  • 移动工作区文件夹…: 在磁盘上移动根目录,并调整会话和 注册表中的路径。

审查更改(检查点)

工具 → 审查更改…会在一个标签中显示自某个基准以来工作区中 所有更改的汇总差异。左侧是新增/更改/删除的文件列表,右侧是所选 文件的差异。它的设计目的是在接受工作前 审查 AI CLI 会话更改了什么。

基准可以是最新版本(HEAD)或检查点。在开始任务前 创建一个检查点(标签上的按钮),之后再比较。检查点不会 创建提交,也完全不触动历史。需要在文件夹中启用版本控制。

批量评论。在查看 AI 会话时,评论按钮(文件列表的右键菜单中也有)会为选中的文件记下一条评论,并锚定到你选择的片段。评论会积累在列表中,只有点击发送到会话时才会以一条消息一起发往 CLI 终端。这是故意的:逐条发送会让智能体修好一处又弄坏另一处,因为每一轮都看不到其他意见。修订后,评论仍留在列表中,便于你核对是否已处理;勾选已解决的条目,剩下的会进入下一次发送。若智能体重写了被评论的区域,评论会变淡而不是消失。 发送会在状态栏中确认,处于休眠的会话会自动恢复以接收这批评论。

文件比较(差异)

工具 → 比较两个文件…会将两者并排(两个编辑器)打开, 并逐行标出差异。比较为只读。

◀ / ▶ 按钮(或 F8 / Shift+F8)跳到上一处/下一处更改。通过 Git 面板还可将文件与已保存版本并排比较(HEAD 对 磁盘)。

运行代码(F5)

工具 → 运行文件(F5)会保存当前文件,并根据为该扩展名注册的 解释器在终端中运行它。默认覆盖 .py、.sh、 .bat、.cmd、.sql。解释器可在 设置 → 运行中编辑/添加。

命令是含有 {file}(文件)、{folder}(文件夹)、 {name}(名称)的模板。例如对于 Python 即为 python {file}。你也可以用 Ctrl+Shift+Enter 仅将选区/当前行 发送到终端。在块中,每个单元格都以同样的方式运行。

当打开多个终端时,运行按钮带有下拉箭头,用于选择并记住目标终端。

可点击的错误。 在输出面板(F6)中,文件:行号形式的引用会变成链接:Ctrl+点击或双击即可在该确切位置打开文件。支持 Python 回溯、Node 调用栈、编译器(gcc/clang/MSVC)错误以及 linter 输出。只有磁盘上确实存在的路径才会变成链接,其余仍是普通文本。

逐个查看错误。 在输出面板中,F8 跳到下一个错误,Shift+F8 跳到上一个(面板栏上也有按钮)。跳转是循环的:它会把输出滚动到该处、高亮该片段,并在准确位置打开文件。

终端与 AI CLI

逐命令状态圆点。 你运行的每条命令旁会出现一个圆点:成功为蓝色,失败为红色(工具提示显示时间、耗时和退出码)。LightNote 会在 PowerShell 和 Git Bash 中自动启用,无需更改你的配置——可在设置 → 终端 → Shell 集成中开关。其他 shell(cmd、WSL)或自定义命令不会显示圆点。

用 Ctrl+'(在美式键盘布局上也可用 Ctrl+`)打开集成终端(通过 ConPTY 的完整 VT 模拟器)。 它会成为一个标签,可在窗口的各区域之间移动。可用的 shell 以及在 PATH 中检测到的 AI CLI(例如 claude),可在设置 → 终端和 设置 → AI 助手中配置。在新建终端菜单中选择某个 AI CLI 时, 该 CLI 会作为终端打开 — TUI/颜色照常显示,退出时标签 关闭。

安排发送。在终端的右键菜单中,安排发送…可让你稍后发送一个 Enter(或一段文本)——非常适合在使用限额重置时继续某个 AI CLI, 无需一直盯着。可选择触发方式:在某个时间、经过若干分钟、每隔 一段时间(重复),或当终端空闲时。计算机会保持唤醒直到触发。 只要终端标签保持打开,该安排就有效。

你可以同时拥有多个安排。当存在安排时,菜单项会显示已安排的发送 (N)…, 并打开一个管理器: 一个列出终端、将发送的内容、时间,以及到下次触发的 实时倒计时的表格,带新建、编辑和移除按钮。只要存在安排, 状态栏就会出现一个带计数的时钟指示器(单击可打开管理器),并有一个小时钟 标记已就绪的终端标签。

AI 回合结束提示。 当某个 AI 命令行终端安静下来时——这表示智能体已经结束了本回合——LightNote 会提醒你:出现一个浮层提示(点击即可切换到该终端),标签页闪烁数次后保持高亮,直到你打开它。如果窗口在后台,任务栏按钮也会闪烁。该提示只对 AI 命令行终端生效,并且只在该标签页未获得焦点时出现。可在 设置 → 终端 → AI 回合结束提示 中开关并调整静默时长。

终端会随窗口一起回来。关闭并重新打开工作区时,普通 shell 的终端(命令提示符、PowerShell、Bash)会被重新打开,而且是在你当时所在的文件夹,不是终端最初打开的那个。屏幕内容不会回来,但命令历史属于 shell 本身,仍然保留:↑ 键照常可用。AI 助手会话不在其中,仍会单独询问,因为新终端并不是同一段对话。环境变量以及你在该会话中手动激活的环境(例如 venv)也不会回来:终端会在正确的文件夹打开,但它是一个全新的 shell。

对选区的 AI 助手(Ctrl+K / Ctrl+I)

用 AI 提问与编辑

默认 AI。 在 设置 → AI 助手 顶部,默认 AI 决定 Ctrl+K/Ctrl+I、AI 聊天 聊天(可按会话更改)以及自动任务(改写问题、总结、音频摘要、生成上下文)所用的助手。它同时列出 CLI 和 API 提供商。音频转录 和 embeddings 有各自的提供商,LightNote 会根据所选提供商 建议一个模型。

在编辑器中,无论有无选区,按 Ctrl+K(向 AI 提问)或 Ctrl+I(用 AI 编辑) 都会打开一个浮动的内联聊天式弹窗。提示框中已在一个空行下方预先填入选区。 你在其上方输入指令,并按 Ctrl+Enter 发送。在弹窗中可选择 AI(默认 AI 已预选)和结果模式: 用差异替换选区 (原文 × 建议,带应用 / 复制 / 放弃),或仅以文本显示回答。

LightNote 以“一次性”模式运行 AI CLI(不打开终端)。 CLI 和默认 AI 在 设置 → AI 助手中。

连接一个模型

通过 API 的模型。除本地 CLI 外,您还可以在设置 → AI 助手中通过兼容 OpenAI 的 API(OpenAI、Groq、DeepSeek、OpenRouter、Gemini、Anthropic,以及 Ollama/LM Studio 等本地实例…)注册 LLM 模型。从目录中选择提供商(基础 URL 已就绪),粘贴密钥(仅在本机以编码形式保存),使用获取模型…和测试。已注册的模型会出现在 Ctrl+K 的同一选择器中,与 CLI 并列。

一步完成连接。通常的做法不是填写表格:在设置 → AI 助手中点击连接 AI…,选择提供商(列表会标出有免费方案的以及在你的电脑上,无需密钥运行的),按三个步骤操作,用按钮打开密钥页面并粘贴密钥。LightNote 会自动填好地址和模型,并在保存前测试连接 — 密钥有误当场就能看到,而不是在对话进行到一半时。上方的列表显示已连接的项目,以及尚未完成的项缺少什么(“尚未粘贴密钥”“尚未选择模型”);双击即可在该提供商上重新打开连接向导。

精细调整。地址、模型、MCP 权限、CLI 命令、音频转写和嵌入仍然都在页面末尾的高级中 — 在向导本身的高级选项里,也可以在连接前更改基础 URL 和模型。什么都没有删除,只是从初学者的路上挪开了。 嵌入还有一个可选的维度字段:有些模型可以返回更小的向量(512 而不是 1536),几乎不损失质量却能把缓存减半。不确定就保留(模型默认)——并非所有提供方都接受这个参数。改动这个值会使缓存失效:维度不同的向量无法比较,缓存会被丢弃并在下一次搜索时重建,那要花新的调用。

并非所有失败都一样。它们需要的处理恰好相反,所以 LightNote 把它们分开对待。提供商过载和调用频率限制会自行恢复:应用会自动重试,并遵守提供商要求的等待时间;只有这样仍不行时你才会看到错误。余额或消费上限重试多少次都无济于事——消息会直说,免得你一直尝试。对话太长需要的是新建会话,而不是换模型。而模型本身的问题——已淘汰、不在你的账户内、不在你的套餐内,或者接了调用却不作答——才是换模型能解决的那一类。 当要求的等待时间长到不值得干等时,消息会告诉你它要求了多少秒,而不是让窗口一直卡着。

让它自己换模型。勾选当前模型失败时自动更换模型,LightNote 就会按那里显示的顺序,尝试该提供商的推荐模型。默认不勾选是有意为之:每一次尝试都是一次计入你账户的调用。替代模型绝不会比你选的那个更贵——列表按由贵到便宜发布,应用只会沿着它往下走;不在列表中的自定义模型,会直接落到最便宜的那个。只有确定性的失败才会写入提供商配置;如果是网络出了问题,这次更换只对那一次调用有效,你的选择依然保留。更换从不悄悄进行:通知会说明是哪个模型作答,以及这次更改是否被保存。

还有一条比失败更早到的提醒。自动更换只在调用失败之后才动作,但 LightNote 自己会查询的模型目录,通常在那之前就知道了淘汰的事。当由 LightNote 自己登记的某个模型从目录中消失时,会有一条提醒说明,并在设置 → AI 助手中出现一个按钮,可改用它的后继——按照同一条规则,后继绝不会更贵。这条提醒只针对应用自己选定、而你从未改动过的模型:你亲手输入的模型是你的选择,LightNote 不去插手。

当谁都不作答时。LightNote 会说明发生了什么,并提供更换模型、改用其他助手或先停用该提供商三种选择。被停用的提供商(高级中表格的启用列)只是从列表中消失,密钥和其余配置都不会丢失。在助手列表里,每一项都会标明自己是本地还是云端——选择云端的,发送的文本就会离开你的机器。

无需密钥:本地 LLM

还没有连接 AI? 在没有连接任何助手时按 Ctrl+K,LightNote 会说明情况并提供当场连接;连接完成后,你请求的操作会继续执行,无需再次按下快捷键。

本地 LLM(无需密钥)。本地提供方——Ollama、LM Studio、llama.cpp——无需 API 密钥:在添加中选择其一(选择器会显示服务器是否正在运行),再用获取模型…从你已下载的模型中挑选。若未安装 Ollama,LightNote 会主动帮你安装。首次运行时它已预先登记,你只需选择模型。由于本地模型的响应可能慢得多(尤其是首次生成、加载模型时),LightNote 对它的等待时间远长于云服务。你的文本不会离开本机。

接受、提示词与操作在哪里

逐块接受。 当结果以差异形式呈现时,你不必全部接受:每个更改的代码块都有一个复选框来决定是否包含,最终文本仅由你保留的代码块重新组合而成。提示还会带上文件的自动上下文(路径、语言以及选区周围的行),让 AI 无需你粘贴任何内容即可更精准地回答。

提示词库。 AI → 提示词库… 把可复用的提示词保存为工作区 Prompts/ 文件夹下的 .md 文件——开放格式,可用 Git 版本管理,也是你第二大脑的一部分。选择器提供搜索、预览,以及新建提示词的按钮。选中一条后,{selection}、{file}、{folder}、{name}、{language} 等字段会用当前编辑器的上下文填充(你自定义的变量会被保留),正文随后被填入 Ctrl+K 的输入框,或发送到当前的 AI 终端(不会直接提交)。

不仅限于代码编辑器。 AI 操作(Ctrl+K / Ctrl+I 以及右键菜单)在 Markdown 编辑器、任务的内嵌笔记和数据库的 SQL 查询编辑器中同样可用——在每一处,弹窗都会在光标处打开并就地应用结果。

所有 AI 操作都在 AI 菜单中(☰ 按钮以及活动栏的魔杖按钮):询问 AI(Ctrl+K)、用 AI 编辑(Ctrl+I)、AI 会话、询问笔记、提示词库、生成项目上下文文件、在此文件夹启用 AI 和配置 AI 助手。

输入过程中窗口不会关闭。在编辑器里点击也不会关掉它 —— 你可以回头再读代码或选中另一段,而不会丢失已经输入的指令。关闭它的是 Esc、窗口自身的 ✕ 以及结果操作(接受/拒绝)。切换标签页时它会收起并保留已写的内容:回到同一个文件按 Ctrl+K,指令会从原处回来。

AI 会话

会话与隔离副本

AI → AI 会话… 打开一个驾驶舱,以每个会话一张卡片的形式列出在任意 LightNote 窗口中打开的每个 AI CLI 终端——包括彩色状态圆点、CLI 名称、窗口,以及需要注意的事项徽章(已排定的发送、隔离副本)。双击可聚焦该终端;卡片的 ⋯ 菜单(或右键)提供查看该会话的更改(以会话开始时创建的检查点为基准打开审阅界面——参见 查看更改)以及排定一次发送。这是同时盯住多个“vibe coding”会话而不在窗口之间迷失的方式。

当你在 Git 仓库中将 AI CLI 作为终端打开时,LightNote 会自动保存一个检查点(标记为“会话 …”),以便你之后准确查看并还原该会话所做的更改。该功能可在设置 → 常规 → 功能中关闭。

隔离副本(worktree):在 Git 文件夹中,LightNote 可以在文件夹的隔离副本(独立分支)中运行 AI 助手,而不改动你手动编辑的文件。首次会询问,之后自动进行(在工作区设置 → 集成中按文件夹开关)。隔离副本徽章标记该会话(分支和路径在提示中),合并…菜单项(把改动带入你的文件夹——若有未提交的改动会先询问)和丢弃…(丢掉副本和分支)负责收尾。

空闲、上下文与休眠

会话空闲提醒。当 AI CLI 空闲时(已完成或正在等你),LightNote 会显示通知;点击即可打开该会话更改的审查。这样你可以启动任务后就离开。可在设置 → 终端中关闭。

项目上下文文件。当你在没有上下文文件(CLAUDE.md 或 AGENTS.md)的文件夹中打开 AI CLI 时,LightNote 会提示生成一个——你也可随时通过工具 → 生成项目上下文文件…创建。好的上下文文件描述项目的结构和约定,帮助 AI 减少错误,无需你每次会话都重新解释。如果配置了 AI 提供商,则由它生成内容;否则你会得到一个供填写的骨架。

休眠空闲会话。闲置的 AI CLI 仍会占用内存(对话和模型客户端)。在设置 → 终端中可以设定一个静默时长,超时后 LightNote 会终止该进程,并在你回到该标签页时自动恢复——终端历史仍留在屏幕上。默认开启(30 分钟;实测中三个空闲的 Claude Code 会话占用超过 1 GB),且仅适用于运行在独立副本中、且其 CLI 知道如何恢复该文件夹对话的会话(目前为 Claude Code 和 Antigravity),否则恢复会带回另一个会话的对话。 设有定时发送的会话不会休眠。此外,恢复的是对话,而不是工具的界面:已输入但尚未发送的文本会丢失。

活动与按含义搜索

活动标签页。表格显示当前正在运行的内容;活动标签页保留历史:每次智能体完成本轮、在独立副本中开始或进入休眠,都会连同时间和最后一条回复的片段一起记录。未读项以粗体显示,计数也会出现在托盘菜单中——这样离开电脑的人也能看到自己错过了什么,因为通知是瞬间即逝的。打开该标签页会将全部标为已读;双击可返回该会话。 会话的结束同样会记录(包括 CLI 自行退出的情况),因此在你离开时结束的会话会留下痕迹,而不是直接消失。如果事件对应的会话已不再打开,双击会给出说明,而不是毫无反应。

按含义搜索。当搜索找不到任何字面匹配时,结果旁边会出现按含义搜索:LightNote 不再逐词匹配,而是去找谈论同一件事的笔记——当你记得那个想法、却想不起当时写的词时特别有用。其他按钮旁还有一个 ~ 开关可以直接切换。在这个模式下,正则、全词匹配、区分大小写、文件过滤和替换都会消失:它们都不适用于按相似度的搜索。该功能需要在设置 → 常规 → 功能中开启语义增强(嵌入);未开启时,按钮会带你去开启它的界面。每个文件夹第一次使用时,LightNote 会告诉你需要索引多少个片段并请你确认——这次索引由你的提供商计费,且只发生一次;之后每次搜索只花一次查询的费用。

AI 聊天

工作方式

AI → AI 聊天… 打开一个使用你自己的笔记作为上下文来回答的聊天。LightNote 不会把所有内容发送到云端,而是在本地从你的知识库中检索最相关的片段(使用 ripgrep,无需嵌入向量,也无需外部服务),用这些片段组织问题,并发送给你已注册的 API AI 提供商。回答会附上可点击的来源笔记引用——点击即可打开该笔记。非常适合“与你的第二大脑对话”,找回你已经记录过的内容。对话历史只保存在内存中(不会被保存);该功能可在设置 → 常规 → 功能中关闭。

窗口布局。 选择器都在顶部的同一条栏里:AI、笔记文件夹,以及——当有文本编辑器活动时——上下文;右侧是两项权限(工具 和 允许修改)和 + 按钮(开始新对话)。在提出第一个问题前,界面会说明本窗口将针对什么作答,并提供如 总结此文件夹 的一键快捷方式。在提问框中,Enter 发送,Shift+Enter 换行;答案返回期间,发送按钮会变成 停止。

工具与权限

让 AI 使用工具。允许修改复选框会改变工作方式:模型不再只根据关键词检索取回的片段作答,而是可以自己去查——读取文件、搜索笔记、列出任务——然后再回答。打开时,LightNote 会立即测试所选模型是否会调用工具:许多提供商会接受请求却干脆忽略工具,若不检查就会得到一个看似查证过的编造答案。结论按“提供商+模型”组合记住七天。需要API 提供商(本地 CLI 无法接收工具)。回答末尾会列出实际用过的工具,便于你判断而不是盲信。 如果判定为否定——提供商可能只是当时无法访问——消息旁会出现重新检查按钮,忽略已保存的结果重新测试。

让 AI 修改你的东西。第二个复选框允许修改是单独的一步,默认关闭。打开后,AI 还能创建笔记和任务、修改属性并写入今天的笔记——但没有你的确认就什么都不会发生:更改会以清楚的措辞出现在对话中(“创建任务 买面包”),并附允许与拒绝。拒绝不会结束对话;模型会被告知并继续解释或提出别的办法。读取从不询问,只有修改才会。覆盖任意文件和访问网络被有意排除在外:只要 AI 仅仅读取,从外部同步进来的笔记中夹带的恶意文字就无法变成对你磁盘的改动。 如果改动是写入今日笔记,请求还会说明它会落到哪个文件夹——这是唯一一种目标文件不在 AI 请求内容中的写入。

它依据什么回答

笔记,还是打开的文件。 窗口顶部的 上下文: 下拉框决定对话的主题:Vault 笔记(默认,见下文)或 当前编辑器 —— 后者回答关于编辑器中打开的文件而非 vault,使用选区及其周围的行(或勾选 整个文件 使用整份文件)。这样同一个窗口既能谈你的笔记,也能谈你正在编辑的代码,可多轮进行。当前编辑器 仅在有活动文本编辑器时出现。此外,在快速助手(Ctrl+K)中,结果里有一个 在聊天中继续 → 按钮,它会以 当前编辑器 上下文重新打开本窗口,并带入那一轮的问题与回答 —— 无需重来即可深入。

问哪些笔记? 该窗口只有一个,每次只针对一个文件夹作答——顶部栏中 AI 选择器旁的 笔记来自: 下拉框显示并选择目标。它打开时已指向你打开聊天的那个窗口的文件夹,并列出当前打开的文件夹,其后是最近使用的;选择文件夹… 可指向其他任意文件夹。切换后对之后的提问生效——你可以一边在某个项目中工作,一边询问另一个项目的笔记。手动选择的文件夹会一直有效,直到你再次更改(重新打开窗口不会把范围拉回去)。 提问处理期间(包括停下来等待你确认时),AI、上下文和文件夹选择器都会锁定:正在返回的答案属于你提问时的模型和文件夹。

如何提问。 检索按主题而非指令进行:LightNote 取出你问题中的词,查找包含这些词的笔记。请指出笔记中出现的主题(“我记过关于 Postgres 的什么?”),而不是笼统的请求(“做个总结”)——后者没有可供检索的内容词,因此不会检索到任何内容,聊天会提示回答未使用你的笔记。只读取 .md/.markdown 笔记;在没有任何此类文件的文件夹中,聊天会告知并且不消耗一次 AI 调用。

更好的搜索、总结与改写。 检索使用带 BM25 排序的本地索引,忽略重音(“configuração”能找到“configuracao”),并且在没有词间空格的语言(日语、中文、韩语)中也有效——索引尚在构建时由 ripgrep 兜底。总结此文件夹 按钮,以及资源管理器中任意文件夹右键菜单里的 用 AI 总结…,会分批读取笔记并返回一份文档。在 设置 → 常规 → 功能 中,用 AI 改写问题 选项会在搜索前把你的问题扩展为关键词(每个问题消耗一次 API 调用)。

密钥与对话

只需一个密钥。 首次运行时,LightNote 已在 设置 → AI 助手 中预先登记 OpenAI、Google Gemini 和 Anthropic (Claude)——您只需把 API 密钥粘贴到所用的提供商即可。如果没有任何提供商拥有密钥,窗口会显示 立即配置 按钮,直接打开该界面。

对话会被保留。 顶部的时钟按钮会打开该文件夹的以前的对话列表:点击其中一条即可回到它。新对话会归档当前对话而不是删除它,在列表中右键则可彻底删除一条(需确认)。对话按文件夹保存——切换笔记文件夹就会切换列表。

拿到回答之后

如何处理一个回答。 每个回答下方都有复制(将 Markdown 文本放入剪贴板,保留格式)和采集到笔记(连同引用笔记的链接一起送到今天的笔记)。对话操作菜单中有复制对话、将对话保存为笔记…(在所查询的文件夹写入一个 .md)、重新生成上一个回答和编辑上一个问题。

附加文件。 当搜索找不到你心里想的内容时,用 + 按钮附加一个文件:它总是会进入提问,不参与搜索排名。笔记、代码、文本和 PDF 都可以(PDF 会提取文本);二进制文件会被当场拒绝,而不会成为上下文里的噪音。附件以胶囊形式显示(点击可取消附加),开始新对话时会消失。在支持的提供商上,回答也会随着模型书写逐步出现。

助手记忆。顶部 ☰ 按钮的对话操作菜单中,助手记忆…会打开所选文件夹根目录下的 记忆.md 笔记(首次会创建)。其中的内容会进入关于该文件夹的每一个提问,并排在检索到的片段之前:你的偏好、你已经做出的决定、你排除了什么以及为什么。它就是一个普通的 .md——随时编辑、用 Git 版本管理、删除即可关闭记忆。启用写入工具后,助手还可以提议把某条事实存进去,并且和所有写入一样等待你的批准。

总结一个文件夹。整个工作区可以,任意子文件夹也可以:在资源管理器中右键点击它,选择用 AI 总结…。在花钱之前,LightNote 会告诉你将读取多少条笔记、会产生多少次 AI 调用(每次都由你的提供商计费),并让你选择形式:概览是连贯的文字,整合知识则带固定小节(决定、待办、想法、矛盾之处和悬而未决的问题;没有内容的小节会被省略,而不是用编造的内容填满)。如果文件夹里的笔记超出费用上限,回答会说明有多少条未纳入。最后,保存为笔记会把总结写进被总结的那个文件夹里,标题区记录日期和笔记数量,并且绝不覆盖此前的总结。

HTTP API 测试(.lnh)

工具 → 新建 API 测试(.lnh)…会打开一个保存在 .lnh 文件中的 HTTP 客户端。一个文件代表一个端点(方法・URL・标头・ 正文),并在左侧列表中保存多个测试。每个测试都有用于 URL・标头・正文的 {name} 变量的值,以及最后一次执行的结果(状态・时间・日期・响应 标头和正文)。它还会显示等效的 curl 命令。同样的单次操作也可通过 CLI(http)和 MCP(http_request)使用。

Ctrl+Enter 发送请求。

导入和导出 OpenAPI。 测试列表顶部的箭头按钮可打开导入 OpenAPI… 和导出 OpenAPI…。导入会读取 YAML 或 JSON 格式的规范,支持目前在用的三代 — Swagger 2.0、OpenAPI 3.0 和 3.1 — 并自动组装测试:路径中的 {parameters} 与 .lnh 的 {name} 变量语法完全一致,规范中声明的 示例会成为测试的取值,安全方案会变成 Authorization 请求头,而每个声明的服务器都会 成为一个独立的测试(预发布与生产并列)。由于一个 .lnh 只保存一个端点,包含 多个操作的规范会询问要导入哪一个 — 也可以一次全部保存,每个操作生成一个 .lnh 文件。

导出则走相反的方向,从文件生成一份 OpenAPI 3.0.3 规范:服务器、参数和请求体来自模板,示例 响应来自已记录的执行。它是一个骨架,而不是完整的契约 — .lnh 描述的是调用, 因此类型、描述和数据结构不会被重建。你的测试会保存在 x-lightnote-tests 字段中, 所以重新导入该文件时可以原样恢复。

导入 curl 命令。 在同一个按钮中,导入 curl 命令… 会打开一个粘贴框 —— 命令来自剪贴板而不是磁盘,若剪贴板中已有 curl,该框会自动填好。它能识别同一条命令流通的 三种方言:Chrome/Firefox 的复制为 cURL(单引号)、Windows 上的 Copy as cURL (cmd) (使用 ^),以及用 \ 换行的文档示例。方法取自 -X,未指定时 则推断:有请求体为 POST,没有则为 GET。

导入是逐字的:任何取值都不会自动变成 {name} 变量,因为猜测哪个令牌是机密会出错。 有几种情况会给出提示而不是含糊其辞 —— 来自文件的请求体(-d @文件)无法读取,multipart 上传(-F)也无法忠实复现,因此这些字段会以文本形式放进请求体,供你调整。

数据库(.lnc)

连接

连接是工作区内的 .lnc 文件(LightNote Connection)。 它可用 Git 进行版本控制,并可在机器间携带。可通过新建 → 新建连接创建, 或打开现有的 .lnc。这会打开数据库视图,显示连接状态 栏(连接 / 断开 / 重新连接 / 编辑)、架构树(架构 → 表 → 列, 按需加载)以及内部的 .sql 标签。打开过的 .sql 文件和最近项保存在 .lnc 内部,因此 视图会以之前的状态重新打开。如果之前什么都没打开,则会以一个可立即输入 SQL 的 空(无标题)查询开始。保存时(Ctrl+S),LightNote 只会询问名称, 并把文件写入项目文件夹内(没有“保存到任意位置”的对话框)。+ 标签 按钮会打开一个新的空查询,或打开文件(选择器在项目文件夹中打开), 也可选择最近项或项目文件夹中的任意 .sql。

直接从树中打开的 .sql 仅是代码(SQL 高亮,无连接)。

驱动: SQLite 和 DuckDB(文件)为原生。PostgreSQL、MySQL/MariaDB、 SQL Server、通用类型通过 ODBC。原生 Oracle(不使用 ODBC)。 SQL Server 使用 Microsoft 的 msodbcsql 驱动(请在机器上安装), 提供 Windows 身份验证或用户/密码,以及通道加密选项 (Encrypt / 信任证书)。对于 Oracle,请在常规设置 → 数据库中设置 Oracle Instant Client 文件夹 — 它在运行时加载, 无需安装。Oracle 连接有四种模式: 服务名 (主机/端口/服务)、SID(主机/端口/SID)、TNS 名称 (客户端文件夹中 tnsnames.ora 的别名)、完整的 TNS 描述符 (粘贴到文本框中)。

密码: 开启保存密码后,会在 .lnc 文件自身中 加密(采用可移植的加密,在其他机器上也能打开)。关闭时不保存密码, 并在每次连接时询问。加密使用按工作区的安全口令, 在帮助 → 配置安全口令中设置。请妥善保管 — 没有它, 在其他任何地方都无法打开密码。安全口令仅缓存在本地机器上 (绝不会发送到 Git)。

开启打开时连接后,打开 .lnc 时会自动建立连接。 自动连接为静默进行。如果需要输入密码(询问模式,或机器上 未缓存安全口令的加密),文件会以未连接状态打开,而不中断。

执行与查看结果

执行: Ctrl+Enter 执行光标处的语句,Alt+X 执行整个脚本。 结果会分页显示,每个结果标签都带有底部操作栏: 获取下一块、冻结结果、总计数、更改行上限、 刷新(重新执行)、查看/复制 SQL、导出...、从选中行 生成 SQL。

冻结结果: 一次性从数据库读取整个结果,并保存到本地表中(若内存放不下,则写入磁盘)。 此后网格滚动不再查询数据库,行数变为精确值(无需总计数),点击列标题可排序(再次点击反转,第三次点击回到数据库返回的顺序), 导出也从本地副本读取。通过列标题排序最多支持 10 万行;超过之后会被拒绝,原因显示在列标题的提示中——每一页都要对整份副本重新排序,浏览整个网格又会花上几分钟。 如果第一页就已取回整个结果,无需冻结即可排序,因为行已经在内存中。不能排序的是仍在分页中的结果的第一部分——那样列标题声称的顺序只对屏幕上的内容成立。图表和数据透视表随之覆盖整个结果——包括原本没有图表的 数据库。如果冻结提前结束(你点了停止,或达到了上限),行仍在本地,但图表和数据透视表仍留在 服务器上:对结果的一部分求和会得出错误的数字;此时排序网格也只排序已取回的行,而非整个结果。刷新会解冻并重新执行查询。 无论是否冻结,已经在网格中显示过的页面都会保存在本地:回滚到其中一页不会再次查询数据库。 同一时间只运行一个冻结:打开两个结果时,在另一个上点击冻结结果会被拒绝并说明原因,而不会中断正在进行的冻结;要停止它,请在它自己的标签页中使用停止。

结果网格: NULL 以淡色斜体显示,区别于空字符串,数字右对齐;选择多个单元格时,页脚会 显示选择计数,当它们是数值时还显示合计与平均值。页脚栏的值面板按钮(或右键菜单的 在面板中查看值)会打开一个侧面板,完整显示所选单元格的完整值,不截断,并带有格式化 按钮,仅在显示时美化 JSON/XML。在单元格的右键菜单中,按此值筛选 / 排除此值会以该单元格 加上 WHERE 重新执行查询,而转到引用的记录会沿着该列的外键,按单元格的值查询父表。

图表与数据透视表:计算在哪里进行。 网格底部有一个在本地数据与整张表(在服务器上)之间切换的选择器,按钮上会显示当前生效的选项。当结果完整地装进第一页时,默认为本地:LightNote 直接对屏幕上已有的结果进行聚合,不会在每次调整坐标轴、聚合方式或分组区间时重新查询数据库;由于本地引擎就是 DuckDB,图表在 Oracle、SQL Server、PostgreSQL 和 MySQL 上也能使用了——在这些服务器上图表的 SQL 无法执行。当结果被截断时,本地选项会连同原因一起置为不可用:对样本进行聚合会得出错误的数字,而仅仅提示截断并不能保护任何人,因为在图表里读到的是柱子的高度。服务器选项对整个查询进行聚合,每调整一次就执行一次查询。数据库以文本形式返回的数值列(例如 Oracle 的 NUMBER)会被识别为数字;而像 01310 这样以零开头的标识符仍然是文本。

执行计划: 工具栏的执行计划按钮显示光标处语句的 EXPLAIN(SQLite、DuckDB、 PostgreSQL 和 MySQL);在不通过单条语句提供计划的数据库(SQL Server、Oracle)上,该按钮会被禁用,原因 显示在提示中。

架构

对象属性: 在架构树中双击某个表(或按 F4,或在右键菜单中选择 属性),会打开一个标签页显示对象结构,分为四个子标签: 列(序号、名称、类型、是否可空、 默认值,主键列带有钥匙图标)、键(主键、外键、唯一和检查约束;双击外键会打开被引用的表)、 索引和 DDL — 对象的 CREATE TABLE,可复制、另存为 .sql 或在可编辑标签页中打开。当数据库不直接提供现成 DDL 时(PostgreSQL 和 SQL Server 没有该命令), LightNote 会根据元数据重建(DDL 命令因权限不足被拒绝时同样如此),并在标签页中明确说明。 如果连列的目录都无法读取(没有权限,或目录不可用),就没有可重建的依据:标签页会给出说明,而不是 静默地留空。表的右键菜单还提供复制 DDL而无需打开 标签页。

架构树: 架构树将表与视图分开(各有自己的图标),并用钥匙图标标记属于 主键的列。筛选框只筛选已加载的对象(不会仅为筛选而强制按需加载)。

架构探索: 右键单击某个表可打开 在编辑器中插入 SELECT、查看数据、统计行数、 复制限定名,或 生成 SQL子菜单 → INSERT/UPDATE/MERGE。界面会列出表的列,你可以勾选包含和 键,查看实时预览并将命令插入到编辑器 (MERGE 以 ANSI 输出,驱动不支持时会显示警告)。 在结果网格上,底部栏的 生成 SQL 按钮会用选中行的值 生成 INSERT/UPDATE/DELETE(当查询为单表 SELECT 时可用)。 在树中浏览过的表名和列名也会开始出现在该连接 .sql 编辑器的 自动补全(Ctrl+Space)中(不会进行额外的数据库查询)。

导出、变量与事务

导出结果: 右键单击结果网格并选择导出结果...,可写出 CSV(分隔符・引用符字符・始终加引号・标题行・NULL 的表示)、 JSON Lines、SQL(带表名的 INSERT 语句),并可设置可选的行数上限。 导出不仅限于屏幕上可见的部分,而是以流式(分页重新获取)遍历整个查询。

脚本变量: 在脚本的行中用 @set 名称 = 值 定义变量。 @ 前缀使其不会被发送到数据库(不会与 Postgres/DuckDB/SQL Server 实际的 SET 冲突)。形如 :名称 的引用会在执行前被替换 (在字符串和注释之外。::类型 的转换和 :1 的绑定 保持不变)。没有值的 :名称 会在执行前弹出提示。工具栏上的 变量按钮会打开已定义变量的界面(编辑/添加/删除)。

查询历史: 历史按钮会打开一个窗口,以 SQL / 时间 / 耗时 / 行数列显示此连接上最近成功执行的语句。你可以选中后重新执行、 插入到编辑器、复制(双击即插入),也可清除历史。 它仅保存在本地机器上(既不发送到 Git 也不写入 .lnc)。

事务: 工具栏上有自动提交按钮(默认开启)以及 Commit/Rollback 按钮。关闭自动提交时,更改会保留到你确认(Commit)或放弃 (Rollback)为止。在事务打开时断开连接,会询问你如何处理。

SSH 连接(.lns)

SSH 连接是工作区内的 .lns 文件 — 与 .lnc 一样可 版本控制并可携带。通过新建 → 新建 SSH 连接创建后,会在标签中打开集成的 SSH 终端(通过 Windows 的 ssh.exe)和远程文件迷你栏 (SFTP)。

文件浏览器一次显示一个文件夹(类似 MobaXterm/WinSCP)。 第一行始终是用于返回上层的 ..,双击文件夹即可进入其中。 在顶部的路径栏中输入远程路径并按 Enter 即可跳转到那里。 与终端同步按钮会让显示的文件夹跟随 SSH 会话的当前目录 (即终端中 cd 到的位置)。右键菜单包含在编辑器中打开 (下载文件,在标签中打开,并在保存时重新上传)、下载、 上传、新建文件夹、重命名、删除、权限(chmod)。 你可以从资源管理器拖动文件到该面板,以上传到当前文件夹。

密码可以用工作区的安全口令 加密保存在 .lns 内,或在每次连接时询问。连接使用 系统的 OpenSSH 客户端,因此 Windows 代理/配置中的 SSH 密钥 照常工作。

打开时连接选项(在连接对话框内)会在打开 .lns 时 自动启动 SSH 会话。如果未保存密码,连接时终端自身会询问。

安全: 安全口令・PIN・安全 Markdown

安全口令按工作区在 帮助 → 配置安全口令…中设置, 它是 LightNote 加密一切的密钥: 连接密码(.lnc/.lns)、 自定义表格的密码单元格、.lne 文件。 加密强大且可移植(Argon2id + XChaCha20-Poly1305): 只要重新输入 相同的安全口令,加密文件在其他机器上也能打开。请妥善保管: 没有它,加密数据无法恢复。安全口令仅缓存在本地机器上 (绝不会发送到 Git)。

要更改安全口令,请打开同一界面并编辑安全口令字段 (会以当前口令预填)。确认后,LightNote 会把工作区中所有 安全数据 — .lnc/.lns 密码、.lne 文件的 内容、自定义表格(.lnd)的密码单元格 — 从旧安全口令 自动重新加密为新口令。解密为全有或全无: 只要有一个解密失败, 就不会更改任何内容,LightNote 会告诉你是哪一个。写入时,每个文件在被改写前 都会复制为备份。如果某个文件写入失败,会询问你是全部撤销(恢复备份) 还是跳过该文件并继续(保持旧口令,最后给出警告)。 (“询问”模式的密码没有需要重新加密的内容。)

PIN(4-8 位)是一个可选的本地锁: 无需每次输入安全口令即可 保护敏感的 UI 操作(显示密码、打开安全笔记)。它不加密任何内容, 并且仅适用于本机。

安全 Markdown 文件(.lne,新建 → 安全 Markdown 文件)是 磁盘上加密的笔记: 打开时,LightNote 会询问 PIN(如已设置)和 安全口令,仅在内存中解密,并在保存时(Ctrl+S)重新加密。 为安全起见,即使会话被恢复,它也不会自动重新打开。除此之外,它就是一份普通笔记:有 AI 助手(Ctrl+K/Ctrl+I 以及工具栏的 AI 按钮)、对 wiki 链接和标签的 Ctrl+单击,可以打开链接并在状态栏显示地址。关于 AI 需要记住:如果所选助手是云服务,发送的片段就会离开这台机器;使用本地模型(Ollama、LM Studio)则不会。安全笔记仍然不在询问笔记的范围内——后者读取工作区的 .md,而磁盘上的 .lne 是密文。

每日笔记・快速捕获・托盘

今日笔记是每日笔记文件夹内每天一个的 .md。该文件夹 对整个 LightNote 只有一个,在设置 → 笔记与写作中指定。从托盘菜单: 今日笔记会打开当天的笔记。快速捕获… (Ctrl+Alt+N,全局 Windows 快捷键 — 或 中键单击托盘图标)会打开一个小窗口,输入内容并按 Ctrl+Enter 后: 文本会作为带时间戳的项目写入今日笔记,直接写到磁盘, 而不打开编辑器窗口。

托盘菜单还会显示打开的窗口和最近的工作区,并带有电源 开关: 保持计算机唤醒和保持屏幕常亮 (适用于长时间任务。LightNote 在运行一次性 AI、块单元格、SQL 脚本期间会 自动保持电源)。启动器(起始窗口)带有搜索、双击打开,以及 置顶・在资源管理器中打开・从列表中移除的右键菜单。

作用于整个 LightNote 的操作——而不仅是当前窗口——都在常规菜单中(☰ 常规,或活动栏中带应用图标的按钮),它与托盘菜单的结构完全一致:根级是今日笔记、快速捕获和日历;接着是子菜单捕获(快速任务、录音、重新发现旧笔记、便签)、打开(启动器、打开工作区、打开独立文件、独立文件)和电源;最后是常规设置。规则很简单:托盘菜单里有的,常规菜单里也有——而且只在那里。将鼠标悬停在某一项上会显示提示“全局功能:在任何窗口中都作用于整个 LightNote”。

捕获会保存到哪里。每日笔记和快速任务有唯一且可预测的目标:设置 → 笔记与写作中设定的文件夹,以及设置 → 常规中设定的看板,在任何窗口都一样。首次捕获时若尚未设定,LightNote 会询问保存位置并记住你的选择——而不是让你去翻设置。需要独立日志的项目(有保密要求的客户、必须留在仓库中的记录)可以在工作区设置 → 捕获中接管该窗口的捕获;托盘和全局快捷键仍写入常规目标。确认提示始终会说明文本去了哪里。

托盘菜单刻意保持简短:根级只保留已打开的窗口和三个每天都会用到的操作——今日笔记、快速捕获和日历。其余都收进与常规菜单相同的子菜单:捕获、打开(在托盘中还包含最近工作区列表)、AI(AI 会话、询问笔记——在窗口中这是完整的 AI 菜单)和电源。最后是设置和退出。

重新发现旧笔记

让“第二大脑”失败的最大原因不是缺少功能,而是从不重读的笔记。通过托盘菜单(捕获部分),LightNote 把旧笔记找回来:随机笔记随机打开工作区中的一条 .md 笔记(避开最近两周出现过的),历史上的今天列出创建周年为今天(往年的同月同日)的笔记。这两个操作也在窗口的常规 → 捕获菜单中。

创建日期取自 frontmatter 的 created/date 字段(若有);否则取自文件日期。该功能绝不写入你的笔记——只是打开它们。可在设置 → 功能(“重新发现旧笔记”)中关闭。

在手机上使用你的笔记

你的工作区是文件夹中的纯 Markdown——开放格式,没有专有数据库,也不强制使用云。因此任何手机应用都能读取和编辑你的笔记,LightNote 无需为手机提供专门的应用:只需同步该文件夹到一个文件服务,然后在手机的 Markdown 编辑器中打开它即可。

步骤:将工作区文件夹通过 OneDrive、Google Drive、Dropbox 或 Syncthing 同步,然后在手机上用 Markdown 编辑器(例如 Obsidian Mobile、iA Writer、GitJournal 或 Markor)打开该文件夹。由于一切都是文本形式的 .md,两端看到并写入的是同一批笔记。

建议:在手机上只编辑 .md 文件——LightNote 自有的类型(安全的 .lne、.lnc、.lnt、.lnb、.lnd……)在应用之外无法打开,尤其 .lne 是加密的。如果两端都离线编辑并出现冲突,请通过 Inbox 文件夹来解决:把捕获内容(文本、音频或照片)放到那里,让 LightNote 把它并入当天的笔记,而不是直接覆盖。这样的定位是有意为之的——同步是通过文件/Git,而不是通过插件:你拥有自己的数据,并可以选择传输方式。若想直接写入当天的笔记,编辑 每日笔记/yyyy-mm-dd.md 文件即可——文件夹名称随界面语言而变化。

录制音频(语音、会议)并用 AI 转写

在托盘菜单中,录制音频… 会打开一个可拖动的浮动窗口(拖动标题栏即可移动),可从麦克风、系统音频(电脑正在播放的声音)或两者同时录制——选择的来源会记住,供下次使用。使用 ● 录制、‖ 暂停和 ■ 停止;文件会保存到工作区的 录音 文件夹,并在停止时压缩为 .m4a。

两种转录方式。 在 设置 → AI 助手 → 音频转录 中,如何转录 选择器可在专用转录模型(Whisper 式:OpenAI whisper-1、Groq whisper-large-v3(免费)或本地 Whisper)与音频进入聊天的通用模型之间选择 —— 后者将音频放入多模态模型的对话中,Google Gemini(gemini-2.0-flash,免费额度不错)就是这样转录的。切换提供商会预选合适的模式并建议模型;两种模式下长音频都会自动分段。建议的模型可以手动更改——即使是 LightNote 尚未识别的提供商,它也会采用你输入的模型 id。

一开始录制,窗口会自动收起为一个紧凑的药丸条(闪烁的红点、计时器、暂停/停止)——方便拖到角落,在长时间会议中几乎隐藏起来;标题栏上的最小化/展开按钮可手动切换,停止录制会自动展开回来。Ctrl+Alt+R(全局快捷键)用于快速语音笔记:按一下立即从麦克风开始录制,再按一下停止——无需用鼠标打开窗口。

如果配置了基于 API 的 AI 提供商(在设置 → AI 助手 → 音频转写),停止后会出现 转写 和 转写 + 摘要 按钮(音频压缩期间禁用);停止后下拉菜单可以在录制结束后自动触发转写。LightNote 会把音频发送去转写(Whisper 类模型),并在音频旁写入一个 .md 笔记,包含文本以及可选的摘要。可在设置 → 常规 → 功能中开启/关闭该功能。

同一个窗口也是一个迷你播放器:在控件下方,文件夹中的录音列表会显示每个文件,若已存在则带有T(打开转录)和R(打开摘要)按钮,以及一个可就地播放的▶(带拖动的进度条);每行的⋮菜单可播放、(重新)转录或打开笔记。重新生成转录不会覆盖之前的版本——而是在旁边创建新版本(note.md、note (2).md…),保留历史记录。采集来源是一个菜单按钮(麦克风/系统音频/两者),默认为两者。打开录音文件夹链接会在主窗口中打开该文件夹。

便签

便签是浮在桌面上的小型彩色纯文本框,风格类似 Windows 的便笺 应用。从托盘菜单: 新建便签(Ctrl+Alt+S, 全局快捷键)会创建一个框,显示便签(Ctrl+Alt+H)会 将所有便签一起显示/隐藏。每个便签都有用于再创建一个的 +,以及用于更改颜色・ 发送到当日笔记(把文本作为当日笔记的项目写入,并丢弃该框)・ 删除的 ☰ 菜单。拖动标题栏可移动,拖动角上的手柄可调整大小。 便签会自动保存,重新打开 LightNote 时会再次显示。

清单。 标题栏中的列表按钮(位于 + 旁边)会把光标所在的行(或选中的行)变成带复选框的项目,再次单击即可撤销。也可以在行首输入 [ ] 再按空格([x] 会直接创建已勾选的项目)。单击复选框或按 Ctrl+Shift+Enter 可以勾选或取消勾选,已完成的项目会显示删除线。Enter 创建下一项;在空项目上按 Enter,或在项目开头按 退格,会恢复为普通文本。便签菜单中的 移除已完成的项 会一次删除所有已勾选的项目(Ctrl+Z 可撤销)。项目以 Markdown 任务(- [ ] 项目)的形式保存,因此 发送到今日笔记 会把每一项作为任务发送。

日历

常规 → 日历…会在一个窗口中打开一个日历,标出所有 已注册的 .lnt 看板中含有任务的日期。其旁边有当日 列表(所选日期的任务)和待办列表。当日笔记按钮会 打开该日期的每日笔记。单击任务会打开对应的看板。

在网格中,有任务的日期会显示看板状态颜色的圆点(最多三个),今天用圆环标记,选中的日期用实心圆标记;今天回到当前月份,点击月份名称可打开菜单,按月或按年跳转。待办按情况分组——已逾期、今天、未来 7 天、更晚和无日期——到期时间以相对标签显示(“昨天”“今天”“3 天前”)。双击某一天会打开已填好该日期的快速任务。

写在笔记里的任务也会出现在这里。笔记中的 - [ ] 和别的任务一样,现在会和看板卡片并排出现在待办里,分在相同的组。如果那一行写了时间(明天、周五、08/12),它就会落到正确的组和正确的日子。双击会在复选框所在的那一行打开笔记——编辑任务的地方仍然是笔记。扫描在后台进行:窗口带着看板立即打开,笔记里的任务稍后到达。在网格中,如果某天已经写了日记,日期数字会带下划线;当天的列表里还会显示历年今日:你在往年同一天写下的笔记。

命令面板

Ctrl+Shift+P 会打开命令面板(各操作及其快捷键, 可通过输入筛选)。Ctrl+R 打开快速文件选择器,Ctrl+Shift+K 打开任务选择器。


MCP 服务器(AI 代理)

LightNote 包含一个无界面的 MCP(Model Context Protocol)服务器,可把你的 工作区变成一个供 AI 代理使用的工具(Claude Desktop、Claude Code、Cursor, 以及任何支持 MCP 的客户端)。代理可以读写文件、搜索、查询表格数据和数据库、 操作任务、使用 Git,并发起 HTTP 请求 — 全部限定在该文件夹内 (目录监狱:含 .. 或超出根目录的路径会被拒绝)。传输是基于 stdin/stdout 的 JSON-RPC 2.0;每个会话会启动一个轻量的 lnote.exe 进程,独立于编辑器窗口。

一键快捷方式: 通过 AI → 在此文件夹中启用 AI,LightNote 会一次性启用 MCP 并写入 .mcp.json(点击即表示同意)。如果该文件夹已启用 AI,该项会变为 配置此文件夹的 AI… 并打开 工作区设置。

两层安全:(1)只有当你为该文件夹启用了选择加入时,服务器才会 启动;(2)每个工具都锁定在工作区的根目录内。此外,每个工具都带有注解 (只读、破坏性、幂等、“触及外部世界”),使 AI 客户端在调用前能评估风险。

逐步配置

  1. 为文件夹启用 MCP。在工具 → 工作区设置中勾选为此工作区启用 MCP。没有这一选择加入,服务器会拒绝启动(这是主要的关卡)。也可从命令行: lnote --mcp-enable "C:\Path\to\workspace" (关闭用 --mcp-disable)。
  2. 找到 lnote.exe 的路径。它与 lightnote.exe 在同一文件夹(应用的安装文件夹)内。它是无界面的“精简”控制台可执行文件 — 代理运行的就是它。
  3. 在你的 AI 客户端中注册该服务器,把命令指向 lnote.exe, 并传入 --mcp 后跟工作区文件夹。采用 Claude Desktop / Cursor 等 使用的格式:
{
  "mcpServers": {
    "lightnote": {
      "command": "C:\\Path\\to\\lnote.exe",
      "args": ["--mcp", "C:\\Path\\to\\workspace"]
    }
  }
}

配置提示:

  • JSON 中的反斜杠必须写成双反斜杠(C:\\Users\\...\\lnote.exe), 如示例所示。
  • 要公开多个工作区,为每个文件夹添加一条名称不同的条目 ("lightnote-projectA"、"lightnote-projectB"),各自 指向自己的根目录。
  • 保存配置后,重启 AI 客户端以让它启动服务器。连接后,代理应列出 lightnote_* 工具;让它“列出工作区的文件”来确认是否可用。
  • 对于 Claude Code(CLI),可用以下命令注册同一服务器: claude mcp add lightnote -- "C:\Path\to\lnote.exe" --mcp "C:\Path\to\workspace"。

数据库密码(可选)。db_query 工具会打开一个 .lnc 连接。如果密码用安全口令加密,请在服务器块中通过环境变量 LNOTE_PASSPHRASE 传入短语(切勿放在命令行参数中)—— 密码为“询问” 模式的连接无法在无人值守下使用。

AI 查询按连接选择启用。在文件夹中启用 MCP 不会公开连接:只有在连接对话框中勾选“允许 AI 查询 (MCP)”时,相应的 .lnc 才会响应 db_query。访问为只读(SELECT)。

通过代理从数据库导出。 除了查询,代理还可以用 db_export 将 SELECT 实体化为文件(Parquet、CSV、JSON 或 .xlsx)—适用于大到无法放入回复的结果。同样的三道防线按此顺序生效:查询必须是只读的,连接需要勾选 “允许 AI 查询 (MCP)”(在解密密码之前检查),目标文件必须位于工作区内部。大型导出会使用系统临时文件夹作为中转区,大小约与结果相当—请预留磁盘空间。

可用的工具

代理会在客户端前缀下看到这些工具(例如 lightnote_read_file)。 按类别:

  • 文件:read_file(可选行范围)、write_file、 edit_file(替换精确片段而不改写整个文件)、 append_file、list_files、move_file、 make_dir、delete_file(进回收站,非彻底删除)。
  • 搜索与导航:search_files(ripgrep,带子文件夹/glob 筛选 和上限)、list_symbols(文件的函数/类大纲)、open_in_editor (若 LightNote 窗口已打开,则打开/聚焦文件)。
  • 数据与 SQL:query(在 Parquet/CSV/JSON 上的 DuckDB SQL,tsv/json/markdown 输出)、describe_table(架构 + 统计,不输出 行)、export_query(用 COPY 把 SELECT 实体化为文件)、 sqlite_query(在 .sqlite/.db 上的 SQL)、 db_list_connections(列出工作区的 .lnc)、 db_query(在 .lnc 连接上的只读 SQL)。 若要将结果写入文件而非回复,使用 db_export(Parquet/CSV/JSON/.xlsx)。
  • 还有:search_notes(针对一个问题检索最相关的笔记片段 —— 与AI 聊天相同的引擎)、list_links(一条笔记的出站链接,已解析或已失效)、audit_vault_links(整个知识库的失效链接和孤立笔记)、list_note_templates 以及 create_note 的 template 参数、list_due_tasks(所有项目中今天到期或已逾期的任务)、xlsx_read(把 .xlsx 工作表读取为 TSV)、data_diff(比较两个表格文件),以及数据库目录 db_list_objects/db_describe(表/视图,以及某个表的列、键和 DDL —— 与 db_query 要求相同)。还有 note_export(把一条笔记导出为 docx、odt、epub、LaTeX、Typst、HTML、reStructuredText、AsciiDoc、Org、MediaWiki、Notebook 或另一种 Markdown 方言 —— 完全不需要窗口,也可以用 lnote note-export)。还有 note_import(反方向:把 docx、odt、epub、rtf、HTML 或 tex 连同标题、列表、表格、强调、链接、公式和图片,导入为原文件旁边的笔记 —— 也可以用 lnote note-import)。 还有 folder_export(整个文件夹变成 HTML 站点、一套文档或 Markdown,链接也会被重写 —— 也可以用 lnote folder-export)。
  • 压缩包:zip_list(列出 .zip/.isx 的成员)和 zip_read(把某个成员作为文本读取)——无需 把压缩包解压到磁盘。
  • 任务:list_task_projects(列出工作区的 .lnt 任务项目)、list_tasks、list_task_statuses (看板的列)、create_task、update_task、 update_task_status(在列间移动)、delete_task、 task_note(读写任务的 .md 笔记)。一个工作区可以有 多个 .lnt 项目:用 project 参数选择要操作哪个 (即 list_task_projects 返回的 name;只有一个时可省略)。 id/status_id 是会话内的标识符——不要直接读取 .lnt 的内部文件来获取它们,请使用任务工具。
  • 笔记(PKM):create_note(创建 .md 笔记)、 append_daily_note(向当天的日记追加一条捕获)、 remember (把关于你的一条持久事实存入记忆笔记), list_backlinks(指向某条笔记的笔记)、list_note_tags 与 search_by_tag(vault 中的 #标签 及使用它们的笔记), 以及 add_task(创建带截止日期/标签的任务,标题可用自然语言)。
  • Git:git_status、git_log、 git_diff、git_restore。
  • Web 与通知:http_request(发起 HTTP 请求并返回 状态/头部/正文)、notify(在已打开窗口的托盘显示通知 —— 便于代理 提示已完成)。
  • AI 代理:list_ai_models 和 ask_ai(见下)。

服务器还会把工作区的文件作为 MCP 资源公开(resources/list 和 resources/read),供更愿意“附加”文件而非调用 read_file 的客户端使用。

你的提示词库(工作区的 Prompts/ 文件夹)会作为 MCP 提示词公开(prompts/list 与 prompts/get)。在 Claude Code 中,每个提示词都会变成斜杠命令 /mcp__lightnote__<名称>,可直接在 AI CLI 中使用。

写入安全网。在覆盖(write_file/edit_file)或删除(delete_file)文件之前,服务器会把旧版本保存到本地历史(与编辑器相同的安全网),这样即使不在 Git 仓库中,你也能撤销代理所做的更改。

每个工具都会声明它是读取还是写入:除了 MCP 注解 (readOnlyHint/destructiveHint)之外,描述开头还带有 [read-only]、[writes] 或 [destructive] 标记——便于安全地构建允许列表。

AI 代理(委托给另一个模型)

你用勾选 MCP 列注册的 API 提供商会通过两个工具向代理 开放:list_ai_models(列出允许的模型,含 id、名称和模型)和 ask_ai({model, prompt})。这样主代理就能把子任务 委托给更便宜或更专业的模型。调用由正在运行的 LightNote 中转(MCP 的 lnote.exe 通过内部桥把请求转发到应用窗口):API 密钥绝不离开你的 本机,也绝不到达代理。如果 LightNote 未打开,该工具会返回一个提示你打开它的 错误。

命令行(lnote)

同样的 MCP 操作也存在于用于脚本和自动化的控制台可执行文件 lnote 中 (也可通过 lightnote cli <command> 访问)。所有操作都限定在根文件夹内, 用 --root 设置(默认: 当前文件夹)。

示例:

lnote list --recursive
lnote read --path src/main.cpp --start-line 1 --end-line 40
lnote write --path note.md --content "Hello"
echo content | lnote write --path note.md --content -
lnote search --query TODO --regex
lnote query --sql "SELECT * FROM read_parquet('data.parquet') LIMIT 10"
lnote describe --path data.parquet
lnote search-notes --query "我在哪里写过预算的事"
lnote audit-links
lnote xlsx-read --path sheet.xlsx --sheet 0
lnote data-diff --a before.parquet --b after.parquet --mode changed --keys id
lnote db-describe --connection data.lnc --table customers
lnote db-export --connection dados.lnc --sql "SELECT * FROM clientes" --out clientes.parquet
lnote due-tasks
lnote export --sql "SELECT * FROM read_csv_auto('e.csv') WHERE state='NY'" --out ny.parquet
lnote zip-list --path export.isx
lnote zip-read --path export.isx --entry job/definition.xml
lnote task-projects
lnote tasks --project Backlog
lnote create-task --project Backlog --title "Review the text" --effort 2
lnote move-task --project Backlog --task-id 5 --status-id 2
lnote git-status
lnote http --url https://api.example.com --method GET
lnote notify --message "Processing finished"

全局选项: --root <folder>、--json (结构化的 {ok,data,error} 输出)、--help(或 lnote <command> --help)、--version。对未知命令会 给出建议(“did you mean…?”)。

批量更新旧数据:lnote upgrade <文件夹> 可一次性升级由旧版 LightNote 写入的文件——目前是旧扩展名 .lnsh 和 .lnsm,它们已改为 .lns 和 .lne。 应用在你打开每个文件时本来就会自动完成此操作;该命令适用于文件多达数十个、 不想逐个打开的情况。使用 --dry-run 可在不改动任何内容的前提下预览将要发生的变更。 这只是便利功能而非必需:不用它,旧文件照样能正常打开。

设置与主题

选项在哪里

在工具 → 常规设置中,可按章节调整: 常规选项 (语言、自动保存、释放空闲标签、标签颜色调色板、窗口标题、 每日笔记、拼写检查)、应用程序主题、编辑器的字体和颜色、 Markdown 样式、 运行(解释器)、终端(shell)、AI 助手 (CLI 和默认 AI)、版本控制、数据库(分页、 Oracle Instant Client)。

章节列表顶部有一个搜索框,可按每页的选项进行筛选;功能章节汇集了可选功能的 开关——连接图谱、便签、AI 会话、AI 聊天、音频录制、找回旧笔记、保持计算机唤醒,以及 与 Windows 资源管理器菜单的集成。关闭某项功能后,它会从界面・托盘・快捷键中消失,并停止 消耗资源,但已创建的数据会保留;更改在重新启动后生效。

主题

应用程序主题会更改程序的外观(菜单、标签页、面板、状态栏)。有多个现成主题 — 浅色(浅色、Solarized Light、Catppuccin Latte、Gruvbox Light、One Light、 Rosé Pine Dawn、Everforest Light、Tokyo Night Day)和深色(深色、Tokyo Night、 Dracula、Ayu Mirage、Nord、Gruvbox Dark、Everforest Dark、Kanagawa Wave) — 以及带强调色的自定义模式。新主题通过在线目录提供,无需更新应用程序。

代码编辑器和 Markdown 的颜色在各自的部分中单独选择,与应用程序主题 相互独立。每个部分都有一个主题:下拉框,提供现成的配色方案(Padrão、Dracula、 One、Nord、Gruvbox 和 Tokyo Night 的浅色和深色版本)、实时预览,以及 另存为…按钮,可将你自己的颜色保存为可重复使用的预设。

按窗口设置主题。每个文件夹(工作区)都可以有自己的主题,因此你可以同时 打开两个外观不同的窗口。在工作区设置 → 此文件夹的外观中,有用于选择此窗口 的主题(程序外观)、代码主题和 Markdown 主题的下拉框——每个都带有 跟随常规主题/保持默认选项以表示不覆盖。覆盖代码和 Markdown 主题非常 适合仅在该文件夹中让编辑器颜色搭配深色主题,而无需改动常规设置。这些选择只保存在 你的本机上(不会提交到 Git)。

工具、标题与布局

安装向导。当你从目录中选择一个尚未安装在电脑上的工具(AI 助手、解释器、 格式化工具、linter 或数据库驱动),或尝试运行/格式化/检查一个缺少解释器的文件时, LightNote 会打开一个安装向导。当存在安全的命令(通过 winget)时, 向导会显示确切的命令,并在内嵌控制台中一键执行;如果该工具依赖于另一个工具 (例如,需要 Node.js 的 CLI),它会先提示安装先决条件。没有自动安装程序时,向导会打开 官方下载页面并附上分步说明。完成后,它会验证安装,并让该工具立即可用,无需重启程序。

格式化和 Linter 有各自的分区(按语言的外部格式化工具/linter, 可从目录中添加)。若要把你的偏好带到另一台机器,设置迁移组(常规分区) 提供导出/导入设置(一个 .lnconf 文件): 常规选项和内容主题 会包含在内,但不包含 API 密钥或本地路径(请在目标机器上重新填写)。

窗口标题是一个自由格式的模板: 应用名称始终位于末尾,其余部分用 变量 {workspace}(工作区根文件夹)、{file} (打开的文件名)、{path}(完整路径)组合而成。围绕空变量的装饰 (例如 [ {workspace} ] 中的方括号)会自动消失。要使用默认的 [ {workspace} ] {file} — ,请将该字段留空。

窗口布局。在视图 → 窗口布局(或常规设置 → 常规 → 窗口布局)中,可以从三种预设—现代(默认)、经典和舒适—中选择一种,也可以单独调整每一项:在顶部显示菜单栏(启用后 ☰ 按钮会消失,因为两者打开的是同一批菜单)、在图标旁显示文字标签、把工具栏和侧边栏放在左侧或右侧,以及图标大小。选择预设只是把这些选项填好:之后单独改动任何一项都不会撤销什么,列表只是改为显示“(自定义)”。改动会立即在所有已打开的窗口生效。

便携模式:数据就放在程序旁边

在 .zip 版中,LightNote 把设置、会话、本地历史和索引保存在程序文件夹之外的一个 Windows 文件夹里(%LOCALAPPDATA%)。便携模式把这些全部移到可执行文件旁边,这样整个文件夹就能放在 U 盘、移动硬盘或同步文件夹中。

开启方法:把 .zip 解压到你想放置副本的位置,打开设置 → 常规 → 便携模式,点击将此副本变为便携版…。窗口会显示数据从哪里来、到哪里去、占多少空间以及有什么变化;确认后 LightNote 会复制(绝不移动),并请你关闭并重新打开程序。旧的副本仍在原处、完好无损——即使出问题也不会丢失任何东西。

之后程序文件夹会多出两个文件夹:profile 存放属于你的内容(设置、会话、历史、下载的词典),profile-cache 只存放程序会自行重建的索引。你随时可以删除 profile-cache 来腾出空间。

更新版本的方法:下载新的 .zip,解压到一个新文件夹,然后把旧版本的 profile 文件夹复制进去。就这么简单。profile-cache 不需要复制(它会自行重建);复制它也没问题,只是没有必要。不要反过来做:如果配置是由更新的版本写入的,程序会以只读方式打开,以免破坏它还读不懂的内容。

关闭方法:回到设置 → 常规 → 便携模式,点击关闭便携模式…。不会删除任何内容:两个文件夹只是被重命名(改为 profile.desativado 和 profile-cache.desativado),下次启动时 LightNote 会重新使用 Windows 文件夹。之后你可以自行决定删除、恢复,或者从中复制需要的内容。

换电脑时不会随文件夹一起带走的东西。有三样机密由 Windows 按用户和机器保护,因此在另一台电脑上无法解密:AI 密钥、你让程序记住的文件密码,以及已保存的安全口令。在那边重新输入即可——不会丢失任何东西,你的安全文件仍可用输入的安全口令正常打开。此外:打开的标签页和文件夹保存的是完整路径,因此盘符改变时位置也会变;与资源管理器的集成会在开启便携模式时关闭(它会写入本机的 Windows,而这正是便携模式要避免的),可以在设置中重新开启;写入你仓库中的 .mcp.json 指向 lnote.exe 的完整路径,因此在新机器上需要重新生成。

把 AI 密钥一起带走(可选)。在设置 → 常规 → 便携模式里有用口令保护密钥…。开启后,AI 密钥和记住的文件密码不再依赖 Windows,会随文件夹一起移动。请三思:现在丢了 U 盘没有什么损失——这些秘密在你的机器之外打不开;用了口令,拿到文件夹的人就可以不慌不忙地猜。请用一个较长的口令。工作区的安全口令有意不放进这个密钥串:它能打开你的安全笔记,一个口令不应该解开一切。勾选在这台机器上记住,在你自己的电脑上就不会被问;换一台,问题会再出现。

chaveiro-do-perfil

便携模式适用于 .zip 版。通过安装程序安装的副本和 Microsoft Store 版无法转换——它们的文件夹是只读的,或者由卸载程序管理——窗口会说明原因,而不是让按钮毫无反应。在命令行中(需先关闭 LightNote):lnote portable --status、lnote portable --on(可加 --dry-run)和 lnote portable --off。

键盘快捷键

  • F1 — 本帮助(当前界面的对应章节)
  • Ctrl+N / Ctrl+O — 新建文件 / 打开文件
  • Ctrl+S / Ctrl+W — 保存 / 关闭标签
  • Ctrl+Alt+Shift+S — 全部保存(所有已更改的标签)
  • Ctrl+F / Ctrl+H — 在文件内查找 / 替换
  • Ctrl+Shift+F — 全局搜索(ripgrep)
  • Ctrl+Shift+G — 版本控制面板(Git)
  • Ctrl+Shift+E / Ctrl+Shift+M — 资源管理器面板 / 待办项面板
  • Ctrl+B — 显示/隐藏侧边栏
  • Ctrl+' — 终端(美式布局上也可用 Ctrl+`)
  • Ctrl+/ — 切换注释。Ctrl+Shift+D — 复制行
  • F5 — 运行文件。Ctrl+Shift+Enter — 将选区发送到终端
  • Ctrl+K / Ctrl+I — 向 AI 提问 / 用 AI 编辑
  • Ctrl+B / Ctrl+I / Ctrl+E — 在 Markdown 笔记中:加粗 / 斜体 / 切换视图模式
  • Ctrl+Shift+X / Ctrl+Shift+C / Ctrl+Shift+H — 在笔记中:删除线 / 行内代码 / 高亮
  • Ctrl+1…Ctrl+6 — 在笔记中:标题级别(再次按同一级别恢复为段落)
  • Ctrl+Shift+V — 在笔记中:无格式粘贴
  • Ctrl+Enter — “就地执行”:SQL 语句、块单元格、API 请求、笔记里图表/公式的源文本
  • Ctrl+Shift+R / F4 — 宏: 录制 / 回放
  • Ctrl+R — 转到文件。Ctrl+Shift+P — 命令面板
  • Ctrl+Shift+K — 转到任务。Ctrl+Shift+T — 重新打开已关闭的标签
  • Ctrl+Alt+G — 连接图
  • Ctrl+Alt+N — 快速捕获(全局。在 LightNote 之外也有效)
  • Ctrl+Alt+D / Ctrl+Alt+T — 今日笔记 / 快速任务
  • Ctrl+Alt+R — 录制/停止音频(全局,快速语音笔记)
  • F11 — 禅模式(标签占据整个窗口)
  • Ctrl++ / Ctrl+- / Ctrl+0 — 缩放

同一个键在不同的界面可能做不同的事:获得焦点的视图优先,在它之外则是窗口的快捷键生效。当数据库标签页获得焦点时,F4 打开对象属性而不是播放宏;在 Diff 和输出面板中,F8/Shift+F8 在改动之间跳转;在独立文件窗口中,Alt+←/Alt+→ 在文件夹之间后退和前进。 可筛选的完整列表在 帮助 → 键盘快捷键中。

许可・版本・社区

LightNote 以功能相同的多个版本提供,区别仅在于许可和分发方式:

  • LightNote(免费,来自网站): 用于个人・非商业用途。
  • LightNote Core(Microsoft Store): 作为对项目的贡献获取, 授予商业使用许可,并通过 Store 接收自动更新。
  • LightNote Business(未来): 面向批量/企业的许可。保留供未来 提供。

你所用副本的版本(即适用哪些条款)显示在 帮助 → 关于 中。完整条款在 帮助 → 关于 → 许可条款…中。

加入并参与贡献:

  • 建议或问题: GitHub Discussions — github.com/nglczr/LightNote-Community/discussions
  • 发现 bug?请在 GitHub Issues 报告 — github.com/nglczr/LightNote-Community/issues
  • 在 Ko-fi 支持开发 — ko-fi.com/lightnote (或在 Store 获取 LightNote Core)
  • 联系方式: contato@lightnote.com.br · 网站: lightnote.com.br