跳转至

Notion 导出

claude-mem 可以将每条新存储的观察复制到 Notion 数据库中,随捕获即时完成。导出默认关闭,在后台运行,并且绝不会拖慢或中断捕获:如果 Notion 宕机或配置错误,会记录错误,捕获继续进行。

设置

  1. 创建集成。 前往 notion.so/profile/integrations,选择 新建集成,选择你的工作区,然后复制 内部集成密钥(以 ntn_ 或 secret_ 开头)。该集成需要 读取内容、更新内容 和 插入内容 权限。
  2. 创建数据库。 任何整页或内嵌数据库都可以;其标题列会成为观察标题。
  3. 与集成共享数据库。 打开数据库,点击 ••• → 连接 → 添加你的集成。如果没有这一步,Notion 会返回 404,导出会自行关闭。
  4. 复制数据库 ID。 它是数据库 URL(https://www.notion.so/<workspace>/<id>?v=...)中的 32 字符 ID。你可以直接粘贴整个 URL;claude-mem 会从中提取 ID。
  5. 配置 claude-mem,在 ~/.claude-mem/settings.json 中设置,然后重启工作进程:
{
  "CLAUDE_MEM_NOTION_ENABLED": "true",
  "CLAUDE_MEM_NOTION_TOKEN": "ntn_...",
  "CLAUDE_MEM_NOTION_DATABASE_ID": "0123456789abcdef0123456789abcdef"
}

每项设置也可以作为同名的环境变量提供。令牌会被 GET /api/settings 掩码处理,无法通过查看器设置。

设置 默认值 描述
CLAUDE_MEM_NOTION_ENABLED false 打开导出功能
CLAUDE_MEM_NOTION_TOKEN — 集成密钥
CLAUDE_MEM_NOTION_DATABASE_ID — 数据库 ID(带连字符或不带均可)或数据库 URL
CLAUDE_MEM_NOTION_AUTO_CREATE_PROPERTIES true 在首次运行时添加下面任何缺失的属性

数据库结构

数据库现有的标题属性(无论其名称是什么,例如 Name)保存观察标题。如果标题列与以下某个属性同名,则标题优先,该属性不会被写入。启用自动创建后,导出器会在首次运行时添加其余属性;关闭时,你需要自行创建。名称和类型必须完全匹配;如果某个属性存在但类型不同,则跳过并记录日志。

属性 类型 内容
(标题) 标题 观察标题
Export Key 文本 <source id>:<observation id>,用于去重
Observation ID 数字 claude-mem 在此计算机上的观察 ID
Type 选择 bugfix、feature、discovery、……
Project 选择 项目名称
Subtitle 文本 观察副标题
Concepts 多选 概念标签
Files Read 文本 每行一个路径
Files Modified 文本 每行一个路径
Created 日期 观察被存储的时间
Session ID 文本 claude-mem 记忆会话 ID

页面正文将叙述内容以段落形式保存,然后是 事实 标题,每个事实以项目符号列出。较长的正文会按每次 100 个块发送,因此不会截断。

源 ID 是在导出首次运行时在 ~/.claude-mem/notion-export-source-id 中创建的随机 ID。观察 ID 是每台计算机本地的,因此源 ID 可防止两台导出到同一数据库的计算机覆盖彼此的页面。它不与任何账户绑定。

行为方式

  • 只写入一次。 在创建页面之前,导出器会查找具有相同 Export Key 的页面。如果找到,它会保持该页面不变,因此重试或重放的观察永远不会创建重复页面或重写第一份副本。如果没有 Export Key 属性,则只能创建。
  • 非阻塞。 观察会进入内存队列(最多 1,000 条,按 Notion 的速率限制大约相当于 11 分钟的积压量;超过该数量后,最早的会被丢弃,每次丢弃都会记录为错误),并由一个后台循环按顺序发送。
  • 速率受限。 请求之间至少间隔 334 毫秒(约每秒 3 次,即 Notion 文档中的限制)。
  • 重试。 速率限制(429)、冲突(409)、服务器错误(5xx)、超时和网络故障会以指数退避(1 秒、2 秒、4 秒……上限 60 秒)重试最多 5 次。429 的 Retry-After 标头会被遵循。其他错误(例如 400 验证错误)会跳过该观察。
  • 故障关闭。 401、403 或 404 表示令牌错误或数据库未共享;导出器会记录一条错误,列出丢弃的观察,停止调用 Notion,直到设置更改,并在此期间为每个跳过的观察记录一条警告。
  • 仅新观察。 从会话中捕获并通过 save_memory 保存的观察会被导出。现有历史不会回填,批量记忆文件导入也不会导出。队列驻留在内存中,因此工作进程停止时仍在等待的项目不会被发送。

超过 Notion 单个属性允许长度(200,000 字符)的文本会在那里被截断,并给出警告。错误记录在工作进程日志(~/.claude-mem/logs/)中的 NOTION 组件下。令牌永远不会被记录。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/claude-mem