内容
# 大脑数据库
大脑数据库是一款优先考虑代理的Markdown脑图数据库。它是一款适用于Markdown文件文件夹的本地优先知识应用程序,具有图谱导航、脑图锚点、协作原语、更改历史、冲突检测和本地MCP服务器,允许Claude Code和Cursor等代理读取、搜索、检查和维护脑图。
它还附带一个可选的**服务器层**(Supabase/PostgreSQL),该层添加了基于范围的脑图空间、服务器持久化的脑图文档、混合图谱,呈现数据库模式和Markdown wiki,以及一个代理-脑图摄入服务,保持持久知识同步。服务器层是可选的:无需配置Supabase,大脑数据库将保持完全本地优先。
该产品灵感来自**Andrej Karpathy**推广的个人wiki和上下文工程风格。大脑数据库与他无关;引用是对一个持久、链接良好的知识库可以成为人类和代理的高杠杆上下文层的想法的致敬。
## 大脑数据库是什么
大脑数据库将Markdown文件夹视为一个脑图。每个脑图都有一个中心脑图文件,通常命名为`my-project-brain.md`,以及内部代理文件,如`AGENT_START.md`和`log.md`。内容文件成为图谱节点。脑图文件成为该集群的锚点。
该应用程序设计用于三种用户:
- 想要具有属性、图谱导航和可读文件夹的快速本地Markdown wiki的人类。
- 需要邀请码、角色、本地成员状态和未来-ready Supabase持久性的协作者。
- 需要稳定操作合约、图谱、日志、前置元数据和用于摄入、检查、链接和编辑的MCP工具的代理。
## 核心功能
- 通过浏览器文件系统访问API加载本地Markdown保险库。
- 三种视图 - Markdown编辑器、二维神经网络图谱和三维解剖玻璃脑图。
- 应用程序内**脑图聊天**:通过OpenRouter,基于检索增强生成的笔记问答,具有模型切换器、可编辑系统、源芯片和上下文检查器。
- 从UI创建和(软)删除子脑图,具有脚手架锚点、日志和内容文件夹。
- 默认图谱视图。
- 大脑数据库根节点和子脑图锚点节点。
- 脑图元数据文件隐藏为单独的节点,通过脑图面板显示。
- 侧边栏文件夹默认关闭。
- Markdown属性/前置元数据编辑器。
- 规范化演员元数据:`created_by`、`created_at`、`updated_by`、`updated_at`、`last_change_summary`、`content_hash`。
- 具有演员、成员身份、邀请码、角色、更改事件、版本、基线和冲突的本地协作状态。
- 配置后基于Supabase的邀请持久性。
- 用于开发的本地内存邀请备用。
- 用于Claude Code、Cursor和其他MCP客户端的MCP服务器,具有内容哈希更改检测(未更改的写入将被跳过)和自动文档类型推断。
- 可选服务器层:基于范围的脑图空间(`user`、`base`、`group`、`agent`、`council`)、服务器持久化的脑图文档,具有审计轨迹和wiki链接关系。
- 混合图谱过滤器(`markdown` / `database` / `hybrid`),在解剖脑图轮廓后呈现脑图模式(表、外键、原始源)。
## 项目状态
这是一个本地优先的MVP,适用于开发、演示和单机工作流。生产协作仍然需要更强大的身份验证、持久权限、服务器端授权、迁移和部署强化。
## 安装
```bash
npm install
```
## 运行应用程序
```bash
npm run dev
```
打开:
```text
http://localhost:3000
```
使用基于Chromium的浏览器,如Chrome、Edge或Arc。本地文件夹选择器依赖于文件系统访问API。
## 首次使用
1. 使用`npm run dev`启动本地应用程序。
2. 打开`http://localhost:3000`。
3. 点击`添加脑图`。
4. 选择一个Markdown文件夹。
5. 大脑数据库将在具有写入访问权限时创建缺失的内部脑图文件:
- `<folder-name>-brain.md`
- `AGENT_START.md`
- `log.md`
6. 应用程序默认打开图谱视图。
7. 使用侧边栏手动打开文件。文件夹默认关闭。
重要:如果代理将与脑图合作,请保持本地应用程序在localhost运行。浏览器应用程序拥有本地文件句柄工作流、视觉图谱、重新连接流和协作UI。
## 脑图结构
脑图文件夹应能被人类和代理理解。
推荐文件:
- `<brain-name>-brain.md`:脑图锚点、地图和角色合约。
- `AGENT_START.md`:代理的可复制启动指令。
- `log.md`:摄入、检查、维护、决策和开放问题的按时间顺序的历史记录。
- 内容页面:源笔记、概念页面、实体页面、项目页面、综合页面、问题和模板。
避免文件夹级`README.md`文件作为自动导航。改为使用脑图文件、中心页面和语义链接。
## 创建和删除子脑图
**子脑图**是嵌套在另一个脑图内的脑图:任何主题都可以发展成自己的脑图,当它足够大以拥有自己的结构时。文件夹在包含自己的名称匹配的`<name>-brain.md`锚点时成为子脑图,因此嵌套是递归的 - 您可以创建子脑图的子脑图。
### 创建子脑图(应用程序中的两种方法)
**A. 从侧边栏** - 将鼠标悬停在脑图/文件夹行上,点击 **`新建子脑图`** 图标按钮(`新建Markdown文件`旁边)。您将被提示输入名称。
**B. 从`添加脑图`对话框** - 打开`添加脑图`,使用 **`子脑图`** 卡片(“在现有脑图下创建子脑图。”),从 **`选择父脑图...`** 下拉菜单中选择父脑图,然后点击 **`创建子脑图`** 。
无论哪种方式,应用程序都会在新的`<name>-brain`文件夹中写入:
- **`<name>-brain.md`** - 锚点,类型为`brain`,标签为`[brain, sub-brain]`,`## 在大脑中的角色`存根(拥有/不拥有/连接到`[[../<parent>]]` / 入口点)和`## 导航地图`。
- **`log.md`** - 种子化为`setup | <title> 子脑图创建`条目。
- 五个标准内容子文件夹,每个子文件夹都有一个`.gitkeep`:`concepts/`、`entities/`、`sources/`、`syntheses/`、`projects/`。
新锚点在编辑模式下打开,以便您可以填写其角色和地图。(子脑图不获取自己的`AGENT_START.md` - 它仅在保险库/脑图根目录下存在。)创建子脑图需要对文件夹的写入访问权限。
### 删除子脑图(软删除)
将鼠标悬停在子脑图行上,点击 **`删除子脑图`** (垃圾桶)图标。您将被要求确认: *“将子脑图”<name>“及其所有内容移动到脑图回收站(.brain-trash)?您可以从那里恢复它。”*
删除是**非破坏性的**:整个子树首先复制到`.brain-trash/<timestamp>__<name>/`在保险库根目录下,然后从其原始位置删除。因为`.brain-trash`是一个隐藏的点文件夹,所以其内容永远不会重新出现为图谱节点。要**恢复**,请手动将文件夹从`.brain-trash`移出。
## 视图:编辑器、图谱和3D脑图
右上角的视图切换按钮在三个视图之间切换:
- **`编辑器`** - 所选文件的Markdown + 前置元数据编辑器。编辑器自动增长到内容高度,以便属性和文本一起滚动。
- **`图谱`** - 二维wiki图谱,以**神经网络**呈现:节点是神经细胞体(胞体+树突刺),按其(子)脑图颜色编码,边是弯曲的突触纤维,悬停节点会用信号脉冲照亮它和其邻居,脉冲会沿着纤维传递。布局是辐射状的:大脑数据库位于中心,顶级子脑图形成一个环,嵌套的子脑图围绕其父节点聚集,页面围绕其所属脑图轨道运行。拖动以平移,滚动以缩放。
- **`脑图`** - 一个3D解剖玻璃脑图网, wiki图谱在其中呈现为实例化的神经网络。拖动以旋转,滚动以缩放,悬停节点以照亮其突触。节点在静止时保持昏暗(无空闲自动激发)。
两种图谱视图共享一个 **`markdown` / `database` / `hybrid`** 模式切换按钮:
- **`markdown`** - 仅本地wiki链接图谱(默认)。
- **`database`** - Supabase脑图模式(表、外键、原始源)。需要配置Supabase;否则显示“模式图不可用。配置Supabase以启用数据库层。”
- **`hybrid`** - 两者合并,在解剖脑图轮廓后面。
在其中一个视图中选择节点会突出显示另一个视图中的相同节点。
## 脑图聊天(询问脑图)
大脑数据库附带了一个应用程序内聊天助手,通过检索增强生成(RAG)回答基于**您的笔记**的问题。它通过[OpenRouter](https://openrouter.ai)与LLM对话,因此模型密钥永远不会到达浏览器。
### 设置
在`.env.local`中设置`OPENROUTER_API_KEY`(参见[Supabase设置](#supabase-设置)以获取完整的env块)。对于RAG接地,您还需要运行Supabase - 对于语义(矢量)部分,还需要一个嵌入密钥(`OPENAI_API_KEY`或`BRAIN_EMBEDDING_API_KEY`)。如果没有嵌入密钥,检索仍然使用词典(全文)搜索。只有`OPENROUTER_API_KEY`硬性要求聊天功能;如果数据库无法访问,模型仍然会回答,只是没有接地上下文。
### 使用它
- 点击浮动的大脑启动器(右下角, **`询问大脑`** )打开“玻璃聊天栏”。
- 输入一个问题(`消息大脑...`)。 **Enter** 发送, **Shift+Enter** 添加换行符。答案按令牌-令牌流式传输;基于检索的**源芯片** (`title · brain`)从检索的文档中出现。
- **模型切换器** - 一个可搜索的下拉列表,列出OpenRouter的完整模型目录(默认为`openai/gpt-4o-mini`);您的选择在本地持久存在。
- **设置** (齿轮图标):
- **系统** - 可编辑,默认为`重置为默认值`。
- **`使用大脑上下文(RAG)`** - 切换接地开启/关闭。
- **`上下文文档`** - 1-20滑块(要提供给模型的检索文档数量)。
- **搜索范围** - `所有大脑`(跨每个空间的全局搜索)或单个大脑空间。
- **上下文检查器** - `检查当前问题的上下文`显示在发送前哪些文档和文本将被检索,不使用LLM。
### 检索工作原理
`retrieveBrainContext`运行混合搜索 - 全文(tsvector)和密集矢量(pgvector余弦)- 融合互惠排名融合。如果未选择范围,它将在一个全局查询中搜索每个脑图空间。模板/脚手架噪声被过滤掉,每个顶部文档贡献约4000个字符的内容到组装的上下文块中。
聊天API路由:`POST /api/brain/chat`(流式传输),`GET /api/brain/models`,`GET /api/brain/spaces`,`POST /api/brain/context`(检索预览)。
## 协作模型
大脑数据库目前具有本地优先的协作模型,具有服务器准备的概念:
- 演员:人类和代理。
- 角色:`owner`、`admin`、`editor`、`commenter`、`viewer`、`agent`。
- 成员身份:哪个演员在哪个脑图中具有哪个角色。
- 邀请:角色范围的邀请代码。
- 更改事件:本地保存/更新事件,带有演员、摘要、时间戳和内容哈希。
- 文件版本:本地保存时创建的快照。
- 基线:用于冲突检测的内容哈希。
- 冲突:当磁盘文件在本地基线后更改时检测到。
UI故意保持`Acting as`简单:
- `人类`
- `代理`
受邀者输入自己的协作者名称,加入时使用邀请码。邀请者仅选择角色并接收代码。
## Supabase设置
Supabase适用于本地开发,但如果您希望邀请码在当前本地Next.js服务器进程之外持久存在,则建议使用Supabase。
从安全占位符文件创建`.env.local`:
```bash
cp .env.local.example .env.local
```
用您自己的项目值填充它:
```bash
# Supabase - 支持数据库/混合图层和脑图聊天RAG检索
NEXT_PUBLIC_SUPABASE_URL=<您的Supabase项目网址>
NEXT_PUBLIC_SUPABASE_ANON_KEY=<您的Supabase匿名密钥>
SUPABASE_SERVICE_ROLE_KEY=<您的Supabase服务角色密钥>
# OpenRouter - 服务器端仅限;支持脑图聊天(/api/brain/chat)
OPENROUTER_API_KEY=<您的OpenRouter密钥>
# 可选:作为OpenRouter HTTP-Referer / 属性标头发送
OPENROUTER_SITE_URL=http://localhost:3000
# 嵌入 - 启用RAG检索的密集(pgvector)部分。
# 没有它,RAG将仅限于词典(全文)搜索。
OPENAI_API_KEY=<您的OpenAI密钥> # 或:
# BRAIN_EMBEDDING_API_KEY=<嵌入密钥>
```
永远不要提交`.env.local`. 永远不要提交真实的密钥。服务角色密钥和`OPENROUTER_API_KEY`仅限服务器使用,不得暴露给浏览器或公共存储库。如果密钥泄露,请立即在提供商处旋转它。
### 本地Supabase一步到位
完整的本地Supabase堆栈随存储库一起提供(`supabase/config.toml`,`supabase/migrations/`)。如果您有[Supabase CLI](https://supabase.com/docs/guides/cli):
```bash
supabase start # 本地启动Postgres + Studio,应用迁移
```
`supabase start`打印本地URL、匿名密钥和服务角色密钥 - 将这三个粘贴到`.env.local`中。 Studio在`http://localhost:54323`运行。 数据库仅用于图层`database`/`hybrid`和RAG接地聊天;否则应用程序完全本地优先。
### 最小Supabase表
在Supabase SQL编辑器或通过迁移创建这些表:
```sql
create table if not exists brains (
id text primary key,
name text not null,
created_by_actor_id text not null,
created_by_actor_name text not null,
created_by_actor_type text not null check (created_by_actor_type in ('user', 'agent')),
updated_at timestamptz not null default now()
);
create table if not exists brain_memberships (
brain_id text not null references brains(id) on delete cascade,
actor_id text not null,
actor_name text not null,
actor_type text not null check (actor_type in ('user', 'agent')),
role text not null check (role in ('owner', 'admin', 'editor', 'commenter', 'viewer', 'agent')),
invited_by_actor_id text,
created_at timestamptz not null default now(),
primary key (brain_id, actor_id)
);
create table if not exists brain_invites (
id uuid primary key default gen_random_uuid(),
brain_id text not null references brains(id) on delete cascade,
brain_name text not null,
invite_code_hash text not null unique,
invite_code_hint text,
email text not null default 'pending collaborator',
role text not null check (role in ('admin', 'editor', 'commenter', 'viewer', 'agent')),
invited_by_actor_id text not null,
invited_by_actor_name text not null,
status text not null default 'pending' check (status in ('pending', 'accepted', 'revoked')),
accepted_by_actor_id text,
accepted_by_actor_name text,
accepted_at timestamptz,
created_at timestamptz not null default now()
);
create index if not exists brain_invites_code_hash_idx on brain_invites(invite_code_hash);
create index if not exists brain_invites_brain_id_idx on brain_invites(brain_id);
```
当前应用程序在服务器路由中使用服务角色密钥。在生产部署之前,请添加适当的身份验证、行级安全、所有权检查、邀请过期和审计日志。
完整的当前模式 - 包括下面描述的服务器层脑图表 - 位于[`supabase/schema.sql`](supabase/schema.sql)。在Supabase SQL编辑器中运行该文件以预配所有内容。
## 服务器层(混合脑图)
服务器层是可选的,仅在配置了Supabase时激活。它镜像了Connect中的脑图模块,从Prisma适配到Supabase服务客户端。
### 数据模型
`supabase/schema.sql`添加了六个表:
- `brain_spaces` - 基于范围的知识容器(`user`、`base`、`group`、`agent`、`council`),每个`(user_id, scope_type, scope_id)`唯一。
- `brain_documents` - 带有frontmatter、标签、内容哈希和演员审计字段的人类可读的markdown文档,每个`(space_id, slug)`唯一。
- `brain_sources` - 导入/摄入内容的出处。
- `brain_entities` - 规范化实体节点(人、组织、概念)。
- `brain_relations` - 图谱边,包括从`[[links]]`上的`wiki_link`关系自动派生的关系。
- `brain_change_events` - 创建/更新操作的追加审计日志。
PostgreSQL是操作源;`brain_change_events` - 仅附加日志。
PostgreSQL是运营真相来源;markdown文档仍然是持久的、人类可读的层。
### API 路由
| 路由 | 用途 |
| --- | --- |
| `GET/POST /api/brain` | 读取指定范围内的文档,或插入/更新空间/文档。 |
| `GET/PATCH /api/brain/[documentId]` | 读取或更新单个文档。 |
| `GET /api/brain/schema-graph` | 混合图载入:表、外键、原始源、所有权。 |
| `POST /api/brain/import` | 将markdown文件导入指定范围内的空间(frontmatter + 类型推断)。 |
| `GET/POST /api/brain/agents/ensure` | 确保代理脑图空间并刷新其脚手架页面。 |
所有路由都在单个本地用户(`local-user`)下运行,并有损耗:如果未配置Supabase,则返回`*_FAILED`错误,而不是崩溃本地优先的应用。
### 智能代理知识摄入
`syncAgentBrainKnowledgeSpaces`(通过 `/api/brain/agents/ensure` 公开)为每个配置文件创建了一个 `agent` 范围的空间,并生成标准的持久知识页面 — `AGENT_START`,`log`,数据集清单,投影策略和摄入差距。稳定的差异检查意味着未更改的页面永远不会被重写。内置的 `brain` 配置文件反映了大脑自身的表(计数和最近的行)。
## 本仓库不包含 Supabase 数据
本仓库应仅包含占位符,例如 `.env.local.example`。实际值应位于本地环境文件或部署机密中。
另请注意:
- `.env.local` 被忽略。
- `.env*.local` 被忽略。
- `demo-wikis/` 被忽略,不应推送到 GitHub。
如果曾经提交或共享了实际密钥,请立即在 Supabase 中轮换它。
## 智能代理继续大脑
当智能代理继续大脑时,请始终先启动本地应用:
```bash
npm run dev
```
然后给智能代理一个具体的任务和大脑文件夹上下文。智能代理应:
1. 读取大脑文件。
2. 读取 `AGENT_START.md`。
3. 读取 `log.md`。
4. 检查图表或使用 MCP 工具。
5. 确定所有权边界。
6. 进行小的、源代码支持的编辑。
7. 在结构更改时更新链接、元数据和日志条目。
8. 在应用代码更改时运行类型检查/构建。
### 摄入工作流
在添加新材料时使用摄入。
1. 首先在 `raw/` 下保留未处理的源。
2. 在 `sources/` 下创建结构化的源注释。
3. 使用 `raw_source` 将结构化的源注释链接回原始注释。
4. 提取持久的声明、实体、概念、矛盾和开放问题。
5. 链接到概念、实体、项目和综合。
6. 在导航更改时更新大脑文件。
7. 追加 `log.md` 条目。
MCP `ingest_text` 工具通过在写入源注释之前写入原始注释来强制执行此操作。
### 校验工作流
在维护大脑质量时使用校验。
检查:
- 孤立页面。
- 缺失的反向链接。
- 损坏或未解析的维基链接。
- 过时的元数据。
- 重复的概念。
- 没有来源的声明。
- 未标记的矛盾。
- 与大脑文件冲突的智能代理指令。
- 旧的 `protocol` 术语应使用大脑术语。
### 关系工作流
关系应帮助未来的读者和智能代理导航。
在关系持久时使用链接:
- `supports`
- `contradicts`
- `depends_on`
- `implements`
- `source_for`
- `handoff_to`
- `related`
避免密集的装饰性链接。每个重要链接都应在一句话内解释。
## MCP 服务器
大脑数据库包含一个本地的标准输入输出 MCP 服务器:
```bash
npm run mcp:brain-nodes -- --vault "/path/to/your/brain"
```
MCP 服务器可以:
- 列出笔记
- 读取笔记
- 写入笔记
- 修补笔记
- 删除笔记(需确认)
- 移动笔记
- 搜索笔记
- 构建图表
- 检查笔记
- 校验大脑
- 建议关系
- 添加关系
- 追加到 `log.md`
- 摄入粘贴的文本
写入操作通过连接大脑模块的两个端口进行规范的参与者戳记:
- **文档类型推断** — 当笔记中没有明确的 `type` 元数据时,根据其路径推断类型(`sources/` → `source`,`*-brain.md` → `brain`,`AGENT_START.md` → `agent-start` 等)。
- **更改检测** — 重写笔记时,如果内容(正文 + 非易失性元数据)未更改,则跳过并返回 `skipped: true`,因此重复/幂等摄入不会搅拌时间戳或历史记录。
服务器仅读取和写入配置的 `--vault` 路径以下的路径。它拒绝使用 `..` 进行路径遍历。MCP 服务器是本地的和基于文件的;数据库架构图表通过 Web API (`/api/brain/schema-graph`) 公开,而不是标准输入输出 MCP。
## Claude 代码 MCP 连接
Claude 代码和其他 MCP 客户端不会自动运行服务器,只是因为存储库中包含一个。这是安全功能。您必须在 MCP 客户端配置中明确注册服务器。
使用绝对路径。路径中带有空格时,可以作为 JSON 数组参数传递:
```json
{
"mcpServers": {
"big-brain-db": {
"command": "node",
"args": [
"/absolute/path/to/big-brain-db/mcp/server.mjs",
"--vault",
"/absolute/path/to/your/brain",
"--actor",
"agent:claude-code",
"--actor-name",
"Claude Code"
]
}
}
}
```
用于只读检查:
```json
{
"mcpServers": {
"big-brain-db-readonly": {
"command": "node",
"args": [
"/absolute/path/to/big-brain-db/mcp/server.mjs",
"--vault",
"/absolute/path/to/your/brain",
"--actor",
"agent:claude-code",
"--actor-name",
"Claude Code",
"--readonly"
]
}
}
}
```
## 智能代理启动提示
将此提示复制到新的智能代理会话中,以便智能代理继续大脑。
```text
您正在大腦数据库中工作,这是一个优先考虑智能代理的Markdown大脑数据库。
您的任务是继续选定的大脑作为持久的知识基础设施,而不是作为可丢弃的聊天上下文。请保留结构、链接、来源、决策、矛盾、开放问题和交接笔记,以便未来的人类和智能代理可以在不重新发现相同上下文的情况下继续。
在执行任何工作之前:
1. 确认大腦数据库 Web 应用正在本地运行,通常位于 http://localhost:3000。
2. 确认您负责的大脑文件夹。
3. 完整阅读大脑文件。通常名为 <brain-name>-brain.md。
4. 完整阅读 AGENT_START.md。
5. 阅读 log.md 以了解最近的工作、决策、校验发现和未解决的任务。
6. 如果 MCP 可用,请调用 get_server_info、list_notes 和 lint_brain,然后再进行编辑。
7. 确定任务是查询、摄入、校验、维护、重构、协作还是发布工作。
8. 确定所有权边界:此大脑拥有的是什么,属于另一个大脑的是什么,应该仅作为源的是什么。
操作规则:
- 优先使用持久的 Markdown 页面而不是隐藏的聊天内存。
- 使用维基链接表示语义关系。
- 保持重要节点可从大脑文件或有意义的中心页面访问。
- 保留原始来源和源支持的声明。
- 将不确定性标记为开放问题。
- 记录矛盾而不是抹平它们。
- 避免装饰性链接垃圾。
- 不要编造事实。
- 未经明确要求不得删除或重写用户内容。
- 不得暴露机密、环境变量、私有角色密钥、令牌、凭证或私有数据。
- 保持文件名稳定且链接友好。
- 不要自动创建文件夹 README 文件。
回答问题时:
1. 先搜索大脑。
2. 阅读相关来源和链接的页面。
3. 用引用的页面或文件回答。
4. 如果答案创建了持久的综合,请将其保存为页面,并从大脑文件、中心页面或 log.md 链接到它。
摄入时:
1. 可能的话,一次阅读一个来源。
2. 首先在 raw/ 下保留未处理的来源。
3. 创建结构化的源注释,并使用 raw_source 链接回原始注释。
4. 提取持久的声明、实体、概念、矛盾、决策和开放问题。
5. 仅当它们增加持久价值时,才创建或更新概念/实体/项目/综合注释。
6. 语义链接新材料。
7. 如果导航地图或所有权更改,请更新大脑文件。
8. 追加简洁的 log.md 条目,包含摘要、触摸的文件、决策、来源和开放问题。
校验时:
1. 检查未解决的链接、孤立页面、重复标题、弱源覆盖、过时的元数据、矛盾、缺失的反向链接和旧协议术语。
2. 将发现结果与修复分开。
3. 在授权的情况下修复明确的本地问题。
4. 在 log.md 中记录未解决的发现结果。
编辑应用代码时:
1. 在更改代码之前阅读相关代码。
2. 遵循现有的模式。
3. 保持编辑范围。
4. 避免不相关的重构。
5. 在实质性更改后运行 npm run typecheck。
6. 在发布或 GitHub 发布前运行 npm run build。
协作时:
1. 将人类和智能代理视为参与者。
2. 使用规范的参与者 ID,例如 user:local-owner 或 agent:claude-code。
3. 当参与者 ID 已经编码身份时,不要重复参与者名称/类型元数据。
4. 使用邀请代码加入。
5. 让被邀请的人在加入时选择自己的协作者名称。
使用 MCP 时:
1. 优先使用 read_note、search_notes、get_graph、inspect_note 和 lint_brain,然后再写入。
2. 对于精确编辑,优先使用 patch_note。
3. 仅在创建新笔记或故意覆盖时使用 write_note。
4. 使用 append_log 进行持久维护历史记录。
5. 使用 ingest_text 处理粘贴的源材料;它始终先写入 raw/,然后创建链接的源注释。
6. 永远不要写入配置的保险库之外。
在每次有意义的工作会话结束时:
1. 如果完成了持久工作,请更新 log.md。
2. 如果导航、所有权或工作流更改,请更新大脑文件。
3. 报告更改了什么、验证了什么以及什么仍然存在风险或未解决。
```
## 开发命令
```bash
npm run dev
npm run typecheck
npm run build
npm run mcp:brain-nodes -- --vault "/path/to/your/brain"
```
## GitHub 发布检查清单
发布前:
- 确认 `.env.local` 被忽略。
- 确认 `.env*.local` 被忽略。
- 确认没有实际的 Supabase 密钥出现在跟踪的文件中。
- 确认 `demo-wikis/` 被忽略或从提交中删除。
- 运行 `npm run typecheck`。
- 运行 `npm run build`。
- 检查 `README.md`、`AGENT_START.md` 和 `big-brain-db.md` 是否有过时的协议术语。
- 除非故意公开,否则不要发布本地用户大脑。
## 许可证
在 [MIT 许可证](LICENSE) 下发布 - 您可以自由使用、修改和重新分发它,包括商业用途,但前提是保留版权声明和许可证文本。软件按“原样”提供,不提供任何保证。
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器