十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

思源笔记插件开发:三步跑通你的第一个插件

思源笔记插件开发:三步跑通你的第一个插件 思源笔记插件开发三步跑通你的第一个插件【免费下载链接】siyuanAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间让人与智能体在此协作项目地址: https://gitcode.com/GitHub_Trending/si/siyuan思源笔记SiYuan是一款隐私优先、自托管的知识工作空间它的插件机制允许第三方在不改动主程序的情况下往编辑器里注入命令、面板、菜单和整块的新界面。这篇文章按先看能力 → 找现成方案 → 自己动手跑通的顺序带你走一遍从 0 到 1 的最小路径不追求覆盖所有细节。1. 先弄清一个思源笔记插件到底能做什么 判断要不要自己写插件先要知道它能碰哪些界面。看前端源码 app/src/plugin/ 里的Plugin类一个插件可以注册的能力大致有斜杠命令用户在编辑器里输入/时弹出的功能菜单里多出你的选项自定义块渲染给特定标记的内容做专属的展示和编辑界面顶栏 / 状态栏图标往顶部工具条和底部状态栏加按钮设置页在设置里获得自己的一页存插件自己的配置侧边面板与 Dock像全局图谱大纲那样新开一个标签页事件订阅与 Kernel 调用监听编辑器事件并通过 HTTP 接口调用 Go 内核读写数据Agent 动作向智能体注册可执行动作让 AI 能调用你的功能插件本体存放在工作空间的data/plugins/目录下README 常见问题里有明确说明加载后跑在浏览器/Electron 环境里与内核通过 HTTP 通信。理解这个边界很重要插件不改内核内核也不直接执行插件代码两者是前端脚本 后端 API的关系。2. 动手写代码前先查有没有现成插件 很多想做插件的需求其实社区集市Bazaar里已经有现成的了。建议的顺序是打开思源应用内的社区集市用关键词搜一遍看看有没有满足需求 80% 的插件找到后就直接安装使用——插件装完落在data/plugins/目录启用/停用即时生效不用重启只有当现成插件缺关键能力、或者你要做的完全是新东西时再进入开发集市本身的管理逻辑就在本仓库里想弄懂安装、校验兼容性是怎么做的可以看 kernel/bazaar/ 目录。其中plugin.go里会读取每个插件的plugin.json清单版本号、显示名、适用的前端/后端环境并判断它是否与当前环境兼容——这正好提示了开发者你写的插件也要在plugin.json里声明清楚兼容范围否则在桌面端能跑的插件到移动端可能直接不加载。3. 两个关键源码位置把插件机制的来龙去脉读明白 不用通读整个仓库抓住前后端两条线就够了。前端加载链路app/src/plugin/loader.ts负责扫描并加载data/plugins/下的插件、注册 Dock 面板index.ts的Plugin类是插件拿到的一切能力命令、图标、设置页、事件总线的入口kernel.ts封装了前端调用内核接口的方式。写插件前把这三个文件读一遍比看十篇教程都管用。内核侧kernel/plugin/manager.go和plugin.go管插件的生命周期sandbox.go限制插件可调用的内核能力范围api_storage.go、api_event.go、api_logger.go则提供存储、事件、日志这类给插件用的内核 API。两个入口文档插件可调用的 HTTP 接口清单docs/API.zh-CN.md官方插件 API 声明项目名叫petal见仓库根目录的 AGENTS.md 说明内核中对应 kernel/api/petal.go负责插件的加载与启停通知4. 最快跑通的路径装环境、放插件、热重载 第一次跑通的最小路径只有四步克隆并启动思源git clone https://gitcode.com/GitHub_Trending/si/siyuan然后进入app/目录安装依赖按 app/package.json 里的 scripts 启动本地开发构建仓库自带的 AGENTS.md 里写了完整的工具链版本要求。准备插件目录在工作空间data/plugins/下建一个文件夹放入plugin.json清单和插件的前端入口脚本重载启停插件时内核会通知前端重新加载petal.go里的PushReloadPlugin就是干这个的改完代码重载一次即可看到效果不必整个重启观察行为打开浏览器 DevTools确认斜杠命令、图标、设置页是否都注册成功如果你要做的功能涉及界面菜单扩展可以参考块级右键菜单这种原生交互形态——插件注册的菜单项最终会出现在类似的菜单结构中5. 调试与验证让插件问题更快暴露 写插件最容易踩的三个坑源码里都有对应答案日志内核侧插件 API 带了专门的 loggerkernel/plugin/api_logger.go前端侧直接看 DevTools 的 console两边对起来基本能定位大部分问题卸载要干净app/src/plugin/uninstall.ts 展示了卸载时会回收哪些东西——Dock、命令、注册的 Agent 动作等。你的插件注册过什么就要在卸载路径上清掉什么否则重载后会出现残留按钮这类诡异现象兼容性声明再次强调plugin.json里的 frontends/backends 字段。声明错了不会报错只是插件静默不加载排查成本很高另外注意内核的沙箱边界kernel/plugin/sandbox.go插件只能通过白名单 API 触碰数据不要把我插件里能直接读文件系统当默认假设。6. 交付给用户打包、上架与之后的学习路径 功能自测通过后交付路径是把插件目录整理成规范包plugin.json 前端脚本 必要的资源交给用户放进data/plugins/即可本地使用想要更多人用可以提交到社区集市Bazaar 是独立的社区集市项目其安装侧逻辑参考 kernel/bazaar/install.go 即可了解上架包需要满足的校验持续学习按这个顺序先吃透 docs/API.zh-CN.md 的接口清单再看 kernel/api/ 里各接口的内核实现理解副作用与限制最后浏览 app/src/ 的整体结构知道自己能往界面哪个位置挂东西思源插件开发的核心心智模型其实就一句话前端挂界面、内核走 API、清单定边界。把这三件事做对第一个插件跑通只是时间问题。【免费下载链接】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),仅供参考
返回列表