mcpField
N
NeuroStack

NeuroStack

远程服务
neurostack.sh记忆与知识476 天前更新

关于 NeuroStack

NeuroStack 是面向 Markdown 笔记库的本地检索层,将 .md 文件索引到 SQLite 中并供 MCP 客户端查询。它面向研究人员、写作者、学生和开发者,并会标记过时笔记、整理 AI 会话中的记忆。

主要功能

  1. 01全文、语义与 wiki 链接图的混合检索
  2. 02带笔记路径的排序证据返回
  3. 03过时笔记检测与降权
  4. 04从 AI 会话中提取决策与根因
  5. 05可选的 Git 支持写入工具

适用场景

  1. 01让 AI 基于既有笔记回答研究问题并引用来源
  2. 02跨会话保存项目决策与会议背景
  3. 03在引用已废弃的 API 或笔记前进行标记

MCP 相关

NeuroStack 通过 neurostack serve 以 stdio 或 HTTP 暴露 33 个 MCP 工具,供 Claude、Cursor、Windsurf、Gemini CLI、VS Code 和 Codex 等客户端调用。写入类工具默认关闭,需手动开启。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.neurostack.sh/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npmneurostack0.12.0

工具

详细介绍

NeuroStack

PyPI npm License CI MCP

为你现有的 Markdown 知识库提供本地检索层和优化器。

NeuroStack 会将一个包含 .md 文件的文件夹(Obsidian、Logseq、Notion 导出文件或纯 Markdown)索引到一个 SQLite 数据库中,并提供全文搜索、嵌入向量和维基链接图。任何 MCP 客户端都可以搜索、遍历图谱并保存记忆。查询会返回按相关性排序的证据及笔记路径,由你的 AI 负责推理,因此你等待时不会运行任何模型。在两次查询之间,NeuroStack 会保持知识库的准确性。它会标记过时的笔记,从 AI 会话中提取决策和根本原因,将反复出现的记忆整合为经验,并将经过验证的经验排入队列以便转化为笔记。索引过程绝不会更改你的文件;可选的 MCP 写入工具则允许客户端通过 git 历史记录编辑笔记。

可与 Claude、Cursor、Windsurf、Gemini CLI、VS Code、Codex 以及其他任何支持 MCP 的客户端配合使用。

60 秒快速开始

npm install -g neurostack          # install
neurostack init                    # pick your notes folder, press Enter for the rest
/save                              # in omp or Claude Code, keep what this session learned
neurostack doctor                  # check that everything works

以下步骤会逐一说明各个部分,以及如何连接其他 AI 客户端。


你的笔记,由你掌控

默认情况下,NeuroStack 是一个只读索引层:

  • 索引、搜索、摘要和图谱分析绝不会修改你的 Markdown 文件
  • 所有索引数据都保存在 NeuroStack 自己独立的数据库中
  • 如需彻底删除,请运行 neurostack uninstall。你的笔记不会受到影响。
  • 除非你为摘要和嵌入向量配置第三方 LLM 提供商,否则任何内容都不会离开你的设备

如果你的知识库是 git 仓库,有四个需主动启用的 MCP 写入工具可让 AI 客户端为你创建和编辑笔记:vault_write_file、vault_delete_file,以及 vault_read_file / vault_list_files。每次写入都会附上描述性消息并提交、推送到你的 git 远程仓库,因此每项变更都能在 git log 中查看、通过 git revert 撤销,并在每个知识库的锁保护下串行执行。写入操作会坚决拒绝无效的 frontmatter、知识库之外的路径以及隐藏目录(.git、.obsidian 等)。由于任何连接到 neurostack serve 的客户端都能使用这些工具,如果你将 MCP 端点暴露到公共互联网,请在传输层设置访问控制(身份验证、隧道或仅限局域网)。


适用人群

你无需是开发者。如果你用 Markdown 记笔记,或能从 Obsidian、Notion、Bear 或 Roam 将笔记导出为 Markdown,NeuroStack 就适合你。

如果你是……NeuroStack 可以帮你……
研究人员向 AI 提问“我的笔记中关于 X 的内容是什么?”,跨数百篇论文检索答案。在 AI 自信地引用某个发现之前,提醒你相关笔记引用了已撤稿的发现或已被取代的论文。
小说作者让 AI 了解你的世界观设定、角色经历和章节决策。它会记得你在第 4 次会话中同意让 Elena 的背景故事在第 2 幕发生变化。
学生让 AI 解释所有课程笔记之间的联系。当教学大纲主题发生变化时,系统会自动标记过时的复习笔记。
专业人士让 AI 在不同会话间记住客户背景、项目决策和会议笔记。无需每次都重新粘贴相同的背景信息。
开发者或 DevOps 工程师在 AI 将引用已弃用 API 或已推翻的架构决策并视为当前信息之前,标记相关笔记。

分三步开始使用

你需要安装 Node.js(大多数电脑上已经安装)。npm 包会为你处理 Python 环境的设置。

第 1 步。安装

npm install -g neurostack

第 2 步。设置(约需两分钟)

neurostack init

设置向导会询问要为哪个知识库文件夹建立索引、要运行哪种模式(Lite 或 Full),以及要应用哪个职业套件。之后,它会为你完成安装。如果你已安装 omp 或 Claude Code,它会添加 NeuroStack hook,让 /save 保存会话中学到的内容。它会设置一个 AI,将已保存的会话转化为记忆,并使用与你的摘要相同的模型。如果暂时没有模型响应,它会关闭此功能并告知你。它还会安装一个后台定时器来保持索引整洁;后台任务失败时会显示桌面通知。每个问题按 Enter 即可接受默认选项。最后,它会运行 neurostack doctor,并显示建议你先尝试的操作。

第 3 步。连接到你的 AI

对于 Claude Desktop:

neurostack setup-desktop

对于 Claude Code:

claude mcp add neurostack -- neurostack serve

对于 Cursor、Windsurf、Gemini CLI 或 VS Code:

neurostack setup-client cursor      # or: windsurf, gemini, vscode

完成。开启一个新对话,询问 AI 关于你笔记中的内容。

Lite 和 Full 模式

所有内容都在你的设备上运行。在 neurostack init 期间选择一个版本:

  • Lite(约 130 MB)提供关键词搜索、笔记之间基于链接的关联、过时检测和 MCP 服务。无需 GPU 或 Ollama。
  • Full(约 560 MB)通过本地 Ollama 增加语义搜索、AI 生成的摘要、笔记之间的关联以及主题聚类。建议使用 GPU 或至少 6 核的 CPU。

非交互式设置会采用所有默认选项:

neurostack init --mode lite ~/my-notes --yes    # lite mode
neurostack init --mode full ~/my-notes --yes    # full mode

--no-hooks、--no-schedule 和 --checkpoint none 分别会关闭 hook、定时器和检查点 AI。

其他安装方式(PyPI、pip、curl)
# PyPI
pipx install neurostack
pip install neurostack        # inside a venv
uv tool install neurostack

# One-line script
curl -fsSL https://raw.githubusercontent.com/raphasouthall/neurostack/main/install.sh | bash

# Lite mode (no ML deps)
curl -fsSL https://raw.githubusercontent.com/raphasouthall/neurostack/main/install.sh | NEUROSTACK_MODE=lite bash

在 Ubuntu 23.04+、Debian 12+ 和 Fedora 38+ 上,操作系统会阻止在虚拟环境之外直接运行 pip install。请改用 npm、pipx 或 uv tool install。

卸载:neurostack uninstall


功能

NeuroStack 的工作方式:知识库、索引、服务、客户端和优化器循环

  • 混合搜索(FTS5 关键词 + 语义搜索),支持分层深度,让客户端可根据令牌预算获取三元组、摘要或完整笔记。
  • 通过 CLI、MCP 或兼容 OpenAI 的 API 提供带有笔记路径和摘录的排序证据,供 AI 引用和推理。
  • 过时检测。当某条笔记反复出现在不再适用的上下文中时,系统会将其标记,并在后续结果中降低其优先级。
  • 会话采集。定时器会扫描 Claude Code、Codex、Gemini 和 omp 的对话记录,并将决策、Bug、惯例和经验作为带有 TTL 的记忆保存。
  • 综合与晋升。反复出现的记忆会转化为经验;晋升队列会列出哪些内容已准备好转为笔记。
  • Wiki 链接图谱,支持 PageRank、社区检测、缺口和桥接分析。
  • 默认只读。选择启用的写入工具会提交每项更改,并推送到你的 git 远程仓库。
技术流程(按模块划分)

NeuroStack 技术流程:知识库、索引器、存储、服务和优化器泳道,以及负责各步骤的模块

可编辑源文件位于图片旁边的 .drawio 文件中。


设计

理念
  1. 你的文件始终归你所有。索引存储在独立的数据库中,因此删除索引不会改变你的笔记。
  2. NeuroStack 提供证据,由你的 AI 基于证据进行推理。没有任何工具会直接回答问题,tests/test_no_answering.py 会确保这一点。
  3. 移除记忆时,它会被移入搜索无法访问的归档中,你之后可以将其恢复。
  4. NeuroStack 会从模型生成的文本(例如收集到的摘要)中删去机密信息。对于你或你的 Agent 有意保存的内容,它会逐字存储。
  5. 先衡量排序变化的影响。neurostack eval 运行时会关闭使用情况学习,因此一次运行不会影响下一次。
心智模型

NeuroStack 包含两层和一个循环。

知识库就是你的 Markdown 文件。NeuroStack 会读取这些文件,将其拆分为文本块,为文本块生成嵌入,为每篇笔记生成摘要,将事实提取为三元组,并构建链接图。笔记状态和标签存储在 NeuroStack 自己的 note_metadata 表中,因此它无需编辑你的 frontmatter。

记忆层存储 Agent 学到的内容,类型包括观察、决策、惯例、经验、Bug 或上下文。这些记录属于 NeuroStack,并可关联一个可选的工作区和可选的到期时间。

优化器循环按计时器运行,并连接这两层。记忆通常始于 AI 会话,在反复出现时转为经验,而当现有笔记都未涵盖相关内容时,则会成为一篇笔记。

架构
flowchart LR
    V[/"Markdown vault<br/>never modified"/] --> IX["index<br/>chunk, embed, summarise,<br/>triples, link graph"]
    IX --> DB[("neurostack.db<br/>SQLite + FTS5")]
    S[/"AI session transcripts"/] --> H["harvest"]
    A["MCP client or CLI"] -->|vault_remember| DB
    H --> DB
    DB --> R["search, tiered, context,<br/>graph, brief"]
    R --> A
    DB --> J["timer jobs<br/>synthesize, promotion,<br/>decay, communities"]
    J --> DB
    J -->|opt-in, git commit| V
    DB --> UI["neurostack ui<br/>read-only dashboard"]

一个 OS 计时器每分钟运行一次 neurostack run-due,该命令会依次运行每个到期作业。neurostack serve 通过 stdio 或 HTTP 提供 33 个 MCP 工具,neurostack api 则通过与 OpenAI 兼容的 API 提供相同的检索功能。

数据模型
区域表用途
知识库索引notes、chunks + chunks_fts、summaries、triples + triples_fts、graph_edges、note_metadata笔记的可搜索副本。删除笔记时,会级联删除其文本块、摘要和三元组。
主题communities、community_members、folder_summaries用于回答宽泛问题的主题集群和文件夹摘要。
记忆memories + memories_fts、memories_archive、memory_sessions当前记忆及其嵌入。归档没有全文索引,也没有嵌入,因此无法通过搜索访问。
质量信号prediction_errors、trigger_log、memory_coverage、note_usage过时笔记、偏离所引用笔记的记忆、被忽略的提醒、缓存的覆盖判定,以及用于衡量热度的使用情况。
反馈和作业search_log、search_feedback、job_runs、job_queue隐式搜索反馈(选择加入)、作业历史记录和排队等待处理的检查点工作。

记忆记录存储其内容、标签、类型、工作区、来源 Agent、嵌入和到期时间。如果嵌入生成器停机,它还会记录 embed_pending,以便之后通过 neurostack backfill 为其生成嵌入;此外还会用 revision_count 和 merged_from 记录编辑和合并情况。第二个数据库 sessions.db 会为原始会话记录编制索引,以供 neurostack sessions search 使用。

写入机制
  1. 审慎保存。 vault_remember 和 neurostack memories add 会按原样保存文本、进行一次嵌入,然后报告相似度高于 0.85 的近似重复项,但不会因此拒绝保存。如果嵌入失败,仍会保存记录,并标记为待补录。
  2. 采集。 索引 LLM 会读取每条会话消息,并保留决策、根本原因、规则和事实。第二轮会通读整段会话,最多保存 3 条最终结论,并标记为 session-verdict。随后由裁定模型为每条记忆选择类型。采集过程会对机密信息进行脱敏,跳过与有效记忆相似度高于 0.88 的内容,并记录已读取的每段会话消息数。
  3. 综合。 至少已有 7 天、相似度达到 0.75 或更高的一组观察(一个锚点加 3 条或更多其他观察)会合并为一条学习成果。原始观察会保留,并标记为 superseded_by:<id>。
  4. 移除。 忘记、合并时落败的一方、过期和清理都会通过同一个辅助程序处理:将记录及原因和时间戳复制到 memories_archive,然后从有效表中删除。搜索开始前会检查是否过期,因此过期记忆不会出现在结果中。
  5. 知识库写入。 只有选择启用的工具(vault_write_file、vault_delete_file)和晋升任务会修改知识库,并且每次都会提交并推送到 git。
读取机制
  1. 混合搜索。 NeuroStack 会分别进行关键词搜索和嵌入搜索,分别取每种搜索的前 50 个片段,再按倒数排名(k = 60)合并两个列表。只被一种搜索找到的片段也会参与竞争。随后会增加收敛加成、调用方上下文的 1.4 倍加权、使用热度和共现加权,并降低标记为过时的笔记排名。
  2. 多样性。 结果中每条笔记最多保留一个片段,相似笔记会相互抑制,因此一条长笔记无法占满结果列表。
  3. 分层深度。 客户端可请求三元组(约 15 个 token)、摘要(约 75 个 token)或完整笔记(约 300 个 token),也可以使用 auto,仅在较低成本的层级未能命中时才逐级提升。
  4. 上下文组装。 vault_context 会将 token 预算分配为:记忆 40%、三元组 20%、摘要 30%、会话 10%,确保任何单一来源都不会挤占其余内容。
  5. 硬性限制。 每次搜索最多返回 top_k 条结果。除非传入 rerank=True(见下文),否则任何检索路径都不会调用 LLM。

可选重排。 vault_search(rerank=True) 会要求裁定模型根据查询为每条整篇笔记结果打分,并按裁定模型给出的顺序返回。在 76 次真实搜索点击中,它将 MRR 从 0.503 提升到 0.652,将 top-1 命中率从 34% 提升到 49%,并将 top-3 命中率从 57% 提升到 75%(配对置换检验 p=0.004)。每次搜索的成本约为 $0.0004,耗时增加约 0.4 秒。它适用于 depth="full" 或 reference_only=True,在其他深度下会报错。如果裁定模型失败,则会返回常规顺序。

使用记录会让笔记更容易再次被找到,但绝不会将笔记标记为事实。

已知限制
  • 采集的记忆目前不会记录其工作区,因此按工作区范围搜索时会漏掉这些记忆。
  • 采集的记忆不会链接回其来源会话和消息。
  • 如果后续会话再次提到相同内容,已忘记的记忆可能会重新出现,因为重复项检查仅读取有效记忆。
  • 编辑记忆会替换其文本,只有 revision_count 会显示它发生过更改。
外部服务

Lite 模式不需要这些服务。以下服务均为可选项,配置在 ~/.config/neurostack/config.toml 中,并且每项都有对应的 NEUROSTACK_* 环境变量。如果缺少某项服务,需要它的功能就会停用,其余功能仍可正常运行。

服务配置键默认值用途未配置时
嵌入模型,任何兼容 OpenAI 的 /v1/embeddingsembed_url、embed_model、embed_api_key、embed_timeout_s本地 Ollama,nomic-embed-text语义搜索、记忆相似度、重复项检查、综合聚类仅进行关键词搜索。新记忆会被标记为需要运行 neurostack backfill。
索引大模型,Ollama 或任何兼容 OpenAI 的聊天 APIindex_llm_url、index_llm_model、index_llm_api_key,或用于 claude -p 等 CLI 的 index_llm_command本地 Ollama,phi3.5笔记摘要、三元组、主题标签、采集提取、综合不生成摘要或三元组。采集无法提取记忆。
评审模型,OpenRouter 决策 APIjudge_url、judge_model、judge_api_keyOpenRouter 上的 ~typesafe/jev-latest,没有密钥时不可用采集记忆类型、rerank=True、晋升队列的“未覆盖”检查采集会保留索引大模型给出的类型,重排会返回常规顺序,未覆盖的记忆会计为待处理。
Agent,在 OpenRouter 或兼容代理上运行的 Pi(@earendil-works/pi-coding-agent)agent_provider、agent_model、agent_api_key、agent_base_urlanthropic/claude-sonnet-5,需要 Node 22.19+neurostack agent promotion,用于根据晋升队列写入笔记;以及 neurostack agent vault-save,用于将一次会话记录写入笔记晋升任务会显示为已阻塞。队列仍会生成。
检查点命令,可从标准输入接收提示词并作出响应的任意 shell 命令checkpoint_command关闭将排队的 /save 检查点和采集任务转换为记忆的服务端工作进程排队的检查点会等待。本地采集仍会运行。
通知命令,任意 shell 命令notify_command关闭接收以 JSON 格式传入的失败任务运行信息,例如 ntfy publish mytopic只能在 neurostack jobs 和仪表板中查看失败信息。
Git 远程仓库,位于你的知识库中知识库的 git 配置无vault_write_file、vault_delete_file 以及晋升提交和推送所做的更改推送失败时,写入操作会回滚。读取无需 git。

只有嵌入模型和索引大模型会读取你的笔记文本。评审模型会读取查询、记忆以及正在排序或检查的笔记。将所有 URL 指向 localhost,即可让所有数据都保留在你的设备上。


有何不同

NeuroStack 并非 Obsidian、Notion 或任何笔记应用的替代品。它基于你现有的工具运行,并增添这些工具所不具备的功能。

功能笔记应用基础 RAGNeuroStack
存储你的笔记是否否(默认只读;可选启用基于 git 的写入工具)
AI 可搜索你的笔记部分支持是是
检测过时或陈旧的笔记否否是
AI 记忆可跨会话保留否否是
兼容任何 MCP 客户端否各不相同是
分层检索(节省 80-95% 的令牌)否否是
面向专业领域的工作流否否是
开源、可自托管各不相同各不相同是(Apache 2.0)

陈旧检测是其他工具缺少的功能。当某条笔记反复出现在已不再适用的上下文中(例如已弃用的 API 或已被取代的论文),NeuroStack 会将其标记出来,并在后续结果中降低其排序。


职业包

运行 neurostack init 时,你可以选择一个职业包。每个职业包都会配置模板、文件夹结构和 AI 指引,以适应你的职业实际使用笔记的方式。

职业包适用场景
researcher文献综述、引文追踪、论点演进、过时论文检测
writer角色档案、世界构建、章节大纲、连贯性追踪
student课程笔记、间隔重复、考试准备、教学大纲变更检测
developer代码决策、架构笔记、运行手册、弃用 API 检测
devops基础设施运行手册、事件笔记、变更日志
data-scientist实验追踪、模型笔记、数据集文档

将职业包应用到现有知识库,而不会丢失任何笔记:

neurostack scaffold researcher ~/my-notes    # or: writer, student, developer, devops, data-scientist

你也可以导入现有的 Markdown 目录:

neurostack onboard ~/my-notes

检索的工作方式

大多数记忆工具会给 AI 一大段文本,让它自行判断哪些内容相关。NeuroStack 采用分层检索。它会先使用能够回答问题、成本最低的检索方式,只有在需要时才升级。

级别Token 数AI 获取的内容
快速事实~15从笔记中提取的结构化事实:experiment-3 used learning-rate 0.001
摘要~75AI 生成的笔记概览
完整内容~300实际的 Markdown 内容
自动(默认)不定从快速事实开始,仅在找不到答案时升级

简单的事实性问题只需约 15 个 token 即可解决。深入探索时则会获取完整上下文。AI 会将注意力预算花在最重要的地方。


AI 会记住决策

在不同会话之间,AI 可以保存和检索分类记忆:观察、决策、约定、经验和 bug。开始新会话时,这些记忆会自动呈现。

“我们决定采用无状态身份验证。” “论文的论述框架从整合转向了互补学习系统。” “在第 7 章修订中,Elena 的姓氏从 Vasquez 改为 Reyes。”

这些不只是笔记,而是 AI 会记住你们共同做出的决定。它们在执行 /clear 后仍然保留。在关闭终端后仍然保留。在切换设备后仍然保留。

neurostack memories add "revised thesis framing to CLS, not just consolidation" --type decision --tags "thesis,neuroscience"
neurostack memories search "thesis direction"

从 AI 会话中学习

NeuroStack 会定时扫描你过去的 AI 对话,提取决策、观察和经验,并将它们保存为记忆。你无需亲自记录。

neurostack harvest --sessions 5          # extract insights from last 5 sessions
neurostack schedule install              # one timer runs due jobs every minute

支持 Claude Code、VS Code、Codex CLI、Aider 和 Gemini CLI 会话格式。


保持内容最新

你的知识库会发生变化。NeuroStack 会监视它。

neurostack watch     # auto-index on vault changes

索引会随着你的写作而更新,过时内容检测也会持续运行,因此你无需手动维护。


调度

NeuroStack 通过一个操作系统定时器运行后台作业。定时器每分钟调用一次 neurostack run-due,由 run-due 判断哪些作业到期,并逐个运行。neurostack init 会为你安装定时器。安装时会将每个每日作业记录为刚刚运行过,因此作业会在下一个预定时间启动,而不是同时启动。以下命令用于手动管理定时器。

neurostack schedule install   # install or overwrite the timer
neurostack schedule status    # show whether the timer is active
neurostack schedule remove    # remove the timer

schedule install 使用操作系统自带的调度器:

OS后端写入内容
Linuxsystemd 用户定时器~/.config/systemd/user/neurostack.timer 和 neurostack.service
macOSlaunchd 代理~/Library/LaunchAgents/io.neurostack.run-due.plist
Windows任务计划程序名为 NeuroStackRunDue 的任务

定时器会调用安装时在 PATH 中找到的 neurostack 可执行文件,因此移动或重新安装 NeuroStack 后,请再次运行 schedule install。这三个子命令都接受 --json。

systemd 用户定时器仅在你处于登录会话时运行。在无头 Linux 服务端上,或以 root 身份运行 NeuroStack 时,请为该用户启用 lingering,这样定时器会在你注销后继续运行:

sudo loginctl enable-linger <user>

neurostack doctor 会显示每个作业上次运行的时间。

使用笔记本电脑和服务端创建检查点

在笔记本电脑上使用 /save 会将会话记录上传到服务端的队列。服务端的 checkpoint-worker 作业会在一分钟内将其转化为记忆,而 harvest-worker 会对 harvest-scan 每 30 分钟上传的会话记录执行相同操作。每台主机都会读取自己的文件。

在笔记本电脑上,~/.config/neurostack/client.toml 中指定了服务端。它的 checkpoint_command 会启用 harvest-scan,并为你手动启动的任何 hook checkpoint --run 提供服务:

url = "http://my-server:8001/mcp"
checkpoint_command = "claude -p --model haiku"

该钩子最多等待 context_timeout_s(15 s)以获取会话摘要和每条提示词的上下文,并在每次工具调用时最多等待 timeout_s(5 s),因此服务端宕机不会让每次工具调用都陷入停滞。

在服务端上,~/.config/neurostack/config.toml 中保存了工作进程通过管道传递每条检查点提示词的命令。任何能够从标准输入读取提示词并输出模型回复的命令都可以使用,因此它可以调用兼容 OpenAI 的端点或本地代理:

checkpoint_command = '''jq -Rs '{model: "qwen/qwen3-30b-a3b", messages: [{role: "user", content: .}]}' \
  | curl -s https://openrouter.ai/api/v1/chat/completions \
      -H "Authorization: Bearer $OPENROUTER_API_KEY" -H "Content-Type: application/json" -d @- \
  | jq -r '.choices[0].message.content' '''
checkpoint_timeout_s = 300     # per checkpoint
checkpoint_max_messages = 40   # largest window one checkpoint summarizes, 0 for no cap

NEUROSTACK_CHECKPOINT_COMMAND、NEUROSTACK_CHECKPOINT_TIMEOUT_S 和 NEUROSTACK_CHECKPOINT_MAX_MESSAGES 可覆盖这些设置。如果 config.toml 中没有 checkpoint_command,neurostack jobs 会显示两个工作进程均已关闭,并说明原因。


仪表板

neurostack ui 会在 http://127.0.0.1:8765 提供一个只读仪表板。仪表板包含六个页面。概览页显示索引覆盖率、社群、最近的笔记和记忆数量。自动化页列出所有计划任务及其上次运行、下次运行和最近 14 次运行历史;点击某个任务即可查看它的运行记录。图谱页绘制 PageRank 排名靠前的笔记,点击节点即可打开笔记摘要及链接。记忆页按类型标签和搜索条件列出记忆。搜索页会执行笔记和记忆搜索,并支持 vault_search 和 vault_memories 工具提供的所有选项:笔记搜索支持模式、深度、结果数、工作区、上下文加权、最大 token 数、评判器重排和仅引用模式;记忆搜索支持类型、工作区和数量。在此处搜索会对查询进行嵌入,因此需要嵌入器,且不会计入笔记使用量。每条笔记搜索结果都有一个“最佳结果”按钮,可将搜索和笔记保存为标签。调优会根据这些标签以及反馈循环推断出的标签调优权重:用一半数据进行调优,用另一半评分;只有当获胜权重对未见过的数据排名更好时,点击“应用”才会将其设为所有搜索使用的权重。“还原”会恢复到 config.toml 中的设置。应用和标记是仪表板仅有的写入操作。

无需额外安装,也不会调用模型。传入 --port 可更改端口,传入 --open 可打开浏览器。在 localhost 以外的地址上运行时,请先使用 neurostack ui user add NAME 创建登录用户;系统会提示输入至少 8 个字符的密码(--password-stdin 会从管道读取密码)。页面随后会显示登录表单,会话有效期为 30 天。neurostack ui user list 可显示用户,neurostack ui user remove NAME 可删除用户并结束其会话。


日常使用有哪些变化

没有 NeuroStack使用 NeuroStack
AI 根据训练数据作答AI 根据你的实际笔记作答
引用你已弃用的操作手册标记其已过时,并自动降低其排名
不记得昨天的会话session_brief 可重建工作上下文
阅读 10 篇笔记来查找一个事实分层检索:结构化事实约需 15 个 token
/clear 后决策消失类型化记忆会无限期保留

知识库的存储方式

~/your-vault/                           # your Markdown files (not modified by indexing; AI clients can edit via opt-in MCP write tools)
~/.config/neurostack/config.toml        # configuration
~/.local/share/neurostack/
    neurostack.db                       # SQLite + FTS5 knowledge graph
    sessions.db                         # session transcript index

NeuroStack 会读取你的知识库。默认情况下,它不会写回任何内容,所有索引数据都存储在自己的 SQLite 数据库中。可选启用的 MCP 写入工具(vault_write_file / vault_delete_file)是唯一例外:它们会在知识库中创建或编辑 .md 文件,并立即将更改提交并推送到你的 git 远程仓库。

记忆写回(可选启用)

记忆默认存储在 SQLite 中,因此在 Obsidian 中不可见,数据库丢失时也会消失。启用写回后,符合条件的记忆会以 Markdown 文件形式持久保存,归你所有:

[writeback]
enabled = true                 # opt-in; default false
path = ".neurostack"           # quarantine dir, relative to vault_root
include_observations = false   # also write the noisier observation/context types
  • 文件会存放在 {vault_root}/.neurostack/memories/<type>/<YYYY-MM>/<uuid>.md 下。NeuroStack 只会在这一个目录中写入内容,因此不会改动你自己的笔记。
  • 只有持久(无 TTL)的 decision / convention / learning / bug 记忆会写入文件;临时(有 TTL)的记忆不会写入。
  • 数据库仍是事实来源;文件是可读的导出内容。vault_remember / vault_update_memory / vault_forget / vault_merge 会自动使文件保持同步。
  • 该目录通过自身的 .gitignore 自动忽略,因此在你选择启用前,记忆不会纳入 git(删除该文件即可将它们纳入版本控制)。NeuroStack 绝不会代你提交更改。
  • neurostack migrate write-back [--dry-run] 可导出现有记忆;neurostack sync 会使文件与数据库保持一致(冲突时以数据库为准)。

全部 24 个 MCP 工具

搜索与检索

| 工具 | 描述 | |------|-------------| | `vault_search` | 使用分层深度(`triples`、`summaries`、`full`、`auto`)进行混合搜索 | | `vault_summary` | 预先计算的笔记摘要 | | `vault_graph` | 显示 Wiki 链接邻域及 PageRank 分数 | | `vault_related` | 按嵌入距离查找语义相似的笔记 | | `vault_triples` | 知识图谱事实(主语-谓语-宾语) | | `vault_communities` | 在主题集群中执行 GraphRAG 查询 | | `vault_context` | 在令牌预算内组装任务范围的上下文 |

上下文与洞见

工具描述
session_brief简明的会话简报
vault_stats索引健康状况、兴奋性细分、记忆统计数据
vault_record_usage跟踪笔记热度
vault_prediction_errors显示过时的笔记

记忆

工具描述
vault_remember存储一条记忆(返回重复警告和标签建议)
vault_update_memory就地更新一条记忆
vault_merge合并两条记忆(合并标签并保留审计记录)
vault_forget删除一条记忆
vault_memories列出或搜索记忆
vault_harvest从会话转录中提取洞见
vault_harvest_transcript从客户端提交的转录中提取洞见(无法访问服务端文件系统)

会话

工具描述
vault_session_start开始一个记忆会话
vault_session_end结束会话,存储你编写的摘要,并自动提取内容

知识库文件(可选启用的写入功能 — 由 Git 支持)

工具描述
vault_read_file读取知识库根目录下的 .md 文件
vault_list_files列出 .md 文件;始终排除隐藏目录(.git、.obsidian 等)
vault_write_file创建或覆盖 .md 文件;提交并推送到 origin/main。缺少必需 frontmatter(date、tags、type)时会强制拒绝写入。推送冲突时:执行 git pull --rebase --autostash 并重试一次,随后回滚。
vault_delete_file删除 .md 文件;提交并推送到 origin/main
完整 CLI 参考
# Setup
neurostack init                          # one-command setup: deps, vault, index
neurostack init --mode full ~/brain      # non-interactive full mode
neurostack onboard ~/my-notes            # import existing Markdown notes
neurostack scaffold researcher           # apply a profession pack
neurostack scaffold --list               # see all packs
neurostack update                        # pull latest source + re-sync deps
neurostack uninstall                     # complete removal

# Search & retrieval
neurostack search "query"                # hybrid search
neurostack tiered "query"                # tiered: triples -> summaries -> full
neurostack triples "query"               # knowledge graph triples
neurostack summary "note.md"             # AI-generated note summary
neurostack related "note.md"             # semantically similar notes
neurostack graph "note.md"               # wiki-link neighborhood
neurostack communities query "topic"     # GraphRAG across topic clusters
neurostack context "task" --budget 2000  # task-scoped context recovery
neurostack brief                         # session briefing

# Maintenance
neurostack index                         # build/rebuild knowledge graph
neurostack watch                         # auto-index on vault changes
neurostack decay                         # excitability report
neurostack prediction-errors             # stale note detection
neurostack backfill [summaries|triples|all]
neurostack communities build             # rebuild topic clusters
neurostack reembed-chunks                # re-embed all chunks
neurostack export --include triples -o dump.json  # dump index data as JSON

# Memories
neurostack memories add "text" --type observation
neurostack memories search "query"
neurostack memories list
neurostack memories update <id> --content "revised"
neurostack memories merge <target> <source>
neurostack memories forget <id>
neurostack memories prune --expired

# Sessions
neurostack harvest --sessions 5          # extract session insights
neurostack sessions search "query"       # search transcripts

# Scheduled jobs: one OS timer (systemd, launchd, or Task Scheduler) runs `neurostack run-due`
neurostack schedule install              # install or overwrite the timer
neurostack schedule status               # is the timer active?
neurostack schedule remove
neurostack run-due                       # what the timer calls: run each due job once
neurostack jobs                          # schedule, last run, and next due per job

# Harness hooks (session brief, auto-RAG, trigger memories, checkpoints)
neurostack hooks install --harness claude   # or: omp
neurostack hooks status

# Trigger memories: did the warnings change anything?
neurostack triggers stats                # fired, followed, ignored per memory (30d)
neurostack triggers stats --days 7

# Checkpoint: manual only — a harness never fires one on its own (issue #176).
# `/save` (both harnesses) queues a request instead of running one directly:
neurostack hook enqueue --harness claude    # or: omp — uploads the transcript to the server's queue
neurostack hook checkpoint --run --session <id>  # run one checkpoint by hand on this host
neurostack hook checkpoint --save               # a model's JSON reply on stdin
# Client setup
neurostack setup-client cursor           # or: windsurf, gemini, vscode, claude-code
neurostack setup-client --list
neurostack setup-desktop                 # Claude Desktop

# Diagnostics
neurostack stats                         # index health
neurostack doctor                        # validate all subsystems
neurostack demo                          # interactive demo with sample vault

检查点运行器会为每个对话使用非阻塞 OS 锁。同一对话的重叠保存会返回 checkpoint already running,而不同对话可以同时保存。运行器会保留提取出的回复以及每个已确认条目的回执,因此部分重试不会再次调用模型,也不会重复已确认的保存。每个对话会保留最近 256 条基于精确脱敏内容生成的 SHA-256 回执。事实发生变化时,会生成不同的回执。连接仍可能在服务端提交后、确认写入前失败。要避免远程端重复,需要服务端支持幂等性,而当前 vault_remember 合约并未提供该功能。

没有任何 harness 会自行触发检查点:/save 是唯一触发方式,它会将请求交给服务端队列,而不是直接运行检查点。neurostack hook enqueue --harness <claude|omp> 会读取会话转录,并使用 queue_add MCP 工具上传,且采用 gzip 压缩。超过 10 MB 的转录只会上传最新记录。队列每天最多接收 50 个检查点,服务端的 checkpoint-worker 作业会在 neurostack run-due 中针对已上传文本运行每个检查点,且在一分钟内完成。enqueue 会输出一行结果(已排队、已在队列中、已达到每日上限或不可访问);请求成功提交时退出码为 0,否则为 1。服务端会使用自身 config.toml 中的 checkpoint_command 运行该命令。harvest --pending --enqueue 和客户端的 harvest-scan 作业也会以相同方式将待处理转录上传到提取队列。

神经科学依据

每项功能都对应记忆神经科学中的一种特定机制:

功能机制引用
陈旧检测 + 降级预测误差信号触发再巩固Sinclair & Bhatt 2022
兴奋性衰减CREB 升高的神经元更容易加入新记忆Han et al. 2007
共现学习Hebbian“共同放电,彼此连接”可塑性Hebb 1949
主题簇Hopfield 吸引子盆地动力学、逆温度Ramsauer et al. 2020
收敛置信度能量景观检索,盆地宽度 = 鲁棒性Krotov & Hopfield 2016
侧向抑制PV+/SOM+ 中间神经元的胜者通吃竞争Rashid et al. 2016
分层检索互补学习系统McClelland et al. 1995

完整引用:docs/neuroscience-appendix.md


常见问题

它会修改我的知识库文件吗? 默认不会。索引、搜索、摘要和所有读取工具都不会改动你的文件,所有索引数据都存储在 NeuroStack 自己的 SQLite 数据库中。四个可选的 MCP 写入工具(vault_write_file、vault_delete_file,以及 vault_read_file / vault_list_files)允许 AI 客户端创建和编辑笔记;每次写入都会提交并推送到你的 git 远程仓库,因此变更可追踪、可还原。如果你的知识库不是 git 仓库,文件仍会写入磁盘,但会跳过提交步骤。此外,可选的记忆回写功能会将记忆保存为 Markdown,但仅保存到隔离的 .neurostack/ 目录中,不会影响你自己的笔记。

我需要 GPU 吗? 不需要。Lite 模式没有任何 ML 依赖。Full 模式可在 CPU 上运行,但没有 GPU 时摘要生成速度较慢。

我需要懂 Python 吗? 不需要。npm 包会处理所有事情。你无需接触虚拟环境。

它能处理多大的知识库? 已使用约 5,000 条笔记进行测试。无论规模多大,FTS5 搜索都能保持快速。

我能在没有 AI 客户端的情况下使用它吗? 可以。CLI 可独立运行,也可以将输出传递给任何大模型。

我的知识库是私密的吗? 是的。除非你在 Full 模式中使用第三方大模型提供商,而不是本地 Ollama,否则数据不会离开你的设备。在这种情况下,你索引的文本会按照该提供商自己的政策发送给它。

它支持哪些 AI 客户端? Claude Code、Claude Desktop、Cursor、Windsurf、Gemini CLI、VS Code、Codex,以及任何支持 MCP 的其他客户端。


系统要求

  • Linux、macOS 或 Windows
  • Lite 模式: Node.js + Python 3.11+。无需 GPU 或 Ollama。
  • Full 模式: Ollama,以及 nomic-embed-text 和一个摘要模型。建议使用 GPU 或至少 6 核的 CPU。

开始使用

npm install -g neurostack
neurostack init

neurostack init 会选择一个层级、安装依赖项、为知识库建立索引并配置你的 MCP 客户端。


Apache-2.0,详见 LICENSE。不依赖 GPL。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。