news 2026/9/10 21:51:33

supermemory 开源贡献指南:Monorepo 开发环境搭建、代码规范与提交流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
supermemory 开源贡献指南:Monorepo 开发环境搭建、代码规范与提交流程

supermemory 开源贡献指南:Monorepo 开发环境搭建、代码规范与提交流程

【免费下载链接】supermemoryMemory and context engine + app that is extremely fast, scalable, and can be run fully locally. The Memory API for the AI era.项目地址: https://gitcode.com/GitHub_Trending/su/supermemory

supermemory 是一个面向 AI 时代的记忆层(Memory Layer)与上下文引擎,采用 Bun + Turbo 构建的多包 Monorepo 架构。本篇指南以仓库根目录的 CONTRIBUTING.md 为骨架,结合 package.json、turbo.json、biome.json 及各子应用的真实配置,完整讲解从零搭建本地开发环境、理解仓库结构、遵循代码规范到成功提交 Pull Request 的全过程。读完本文,你将掌握 supermemory 的本地开发工作流、Monorepo 各模块的职责划分,以及一套可立即上手的贡献标准动作。

开发环境准备:前置条件与初始化

前置依赖

在开始之前,请确保本机已安装以下工具:

  • Bun(>= 1.2.17):项目首选包管理器。根目录 package.json 通过packageManager字段锁定为bun@1.3.6,同时engines声明要求Node.js >= 20,用于运行 Next.js 等工具链;
  • Git:版本控制,用于 Fork、Clone 与分支管理。

克隆与安装依赖

git clone https://gitcode.com/GitHub_Trending/su/supermemory.git cd supermemory bun install

bun install会依据根目录 package.json 中声明的workspacesapps/*packages/*,其中apps/raycast-extensiontools/test/chatapp被排除)一次性安装所有工作区依赖,并生成根目录的bun.lock锁定文件。

配置环境变量

# 复制示例环境文件 cp apps/web/.env.example apps/web/.env.local # 按需编辑:填入 API Key 与数据库 URL

以 Web 应用为例,apps/web/.env.example 定义了三个关键变量:

变量名示例值说明
NEXT_PUBLIC_BACKEND_URLhttps://api.supermemory.ai前端请求的后端 API 地址,dev:local模式下默认指向公共 API
NEXT_PUBLIC_POSTHOG_KEYPostHog 产品分析密钥,本地开发可留空
NEXT_PUBLIC_AGENTID_AUTH_ENABLED是否启用 Agent ID 认证的开关

需要注意的是,浏览器扩展等子应用也有独立的 apps/browser-extension/.env.example,接入不同子应用时请到对应目录下复制环境文件。

启动本地开发服务器:dev:local 与 dev 的区别

推荐方式:bun run dev:local

bun run dev:local

这是官方推荐给 OSS 贡献者的启动方式。根目录 package.json 中该命令映射为turbo run dev:app,由 turbo.json 定义的dev:app任务驱动各子应用并行启动,每个应用监听独立的 localhost 端口:

应用端口启动脚本依据
Web 应用(Next.js)3000apps/web/package.json 中next dev --port ${PORT:-3000}
MCP Server(Wrangler)8788apps/mcp/package.json 中wrangler dev --port ${PORT:-8788}
文档站(Mintlify)3003apps/docs/package.json 中bunx mintlify@latest dev --no-open --port 3003
记忆图谱 Playground3004apps/memory-graph-playground/package.json 中next dev --port ${PORT:-3004}

dev:local模式下,Web 应用通过.env.example中的NEXT_PUBLIC_BACKEND_URL指向公共 APIhttps://api.supermemory.ai。由于是纯 localhost 环境,登录时请使用magic-link / 邮件 OTP方式——Google/GitHub OAuth 的回调无法往返回到 localhost,这一点在 CONTRIBUTING.md 中有明确说明。

内部团队方式:bun run dev

bun run dev(不带:local)会经由 portless 路由,为每个应用分配稳定的*.dev.supermemory.aiHTTPS 域名,实现共享 Cookie 与可用的 OAuth 代理。首次使用需要执行bun run setup:dev(绑定 443 端口并信任本地 CA)。这是内部团队的工作流,OSS 贡献者无需配置。

Monorepo 项目结构

supermemory 是一个使用 Turbo 组织的 Monorepo。CONTRIBUTING.md 给出了整体骨架,结合仓库当前实际布局,完整结构如下:

supermemory/ ├── apps/ # 可独立部署的应用 │ ├── web/ # Next.js Web 主应用(React 19 + Tailwind) │ ├── browser-extension/ # 浏览器扩展(WXT 框架) │ ├── docs/ # 文档站(Mintlify) │ ├── mcp/ # MCP Server(Cloudflare Worker + Hono) │ ├── memory-graph-playground/ # 记忆图谱交互式 Playground │ ├── raycast-extension/ # Raycast 扩展 │ └── sdk-playground/ # SDK 演示应用 ├── packages/ # 共享包 │ ├── ui/ # 共享 UI 组件(Radix + shadcn 风格) │ ├── lib/ # 共享工具与业务逻辑 │ ├── hooks/ # 共享 React Hooks │ ├── validation/ # Zod Schema 与校验 │ ├── ai-sdk/ # AI SDK 记忆操作封装 │ ├── tools/ # 各框架(Mastra/OpenAI/Vercel/VoltAgent)工具集成 │ ├── memory-graph/ # 记忆图谱可视化库 │ ├── agent-framework-python/ # Python Agent 框架集成 │ ├── openai-sdk-python/ # Python OpenAI SDK 集成 │ ├── cartesia-sdk-python/ # Cartesia SDK 集成 │ └── pipecat-sdk-python/ # Pipecat SDK 集成 ├── turbo.json # Turbo 任务编排 ├── biome.json # Biome 格式化与 Lint 配置 └── package.json # 根包配置(workspaces / scripts)

说明:原文档中列举的openai-sdk-tseslint-configtypescript-config三个包在当前仓库中已被实际的 Python SDK 包族与memory-graph等取代,以上结构以仓库现状为准。

常用脚本命令

根目录 package.json 聚合了全部工作流命令,配合 turbo.json 的任务依赖(buildcheck-types均声明dependsOn: ["^build"]/["^check-types"],保证按依赖拓扑顺序执行):

命令实际执行用途
bun run dev:localturbo run dev:app在 localhost 端口启动全部开发服务器(OSS 贡献者推荐)
bun run devturbo run dev通过 portless 启动,内部团队使用
bun run buildturbo run build构建所有应用与包
bun run format-lintbunx biome check --write使用 Biome 格式化并修复 Lint 问题
bun run check-typesturbo run check-types全仓类型检查

turbo.jsondevdev:app任务均设置了"cache": false"persistent": true(turbo.json),确保长期运行的开发进程不被 Turbo 缓存干扰;build任务的输出目录限定为.next/**dist/**(turbo.json),构建产物可被 Turbo 增量缓存。

技术栈一览

根据 CONTRIBUTING.md 与各应用的真实依赖清单,项目技术栈如下:

  • 前端:Next.js(当前仓库锁定^16.0.11)、React 19、TypeScript 5.8,参见 apps/web/package.json;
  • 样式:Tailwind CSS 4、Radix UI 组件、shadcn 风格封装(packages/ui/components);
  • 状态管理:Zustand 管理全局状态(zustand@^5.0.7)、TanStack Query 管理服务端状态(@tanstack/react-query@^5.90.14);
  • 构建工具:Turbo 2.5 驱动 Monorepo 任务编排;
  • 包管理器:Bun(根packageManager: bun@1.3.6);
  • 部署:Cloudflare(Web 通过opennextjs-cloudflare构建部署,MCP 通过wrangler deploy,见 apps/mcp/package.json)。

如何贡献:从 Issue 到分支

贡献类型

项目欢迎多种形式的贡献:🐛 Bug 修复、✨ 新功能、🎨 UI/UX 优化、⚡ 性能优化。寻找任务时,可以优先关注仓库 Issues 中标记为good first issue(适合新手)与help wanted的问题;新功能建议先开 Issue 讨论再动手,避免方向偏差。

创建分支

git checkout -b feature/your-feature-name # 或 git checkout -b fix/your-bug-fix

分支命名采用feature/fix/前缀,保持与提交内容语义一致。

本地验证

提交前依次执行质量检查(对应 CONTRIBUTING.md 的提交流程):

bun run format-lint # Biome 格式化与 Lint bun run check-types # 全仓类型检查 bun run build # 确认可构建

代码规范:Biome 与 TypeScript 实践

Biome 配置要点

根目录 biome.json 是格式化与 Lint 的唯一事实来源,几个关键配置:

  • 格式化indentStyle: "tab"(缩进使用 Tab),JS 采用双引号quoteStyle: "double"、省略分号semicolons: "asNeeded"(biome.json);
  • Lint:启用recommended规则集,并额外开启useExhaustiveDependenciesnoUnusedVariablesnoUnusedImports等正确性检查;style域中noInferrableTypesnoParameterAssignnoUselessElseuseAsConstAssertion等设为error(biome.json);
  • VCS 集成:开启vcs.enabled并使用.gitignore,已忽略的目录不会参与检查。

执行bun run format-lint(即bunx biome check --write)可自动修复大部分格式问题。

编码总体原则

  • 新代码一律使用TypeScript
  • 遵循既有代码风格与模式,编写自文档化代码(清晰的变量命名);
  • 复杂函数补充 JSDoc 注释;
  • 保持函数小而聚焦,单一职责。

组件与命名规范

  • 组件:优先函数组件 + Hooks,组合优于继承,可复用逻辑抽取为自定义 Hook,props 使用完整 TypeScript 类型;
  • 文件命名:文件名kebab-case(如search-request.ts),组件文件PascalCase(如DashboardView.tsx),工具函数camelCase

Import 组织顺序

仓库约定按四层分组导入,见 CONTRIBUTING.md:

// 1. React 与 Next.js 导入 import React from 'react'; import { NextPage } from 'next'; // 2. 第三方库 import { clsx } from 'clsx'; import { motion } from 'motion'; // 3. 内部包 import { Button } from '@repo/ui'; import { useAuth } from '@repo/lib'; // 4. 相对路径导入 import { Header } from './header'; import { Footer } from './footer';

Pull Request 流程

提交前检查清单

  1. 确保分支与main保持同步;
  2. 运行全部质量检查(format-lint / check-types / build);
  3. 充分测试改动;
  4. 如涉及文档,同步更新对应文档。

PR 编写规范

  • 标题:清晰描述性标题,遵循 Conventional Commits 风格。示例:
    • feat: add semantic search to memory graph
    • fix: resolve authentication redirect loop
    • update stuff
  • 描述:说明改动内容与原因;UI 改动附截图;标注破坏性变更;关联 Issue 编号;
  • 体量:保持 PR 聚焦,优先多个小 PR 而非一个大 PR,每个 PR 只解决单一问题。

Review 流程

所有 PR 至少需要一次评审。收到反馈后及时、专业地响应,保持开放协作态度。仓库根目录的 README.md 与 README.zh-CN.md 会持续收录贡献者名单与 Release Notes,每一份贡献都会被记录。

报告 Issue 的规范模板

Bug 报告

提交 Bug 时请包含:环境(操作系统、Node.js 版本、浏览器)、复现步骤预期行为实际行为截图(如适用)、错误信息或控制台日志。清晰的复现路径是维护者定位问题的最快方式。

功能请求

功能建议请提供:问题陈述(解决什么问题)、方案设想(期望如何工作)、备选方案(考虑过的其他做法)、附加上下文。这有助于维护者评估方案的合理性与实现成本。

架构设计约定

CONTRIBUTING.md 对模块实现提出了统一约定,这些约定与仓库源码一一对应:

状态管理

  • 全局状态使用Zustand:如 apps/web/stores 下的chat.tshighlights.tsindexeddb-storage.ts等 store 即采用 Zustand 模式;
  • 服务端状态使用TanStack Query:仓库大量use-*.tsHooks(见 apps/web/hooks)均基于@tanstack/react-query封装;
  • 状态尽量本地化,为状态提供完整 TypeScript 类型。

API 集成

  • 复用既有 API 客户端模式(参考 packages/lib/api.ts);
  • 妥善处理 loading 与 error 状态;
  • 实现合理的 Error Boundary;
  • 在合适的场景使用乐观更新(optimistic updates)提升交互体验。

性能

  • 对昂贵组件使用React.memo()
  • 实现恰当的加载状态与骨架屏;
  • 优化图片与静态资源;
  • 按需使用代码分割(code splitting)。

社区准则与许可

参与贡献需遵守社区行为准则:保持尊重与包容、欢迎并帮助新人、聚焦建设性反馈、全程保持专业。有问题可以在 Discord、GitHub Discussions 讨论,Bug 报告走 Issues。

根据 CONTRIBUTING.md,贡献者同意其贡献将与项目采用相同的开源许可(见仓库根目录 LICENSE),所有贡献者都会在 README 与 Release Notes 中获得致谢。无论贡献大小,每一份参与都在共同推进 AI 记忆层基础设施的演进。

【免费下载链接】supermemoryMemory and context engine + app that is extremely fast, scalable, and can be run fully locally. The Memory API for the AI era.项目地址: https://gitcode.com/GitHub_Trending/su/supermemory

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 21:49:47

怀化快手AI短视频:下沉市场的内容策略

来源:唐sirAI(www.tangsir.cc) | 电话:18874530691━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━怀化的商家朋友们,如果您正在寻找在快手平台上进行AI短视频营销的方法&#xff…

作者头像 李华
网站建设 2026/9/10 21:44:13

OFDM系统核心原理与Matlab实现详解

1. OFDM系统概述与核心原理 OFDM(正交频分复用)作为现代无线通信系统的核心技术,其核心思想是将高速数据流分配到多个相互正交的子载波上并行传输。这种设计有效对抗多径效应带来的符号间干扰(ISI),在4G/5G…

作者头像 李华
网站建设 2026/9/10 21:40:47

怀化短视频制作价格对比:AI vs 传统拍摄

来源:唐sirAI(www.tangsir.cc) | 电话:18874530691━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━在怀化,越来越多的商家开始关注怀化短视频制作价格。而价格,无疑是大…

作者头像 李华