知识管理OS

基于Rust构建的个人知识操作系统,可将Markdown笔记索引为可搜索、语义关联的知识库,支持全文检索、语义搜索和AI辅助工作流。

  • by calebbarzee
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 calebbarzee/second_brain_server

使用说明

第二大脑

基于Rust构建的个人知识操作系统。它将你的普通markdown笔记索引到一个可搜索的、语义连接的知识库中——由PostgreSQL+pgvector支持,并通过以下方式公开 主控程序 因此,任何人工智能助手都可以阅读、搜索和写你的笔记。

为什么

你已经记笔记了。它们存在于分散的目录中,跨项目,处于不同的完整性阶段。问题不在于写作,而在于 发现 你六个月前写的东西,看到了跨领域想法之间的联系,并为你的人工智能工具提供了实际帮助所需的背景。

Second Brain通过将您的markdown文件视为真实来源并构建一个支持全文搜索、语义(向量)搜索、链接图遍历和可组合AI工作流的派生索引来解决这个问题——所有这些都可以从Claude Code、Claude Desktop、Neovim或任何兼容MCP的客户端访问。

您的文件保留在磁盘上,无论您使用何种结构。无需锁定,无需特殊语法,无需迁移。

运作原理

You write markdown  -->  Watcher detects change  -->  Parser extracts structure
                                                            |
You ask a question  <--  MCP returns results  <--  DB stores notes + vectors
  1. 你写 普通的markdown文件。无需前置或命名约定。
  2. 文件监视器 检测300ms内的变化,解析文件,并将其上传到PostgreSQL。友情链接([[wikilinks]] 和 [markdown](links))被提取到可遍历图中。
  3. 预埋管线 组块按标题节注释,将组块发送到Ollama,并将向量存储在带有HNSW索引的pgvector中。
  4. 17个MCP工具 将所有内容暴露给您的AI助手——搜索、阅读、创建、更新、链接遍历、语义相似性、项目上下文、编辑跟踪、多用户会话和可组合技能。

数据库是一个派生索引,而不是事实的来源。如果它消失了,重新摄入,你就回来了。

快速开始

整个堆栈——应用程序、PostgreSQL和Ollama——都在Docker中运行。除了Docker之外,主机上不需要安装任何东西。

1.部署

./deploy.sh              # Interactive setup
./deploy.sh --defaults   # Deploy with sensible defaults (no prompts)

这将构建应用程序容器,启动PostgreSQL+Ollama,提取嵌入模型,摄入你的笔记,并运行初始嵌入。MCP服务器暴露在 http://localhost:8080/mcp.

2.用克劳德代码注册

claude mcp add second-brain --type http --url http://localhost:8080/mcp -s user

就是这样。Claude Code与HTTP端点进行通信;服务器在内部处理数据库和嵌入调用。

3.使用它

启动Claude Code会话并尝试:

  • “在我的笔记中搜索信号处理”
  • “哪些笔记与我当前的项目有关?”
  • “创建一个总结今天工作的笔记”
  • “总结一下我本周的工作”

管理堆栈

./deploy.sh status       # Show running services
./deploy.sh logs [svc]   # Tail logs
./deploy.sh ingest       # Re-ingest notes
./deploy.sh embed        # Re-run embeddings
./deploy.sh down         # Stop all services (data volumes preserved)
./deploy.sh down -v      # Stop and delete all data

MCP工具

搜索并阅读

工具 说明
note_search 使用生命周期/项目筛选器进行全文搜索
semantic_search 向量相似性搜索——查找概念上相关的内容
find_related 给定一个注释,找到语义相似的注释
note_read 读取笔记的内容和元数据
note_list 列出带有分页和过滤器的笔记
note_graph 显示笔记的出站链接和反向链接
file_search 通过ripgrep/fd搜索磁盘上的文件(不需要数据库)

书写并摄取

工具 说明
note_create 创建一个新的markdown文件并自动摄取它
note_update 更新现有注释并重新索引
note_ingest 通过自动嵌入摄取文件/目录
embed_notes 批量嵌入缺失向量的笔记

元数据和会话

工具 说明
note_classify 设置笔记生命周期(活动/易失性/持久/存档)
note_stamp 在frontmatter中标记编辑元数据(编辑器名称+时间戳)
session_init 为多用户编辑初始化一个隔离的git工作树

技能和项目

工具 说明
run_skill 运行一个可组合的工作流(见下面的技能)
project_list 列出带有注释计数的项目
project_context 获取项目的全面背景

何时使用哪个搜索

  • note_search --你知道这些词。“查找我关于git CLI的笔记。”
  • semantic_search --你知道这个概念。“我写过什么关于射频干扰的文章?”将与关于信号处理、盲信号检测和射频分析的笔记相匹配,即使他们没有使用这个确切的短语。
  • find_related --你有一个笔记,想要上下文。“与此架构文档还有什么联系?”
  • note_graph --你想要结构。“与此笔记有何联系?”
  • file_search --DB搜索失败?文件还没有被摄入?搜索原始文件系统。

技能

技能是可组合的工作流程,在您的知识库上运行:

技能 权限 它的作用
summarize 只读 活动摘要--创建/修改的笔记、任务、按项目分组
continue-work 只读 特定项目的简历上下文——最近的更改、打开的任务、相关笔记
reflect 只读 比较计划与完成的工作、表面图案和差距
connect-ideas 只读 查找跨项目和域的语义连接
contextualize 破坏性 自动标记、自动链接和分类笔记生命周期(首先预览更改)

技能通过MCP客户端交互工作(不需要API密钥)或通过 ANTHROPIC_API_KEY.

配置

嵌入模型

所有嵌入模型都通过Docker堆栈中的Ollama在本地运行。选择模型 ./deploy.sh 设置或设置 EMBEDDING_PRESET 在 .env.prod:

预设 型号 尺寸 大小 备注
nomic nomic嵌入文本 768 137 MB 违约。 速度快,质量好。
all-minilm 全部最小 384 46 MB 最快,最小。
snowflake 雪花-实际嵌入2 768 305 MB 平衡良好。
mxbai mxbai嵌入大 1024 335 MB 高质量、更大的矢量。
qwen3 qwen3嵌入 1024 4.7 GB 最佳质量。CPU速度慢。

环境变量(.env.prod)

变量 默认值 描述
POSTGRES_PASSWORD secondbrain 数据库密码
EMBEDDING_PRESET nomic Ollama型号预设(见上表)
OLLAMA_MODEL nomic-embed-text Ollama模型(匹配预设)
MCP_PORT 8080 MCP HTTP端点的主机端口
NOTES_PATH ./notes-data notes目录的主机路径(绑定挂载到容器中)
RUST_LOG info 日志级别(调试/信息/警告/错误)
GIT_USER_NAME secondbrain 笔记提交的Git标识(人类)
AI_GIT_NAME claude-ai AI编写的提交的Git标识
AI_GIT_EMAIL ai@second-brain.local 人工智能提交的Git电子邮件
ANTHROPIC_API_KEY (无) 启用自主技能执行(可选)

PostgreSQL和Ollama仅在Docker内部网络上运行,它们不向主机公开。唯一暴露的主机端口是MCP服务器。

Notes目录

您的笔记被装订在容器中 /data/notes.Point NOTES_PATH 在任何markdown文件目录中。 deploy.sh 还支持将git存储库克隆为notes源。

如果你使用git支持的notes,容器会自动初始化repo并跟踪配置的分支。推/拉通 ./deploy.sh push 和 ./deploy.sh pull.

配置文件(second-brain.toml)

Docker入口点会根据环境变量自动生成此内容。对于本地开发,您可以手动编写一个:

[database]
url = "postgresql://secondbrain:secondbrain@localhost:5432/secondbrain"

[notes]
paths = ["~/notes"]

[embedding]
preset = "nomic"
# Individual fields override the preset:
# url = "http://localhost:11434"
# model = "nomic-embed-text"
# dimensions = 768
# batch_size = 32
# max_chunk_chars = 2400

多用户会话

当通过HTTP访问时,服务器支持通过git工作树进行并发编辑。每个用户会话都会得到一个独立的工作副本。

分支命名

违约: <username>/<YYYY-MM-DD>/working (例如。, alice/2026-03-18/working)

自定义:通过a branch 参数到 session_init (例如。, alice/2026-03-18/notes_on_bees)

运作原理

  1. session_init 在带有日期戳的分支上创建git工作树
  2. note_create/note_update 使用AI作者身份写入工作树并自动提交
  3. 注释可以在数据库中立即搜索(写入时摄入)
  4. 会话结束后,工作台会被清理干净,但 分支持续存在
  5. 合并到 main 是一个深思熟虑的步骤(PR或手动合并)

受保护的分支(main, master, staging, dev)从不直接写信给。AI承诺使用 --author 所以它们与人类的行为不同 git log.

只读工具(搜索、列表、阅读)不需要会话。

建筑

second-brain (Cargo workspace)
|
|-- sb-core       Shared foundation: models, DB queries, markdown parser,
|                 ingestion pipeline, file search. Everything depends on this.
|
|-- sb-embed      Embedding pipeline: pluggable providers, markdown chunker,
|                 batch processor.
|
|-- sb-sync       File watcher (notify v7) + sync processor. Detects file
|                 changes, ingests, embeds. Runs as a background tokio task.
|
|-- sb-skills     Skill engine: composable workflows for summarize, reflect,
|                 continue-work, connect-ideas, contextualize.
|
|-- sb-server     MCP server binary. 17 tools via rmcp. Supports stdio
|                 (local) and HTTP (network) transports.
|
|-- sb-cli        CLI for manual ingestion, search, embedding, and skills.

有关更深入的架构细节(数据流、嵌入策略、链接解析、数据库模式),请参阅 docs/architecture.md.

发展

对于没有Docker的本地开发(从源代码构建):

# Start just the database
docker compose up -d db

# Start Ollama on the host (or use docker compose up -d ollama from the dev compose)
ollama serve &
ollama pull nomic-embed-text

# Build
cargo build --release

# Run the MCP server (stdio mode for Claude Code)
./target/release/second-brain

# Or HTTP mode
./target/release/second-brain --transport http --port 8080

通过justfile执行开发命令:

just db-up        # start postgres
just db-down      # stop services
just db-reset     # wipe and recreate the database
just test         # run all tests
just ci           # fmt + clippy + test
just server       # run MCP server in dev mode

互动 setup.sh 脚本也可以遍历本地设置,但Docker部署通过 deploy.sh 是主要支持的路径。

命令行界面

这 sb CLI可通过以下方式在容器内使用 ./deploy.sh cli,或在当地建造 cargo build --release -p sb-cli:

# Via deploy.sh (runs inside container)
./deploy.sh cli search "signal processing"
./deploy.sh cli semantic "radio frequency"
./deploy.sh cli skill summarize --period this-week

# Or locally
sb search "signal processing"
sb semantic "radio frequency interference"
sb ingest ~/notes
sb embed
sb skill summarize --period this-week
sb projects
sb classify ~/notes/TODO.md volatile

测试

cargo test --workspace          # 95 unit + integration tests
cargo clippy --workspace        # lint checks
python3 test-mcp-http.py        # 51 HTTP integration tests (requires running server)

板条箱测试覆盖率

板条箱 测试 覆盖范围
sb core 62 配置、摄取、生命周期、标记、路径映射、项目检测、项目同步、工作树
sb embed 10 分块器,TEI提供商
sb技能 16 git_ops(分支验证、提交、快照)、时间周期
sb sync 2 监视器(文件更改检测)
sb core(集成) 5 DB连接、CRUD、全文搜索、pgvector

集成测试套件涵盖了依赖数据库的模块(DB/*)(test-mcp-http.py)以及 tests/db_integration.rs 测验。

延伸阅读

许可证

麻省理工学院