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

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

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

表格、看板与筛选

查看指南基于笔记的基库 指南

筛选、分组和列。双击或按 F2 即可编辑单元格。在筛选对话框中,可在所有条件(AND)和任一条件(OR)之间选择;运算符以文字显示(等于、包含、为空…),每个条件旁的按钮可将其删除。在看板中,分组依据选择器决定列所用的属性——未选择时,基库会建议 status。在表格中拖动调整的列宽会保存在基库中,导出 CSV 会导出表格当前显示的内容(已应用快速筛选)。带重音的键(situação:)和列表(authors: [Ana, Bia],或每行一项)也会成为列;在单元格中编辑列表会以相同的形式写回为列表。嵌套块属性会显示,但不能在基库中编辑——栏中会说明原因。

按类型显示的单元格。每一列都按属性的类型绘制:单击即可勾选的复选框、列表和选项列表的标签块、按你的语言格式显示的日期、右对齐的数字,以及突出显示的标题。类型来自已声明的架构,没有架构时则来自笔记已有的值;选项列表会打开选择器,日期会打开日历。单击列标题即可排序(再次单击反向),排序会像排序按钮一样保存在基库中。拖动列标题可改变列的顺序;右键单击列标题可重命名该列(仅显示名称,笔记的键不变)或隐藏它。筛选条件以标签形式显示在工具栏下方:单击可编辑,× 可删除。没有任何结果时,表格会说明原因。在看板中,每张卡片显示在卡片上的属性中选择的属性,每一列显示卡片数量,已声明的选项即使为空也会成为列。右键单击一行可打开笔记,也可在旁边打开。笔记已在标签页中打开时,编辑会写入该标签页:若标签页没有未保存的更改,会立即保存;若有,更改会留在标签页中,直到你保存。

多个视图与汇总。标签页旁的 + 按钮可为同一个基库新建视图——表格、看板、画廊、列表或日历。新视图继承当前视图的列和排序,之后各自保存自己的设置。筛选属于基库,所有视图共用。右键单击标签页可重命名、复制或删除视图(第一个视图不能删除)。在画廊中,在封面里选择指向文件夹中某张图片的属性(cover: photo.png 或 ![[photo.png]]);在列表中,属性与标题显示在同一行;在日历中,每篇笔记显示在日期字段对应的那一天,拖到另一天即写入新日期。表格底部显示汇总:单击某列下方即可选择求和、平均值、最小值、最大值、中位数、标准差、最早或最晚日期、已勾选、已填写或唯一值——只显示适合该列类型的函数。汇总会随快速筛选变化。用较旧版本的应用打开该基库时,只能看到第一个视图。右键单击标签页还可以更改视图的布局。标签页单独占一行,计数和 ⋯ 菜单也在这一行;下面一行是操作按钮和搜索框,标签页较窄时按钮只显示图标,名称显示在提示中。

公式与 Obsidian 基库。在属性 → 新建公式...中可以创建计算属性,它像其他属性一样成为一列,并以 formula.name 引用——例如 rating * 2、if(read, "✓", "")、(due - today()).days 或 file.hasTag("book")。值在显示时计算,绝不会写入笔记;右键单击列标题可编辑公式,出错时会显示出错的位置。Obsidian 的 .base 文件可在文件树中右键单击并选择导入为基库 (.lnq) 来导入:在它旁边会生成一个包含筛选、视图、公式、排序和汇总的基库,.base 保持原位,没有对应功能的内容会在最后列出。表达式形式的筛选会变成表达式条件,显示为带 ƒ 的标签——较旧版本的应用会忽略它,因而显示的笔记只会更多,不会更少。通过 MCP,带 base(和 view)的 query_notes 给出与界面相同的结果。

在笔记中嵌入基库。在单独一行写 ![[reading.lnq]],基库会在阅读模式、格式化编辑器和导出中显示为只读表格;![[reading.lnq#Read]] 显示 Read 视图(没有名称的视图可用其标签页名称指代,例如表格)。顶部的名称可打开基库,每行的标题可打开笔记,超过 50 行时表格会说明有多少行未显示。如果视图进行了分组(使用分组的表格,或看板),则每个分组各生成一张表,每组的名称和数量以粗体显示,顺序与屏幕上相同。它与笔记索引一样新,窗口会在打开文件夹时更新索引。在公式和筛选中,this 是嵌入该基库的笔记(打开基库本身时则是基库):project == this.file.name 让一个基库服务所有项目,file.hasLink(this.file) 列出链接到本笔记的笔记。列表支持 map、filter 和 reduce——例如 authors.map(value.upper())、ratings.filter(value > 7) 和 prices.reduce(acc + value, 0),可使用 value、index 和 acc——另外还有 containsAll、containsAny、flat 和 slice。

表格的分组、换行、冻结与着色。在表格中,分组按某个属性划分行,每组有一个显示笔记数量的组标题;单击组标题可折叠或展开该组,折叠只影响界面——不会改变基库、计数、汇总或 CSV。显示中有单元格内文本换行(行会增高以显示完整文本)、冻结第一列(其他列横向滚动时它保持不动)和行颜色...:每条规则由一个表达式(例如 status == "late" 或 due < today())和一种颜色组成;第一条为真的规则为该行着色,色调会随浅色和深色主题变化。这些设置按视图保存,较旧版本的应用只会显示没有这些选项的表格。

时间线、选项颜色与封面。时间线视图为每条笔记画一条横条,从开始字段到结束字段(没有结束则为一天),并标出今天,刻度可选天、周或月;拖动横条会把两个日期移动相同的天数并写入笔记,横条颜色跟随行颜色。在类型编辑器中,选项颜色...为选项列表的每个值设置颜色:颜色会显示在表格的胶囊、卡片以及看板列标题的圆点上。在画廊中,封面可以是笔记中的第一张图片,无需为此设置属性。

属性、架构与 Git

每条笔记在 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 立刻打开,在自己的工具栏上写着正在建立笔记索引…,扫描结束后再填入内容;这期间重新索引按钮是禁用的,因为对同一个文件夹再扫描一次并没有意义。

任务字段

任务字段。 任务看板(.lnt)中的每个任务都有一条笔记,这条笔记会带着看板的字段出现在基库中:task.status, task.column, task.done, task.due, task.start, task.end, task.completed, task.priority, task.progress, task.effort, task.tags, task.checklist, task.archived, task.board。在表格中,列标题显示字段名称(状态、到期日……),技术名称显示在提示和属性菜单中。task.done 在看板的最后一列为 true,task.priority 显示与看板相同的优先级名称(从低到紧急,未设置时为空;排序和筛选使用存储的数字 1 到 4),task.checklist 显示已完成/总条目数。只有文件夹中有看板时,这些字段才会出现在选择列表里,并且它们是只读的:以看板为准,笔记的 frontmatter 不会收到副本——因此在看板中拖动卡片永远不会让两者不一致。要更改状态,请使用任务看板;在基库的看板视图中,按 task. 字段分组会显示各列,但不接受拖放。对于相对开始的任务,task.start 为空,因为该日期只有在看板打开时才会计算。你自己写在笔记 frontmatter 中的 status 仍属于你且可编辑,与 task.status 并列。在工具 → 查询笔记(SQL)中,同样的字段读作 task.status。task.column 是该列在看板中的位置(1、2、3…),因此按 task.status 分组的基库看板会按看板顺序而不是字母顺序显示各列。

用 AI 编辑基库

基库工具栏中的用 AI 编辑…接受一段自由文字的请求 (填写每本书的作者、把有评分的标为已读、显示作者列并按年份排序),由 AI 提出更改:把属性写入笔记的 frontmatter,以及更改基库的结构 (显示或隐藏列、列的显示名称、公式、排序、分组和筛选)。它不会创建或删除笔记:这仍在树中完成。

检查方式与自定义表格相同:点击应用之前不会保存任何内容,取消勾选的项不会应用。属性通过与单元格相同的方式写入笔记:如果笔记已打开且有更改,会写入标签页并等待你保存。计算出的字段 (内置字段、任务字段和公式) 不会写入。结构的更改会使基库变为未保存 (Ctrl+S)。应用后,顶部的横条提供撤销,一次撤回属性和结构的更改。