思源笔记 v3.1.23 版本解析环境变量启动、导出 API 与编辑器/数据库细节改进全览【免费下载链接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间让人与智能体在此协作项目地址: https://gitcode.com/GitHub_Trending/si/siyuan本篇文章基于思源笔记SiYuanv3.1.23 的官方发布说明展开逐项梳理该版本在编辑器交互、数据库属性视图、搜索替换、导入导出、跨平台运行与内核开发接口上的改进与缺陷修复并结合当前仓库的源码实现kernel、app/src补充底层证据帮助开发者与深度用户理解每项变更背后的工作原理与实战影响。读完本文你将掌握通过环境变量无参启动内核的方法、exportMdContent导出 API 的完整参数语义以及该版本在块引用、虚拟引用缓存、资源导入等环节的行为变化。版本定位与概述v3.1.23 是思源笔记 3.1.x 系列的一个细节完善版本官方概述为“此版本改进了一些细节”。但从变更清单看它覆盖了编辑器交互、数据库属性视图、搜索替换、关系图、导入导出、跨平台Windows / macOS / Linux / 鸿蒙 / arm64与内核 API等多个模块其中几项变更具有明显的工程价值支持通过环境变量设置授权码、工作空间路径和语言PR #14142、#14148为容器化、脚本化部署提供了更友好的启动方式改进内核 APIexportMdContentIssue #14032完善了 Markdown 内容导出的参数控制插入资源文件大小限制由4G 调整为 8GIssue #14188鸿蒙系统上将内核改为长时任务Issue #14131避免后台被系统挂起桌面依赖升级Graphviz v3.11.0Issue #13852与Electron v33.4.1Issue #14101。当前仓库根目录下的 CHANGELOG.md 汇总了各版本变更本文聚焦 v3.1.23 的具体条目并结合源码展开。通过环境变量配置授权码、工作空间与语言v3.1.23 引入了三个启动相关的环境变量允许在不传命令行参数的情况下完成内核初始化环境变量作用SIYUAN_ACCESS_AUTH_CODE设置访问授权码即锁屏密码SIYUAN_WORKSPACE_PATH指定工作空间路径SIYUAN_LANG指定界面语言取值如zh-CN、en等其实现位于 kernel/util/working.go 的BootWithFlags中内核先解析标准库flag-workspace、-accessAuthCode、-lang随后通过coalesceToEnvVar完成“命令行参数为空则回退到环境变量”的合并逻辑。该函数定义于同文件 working.go语义为只要命令行参数未设置或为空字符串就读取同名环境变量作为兜底。workspacePath *coalesceToEnvVar(workspacePath, SIYUAN_WORKSPACE_PATH) accessAuthCode *coalesceToEnvVar(accessAuthCode, SIYUAN_ACCESS_AUTH_CODE) lang *coalesceToEnvVar(lang, SIYUAN_LANG)语言值随后会经LangToBCP47归一化兼容历史下划线写法如zh_CN→zh-CN。CLI 子命令侧同样支持SIYUAN_WORKSPACE_PATH在 kernel/cli/cmd/workspace.go 与 kernel/cli/cmd/root.go 中均优先读取该环境变量作为工作空间目录。实践价值方面这一改动让 Docker 部署与无人值守启动变得更简洁例如在容器内只需注入环境变量而无需拼写长命令行。同时仓库中还预置了配套的旁路开关SIYUAN_ACCESS_AUTH_CODE_BYPASStrue见 working.go用于在设置了授权码环境变量时跳过“空授权码检查”的提示便于自动化脚本直接拉起服务。编辑器与交互细节改进v3.1.23 在编辑器交互层面做了大量“手感”级打磨可以从以下几个维度理解表格、标题与代码块的编辑行为只读模式下支持复制表格#14080此前只读文档中的表格无法被选中复制本版本补上了该能力。在表格内点击时隐藏工具栏#14098避免表格内编辑时悬浮工具遮挡内容。改进表格与最近块搜索的定位#13876优化搜索结果在表格块与“最近打开”列表中的命中定位。改进标题块复制和粘贴#14114、删除文档标题中的br#14057前者保证标题块复制后结构语义不丢失后者清理由 Markdown 导入等途径带入的硬换行残留。改进代码块解析#14116涉及代码块围栏fence与语言标注的解析健壮性。改进代码/键盘/标签元素编辑#13871code、kbd等行级元素在编辑态下的光标与选中行为得到统一。粘贴与拖拽的智能处理粘贴中间包含的文本时不再创建引述块#14162此前粘贴诸如a b的普通文本会被误判为 Markdown 引用语法而生成 blockquote本版本收紧了该判定。将多个文档拖入编辑器时插入列表引用#13942多文档拖拽批量插入时以列表形式组织引用避免逐条插入导致排版混乱。改进菜单粘贴#14112统一菜单面板内粘贴的行为。聚焦、折叠与文档树联动改进退出聚焦后定位#13897与改进动态加载#14004优化大文档动态加载与退出聚焦后的滚动锚点减少跳失。展开折叠的标题后显示块引用计数#14169与改进块引用计数刷新#14109保证折叠/展开后引用计数徽标实时、准确。从收集箱移动后展开文档树#14097与复制文档后展开文档树#14125文档树自动定位到移动/复制后的目标配合改进关系图面板全屏后窗口控制按钮位置#13899与双击.search__drag恢复默认宽度#13964等 UI 细节整体交互一致性明显提升。数据库属性视图相关改进数据库即思源的属性视图Attribute View模块本版本涉及四项改动数据库整体居中或居右后无法点击条目块标#13853修复列布局偏移导致块标点击热区错位的问题。改进数据库主键表情的居中和换行#13940主键列中 emoji 的对齐与折行策略优化。改进数据库日期字段相对过滤#14091 中的过滤表达式解析与求值链路。改进属性面板 - 数据库中的链接打开#14104属性面板中数据库字段里的链接跳转行为修正同时修复了属性面板关联字段异常#13888。反向链接、虚拟引用与搜索替换引用与反链的一致性去重容器块反向链接#13872同一容器块列表项、引述块等内多条引用不再重复计入反链面板避免计数膨胀。改进反向提及高亮#14103反链/提及面板中的命中文本高亮更稳定。文档转换标题后刷新虚拟引用缓存#14147当文档标题在“转换标题”操作后变化时虚拟引用按标题匹配的引用会及时刷新缓存否则引用关系会停留在旧标题上。搜索与替换改进图片/链接元素的查找替换#14049查找替换现在可以覆盖图片地址与链接地址文本。改进包含转义符的文本搜索替换#14173含\、*等转义字符的内容在搜索替换时行为一致。隐藏嵌入块中最后一个非文档路径的面包屑文本#13866嵌入块顶部面包屑只保留“文档路径”一级避免长路径噪音。快捷键扩展AI 编写支持自定义快捷键#13894与切换内容块 LTR/RTL 布局支持自定义快捷键#14113两项操作进入“设置 → 快捷键”体系用户可为AI 编写与块级 LTR/RTL 切换绑定全局或局部快捷键配合改进 RTL 渲染#14044可更好地支持希伯来语、阿拉伯语等从右向左排版场景。导入、导出与分享导入链路修复改进导入 Markdown 时的资源 src 解码#14117与导入 Markdown 文件夹时相对路径错误#14095修复 Markdown 中图片/附件src的百分号编码解码与文件夹相对路径解析问题导入后资源引用不再 404。导入模块的实现集中在 kernel/model/import.go其中使用缓冲写入buf.Grow处理大文件导入时会解析 Markdown 资源引用并复制到工作空间 assets 目录。导出与分享仅在分享至社区时将引用转换为纯文本#14100普通导出保留块引用/嵌入结构只有分享到社区时才降级为纯文本兼顾可读性与导出保真度。回滚文档后更新大纲#14152历史回滚后大纲面板与文档标题结构同步刷新。改进外观模式切换#14157与改进集市主题更新#14128主题/外观切换与集市主题增量更新更流畅。隐藏收集箱中的网络图标#14084、改进浏览器剪藏扩展#14105与/菜单添加键盘元素#14139收集箱、剪藏与斜杠菜单的小幅打磨。资源大小限制调整4G → 8G本版本将插入资源文件大小限制由 4G 调整为 8G#14188 中设置了MaxMultipartMemory 1024 * 1024 * 3232 MiB 多部分表单内存阈值超出部分落盘临时文件服务端并不会一次性把大文件读入内存因此大文件插入的内存压力可控。若需在容器/服务器环境中使用建议结合磁盘容量与上传带宽规划。跨平台与运行稳定性修复本版本修复了多个平台相关缺陷并对鸿蒙端做了关键调整在鸿蒙系统上将内核改为长时任务#14131通过 cgo 导出StartKernel由鸿蒙侧拉起。改为长时任务后内核进程在后台不会被系统挂起保证同步与索引持续可用。Windows 10 上的行级代码异常#13824修复 Win10 下行内代码inline code渲染异常与行级元素编辑改进#13871配套。错误的进程名#13903修正部分平台下进程显示名便于任务管理器识别。macOS/Linux/Windows arm64 上未打包字体#14119 下的 JetBrains Mono、霞鹜文楷等解决 arm64 设备上字体缺失导致的排版问题。网络视频无法下载#14155修复从网络地址下载视频资源失败的问题。滚动条样式不正确#14085与dragover__bottom类名没有移除#14177前者统一深浅主题下滚动条样式后者修复拖拽高亮类名残留导致的下划线残留。移动端缺少编辑 Mermaid 的入口#13934为移动端 Mermaid 图表补上编辑入口。移动文档后回滚文档异常#14107修复文档移动后历史回滚的路径/内容错乱。开发重构与依赖升级依赖版本说明Graphvizv3.11.0关系图/流程图渲染引擎升级#13852Electronv33.4.1桌面壳升级含安全与稳定性修复#14101桌面端 Electron 构建配置可参见 electron-builder.yml 及平台变体electron-builder-linux.yml、electron-builder-arm64.yml 等Graphviz 相关能力通常用于导出与绘图工具链。开发者接口exportMdContent详解v3.1.23 改进的内核 APIexportMdContent是开发者侧最重要的一项变更#14032 中注册POST /api/export/exportMdContent需要管理员角色model.CheckAdminRole与登录鉴权model.CheckAuth。核心实现位于 kernel/api/export.go请求参数及默认行为如下参数类型必填默认说明idstring是—目标文档 ID需满足 ID 模式校验InvalidIDPatternrefModeint否取全局导出配置Conf.Export.BlockRefMode块引用导出模式embedModeint否取全局导出配置Conf.Export.BlockEmbedMode嵌入块导出模式yfmbool否true是否导出 YAML Front Matter 元数据fillCSSVarbool否false是否填充 CSS 变量adjustHeadingLevelbool否false是否调整标题层级imgTagbool否false是否使用img标签形式输出图片addTitlebool否取全局导出配置Conf.Export.AddTitle是否在导出内容前附加文档标题{ id: 20240101120000-abc123, refMode: 0, embedMode: 0, yfm: true, adjustHeadingLevel: false, imgTag: false }接口返回结构为{ hPath: ..., content: ... }其中hPath是导出的 Markdown 文件相对路径content为可直接落盘的 Markdown 文本。前端调用点可见于 app/src/menus/commonMenuItem.ts“导出 Markdown”菜单与 app/src/protyle/header/openTitleMenu.ts标题菜单。对于需要批量导出或接入外部流水线的开发者可通过该接口按文档 ID 逐一拉取纯 Markdown再交由 Pandockernel/api/pandoc.go等工具二次转换。缺陷修复清单速查为便于对照升级以下汇总本版本修复的 10 项缺陷及其影响面Issue缺陷影响面#13824Windows 10 上行级代码异常Windows 桌面端#13888属性面板关联字段异常数据库/属性面板#13903错误的进程名全平台#13934移动端缺少编辑 Mermaid 入口移动端#14085滚动条样式不正确全平台 UI#14095导入 Markdown 文件夹时相对路径错误导入#14107移动文档后回滚文档异常历史/文档树#14119macOS/Linux/Windows arm64 未打包字体arm64 发行包#14155网络视频无法下载资源下载#14177dragover__bottom类名没有移除编辑器拖拽升级与获取v3.1.23 属于 3.1.x 稳定系列建议 3.1.23 之前版本的用户直接升级。发行包覆盖 Windows含 arm64、macOS含 arm64、Linux含 arm64与移动端具体分发渠道以思源官方发布页为准同时也可在应用内“设置 → 关于”中检查更新。若需在服务器上以无界面方式运行可结合上文的环境变量SIYUAN_WORKSPACE_PATH、SIYUAN_ACCESS_AUTH_CODE、SIYUAN_LANG与仓库根目录的 Dockerfile、entrypoint.sh 快速拉起。小结v3.1.23 是思源笔记“细节打磨”的典型版本一方面通过环境变量支持与exportMdContent参数扩展降低了自动化部署与二次开发的成本另一方面围绕编辑器、数据库、搜索替换与跨平台运行修复了大量真实使用中的问题尤其是块引用计数、虚拟引用缓存、表格/标题编辑与 arm64 字体打包等改动直接改善了高频场景的体验。对于关注内核机制的读者本文涉及的 working.go、export.go、harmony/kernel.go 等文件是进一步阅读的良好起点。【免费下载链接】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),仅供参考