Shroom 是一款以私人日记为原点的开源 AI 记忆、理解与轻社交产品。它不只保存“今天发生了什么”,也帮助你在经过足够时间与真实经历后,重新理解过去、保留有效经验,并看见自己正在发生的变化。
日记保存真实,AI 帮助回看;最终的解释、选择与公开权始终属于用户。
不遗忘你,也不替你生活;在真正需要时,带回恰当的记忆与帮助。
Shroom 的远景是成为每个人长期陪伴的 AI 伙伴:在尊重隐私和用户主权的前提下,逐渐理解一个人的经历、选择、关系、困惑与长期目标,在真正需要的时刻提供帮助、提醒和新的观察。
当前版本以主动写日记为记忆入口。未来,Shroom 将从“需要刻意记录”走向“低打扰、低摩擦地留下可用线索”,再成长为能在合适时机主动帮助用户的长期伙伴。“无感”不意味着不知情的监听:所有自动记录必须可见、可选择、可暂停、可删除,重要结论和行动仍由用户确认。
- 跨端日记:按天与时段记录文字、图片和语音,支持日历、归档、搜索与分页回看。
- 用户数据源:用户可在「数据与连接」中配对 Codex,把最小任务事实作为独立的日记线索,并单独控制时间线可见性与 AI 读取权限。
- 高精度语音转写:原始录音先私密保存,转写结果是可编辑草稿,不会直接覆盖正文。
- 日记记忆:基于 PostgreSQL + pgvector 的语义检索,用相关日记作为证据回答长期问题,并明确引用来源。
- 未解之问:把一次讨论回答不了的困惑保存下来,经用户确认持续关联日记与新线索,再形成带支持、反例和未知项的阶段理解。
- 健康长期观察:在未解之问中连接心理感受、身体变化、睡眠、行为、环境、测量、检查与日记照片,比较个人基线,整理可修订的原因假设并导出就医摘要;所有输出都是线索,不是诊断。
- 五个观察席:每位新用户拥有默认观察视角,也可以新增、编辑和切换自己的观察者。
- 菇卡:从具体经历中保留下次仍能使用的理解、提醒或观察视角;它不是待办,也不是口号。
- 复利系统:从公共复利地图中找到适合自己的真实机制,映射为最多 3 项私有计划,用 4 周验证和本金/回报双指标判断是否值得持续投入。
- 人生 OS:保存少量、跨情境的判断原则;AI 只能提出候选,用户确认后才签发新版本,复利系统只能引用而不能自动改写。
- 人脉与待办:从日记中提取关系事件与承诺;待办支持四视图、项目、独立安排/截止日期、重复实例、完成结果与可撤销行动记录。
- 可控 AI:每篇日记可单独关闭 AI 使用;分析与回看记录模型、token、价格快照和人民币费用估算。
- 轻社交:用户可以公开、共鸣、收藏、引用和练习菇卡,私人日记本身默认不公开。
- 数据可携带:支持导出自己的日记和衍生数据,日记正文始终是权威源。
Shroom 不是医疗诊断工具,也不替用户下最终结论。AI 生成的情绪理解、关系判断和人生 OS 建议都应被视为可检查的候选解释。产品不会偷偷采集浏览器历史,也不会因为一次分析就自动改写用户的人生原则或公开私人内容。
更完整的产品定义见 docs/PRODUCT.md,用户数据源见 docs/DATA_SOURCES.md,待办与项目见 docs/TODO_PROJECTS.md,复利系统见 docs/COMPOUND_SYSTEM.md,长期问题机制见 docs/INQUIRIES.md,菇卡与人生 OS 的边界见 docs/LIFE_OS.md,记忆检索架构见 server/REFLECTION_ARCHITECTURE.md。
uni-app / Vue 2
├─ H5 浏览器
├─ Android / iOS(app-plus)
└─ 微信等小程序
│ HTTPS / Bearer + rotating refresh token
▼
Node.js / Express API
├─ PostgreSQL + pgvector(业务数据、记忆索引)
├─ OpenAI-compatible LLM / Embedding API
├─ 火山引擎或兼容 ASR(可选)
└─ 腾讯云 COS 私有桶(可选,图片去元数据与自适应压缩)
前端与服务端都在同一仓库中:
src/:uni-app 客户端server/src/:独立 Shroom APIserver/sql/:按编号执行的 PostgreSQL 迁移server/test/:Node.js 单元、契约与集成测试docs/:产品、数据与 API 文档
- Node.js 16.20(当前 uni-app 旧版客户端构建链)
- Node.js 20+(
server/服务端与测试) - PostgreSQL 14+,并安装 pgvector 扩展
- npm
npm install
npm --prefix server install建议使用 nvm 分别运行两套工具链:根目录客户端遵循 .nvmrc,启动或测试 server/ 时切换到 Node.js 20+。旧版 uni-app 的 App/小程序构建在过新的 Node.js 上可能因已移除的 Node API 失败。
创建一个独立的 Shroom 数据库和低权限数据库用户,然后按文件名顺序执行 server/sql/*.sql。例如:
for migration in server/sql/*.sql; do
psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f "$migration"
donecp server/.env.example server/.env至少设置 DATABASE_URL 和高强度随机 TOKEN_SECRET。AI、Embedding、ASR 与 COS 都是可选能力;未配置时,基础日记与菇卡功能仍可运行。所有供应商密钥只允许出现在服务端环境变量中,不能写入客户端或提交到 Git。
在两个终端分别运行:
set -a
source server/.env
set +a
npm --prefix server startnpm run dev:h5如果 API 不是生产地址,请通过构建环境变量设置 VUE_APP_SHROOM_ORIGIN,例如 http://localhost:3102。
其他客户端构建:
npm run build:h5
npm run build:app-plus
npm run build:mp-weixin
npm run build:wechat-projectbuild:wechat-project 会生成并校验可直接导入微信开发者工具的工程,目录为 dist/build/mp-weixin。公众平台域名、隐私能力和真机验收清单见 微信小程序工程说明。
npm --prefix server test
npm run build:h5带数据库的集成与在线 smoke test 需要显式提供测试环境变量,测试数据不要指向生产数据库。详细配置与部署说明见 server/README.md。
- 新用户数据只写入独立 Shroom 数据库,不兼容或读取旧商城、课程、支付、冲浪等业务数据源。
- API 只从登录会话或受限 API Token 确认用户,客户端不能通过传入
userId切换数据归属。 - 密码以加盐散列保存;刷新令牌轮换并仅保存摘要。
- 私密图片通过短时签名 URL 访问;上传时移除 EXIF/GPS,并避免“压缩后反而变大”。
- AI 只能读取当前账户中明确允许 AI 使用的内容。
- 请勿提交
.env、数据库导出、录音、图片、证书或任何真实用户资料。
如果发现安全问题,请不要公开提交包含利用细节或用户数据的 Issue,先通过仓库所有者的 GitHub 联系方式私下报告。
欢迎提交 Issue、产品讨论和 Pull Request。较大的改动建议先说明它解决的真实使用问题、隐私边界、跨 H5/App/小程序的交互差异,以及可验证的验收方式。