Memory 面板与配额

Memory 在后台默默存着很方便,但你得能看到它。这就是我为什么做了 /app/memories —— 一个纯白盒的管理面板,让你随时查、删、导出。

/app/memories 面板能做什么

登录后访问 https://hyper-ailab.com/app/memories,你会看到:

  • 用量进度条:顶部显示当前用了多少 MB / quota 上限,颜色条给你直观的"还剩多少"
  • 目录树:按 /memories 下的文件夹展开,可以逐级进入
  • 条目列表:每条 memory 显示路径、size、最后修改时间
  • 内容查看:点任何一条,弹出面板显示完整原文(markdown / 纯文本都支持)
  • 删除:单条删除(🗑 按钮)或整组删除(按文件夹)
  • 清空:底部有"清空所有 memory"按钮,带二次确认
  • 导出 JSON:右上角"导出全部"按钮,下载一个 .json 文件,内含所有条目

这是白盒的,没有折叠、没有"摘要视图"、没有任何我们看过你没看过的东西。你看到的就是 Claude 看到的。

Quota 上限

Memory 的存储 quota 分档:

用户档位 Memory quota
标准版(免费注册 / Pay-as-you-go) 50 MB
Pro Plan 订阅 500 MB(10x)

50 MB 是什么概念?

  • 纯文本 markdown:大约 2.5 万页(UTF-8,平均每条 memory 500 字)
  • 典型重度用户:半年到一年才撑到 50 MB
  • 如果你在做"用 Memory 当 second brain"类重度场景(见 Memory 使用食谱 场景 3),会比较快撑到,这种情况建议升级 Pro

Files quota(上传给 Files API 用的文件)是另一个独立配额:标准 500MB / Pro 5GB,跟 Memory 互不影响。详见 Pro Plan 介绍

Quota 超限行为

当 Memory 用量撑到 quota 上限,下一个写操作(create / str_replace / insert)会返回一个错误字符串而不是 HTTP 403,让 Claude 自己决定怎么处理:

Error: Memory quota exceeded (52428800/52428800 bytes).
You need to delete some existing memories first, or ask the user to upgrade.

Claude 的典型反应是:

  • view /memories 看看有什么旧的
  • 主动提议删除最久没碰过的条目(需要你同意)
  • 或者直接告诉你:"我现在写不进 Memory 了,请去 /app/memories 清理,或者考虑升级 Pro Plan"

这个设计来自一个观察:让 LLM 自己处理 quota,比让后端硬拒更优雅。Claude 有足够的 context 判断哪些该删,而单纯的 HTTP 403 会让客户端直接抛错,用户一脸懵。

当然,你也可以不等 Claude 自己判断,直接去 /app/memories 手动清。

如何查看用量

三个地方都能看:

  1. /app/memories 顶部进度条:最直观,带百分比 + 剩余 MB
  2. /app/billing 账单页:Pro 订阅用户能看到用量趋势图(月度)
  3. API 响应 header:如果你想程序化监控,每次写 memory 的响应会带 x-memory-bytes-used header

清理策略建议

我自己的 memory 管理习惯:

  • 每月一次总览:访问 /app/memories,扫一眼有没有明显过期的(比如已完成的项目状态)
  • 按目录清理:删整个 /memories/projects/xxx/ 比删单条文件快
  • 保留偏好类:/memories/preferences/ 这种是长期资产,永远别删
  • 定期导出 JSON 归档:即使不清理,导出一份存本地做 backup,心理上更放心

未来我计划在 /app/memories 加上"使用热度"视图(哪些 memory 最近 30 天被 Claude view 过,哪些从没被引用过),这样你能一眼挑出可以删的。这是 P2 优先级,做完会在 changelog 公告。

隐私承诺

这是 HyperAI Relay 的核心承诺之一:

  • 只有你自己能读 Memory 内容。管理员(包括我本人)看不到 memory 的原文,只能看到聚合统计(比如 user_id=42 总用量 23MB,条数 178)
  • 数据库层面:memory 内容在 PostgreSQL 里按 user_id scoped,gateway 在每次请求时强制注入当前用户 scope,查询 SQL 里不允许跨 user 访问
  • 物理隔离:Pro Plan 独立 workspace 把你的 memory 存储连"聚合统计"都跟其他用户隔开
  • 导出权 = 所有权:你可以随时一键导出,带到任何地方;我们没有任何手段能阻止你迁移数据

这不是"我们很友善所以承诺",是架构决定的。如果你怀疑,可以看 gateway/app/memory_handler.py(开源后给链接)里的 user_id scope 实现,所有查询都带 WHERE user_id = $1

常见问题

Q:Claude 能看到我删过的 memory 吗? A:不能。删除是真删,从 PostgreSQL 硬删(不是软删标 flag),删完 Claude 下一次 view 就看不到了。

Q:/try 沙盒的 memory 会占用我的 quota 吗? A:不会。/try 沙盒是独立 scope(try_* 前缀 user_id),跟你的正式账户隔离。只有你点 🎁 一键带走到 API 账户 时才会迁移,迁移后算正式 quota。

Q:我订阅了 Pro Plan 又取消,Memory 会从 500MB 被砍回 50MB 吗? A:不会砍数据,但quota 上限会回到 50MB。意思是:如果你在 Pro 期间存到了 200MB,取消订阅后这 200MB 原样保留,但你不能继续写(因为已经超 50MB)。想继续写就得要么清理到 50MB 以下,要么重新订阅。

Q:导出的 JSON 里有没有我的邮箱 / 账户信息? A:没有。导出 JSON 只含 memory 文件本身,不含任何账户元数据。你可以安全地把它发给别人而不用脱敏。

Q:Memory 会被 GC 吗? A:不会自动 GC,也不会"30 天没读自动删"。Memory 是持久存储,除非你自己删或 quota 撑爆让 Claude 代你删,它就一直在。

下一步