内容
# Noto
<div align="center">
[](LICENSE)
[](https://github.com/doomwoodzz/Noto/actions/workflows/ci.yml)
[](https://nodejs.org)
[](https://pypi.org/project/noto-app/)
[](https://pypi.org/project/noto-app/)
### 当你聆听时,Noto 会记住。
一个本地优先的 Markdown 笔记工作区,带有 AI 讲座聆听助手,完全在您自己的机器上运行。
</div>
## 目录
- [快速安装](#快速安装)
- [功能游览](#功能游览)
- [Noto 与替代品比较](#noto-与替代品比较)
- [架构](#架构)
- [基准测试](#基准测试)
- [开发](#开发)
- [本地优先](#本地优先)
- [贡献](#贡献)
- [许可证](#许可证)

Noto 完全在您自己的机器上运行。无需账号,无需登录,也无需托管服务器来操作 — 您的笔记存储在本地 SQLite 数据库中,除非您显式配置了 AI/连接器调用,否则不会有任何数据离开您的计算机。
## 快速安装
```bash
pip install noto-app
noto
```
这将在您的浏览器中打开 Noto,网址为 `http://127.0.0.1:8787`。第一次运行会下载一个小的、校验和验证的 Node.js 运行时(Noto 本身是一个 Node/TypeScript 应用程序);后续运行将立即启动。无需单独安装 Node.js。
## 功能游览
### Markdown 笔记、维基链接和反向链接

使用纯 Markdown 写作。链接笔记使用 `[[维基链接]]`,Noto 会自动构建反向链接 — 右侧的上下文面板始终显示有哪些链接到此处以及此笔记链接到哪些内容。
### 知识网络

一个基于画布的、力导向的您整个知识库的图。笔记根据它们实际连接的方式聚类 — 首先是结构化的 `[[链接]]`,然后为链接不足的笔记自动填充语义边,以便孤立的想法仍然能找到它们的邻居。
### AI 助手

一个由 OpenAI 支持的助手,读取您正在查看的笔记:聊天、总结、生成闪存卡、查找相关笔记或直接将现场讲座转录为结构化、链接的笔记。您可以自带 API 密钥 — 除非您配置了一个,否则不会运行任何 AI 相关的内容。
### 智能搜索

在您的机器上运行的语义搜索(`⌘⇧F`),使用本地 MiniLM 嵌入 — 您的知识库内容不会离开您的计算机来进行搜索,它会根据含义而不是简单的关键词重叠来查找笔记。
### 导入

粘贴文档、上传文件或从 GitHub/Notion 拉取内容,然后 Dump 将源材料分割成原子、可审查的笔记,然后再提交到您的知识库。
### MCP 桥接
Claude Code、Cursor 和 Codex 可以通过 `noto-mcp` 直接读写您的知识库,这是一个小型标准输入输出 MCP 服务器,通过个人访问令牌进行身份验证 — 有关其工作原理,请参见下面的[架构](#架构)。
## Noto 与替代品比较
| | Noto | Obsidian | Notion | Logseq | Mem |
|---|---|---|---|---|---|
| 本地优先(数据存储在磁盘上) | ✅ | ✅ | ❌ | ✅ | ❌ |
| 无需账号/登录 | ✅ | ✅ | ❌ | ✅ | ❌ |
| 开源 | ✅ | ❌ | ❌ | ✅ | ❌ |
| 内置 AI(聊天、讲座转录、闪存卡) | ✅(自带 API 密钥) | 仅限插件 | ✅(付费层级) | 仅限插件 | ✅(25 条消息/月免费,付费不限) |
| 知识图谱视图 | ✅ | ✅ | ❌ | ✅ | ❌ |
| MCP / AI 代理桥接 | ✅ | ❌ | ✅(官方,托管) | ✅(官方,DB 版本测试版) | ✅(官方,托管) |
## 架构
```mermaid
flowchart LR
subgraph local["本地机器"]
UI["React UI<br/>(Vite :5173)"] -->|REST /api| API["Express API<br/>(:8787)"]
API --> DB[("SQLite")]
MCP["noto-mcp 桥接"] -->|"Bearer PAT"| API
end
CC["Claude Code"] --> MCP
CU["Cursor"] --> MCP
CX["Codex"] --> MCP
API -.->|"可选,用户配置"| OpenAI[("OpenAI API")]
```
“本地机器”内的所有内容都不会离开您的设备,除非您显式配置了可选的 OpenAI 接口。`db.ts` 是唯一一个涉及 SQL 的模块;`noto-mcp` 通过 `Authorization: Bearer` 进行身份验证,并完全绕过会话/CSRF,就像其他任何 API 客户端一样。
## 基准测试

Noto 的 MCP 内存层(语义检索 + 响应缓存)在代理编码会话中将令牌使用量减少了约 78%,与朴素的全知识库转储基线相比 — 主要由输入侧检索节省(约 80%)驱动;输出侧节省由于响应缓存而更为适中(约 34%)。请参见 [`docs/benchmarks/`](docs/benchmarks/) 以获取完整的输入/输出分解和方法论。
## 开发
需要 [Node.js](https://nodejs.org) 24+。
```bash
cd landing
npm install
npm run dev # 同时启动 Vite 客户端和 Express API
npm test # 运行测试套件
```
AI 功能和连接器是可选的,并由环境变量控制 — 请参见 [`landing/.env.example`](landing/.env.example)。
## 本地优先
您的数据保留在您的设备上:服务器将所有内容持久化到本地 SQLite 数据库中(在开发过程中为 `landing/server/data/`,或通过 `pip install noto-app` 安装时为您的 OS 标准应用程序数据目录)。AI 和连接器功能仅在您配置它们的密钥时才会联系。
## 贡献
欢迎提出问题和 PR — 请参见 [CONTRIBUTING.md](CONTRIBUTING.md) 以获取开发设置和 PR 期望。
## 许可证
MIT