GitHub Explorer
📰 公众号已发布 2026-05-01

Memos 深度分析报告

GitHub: https://github.com/usememos/memos

一句话总结

一个以极简部署和 Timeline-first UI 为核心差异的自托管笔记工具,Go + React 全栈架构支撑三数据库兼容、MCP 协议集成和 CEL 表达式过滤引擎,在「轻量化自托管笔记」细分赛道中以 58K Stars 确立头部地位。

值得关注的理由

  1. 自托管笔记赛道的标杆项目:58,100 Stars、4.3K+ 提交、4 年持续迭代,MIT 开源,在 Joplin/SiYuan/Notesnook 等竞品中以「极简部署 + 微博式交互」独树一帜
  2. 工程实践含金量高:三数据库驱动抽象、CEL-to-SQL 过滤引擎、gRPC-Gateway + ConnectRPC 双协议、自定义 Markdown AST 扩展等设计模式具有高度可迁移性
  3. 率先拥抱 MCP 协议:笔记工具中首批原生集成 MCP(Model Context Protocol),使 AI Agent 可直接 CRUD 用户笔记,代表了「AI-Native 个人知识管理」的方向

项目画像

维度数据
GitHubhttps://github.com/usememos/memos
Star / Fork58,100 / 4,205
代码行数99,479 行代码(Go 53K, TSX 12.7K, TypeScript 6K, Protobuf 1.5K, SQL 1.4K)
项目年龄4 年 3 个月(2021-12-08 创建)
开发阶段成熟活跃(月均 ~85 次提交,26 个主版本迭代,最新 v0.26.2)
贡献模式创始人主导(boojack 约 55% 提交,~30 名活跃贡献者)
热度定位大众热门(58K Stars,自托管赛道头部)
质量评级代码[优秀] 文档[良好] 测试[良好·有 testcontainers 集成测试]

作者视角:为什么存在这个项目

创始人/作者背景

核心创建者 boojack(Steven)是一名中国开发者,从 2021 年 12 月独立启动项目,至今贡献了约 2,400+ 次提交(占总量约 55%)。第二贡献者 johnnyjoygh(Johnny)贡献 520+ 次。项目背后是小型开源团队 usememos(8 个公开仓库,737 followers),而非企业。近期 memoclaw(一个 AI 辅助贡献者)活跃度很高,显示项目正在接入 AI 辅助开发流程。

问题判断

Steven 洞察到现有笔记工具的根本矛盾:功能丰富的工具(Notion/Obsidian)部署和使用复杂,而简单工具缺乏自托管和数据所有权保障。关键观察是:日常灵感捕获(「快速记录一个想法」)不需要文件夹层级、双向链接或复杂编辑器——它需要的是像发推特一样简单的交互。时机恰好:Docker 普及使自托管门槛大幅降低,同时隐私意识的觉醒让「own-your-data」从极客诉求变为大众需求。

解法哲学

Memos 的核心设计哲学:

  1. 极简至上:单 Go 二进制(~20MB Docker 镜像)、SQLite 默认(零外部依赖)、一条命令部署——将「从零到可用」的路径缩到最短
  2. Timeline-first:抛弃文件夹/树形结构,采用类 Twitter/微博的时间线 UI,降低认知负担——「打开就写,写完就走」
  3. 数据所有权:Markdown 原生存储、完全自托管、零遥测、MIT 许可——用户对数据拥有绝对控制
  4. 渐进增强:核心极简但通过插件/API/MCP 扩展——不用时极轻,需要时能重

明确不做的:不做双向链接/图谱(不和 Obsidian/Logseq 竞争),不做富文本编辑器(坚持 Markdown),不做团队协作(专注个人笔记)。

战略意图

Memos 的战略定位是「自托管笔记的瑞士军刀」:

  • 生态扩展:通过 REST/gRPC API + MCP 协议,使 Memos 成为个人知识管理的「数据中心」
  • 社区驱动增长:33 种语言国际化、Docker Hub 大量下载(neosmemo/memos)、多平台部署支持(Docker/K8s/Railway/YunoHost)
  • 商业探索:赞助商模式(Warp/TestMu AI/SSD Nodes),usememos.com 官方文档站

核心价值提炼

创新之处

  1. CEL 表达式过滤引擎 — 新颖度 4/5 . 实用性 5/5 . 可迁移性 5/5 使用 Google CEL(Common Expression Language)作为查询语言,通过三阶段管道(解析 - IR - SQL)将用户表达式编译为多方言 SQL。自动处理 SQLite/MySQL/PostgreSQL 的 JSON 字段访问、占位符、布尔语义差异。比传统 SQL 拼接更安全优雅,任何需要用户自定义过滤的应用都可借鉴。

  2. MCP 协议原生集成 — 新颖度 5/5 . 实用性 4/5 . 可迁移性 4/5 笔记工具中首批原生支持 MCP(Model Context Protocol)。暴露完整的 memo CRUD、tag 管理、附件、关系、表情反应等工具和资源,使 AI Agent 可直接操作用户笔记。使用 Streamable HTTP 传输,支持 Bearer Token 认证。

  3. 三协议并行 API 架构 — 新颖度 3/5 . 实用性 5/5 . 可迁移性 4/5 同一套 Protobuf 定义同时生成 gRPC-Gateway(REST for 移动端/外部集成)、ConnectRPC(浏览器直连,替代 grpc-web)和 OpenAPI 规范。前端通过 @connectrpc/connect-web 直连后端,无需 REST 中间层。

  4. 自定义 Markdown 解析引擎 — 新颖度 3/5 . 实用性 4/5 . 可迁移性 4/5 基于 goldmark 构建,增加自定义 #tag 语法解析扩展。支持 AST 级操作:单次遍历提取所有元数据(ExtractAll)、标签重命名(RenameTag)、纯文本摘要生成、HTML 渲染、Markdown 往返渲染。

  5. 三数据库驱动抽象 — 新颖度 2/5 . 实用性 5/5 . 可迁移性 5/5 通过 Go interface 定义统一 Driver,工厂模式创建 sqlite/mysql/postgres 实现。迁移系统为每种数据库维护独立的 SQL 迁移文件。用户可通过命令行参数无缝切换数据库后端。

可复用的模式与技巧

模式描述适用场景
CEL-to-SQL 编译管道用户友好表达式 - IR 中间表示 - 多方言 SQL,关注点分离需要用户自定义查询/过滤的任何应用
Protocol-First 多协议生成一套 Protobuf 定义同时生成 REST + ConnectRPC + OpenAPI需要同时服务浏览器、移动端、第三方集成的后端
Driver Interface 数据库抽象Go interface 定义操作契约 + 工厂函数按配置创建实现需要支持多数据库后端的应用
SSE Hub 非阻塞广播慢客户端事件丢弃 + 缓冲区限制,避免广播阻塞实时推送/WebSocket/SSE 场景
Markdown AST 单次提取一次 parse + walk 提取多种元数据,避免重复解析Markdown 密集型应用的性能优化
内存缓存 + 批量淘汰sync.Map + atomic 计数 + 20% 批量淘汰最老条目不想引入 Redis 的轻量缓存需求
前端嵌入部署vite build --outDir=../server/router/frontend/dist 将前端产物嵌入 Go 二进制单二进制全栈应用部署

关键设计决策

  1. SQLite 作为默认数据库 — 牺牲高并发写入能力,换来零外部依赖的极简部署体验。对于个人笔记场景,这是正确的取舍
  2. ConnectRPC 替代 grpc-web — 牺牲 gRPC 生态兼容性,换来浏览器原生 HTTP/1.1 支持(无需 Envoy 代理),简化前端架构
  3. 前端嵌入 Go 二进制 — 牺牲开发时热重载体验,换来单文件分发的极致简洁
  4. Timeline UI 而非文件夹结构 — 牺牲复杂文档组织能力,换来极低的认知负担和使用门槛
  5. 自建 Markdown 解析器(基于 goldmark) — 牺牲与标准库的兼容性,换来 #tag 等自定义语法的深度集成
  6. MCP 协议集成 — 在功能尚未被广泛需求时提前布局,押注 AI Agent 将成为笔记工具的重要入口
  7. Biome 替代 ESLint/Prettier — 牺牲 ESLint 生态插件,换来统一的格式化+检查+更快的执行速度

竞品格局与定位

竞品对比矩阵

维度MemosJoplinSiYuanNotesnookBlinkoObsidian
Stars58.1K48.5K28K12K5KN/A
核心定位微博式快速记录跨平台笔记+待办块级双向链接加密笔记AI 增强笔记本地知识库
部署复杂度极低(单命令)中等中等低低本地安装
数据库SQLite/MySQL/PGSQLiteSQLiteSQLCipherSQLite本地文件
API 完整度完整(REST+gRPC)REST完整有限有限插件 API
MCP 支持原生内建无社区插件无无社区插件
自托管核心卖点支持支持支持核心卖点本地
国际化33 语言27 语言完善中等有限完善
许可证MITAGPL-3.0AGPL-3.0GPL-3.0AGPL-3.0商业

差异化护城河

  1. 极简部署体验:单二进制 + 嵌入式前端 + SQLite 默认,是所有竞品中部署门槛最低的
  2. MIT 许可的商业友好度:相比 Joplin/SiYuan 的 AGPL,MIT 对二次开发和商业集成更友好
  3. MCP 协议先发优势:原生内建 MCP 服务端,在 AI Agent 时代占据交互入口
  4. Timeline-first 交互范式:独特的微博式 UI 降低使用门槛,与 Obsidian/SiYuan 的「知识管理」形成差异化
  5. 三数据库兼容:从个人(SQLite)到团队/企业(MySQL/PostgreSQL)的平滑迁移路径

竞争风险

  1. 功能深度不足:缺乏双向链接、图谱视图、块级引用等知识管理核心功能,可能流失进阶用户到 Obsidian/SiYuan
  2. 单人依赖风险:创始人 boojack 贡献约 55% 代码,项目可持续性依赖个人精力
  3. Blinko 等新竞品:AI 增强的自托管笔记工具正在出现,可能侵蚀 Memos 的轻量化定位
  4. 团队协作缺失:专注个人使用限制了规模化增长路径

生态定位

Memos 在自托管笔记生态中扮演「入门级/日常记录」角色——它不是要替代 Obsidian 或 Notion,而是填补「快速捕获想法」这个被重型工具忽视的场景。通过 MCP 协议,它正在从「被动记录工具」向「AI 可操作的知识基础设施」演进。

套利机会分析

  • 信息差: Memos 作为 58K Stars 项目已被充分发现,但其内部的 CEL 过滤引擎、三协议 API 架构和 MCP 集成实现方式是大多数用户未深入了解的技术资产
  • 技术借鉴: CEL-to-SQL 编译管道和 Protocol-First 多协议生成模式具有最高的迁移价值,可直接用于构建任何需要用户自定义查询和多端兼容的应用
  • 生态位: 填补了「极简自托管 + AI-Native 个人笔记」的空白——Joplin 太重、Obsidian 不自托管、Notion 不开源、Apple Notes 不可扩展
  • 趋势判断: 月均 85 次提交的稳定迭代节奏 + MCP 协议布局,表明项目正在从「个人工具」向「AI 时代的个人知识 API」转型。持续关注 v0.27+ 版本的 MCP 功能扩展

风险与不足

  1. 单人依赖(Bus Factor = 1):boojack 贡献约 55% 代码,如果其精力转移,项目发展可能停滞。虽然 memoclaw(AI 辅助贡献者)近期活跃,但核心架构决策仍高度依赖创始人
  2. 功能边界取舍:不做双向链接、文件夹层级、协作编辑的战略选择限制了产品的天花板。部分用户诉求(如 #3655 MINIO 存储、#2463 MySQL 迁移)暴露了功能扩展的压力
  3. 前端技术债:52 个组件、15 个页面,但近期大量重构提交(5750-5757 系列)表明前端代码在快速增长后需要整理
  4. 测试覆盖不均:后端有 testcontainers 集成测试,但前端缺乏可见的测试配置
  5. 0.x 版本号:项目已 4 年但仍未发布 1.0,暗示 API 和数据格式可能仍在变化中

行动建议

  • 如果你要用它: 适合以下场景:(1) 个人快速想法捕获,不需要复杂知识管理;(2) 自托管+隐私优先的笔记需求;(3) 需要通过 API/MCP 将笔记集成到自动化工作流。不适合团队协作或深度知识管理(选 SiYuan/Obsidian)
  • 如果你要学它: 重点关注以下模块:
    • plugin/filter/ — CEL-to-SQL 编译管道的完整实现,含三种数据库方言适配
    • server/router/mcp/ — MCP 协议集成的参考实现,含认证、工具注册、资源暴露
    • server/router/api/v1/v1.go — gRPC-Gateway + ConnectRPC 双协议注册的工程实践
    • plugin/markdown/ — goldmark 自定义扩展 + AST 遍历元数据提取
    • store/driver.go + store/db/db.go — 三数据库驱动抽象的接口设计
    • store/cache/cache.go — 轻量级内存缓存实现(sync.Map + atomic + 批量淘汰)
  • 如果你要 fork 它:
    • 增加双向链接/图谱视图以扩展知识管理能力
    • 前端补充测试覆盖(目前缺失)
    • 将 CEL 过滤引擎抽取为独立库
    • 扩展 MCP 工具集(如全文搜索、知识图谱查询)
    • 增加多用户协作功能

知识入口

资源链接
官方网站usememos.com
官方文档usememos.com/docs
在线 Demodemo.usememos.com
DeepWikideepwiki.com/usememos/memos
Zread.aizread.ai/usememos/memos
Docker Hubhub.docker.com/r/neosmemo/memos
Discorddiscord.gg/tfPJa4UmAv

相关报告