记忆平台

Weave是一个ChatGPT原生的记忆平台,允许用户捕捉、组织和与朋友共享记忆。

  • by AaronBakerDev
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 AaronBakerDev/weave

使用说明

Weave:ChatGPT原生内存平台

ChatGPT内的可探索内存画布。与朋友一起捕捉、整理和编织回忆。

✨ 从开始 doc.md 获取分步实用构建指南。

快速导航

现状(2025-10-24)

✅ 平台支柱就位

  • ChatGPT UI(Next.js 14)实现了营销主页、内联Weaver卡、内存详细信息编辑器、画布视图、搜索和公共/用户路由。
  • /api/mcp bridge使用中的清单将ChatGPT工具调用转换为FastAPI请求 chatgpt-mcp-manifest.json.
  • FastAPI后端提供全有线路由器,用于存储、搜索、编织链接、权限、邀请、工件、公共蛞蝓、关注、图形、导出,以及健康/速率限制/JWT验证。
  • 索引工作者正在收听 memory_event,重建TSV和pgvector嵌入,并在以下情况下优雅降级 OPENAI_API_KEY 缺席。

⏳ 杰出工作(跟踪 ai-docs/sprint-2025-10-24.md)

  • 将本地Node.js升级到≥18.17以满足Next.js运行时要求,并重新验证Tailwind/PostCSS升级。
  • 通过重新引入边缘增强项和对非文本层进行排队索引来完成混合搜索奇偶校验。
  • 为无Docker的Postgres设置和更新的UI/后端覆盖率刷新README/doc引导。
  • Harden自动化测试(针对实时Postgres、Canvas交互等的集成测试)。

立即关注

  1. Node.js升级:使用 nvm, asdf,或Volta安装节点≥18.17,然后重新运行 npm run build / npm run dev 确认Tailwind/PostCSS修复。
  2. 混合搜索波兰语:在中实施边缘增强组件 services/api/app/routers/search.py 并确保层附加排队索引。
  3. 文档刷新:更新 doc.md/非Docker Postgres流程的README入门指南,并捕捉当前的功能界面。
  4. 测试覆盖率:运行 services/api/tests/test_api.py 针对本地Postgres(使用pgvector)并记录结果;根据需要扩展UI烟雾测试。

里程碑

里程碑 目标 接受
A-捕获和召回 创建/锁定/搜索/详细视图。已部署。 P0端点工作,搜索<2s p95,端到端工作
B-编织和帆布 链接记忆,画布上有更丰富的卡片,缩放进入 创建编织,看线,平滑导航
C-分享和邀请 基于角色的访问、邀请流、公共基础 邀请用户、接受、附加层、slug解析
D-公共镜像 关注、公共配置文件、可选事件 公共页面<500ms p95缓存

目录结构

weave/
├── doc.md                          ← BUILD GUIDE (start here!)
├── schema.sql                      # PostgreSQL schema + RLS
├── README.md                       # (this file)
│
├── services/api/                   # Python FastAPI backend
│   ├── app/
│   │   ├── main.py
│   │   ├── models.py               # SQLAlchemy ORM + Pydantic models
│   │   ├── deps.py                 # JWT auth + RLS-aware sessions
│   │   ├── routers/
│   │   │   ├── memories.py         # CRUD, layers, permissions, suggestions
│   │   │   ├── search.py           # Hybrid search (edge boost pending)
│   │   │   ├── weave.py            # Memory connections
│   │   │   ├── invites.py          # Invite create/accept
│   │   │   ├── follows.py          # Follow graph + feeds
│   │   │   ├── public.py           # Public slugs
│   │   │   ├── graph.py            # Canvas graph feed
│   │   │   └── artifacts.py        # Upload/download proxies
│   │   ├── workers/
│   │   │   └── indexing.py         # Embedding + TSV refresh worker
│   │   └── db/
│   │       ├── migrations/         # SQL files (run in order)
│   │       └── rls.sql
│   ├── requirements.txt
│   ├── .env.example
│   └── docker-compose.yml
│
├── apps/
│   ├── chatgpt-ui/                 # Primary Next.js ChatGPT App
│   │   ├── app/
│   │   │   ├── api/
│   │   │   │   ├── mcp/            # JSON-RPC bridge to FastAPI
│   │   │   │   └── proxy/          # REST proxy to FastAPI
│   │   │   ├── canvas/             # Canvas experience
│   │   │   ├── memory/             # Memory detail route
│   │   │   ├── search/             # Search UI
│   │   │   ├── p/, u/, a/          # Public slugs, author pages, artifact redirect
│   │   │   └── globals.css         # Tailwind entry (v4)
│   │   └── package.json
│   │
│   └── next-app/                   # Earlier stub preserved for reference
│
├── specs/
│   ├── product-spec.md             # Vision, UX, features
│   ├── technical-spec.md           # Stack, architecture
│   └── api-docs.md                 # API reference (TODO)
│
└── docs/
    ├── DEPLOY-RAILWAY.md           # Railway deployment guide
    └── ...

技术栈

组件 选项 注释
前端 Next.js 14(Vercel入门版) ChatGPT应用软件开发工具包
UI桥 Node.js MCP垫片 /api/mcp 将代理路由到Python
后端 Python 3.11 FastAPI 铁路集装箱
数据库 PostgreSQL 14++pgvector 多租户的RLS策略
搜索 混合得分 0.55余弦+0.35 BM25+0.10边缘提升
嵌入 OpenAI text-embedding-3-large 1536个维度
存储 Backblaze B2 S3兼容,10GB免费,通过签名URL播放视频/图像
认证 JWT JWKS基于URL的验证
部署 Vercel+Railway 完全管理,没有DevOps

地方发展

一个命令开发

如果你安装了Docker、Python 3.11+和Node≥18.17,你可以从repo根目录用一个命令启动所有东西(Postgres+migrations+FastAPI+Next.js):

make dev

这将启动:

  • 端口5432上带有pgvector的Postgres(容器名称: weave-pg)
  • FastAPI已打开http://localhost:8000
  • Next.js用户界面打开http://localhost:3000

使用Ctrl+C停止应用程序进程。数据库容器保持运行以加快重启速度。要稍后停止,请执行以下操作:

make down && docker stop weave-pg

1.启动PostgreSQL+后端

cd services/api

# Run migrations in order (PostgreSQL must be running and pgvector enabled)
psql "$DATABASE_URL" -f app/db/migrations/0001_init.sql
psql "$DATABASE_URL" -f app/db/migrations/0002_idempotency.sql
psql "$DATABASE_URL" -f app/db/migrations/0003_core_locked_at.sql
psql "$DATABASE_URL" -f app/db/migrations/0004_memory_event.sql
psql "$DATABASE_URL" -f app/db/rls.sql

# Install and run FastAPI
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m uvicorn app.main:app --reload --port 8000

没有Docker? 使用本地Postgres 14+实例 vector 已安装扩展。更新 DATABASE_URL (例如 postgresql://localhost:5432/weave)在运行上述迁移之前。

2.启动索引工作器(可选)

cd services/api
source .venv/bin/activate
python app/workers/indexing.py

3.启动ChatGPT用户界面

cd apps/chatgpt-ui  # or next-app
npm install
PYTHON_API_BASE=http://localhost:8000 npm run dev

4.在本地使用该应用程序

  • 在上创建内存 http://localhost:3000 用Weaver牌。
  • 打开画布 http://localhost:3000/canvas 然后单击节点以输入详细信息。
  • 公共页面位于 /p/{slug} 以及作者页面 /u/{handle}.

关键实施细节(来自doc.md)

端点模式:

  • 路线: /v1/* 前缀
  • 请求/响应:包括 query + results: [{memory, score, reasons}]
  • Idempotency:通过create/lock上的幂等密钥头

RLS和认证:

  • 每个请求集 SET LOCAL app.user_id = '<uuid>' (参见 deps.py)
  • 政策强制执行:所有者看到所有,贡献者看到+写,观众只看到,公众=任何人

搜索评分:

hybrid_score = 0.55 * cosine_similarity + 0.35 * ts_rank + 0.10 * edge_boost
  • cosine_similarity:叙事嵌入的向量距离
  • ts_rank:PostgreSQL全文搜索(TSV列)
  • edge_boost:+0.1(如果内存连接到查询上下文)

索引触发器:

  • 开 core 锁定和文本/反射层附加
  • 构建文档: title + core.narrative + [text_layers] + [captions]
  • 更新 tsv 和 embedding 列

部署

请参阅部署指南:

  • DEPLOY.md -快速部署指南(Render+Vercel)
  • RENDER-SETUP.md -详细的渲染后端设置
  • VERCEL-SETUP.md -Vercel前端设置
  • BACKBLAZE-B2-SETUP.md -Backblaze B2存储(视频/图像)
  • DOMAIN-SETUP.md -自定义域配置

关键环境变量:

  • DATABASE_URL (渲染PostgreSQL)
  • JWT_JWKS_URL (职员认证)
  • OPENAI_API_KEY (嵌入)
  • AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY (回火B2)
  • S3_ENDPOINT_URL (Backblaze B2端点)
  • ALLOWED_ORIGINS (CORS)

后续步骤

→ READ doc.md 对于构建指南

然后:

  1. 检查中的现有代码 services/api/
  2. 从任务#1:JWT验证开始 deps.py
  3. 按顺序执行任务(它们彼此取消阻止)
  4. 每次部署前进行本地测试

参考文献

  • PostgreSQL RLS:https://www.postgresql.org/docs/current/ddl-rowsecurity.html
  • Vercel ChatGPT应用程序:https://vercel.com/docs/ai
  • 铁路文件:https://docs.railway.app
  • OpenAI嵌入:https://platform.openai.com/docs/models/text-embedding
  • FastAPI:https://fastapi.tiangolo.com