ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

思源笔记 v3.7.0 版本详解:CLI 命令行、内核插件系统与 AI 知识库的源码级解读

思源笔记 v3.7.0 版本详解:CLI 命令行、内核插件系统与 AI 知识库的源码级解读 思源笔记 v3.7.0 版本详解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本文基于思源笔记SiYuanv3.7.0 中文变更记录app/changelogs/v3.7.0/v3.7.0.zh-CN.md撰写系统梳理这一全面焕新版本的五大核心方向——界面重设计、移动端速记、内核插件系统、命令行接口与 AI 知识库并结合当前仓库中 kernel/cli、kernel/plugin、kernel/agent 等目录的源码实现说明每一项能力在代码层面如何落地帮助读者完整掌握该版本的功能边界与自动化集成方案。版本总览一次面向人与智能体协作的焕新v3.7.0 的官方概述用五个关键词概括了本次版本的主题更美观的界面、更强的扩展能力、以及朝智能化方向的关键一步。具体包括核心方向一句话定位仓库中的对应实现重新设计的用户界面整体更美观视觉层级更清晰app/assets 中的前端样式与 app/appearance/themes 主题体系移动端速记长按应用图标即开即写保存为带时间戳的笔记路径可自定义kernel/cli/cmd/inbox.go、app/src/layout/dock/Inbox.ts内核插件系统插件常驻内核运行成为单一数据源消除多窗口数据冲突kernel/plugin 目录goja 运行时、RPC、沙箱命令行接口无需启动图形界面直连内核数据层支撑脚本与自动化kernel/cli/cmd 下 26 个命令文件AI 知识库智能体与嵌入向量搜索进入公开测试kernel/agent、kernel/model/embedding.go重新设计的用户界面本版本对整体界面进行了重设计视觉层级更清晰并引入了新的默认外观图标与新的默认外观主题同时配套全新的设置界面对应新的设置界面引入特性。从仓库结构看界面焕新的落点包括主题文件位于 app/appearance/themes/daylight 与 app/appearance/themes/midnight每个主题目录包含theme.css与元数据json是内置主题的存放位置前端外观样式集中在 app/assets50 余个 SCSS 文件编辑器核心样式在 app/stage/protyle变更记录中还有大量与界面交互相关的细节改进例如合并顶部标题栏和标签栏改进外观底部停靠栏改进拖拽块时显示的工具提示块标支持在上方或下方快速插入块等均属于本次界面焕新的组成部分。移动端速记长按图标即开即写官方描述灵感来时长按应用图标即可即开即写内容保存为带时间戳的笔记保存路径可自定义碎片想法不再溜走。从源码结构看速记Shorthand相关的配置类型定义在 app/src/types/config.d.ts 中而收集箱Inbox作为碎片内容的汇集地其桌面端实现见 app/src/layout/dock/Inbox.tsCLI 侧则提供 kernel/cli/cmd/inbox.go 供脚本读取收集箱内容。本次版本同时修复了 Android 上引用不可用的问题、改进了 Android 上的内核后台进程移动端跟随系统锁屏选项也是这一版的产物。内核插件系统以内核为单一数据源这是 v3.7.0 最具架构意义的变化插件从渲染进程内的扩展迁移为常驻内核运行的组件作为单一数据源使多个窗口和实例之间始终保持一致彻底告别多窗口场景下的数据冲突。从 kernel/plugin 目录的实现可以看到其骨架kernel/plugin/plugin.go 基于gojaJavaScript 引擎构建插件运行时定义了插件状态机ready / loading / running / stopping / stopped / error并通过两个 EventBus 主题与内外通信plugin到内核插件层与runtime到 JavaScript 运行时kernel/plugin/manager.go 负责插件的生命周期管理serve子命令启动时会以go plugin.InitManager()方式异步拉起见 kernel/cli/cmd/serve.go 第 88 行kernel/plugin/api_rpc.go 与 kernel/plugin/rpc.go 提供 RPC 方法注册与调用通道RpcMethod结构体将 JS 侧goja.Callable暴露给内核调用kernel/plugin/sandbox.go 提供沙箱能力kernel/plugin/api_secrets_vars.go 让插件可以安全地引用下文所述的密钥与变量。对插件开发者而言本次版本还带来多项改进插件安装、卸载、启用或禁用后全局快捷键注册/注销失效的问题被修复addDock允许在任意生命周期阶段调用LocalStorage 相关 API 得到改进并新增了提供用于导出文件的插件函数。命令行接口不启动界面直连数据层官方定位无需启动思源即可直连内核数据层可用于脚本与自动化任务例如批量导入导出、定时处理、外部系统集成。命令组织与全局参数CLI 实现位于 kernel/cli/cmd基于 cobra 构建根命令定义在 kernel/cli/cmd/root.go。所有子命令共享四个全局参数参数简写说明--workspace-w工作空间路径缺省时依次取环境变量SIYUAN_WORKSPACE_PATH再取默认值~/SiYuan--format-f输出格式table默认或json便于脚本解析--dry-run-干跑模式只校验并打印将要执行的操作不做实际变更--log-level-v日志级别off / trace / debug / info / warn / error / fatalCLI 一次性命令默认 warn初始化流程root.go 的PersistentPreRunE会先探测工作目录必须包含appearance/langs兼容打包后的resources/与开发态布局随后依次初始化配置、三个 SQLite 数据库主库、历史库、资产内容库并调用model.PrepareEmbeddingSearch()让一次性命令也能命中语义搜索——因为语义索引器StartEmbeddingIndexer是常驻死循环不适用于立即退出的 CLI 进程故 CLI 走的是只检查表与配置、不启动后台循环的轻量路径见 kernel/model/embedding.go 第 120-122 行注释。命令执行完毕后的PersistentPostRunE会统一调用model.FlushTxQueue()与sql.FlushQueue()落库——CLI 单次命令没有后台 cron 定期 flush 机制这一步保证写完即可搜索kernel/cli/cmd/root.go 第 46-59 行。子命令覆盖面从各命令文件的Use声明可以梳理出完整的子命令体系足以覆盖日常自动化场景blockget / children / breadcrumb / dom / kramdown / stat / insert / append / prepend / update / delete / move / batch-get / batch-kramdownkernel/cli/cmd/block.gosearchsearch query支持全文、语义与资产文件内容检索kernel/cli/cmd/search.godocument / notebook / dailynote / database / ref / tag / outline / template文档与笔记本 CRUD、日记、数据库块、块引用、标签、大纲、模板import / export / file / asset / history / sync / system / sql / workspace导入导出、文件与资产、历史快照、同步、系统信息与只读 SQL 查询。其中search子命令的参数设计最能体现与界面搜索对齐的思路见 kernel/cli/cmd/search.go 第 205-214 行# 关键词/SQL/正则/语义四种搜索方式0keyword 1query-syntax 2sql 3regex 4semantic --method, -m 0 # 笔记本 ID 过滤可重复 --notebook, -n # 块类型过滤可重复document heading paragraph list listItem codeBlock mathBlock table ... --type, -t # 块子类型过滤o u t --subtype # 排序0type 1created-asc 2created-desc 3updated-asc 4updated-desc 5content 6relevance-asc 7relevance-desc --order-by, -o # 分页 --page, -p加密笔记本的安全边界一个值得注意的实现细节CLI 在入口处通过rejectEncryptedNotebookCLI显式拒绝针对加密笔记本的一切操作检查notebook / box / id / ids / parent / previous / block等标志及文件路径报错信息为 CLI does not support encrypted notebookkernel/cli/cmd/root.go 第 124-194 行。从源码注释看其意图是避免 CLI 进程成为密文文件的旁路入口——加密笔记本只能通过应用内专用流程解锁和操作。破坏性变更内核服务需显式serve子命令这是 v3.7.0 唯一的破坏性变更内核服务现在需要显式使用serve子命令启动。对应实现见 kernel/cli/cmd/serve.goserve命令携带了原来内核直启的全部参数并绕过根命令的一次性初始化走完整的util.BootWithFlags启动流程--wd 工作目录默认为内核可执行文件所在目录的上一级 --port HTTP 服务端口 --readonly 只读模式 --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 --mode dev / prod --ssl 启用 https 与 wss对应本地 HTTPS HTTP/2 支持 --attach-ui 将内核生命周期绑定到桌面 UI 进程Electron 使用 --safe-mode 以安全模式启动对应桌面端支持以安全模式启动启动后serve会依次初始化 JWT 密钥、配置、数据库然后并行拉起同步、资产监听、表情/主题监听、插件管理器plugin.InitManager与嵌入索引器model.StartEmbeddingIndexer最后进入HandleSignal等待退出信号——这与桌面端、Docker 等部署形态共享同一条启动路径。AI 知识库智能体与嵌入向量搜索公开测试官方描述思源智能体与嵌入向量搜索开始公开测试用自然语言与笔记对话用语义检索管理知识。从源码看这一能力由三块组成智能体Agentkernel/agent/agent.go 内置了完整的系统提示词将块Block定义为核心领域概念规定了块树结构、容器块/叶子块分类、嵌套列表规则、hPath 与 ID 路径的区别以及查找 → 浏览 → 创建 → 修改 → 组织的工具使用模式kernel/agent/tools.go 定义工具集kernel/agent/session.go 管理会话kernel/agent/compaction.go 负责上下文压缩嵌入索引kernel/model/embedding.go 中的StartEmbeddingIndexer是常驻索引循环内部用 CAS 保证只启动一个PrepareEmbeddingSearch则供 CLI 一次性命令在退出前完成语义检索kernel/model/rerank.go 提供重排序能力密钥与变量AI 调用所需的密钥以配置密钥和变量的形式引入。实现见 kernel/conf/secrets.go全局密钥库Secrets以 AES 加密落盘、运行时为明文并支持{{secrets.NAME}}占位符解析正则\{\{secrets\.([^}])\}\}供智能体 http_request 工具、MCP 服务 headers 等以模板方式引用kernel/conf/variables.go 提供变量机制kernel/plugin/api_secrets_vars.go 向插件暴露该能力。完整变更记录以下为 v3.7.0 的详细变更按原变更记录分类条目与 app/changelogs/v3.7.0/v3.7.0.zh-CN.md 保持一致。引入特性新的默认外观图标移动端速记新的默认外观主题支持内核插件系统命令行接口新的设置界面支持配置密钥和变量改进功能支持跨文档撤销改进外观底部停靠栏支持在超级块中拖拽调整块宽度根据字体文件自动调整编辑器字体字重支持数据库筛选器组合合并顶部标题栏和标签栏数据库条目支持创建副本改进包含合并单元格的表格的粘贴体验为 mermaid/graphviz 图表添加缩放和平移选项支持在移动端进行多块选择改进数据库日期字段输入格式支持拖拽排序文档标签数据库多选字段值支持拖拽排序在表格中撤销编辑时保留水平滚动位置支持在移动端切换手机界面和桌面界面改进拖拽块时显示的工具提示数据库页脚字段计算支持基于模板的计算修复拖拽越过视口后再滚动回来时选择起点发生偏移的问题改进工作区丢失后的启动提示修复鼠标移离笔记本后工具提示不会隐藏的问题改进通过AltEnter在列表末尾插入新项的体验使用动态滚动条跳转到底部时内容填满视口新增 Markdown 导出参数对话框修复 macOS 上 GPU 使用异常支持通过文件名搜索从数据快照中返回文件列表桌面端文件导出不再依赖浏览器下载不再向浏览器暴露绝对工作区路径改进空标题的边缘情况向编辑器粘贴大量text/siyuan内容时渲染进程不再崩溃改进行级公式和图片的复制并使剪切行为与复制保持一致改进字数统计移动端文件导出不再依赖浏览器下载表格中的键盘方向键导航不再绕过合并单元格新增乌克兰语支持为 Linux 新增 rpm 发布包为搜索新增标题和列表子类型筛选器改进微信助手批量消息的稳定性改进数据索引稳定性改进行级元素解析支持在平板上拖拽修复段落开头为自定义表情时键盘导航和 Delete 键失效的问题修复推送通知标题变更后窗口标题未能更新的问题支持在移动端使用跟随系统锁屏支持将图片从收集箱拖拽到编辑器支持在移动端拖拽改进嵌入块中标题层级的导出修复三指选择后无法立即复制的问题新增印地语、印度尼西亚语、荷兰语、泰语支持改进 Android 上的内核后台进程添加递归折叠/展开块功能改进 IFrame 块通过发布服务提供在线用户指南改进 PDF 导出预览界面字体菜单支持搜索将访问授权码重命名为锁屏密码避免数据仓库清理过程中退出时的长时间等待防止关闭 Markdown 标记后输入时的样式泄漏改进删除块时的编辑器状态同步改进块标修复复制到微信公众号时列表的左缩进问题修复发布服务中禁用插件时侧边栏布局错乱改进导出预览的 HTML 复制嵌入块支持就地编辑包卡片上将 contenteditable="false">【免费下载链接】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),仅供参考
返回列表