Raft
Cloud 用户安装 Nowledge Mem Cloud Raft App 即可接入;Mem Vault 继续按 worker 配置本地身份。
Raft 对接 Nowledge Mem 有两种方式。知识放在 Nowledge Cloud 时,直接安装 Raft App;Mem 运行在自己的电脑或服务器上时,按 Mem Vault 的本地方式配置。两条路径不需要混着做。
Nowledge Cloud
先在 Raft 中安装 Nowledge Mem Cloud Raft App,再从需要接入的 Cloud 工作区发起连接。你不需要再逐个连接 Codex 或 Claude,也不用把 API key 复制到 Raft,或手工设置 NMEM_AGENT_ID。
在 Raft 中安装 App
- 在 Raft 中打开 Settings → Applications,进入 Marketplace。
- 找到 Nowledge Mem Cloud,点击 Install。

这一步只是让 Raft server 可以使用这个 App,还没有选择要连接的 Nowledge Cloud 工作区。
连接 Cloud 工作区
- 打开 Nowledge Cloud,登录后进入需要接入 Raft 的工作区。当前账号需要拥有该工作区的 owner 或 admin 权限。
- 在左侧导航中打开 连接(Connectors)。
- 找到 多智能体编排(Multi-agent orchestrators) 下的 Raft,点击 连接(Connect)。
- 完成 Login with Raft,确认要连接的 Raft server。

页面回到 Nowledge Cloud 后,Raft 一栏应该显示 已连接(Connected),并列出刚才确认的 server。此后的每次请求仍然遵守 Cloud 工作区与 Teamspace 的权限设置。
新建 Agent 会话
回到 Raft,新建一个 Agent 会话。连接完成后新建的会话会自动使用 Raft App 提供的 Agent 身份和 Mem 托管连接。
确认已经接通
让 Raft Agent 先检查 Nowledge 上下文,再保存或查找一条记忆。它应该能直接使用刚才确认的 Cloud 工作区,不需要本地 Mem 服务,也不需要为 Agent 设置环境变量。如果 Raft 一栏还没有显示 已连接(Connected),先回到 Cloud 完成连接,不必从 Agent 侧排查。
如果你使用 Nowledge Cloud,请跳过下面的 Mem Vault 设置,继续阅读后面的执行轨迹边界说明。
Mem Vault
Raft 可以在同一台电脑上运行多个命名 Agent。Nowledge Mem 会把这些 Agent 识别成不同 worker,而不是把它们都当成同一个匿名 Codex 或 Claude 会话。
设置方式应该很轻:先连接 Raft 启动的 AI 工具,然后给每个 Raft Agent 设置一个环境变量。
需要先准备好
- Nowledge Mem 正在运行。
- Raft 启动的 AI 工具已经连接到 Mem,例如 Codex 或 Claude Code。
- 每个 Raft worker 有稳定角色,例如 Cindy、Alice 或 Reviewer。
最小设置
先为这个 Raft worker 创建一个 Mem AI Identity:
nmem agents upsert cindy \
--name "Cindy" \
--default-space onboarding \
--instructions "帮助用户完成 onboarding。一次只解释一个步骤。"这会创建名为 Cindy 的 Mem 身份。命令和环境变量里使用的 ID 是 cindy。
这个命令只是创建身份记录。它不会让所有 Codex 会话都变成 Cindy。只有设置了 NMEM_AGENT_ID=cindy,或明确传入 agent_id="cindy" 的地方,才会使用这个身份。
然后打开 Raft 里这个 Agent 的 runtime config,只添加一个环境变量:
NMEM_AGENT_ID=cindy
如果这个 Mem 身份已经设置了默认 Space,这样就够了。
以后移动 Cindy
Cindy 这个身份属于 Mem,不属于 Raft。以后如果你把 Cindy 换到另一个编排工具,继续保留 NMEM_AGENT_ID=cindy,让新的启动器传入这个环境变量即可。
AI 工具也可以更换。Cindy 可以先跑在 Codex,之后改跑在 Pi 或 Claude Code。这个时候更新工具连接和 --source-app,但保留同一个 Mem 身份。
如果你需要一个相关但不同的 worker,创建一个新身份,例如 cindy-reviewer。这样 Cindy 保持稳定,新 worker 可以独立演化自己的规则。
什么时候需要 Space
NMEM_SPACE 是可选项。它会作用于整个 Raft 运行时进程。
只有当这个 Raft Agent 在本次运行中所有 Mem 读取和写入都要覆盖默认 Space 时,才添加:
NMEM_SPACE=onboarding如果这个 Agent 可能跨不同项目工作,不要设置 NMEM_SPACE。让它使用 Mem 身份的默认 Space,或者在具体命令里切换。
默认不要添加第二个身份变量
大多数用户不需要设置 NMEM_HOST_AGENT_ID。
NMEM_HOST_AGENT_ID 只适合高级场景:例如集成作者需要把 raft:<uuid> 这类外部 worker ID 映射到 Mem 身份。普通 Raft 设置里,NMEM_AGENT_ID=cindy 更清楚,也已经足够;旧的 slock: 前缀仍然兼容。
成功是什么样
使用 nmem 0.9.0 或更新版本时,启动一个新的 Raft worker 会话,让它检查 Mem:
nmem --json context --source-app codex在 Raft worker 内部,这个命令应该继承 NMEM_AGENT_ID=cindy,并返回你配置的 worker 身份。如果你是在普通终端里手动检查,请显式传入身份:
nmem --json context --agent-id cindy --source-app codexworker 内的记忆调用仍以 codex、claude-code 或 Raft 实际启动的运行时作为 source。未来的 Raft 原生 Thread connector 会以 raft 保存人类可见对话,并把子运行时保留为元数据。
不要把执行轨迹写进 Threads
这条边界同时适用于 Nowledge Cloud 和 Mem Vault 两种路径。
Raft 的 managed compute 会使用 Codex 执行任务,但真正的人类对话由 Raft 自己的 inbox 与消息通道管理。Codex rollout 里记录的是控制通知和工具执行;通过 Raft 消息工具发出的回复,并不会作为普通 Codex assistant 消息完整保存在 rollout 中。把它导入 Mem,会得到一条失真的 Thread。
因此,Nowledge Mem 会按每份 transcript 的结构化 session originator,跳过 raft-daemon 的 Codex rollout。旧的 slock-daemon originator 仍然兼容。这个判断只作用于对应 transcript,同一台电脑上的普通 Codex 会话仍然会自动捕获。
在 Raft worker 内,请通过 Mem skills 或 MCP 使用 Working Memory、检索和长期保存。完整同步 Raft 对话需要 Raft 原生 conversation connector;在该边界可用前,不要对 Raft 托管 worker 运行 nmem t save --from codex。
