思源笔记 v3.7 深度解析:全新 UI、内核插件、CLI 与 AI 知识库
2026/9/11 6:33:23 网站建设 项目流程

思源笔记 v3.7 深度解析:全新 UI、内核插件、CLI 与 AI 知识库

【免费下载链接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间,让人与智能体在此协作项目地址: https://gitcode.com/GitHub_Trending/si/siyuan

版本总览:思源 v3.7 的“全面焕新”

思源笔记(SiYuan)v3.7 是一个标志性的里程碑版本。该版本对桌面端与移动端进行了全面焕新,在“界面美观度”与“智能化”两个方向同时发力。根据 v3.7.0.zh-TW.md 的发布说明,这一版的核心亮点包括五大主题:重新设计的用户界面、移动端速记、核心插件系统、命令行界面(CLI)、AI 知识库,并伴随大量编辑器、数据库、导出与多语言相关的改进与缺陷修复。

阅读本文后,你将掌握:v3.7 新增的 CLI 直连内核数据层能力(含serve子命令与破坏性变更)、内核级插件系统的架构与热重载机制、移动端闪念速记的使用方式、AI 智能体与嵌入向量检索的技术路径,以及所有破坏性变更对插件开发者与高级用户的实际影响。

注意:本文事实均来自当前仓库源码与官方变更记录,版本号以 util/working.go 中的Ver = "3.7.2"为当前仓库实际版本基准(v3.7.0 为其上一个正式版本)。


重新设计的用户界面

新的默认外观主题与图标

v3.7 引入了全新的默认外观主题(对应 issue #17384)与默认外观图标(#7976)。仓库中appearance/themes/daylightappearance/themes/midnight目录下的 CSS 与主题配置即为随版本发布的默认主题;appearance/icons/litheness目录则是新的默认图标集。同时,appearance/covers目录中提供了 70+ 张内置封面图(cover_001.webpcover_072.webp),供文档封面设置使用。

新的设置界面与视觉层级

设置界面在 v3.7 中被重做(PR #17675),顶部标题栏与标签列合并(#10749),整体视觉层级更清晰。外观底部停靠栏(#8890)也得到了改进。这些改动体现在app/src/configapp/src/layout等前端的渲染逻辑中——从源码结构看,设置面板的配置项依旧围绕kernel/conf下的各配置结构体(如editor.goappearance.gosearch.go等)进行读写,因此新界面只是交互层重构,底层配置模型保持兼容。


移动端速记(闪念速记)

v3.7 为移动端新增了“速记”能力(issue #14414):灵感来临时,长按应用图标即可即开即写。内容会被保存为带时间戳的笔记,保存路径可自定义,碎片化想法不再丢失。

从前端源码看,速记功能仅在移动端内核支持。app/src/config/tabs/fileTab.ts中的注释明确写道:

// 仅移动端内核支持使用闪念速记 https://github.com/siyuan-note/siyuan/issues/14414

因此:

  • 该功能面向 Android / iOS 移动端;
  • 入口是应用图标的长按手势,属于系统级快捷操作;
  • 写入的笔记以时间戳命名,存储路径可在设置中自定义(例如归档到指定的笔记本或目录)。

同一版本还补齐了移动端的一批体验改进:移动端多块选择(#13207)、移动端切换手机/桌面界面(#13952)、平板拖拽(#17612)、移动设备拖拽(#17628)、三指选择后立即复制(#17633)、iOS 上打开用户指南(#17851)、Android 核心后台进程改进(#17641)以及 Android 上引用不可用(#17877)的修复。


核心插件系统:常驻内核的单一数据源

架构定位

v3.7 引入了核心插件(Kernel Plugin)系统(PR #17487)。与传统的“前端插件”不同,内核插件常驻在核心进程中运行,作为单一数据来源(single source of truth),使多个窗口和实例之间始终保持一致,彻底告别多窗口场景下的数据冲突。

从源码看,这一机制由kernel/plugin包实现:

  • manager.go 是插件的生命周期管理器,负责插件的发现、加载、启动与停止;
  • 插件的物理目录为工作空间下的data/plugins/(见pluginsDir: filepath.Join(util.DataDir, "plugins"));
  • 每个插件的入口文件是插件目录下的kernel.js
  • 管理器以单例(sync.Once)形式存在,InitManager()在核心启动流程中被调用(见 serve.go 中go plugin.InitManager())。

生命周期与热重载

PluginManager维护PluginManagerStateStopped/PluginManagerStateRunning两种状态,并使用fsnotify监听插件源码目录:

  • kernel.js文件发生CreateWrite事件时,会自动触发插件重载(hot reload);
  • 插件启用/停用由model.SetPetalEnabled驱动,管理器通过model.OnKernelPluginStart/Stop等回调与前端插件体系(Petal)打通;
  • 启动与停止均使用sync.Map+ 每插件互斥锁,保证不同插件可以并发启停,同一插件不会并发启停
  • 若配置Conf.Bazaar.PetalDisabled或未信任集市(!Conf.Bazaar.Trust),内核插件将被整体禁用,这是重要的安全开关。

对开发者的意义

内核插件常驻核心进程意味着:它可以直接读写核心数据层、调用核心内部能力,而无需经过前端渲染进程转发,从而在多窗口/多实例场景下天然避免数据冲突。插件开发者需要关注 v3.7 中的相关破坏性变更(详见下文“破坏性变更”章节),例如updateTransaction的弃用、lang值改为 RFC 5646 规范等。


命令行界面(CLI):直连内核数据层

设计目标

v3.7 为内核新增了命令行界面(issue #17674)。无需启动思源即可直连核心数据层,适用于脚本与自动化任务:批量导入导出、定时处理、外部系统整合。

从源码看,CLI 基于 spf13/cobra(cmd.Execute()),子命令定义于kernel/cli/cmd/目录,包括:

asset.go attr.go block.go bookmark.go dailynote.go database.go document.go export.go file.go history.go import.go inbox.go notebook.go outline.go ref.go repo.go root.go search.go serve.go sql.go sync.go system.go tag.go template.go workspace.go

涵盖文档、块、笔记本、数据库、属性、书签、搜索、SQL 查询、导出导入、历史、同步、模板、标签、大纲、引用、收件箱、仓库等数据层操作,几乎覆盖核心 API 的完整能力面。

全局参数

root.go 定义了四个全局(Persistent)参数:

参数简写默认值说明
--workspace-w环境变量SIYUAN_WORKSPACE_PATH,为空则~/SiYuan指定工作空间路径,必须是合法的思源工作区
--format-ftable输出格式:tablejson
--dry-run-false干跑模式:只校验并打印将要执行的操作,不真正改动数据
--log-level-vwarn(CLI 单次命令默认值)日志级别:off/trace/debug/info/warn/error/fatal

几个值得注意的细节:

  1. 工作空间校验:CLI 启动时会校验appearance/langs目录存在(用于定位内核运行目录),并校验workspacePath是合法工作区(util.IsWorkspaceDir);
  2. 日志默认 warn 级:CLI 单次命令默认只输出警告及以上日志到temp/siyuan-cli.log,避免内核初始化日志刷屏;serve子命令例外,仍跟随conf.jsonsystem.logLevel
  3. 命令结束自动落库:CLI 单次命令没有后台 cron 周期刷 SQL 队列(server 模式才有job.StartCron),因此PersistentPostRunE会在命令执行完后统一调用model.FlushTxQueue()sql.FlushQueue(),保证“写完即可搜索”——这也是 CLI 与常驻服务在数据一致性上的关键差异。

子命令与输出格式

  • 所有子命令支持-f json输出机器可读结果,便于脚本解析;
  • --dry-run可用于对导入、导出、删除等有副作用的操作做安全演练;
  • CLI 支持对加密笔记本的安全限制:rejectEncryptedNotebookCLI会拒绝 CLI 对加密笔记本及其块的操作,避免 CLI 进程成为明文/密文文件的旁路入口(exportDataCmdnotebookRandomIconCmd与涉及加密笔记本 id 的操作会被拒绝)。

破坏性变更:核心服务需显式serve子命令

v3.7 有一条对部署方式影响最大的破坏性变更(issue #17866):

核心服务现在需要显式使用serve子命令

即:过去直接运行内核二进制即启动 HTTP 服务的方式不再可用,现在必须运行:

./kernel serve

serve子命令(serve.go)负责启动内核 HTTP 服务,其完整参数如下:

参数默认值说明
--wd内核可执行文件所在目录的上一级(打包后为resources/思源工作目录(working directory)
--port0HTTP 服务端口,0表示自动分配
--readonlyfalse只读模式
--accessAuthCode访问授权码(即锁屏密码)
--lang界面语言:ar/de/en/es/fr/he/hi/id/it/ja/ko/nl/pl/pt-BR/ru/sk/th/tr/uk/zh-CN/zh-TW
--modeprod运行模式:dev/prod
--sslfalse是否启用 HTTPS 与 WSS
--attach-uifalse将内核生命周期挂接到桌面 UI 进程(Electron 使用)
--safe-modefalse以安全模式启动(对应桌面端新增的“安全模式”入口,#17948)

serve的启动流程(Run函数)展示了完整的服务初始化链路:BootWithFlagsInitJwtKeyInitConfserver.Serve→ 各 SQL 数据库初始化 →BootSyncDataInitBoxesLoadFlashcardsjob.StartCron→ 自动生成文件历史 → 插件管理器 → 嵌入向量索引器 → 资产/表情/主题监听 → 信号处理。

注意:CLI 单次命令模式与serve是两种不同的进程形态。前者执行完即退出、内存索引随之释放(依赖末尾 flush 落库);后者是长驻服务,拥有完整的后台任务(cron、插件、嵌入索引、文件监听等)。


AI 知识库:智能体与嵌入向量检索

v3.7 开始公开测试思源智能体(Agent)与嵌入向量搜索,用自然语言与笔记对话、用语义检索管理知识。仓库中的相关实现包括:

  • kernel/agent/agent.go:智能体核心,内嵌系统提示词(system prompt),定义了块(Block)、文档、标题层级、嵌套列表、hPath、日记等思源领域概念,并通过一组领域工具(document.*block.*search.fulltextsearch.semanticdailynote.*database.*inbox.*attr.*todo_writefile等)操作笔记数据;
  • kernel/model/embedding.go:嵌入向量索引器实现(StartEmbeddingIndexer在 serve.go 中以 goroutine 启动);
  • kernel/model/rerank.go:检索结果的重排序(rerank)能力;
  • kernel/api/ai.go:AI 相关 API 端点;
  • kernel/conf/ai.go:AI 配置项;
  • kernel/util/openai.go:OpenAI 兼容接口的底层客户端封装。

从架构看,语义检索链路为:全文检索(search.fulltext)+ 语义检索(search.semantic)→ 重排序(rerank)→ 交由智能体整合回答。CLI 模式同样支持语义检索——root.go 中model.PrepareEmbeddingSearch()的注释说明:CLI 一次性命令无法运行嵌入索引的死循环索引器,因此只把语义搜索开关置真,命中已构建的嵌入索引(如search -m 4之类带语义模式的命令可正常工作)。

说明:AI 知识库在 v3.7 属于“公开测试”特性,文中关于其内部实现的事实以仓库源码为准,具体模型接入与计费方式请以思源官方后续发布为准。


设置密钥和变量(Secrets & Variables)

v3.7 支持设置密钥(secrets)和变量(variables)(issue #17933),用于在智能体工具、MCP 服务等场景中安全地引用敏感信息。实现位于 kernel/conf/secrets.go:

  • 密钥(Secret):一条命名密钥,Name为引用名(如weread_key),运行时为明文,落盘时通过 AES 加密(util.AESEncrypt);
  • 引用语法:支持{{secrets.NAME}}显式占位符,也支持无前缀的 shell 风格$NAME${NAME}(仅在密钥库存在对应名字时才替换,找不到则保留原文,便于调用方/LLM 发现尚未配置的密钥);
  • 统一解析ResolveSecretsVars串行调用密钥与变量的Resolve,形成“$NAME 先密钥后变量”的优先级,供智能体http_request工具、MCP 服务 headers 等统一消费。

注意:密钥只在内存明文状态下解析(InitConf解密后),落盘均为密文。请勿把密钥明文写入笔记正文。


编辑器、数据库与其他体验改进

v3.7 在编辑器与数据库上同样有大量改进,按主题归类如下。

编辑器与文档编辑

  • 跨文件撤销(#4866):撤销/重做不再局限于当前文档;
  • 嵌入区块就地编辑(#17800):嵌入块支持就地修改内容;
  • 超级区块拖拽调宽(#9521)、区块拖拽工具提示改进(#14034)、列表与超级区块拖放体验改进(#17893);
  • 根据字体文件自动调整编辑器字体字重(#10313)、字体菜单支持搜索(#17691);
  • Alt+Enter在列表末端插入新项目(PR #16314)、递归折叠/展开块(PR #17651);
  • 区块标改进(#17751)、区块标支持在上方或下方快速插入块(#17900)、区块标提示简化(#17945);
  • 行级元素解析改进(#17611)、行级公式与图片复制改进、剪切行为与复制一致(#17571)、粘贴大量text/siyuan内容不再导致渲染进程崩溃(#17569)、字数统计改进(PR #17572);
  • 剪贴板粘贴改进(PR #17850)、复制到微信公众号时列表左缩进修复(#17759);
  • 所有编辑器共享同一个 Lute 实例,降低多分页内存占用(#17869);
  • 改进空标题的边界情况(PR #17468)。

数据库(属性视图)

  • 数据库筛选器组合(#10550);
  • 数据库项目支持“创建副本”(#10850);
  • 数据库日期字段输入格式改进(#13428);
  • 数据库多选字段值支持拖拽排序(#13468);
  • 数据库页脚字段计算支持基于模板的计算(#14394);
  • 数据库视图性能改进(#17830);
  • 取消单元格合并时<tbody>中的<th>转换为<td>(#17835)。

表格与搜索

  • 包含合并单元格的表格粘贴体验改进(#11888);
  • 表格中方向键导航不绕过合并单元格(#17587)、无外围块的表格中方向键失效修复(#17567);
  • 撤销编辑时保留水平滚动位置(#13829);
  • 搜索新增标题和列表子类型筛选器(PR #17597);
  • 通过文件名搜索可从数据快照返回文件列表(#17258);
  • 新增简繁中文敏感度选项(PR #17846)。

导出、图表与显示

  • 新增 Markdown 导出参数对话框(#17031);
  • 桌面端/移动端文件导出不再依赖浏览器下载(#17405、#17580);
  • 改进导出预览的 HTML 复制(PR #17783)、改进 PDF 导出预览界面(#17687);
  • 改进嵌入块中标题层级的导出(#17629);
  • mermaid/graphviz 图表新增缩放和平移选项(#12691);
  • Mermaid 图表中的公式渲染修复(#17593);
  • 改进 IFrame 区块(#17659)。

安全与隐私

  • 不再向浏览器暴露绝对工作区路径(#17410);
  • 将“访问授权码”更名为“锁屏密码”(#17701)——这是语义上的安全术语统一;
  • 修复一些安全漏洞(#17624);
  • 本地 HTTPS + HTTP/2 支持(#17822);
  • 桌面端支持安全模式启动(#17948);
  • Windows 数据同步因 DNS 问题失败时自动刷新本地 DNS 缓存并重试(#17936)。

多语言与发布

  • 新增乌克兰语(PR #17595)、印地语(#17636)、印尼语(#17637)、荷兰语(#17638)、泰语(#17639)支持——appearance/langs目录下可看到对应语言文件(uk.jsonhi.jsonid.jsonnl.jsonth.json);
  • 为 Linux 新增 rpm 发布包(PR #17596);
  • 推送通知标题变更后窗口标题同步更新(#17621)。

移除功能与破坏性变更清单

移除功能

  • 不再支持直接将列表区块插入到列表项区块中(#17890)。依据思源的树形结构约束,列表项的父级必须是列表(NodeList),嵌套列表应通过“在列表项下创建子列表”的方式实现。

破坏性变更

变更影响对象
核心服务需显式serve子命令(#17866)所有直接运行内核二进制的部署/脚本
一些核心 API 的破坏性变更(#15727)依赖旧版 API 的插件
/api/history/rollbackDocHistory移除notebook参数(#17411)调用该 API 的插件/脚本
弃用updateTransaction,替换为updateTransactionElement(#17828)使用事务更新的插件
修改lang值以符合 RFC 5646(#17855)依赖语言代码的插件与配置

开发者迁移时请重点检查:内核服务启动命令、历史回滚 API 参数、事务更新 API、语言代码取值。


开发者相关更新

v3.7 面向插件开发者的更新还包括:

  • 提供用于导出文件的插件函数(#15484);
  • 改进 LocalStorage 相关 API(PR #17482);
  • addDock允许在任意生命周期阶段调用(#17506);
  • 修复插件安装/卸载/启用/停用后全局快捷键注册/注销失效(#17599);
  • /api/query/sql新增只读模式(PR #17696);
  • 新增核心 API/api/lute/md2html(PR #17697);
  • 新增核心 API/api/history/createDocHistory(#17774);
  • RTL 布局:为.protyle新增.rtl类,并修复提示/块引用样式(#17741);
  • 升级 Electron 至 v42.5.0(#17617)、升级 highlight.js 至 v11.11.2(#17928);
  • 不再创建数据表blocks_fts_case_insensitive(#17849)——全文搜索的大小写敏感行为统一由sql.SetCaseSensitive(model.Conf.Search.CaseSensitive)控制;
  • 改进 Linux 构建脚本(PR #17632)、改进数据索引稳定性(#17610)、避免数据仓库清理结束时长时间等待(#17711)。

文档与规范更新

  • 新增数据库 API 端点文档(#11130);
  • 新增.sy格式规范文件(#17961)——即仓库根目录的 docs/SY-FORMAT.md,定义了思源专有的.sy文档格式;
  • 改进用户指南(#17870),并通过发布服务提供在线用户指南(#17673);iOS 端也支持打开用户指南(#17851)。

缺陷修复精选

v3.7 修复了多类关键缺陷,值得关注的有:

  • 焦点块开头按 Enter 插入位置错误(#14742);
  • 反向链接面板 Shift+Click 多选失效(#17867);
  • 重新索引回退导致 sort.json 损坏(#17862);
  • 页面加载完成前滚动导致突然重新定位跳变(#17864);
  • 启动时缺少window.siyuan.storage报错(#17620);
  • 工作清单复选框切换问题(PR #17840);
  • 提示块内部删除块引用后撤销异常(#17665);
  • reconnectWebSocket的 ping 隔离,CONNECTING 套接字下保持存活(PR #17680);
  • 包含连续图片的内容设置行级元素样式时图片消失(#17704);
  • 无法将笔记本拖拽到最末端(#17709);
  • 搜索窗口内为文档添加标签异常(#17623);
  • 导入 Markdown 后标签页自动关闭(#17615)。

升级与部署建议

  1. 脚本与自动化用户:检查启动内核的脚本,统一改为./kernel serve;如需批处理,可先使用--dry-run演练再执行实际操作;
  2. 插件开发者:对照上文“破坏性变更清单”逐一迁移,特别是updateTransactionlang值;
  3. 自托管用户:可利用 CLI 在不启动界面的情况下完成数据备份、SQL 查询与批量导入导出;利用密钥/变量机制安全管理 AI 工具与 MCP 的凭据;
  4. 多窗口用户:升级后建议迁移到内核插件体系,以获得跨窗口一致的单一数据源体验。

思源 v3.7 在“界面焕新—内核能力开放—智能检索”三条主线上同时发力:CLI 让数据层向脚本与外部系统完全开放,内核插件解决了多窗口数据一致性难题,而智能体与语义检索则开启了“笔记会思考”的新阶段。对于追求自动化与知识库智能化的用户,这是一个值得立即升级的版本。

【免费下载链接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间,让人与智能体在此协作项目地址: https://gitcode.com/GitHub_Trending/si/siyuan

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询