siyuan-note/siyuan

SiYuan

从块编辑器到 Go 内核,学习隐私优先知识系统

难度
较难
适合
进阶
主要语言
TypeScript
GitHub
45.7k
许可证
AGPL-3.0
快照日期
2026年8月9日

先判断要不要学

这个项目值得拆什么?

SiYuan 是隐私优先的个人知识管理系统,以内容块、双向链接、所见即所得 Markdown、数据库视图和本地工作空间为核心。仓库由 Go kernel 与 TypeScript 前端组成,并向 Electron、Web、移动和导出渲染生成不同 bundle。官方 AGENTS.md 给出了高价值架构地图。

  1. 01

    块树、引用、索引和编辑交互展示了成熟内容模型。

  2. 02

    前端通过 HTTP/WebSocket 与 Go kernel 协作,边界清楚可学。

  3. 03

    同一 Protyle 渲染能力服务编辑、预览与导出,适合学习核心能力复用。

可以学什么

不只是看代码,而是找到产品的骨架

  • 学产品结构
  • 学数据库
  • 学界面
  • 学完整项目组织
  • 学部署
  • 学 AI 接入
01

块树与事务

选一个段落块,跟踪编辑动作、kernel transaction、索引和 WebSocket 推送。

app/src/protyle · app/src/util/fetch.ts · kernel/model
02

核心渲染跨平台复用

对比 app/desktop/mobile/export 四种 bundle,理解 Protyle 如何在不同环境提供富内容。

app/webpack.config.js · app/src/protyle · app/stage
03

工作空间数据所有权

从 .sy JSON、assets、storage 与备份提示理解本地数据边界。

README.md · kernel/model · kernel/cli/cmd

三段学习路径

从理解、修改到做出你的版本

0130 分钟先跑通

建立 kernel/UI 双层地图

  1. 读 README Architecture 与 AGENTS.md
  2. 标出 kernel/model 和 app/src/protyle
  3. 找到 fetch/WebSocket 边界

完成标志:一张块编辑数据流图。

022 小时动手改

阅读一个纯 UI 编辑交互

  1. 选工具栏或面包屑切片
  2. 追踪事件到 kernel 请求
  3. 记录撤销与重做影响
  4. 阅读相关渲染代码

完成标志:一份跨层交互笔记。

031 天做变体

做一个简化本地块编辑器

  1. 仅支持段落、标题与双向引用
  2. 以 JSON 块树持久化
  3. 实现撤销与反向引用索引
  4. 测试循环引用、并发编辑和损坏文件恢复

完成标志:一个能说清块模型与数据恢复边界的本地原型。

评分解释

每一分都要说清楚为什么

可复刻性10 / 25
10 / 25

多端编辑器与数据引擎极难整体复刻。

文档与代码清晰度18 / 20
18 / 20

AGENTS.md 与 README 架构导航优秀。

新手学习价值11 / 20
11 / 20

适合切片学习,不适合整项目入门。

产品完整度15 / 15
15 / 15

知识管理功能和多端交付非常成熟。

vibe coding 代表性6 / 10
6 / 10

可学 AI 如何在成熟仓库小步工作。

活跃度5 / 5
5 / 5

高频发布与活跃维护。

新颖性5 / 5
5 / 5

块编辑、本地数据与多端渲染组合突出。