Varven

比上下文窗口活得更久的编码项目。

第十次解释你为什么弃用 Redis,那不叫工程,那是消耗——而且每开一个新会话就叠加一次。

三个各自结束的助手会话,它们产生的决定在下方沉淀成永久的记忆层,下一个会话可以读到 会话 · 周一 > single writer, so we 选 SQLite 而不是 Postgres 上下文到此为止 会话 · 周三 > rate limit is 100/min, 按 key 算,不按用户算 上下文到此为止 会话 · 周五 > why not Postgres here? 周一已定:只有一个 写入方 → SQLite。 调取 存入 记录 · 作用域:ATLAS 决定 · 只有一个写入方 → 选 SQLite 而非 Postgres 周一 · 可信 事实 · 限流 100/分钟,按 key 算 周三 · 可信 API 用 Postgres——已被取代,保留作历史
会话会结束,底下的记录不会——下一个会话就从读它开始。

问题,说得准确些

和助手的每一次对话都从零开始。于是每个工作会话的开头都是同一段背诵:技术栈、约束、你三月做的那个决定,以及你为什么这么定。省掉这段背诵,助手就会兴高采烈地建议你早就否掉的方案——把已经定下的问题重新翻出来,正是空白上下文最擅长的事。

多数人的应付办法,是把一份不断更新的文档粘进每个会话。那份文档就是记忆,只不过靠手工维护,会以那种没人察觉、直到出事才发现的方式慢慢过期。

Varven 会拿一个决定做什么

会话里出现值得留下的东西时——一个决定连同它的理由、一条踩坑才发现的约束、助手弄错时你做的一次纠正——它就会沉淀为笔记库里的一层:纯 Markdown,存在你的机器上,来源和日期都完整保留。

---
type: decision
scope: atlas
trust: trusted
created: 2026-03-14
---
SQLite over Postgres for the API. One writer by design,
and litestream covers replication. Revisit only if a
second writer ever actually exists.

六个月后,“为什么不用 Postgres?”会由记录来回答——带上日期、理由,以及在什么条件下这个决定该重新讨论。最后这一点,正是记忆和教条的区别。

纠正会留住

编码项目里最有价值的记忆是纠正:那个我们试过,出问题了,问题在这里。在 Varven 中纠正永不过期——它们因为被说出来过而成立——所以助手不会再反复推荐那套搞挂了 staging 的迁移方案。

一个项目还是十二个

每个项目是一个作用域。搜索可以只待在其中一个里,所以你业余项目的约定不会渗进工作相关的回答。处处适用的偏好——给 diff 而不是整个文件、要解释原因——放在每个项目都继承的全局作用域里。当新的东西取代旧的,旧的一层是被标记为已取代,而不是被删除:仍然可查,所以“这个我们是什么时候改的?”有答案。

实际用起来是什么样

你通过 MCP 把助手连上一次就够了。会话开始时它会拉一份简报:置顶的约束、长期偏好、最近的纠正。会话进行中,遇到牵涉过去的问题它会搜索;你问周二以来有什么变化时,它会读时间线。你照常干活,记录在底下一层层积起来。

这需要哪个方案

Local · $0Sync 增加云端副本

这个页面上的一切都能在免费方案上跑:记忆量不限、一台机器、桌面 AI 客户端。想在电脑关机时也读到记录,或者想从第二台机器上读,再加 Sync。

问题

它能配合 Cursor、Claude 这类编码助手吗?

能。Varven 讲的是 Model Context Protocol,所以同一份记忆可以被 Claude、Cursor、VS Code、ChatGPT 和 Gemini 读取。连接器的配置见文档

我同时做好几个项目,它们共用一份记忆吗?

它们共用一个笔记库,但在里面彼此分开——作用域就是干这个用的。全局偏好是刻意留的例外。

笔记必须我自己写吗?

不用。你干活时助手会写记忆,一个小的本地模型在你自己的硬件上做整理。因为结果就是纯 Markdown,你也可以打开任何一条笔记手工改——以你的改动为准。

申请抢先体验 全部使用场景