用户全局记忆
可跨项目使用的稳定用户信息与偏好。自动轮次写入不会把项目对话塞进这一层。
02 / 单轮生命周期
“自动”指宿主系统负责在正确时机触发生命周期,而不是让 TMCRA 提前猜测问题,也不代表仅连接一个 MCP Server 就能旁观所有对话。
这条问题成为召回查询;尚未完成的本轮内容不会提前写入。
宿主从获准的记忆范围召回内容,把有界证据作为不可信系统上下文注入,再调用原有模型或 Agent。
用户问题与助手最终回复分别写入项目共享记忆,并保留 role、Agent、Session 与来源信息。
03 / 多 Agent 记忆
同一项目里的专业 Agent 不应被切成互不相关的项目图。它们共享同一个项目边界,但各自保留会话 Session,每条记录也保留明确的主体归属。
可跨项目使用的稳定用户信息与偏好。自动轮次写入不会把项目对话塞进这一层。
默认的协作边界。规划、编码、审查等不同 Agent 使用同一个项目 Scope,因此能够召回彼此的进度。
默认关闭;当前 Python 与 JavaScript/TypeScript 生命周期封装只会从这一层召回。自动写入仍然落在项目共享 Scope。
SCOPE 不等于 SESSION
同一项目中的 Agent 应使用同一个稳定项目标识,不同对话则保留不同 Session ID。不要把 Agent 身份拼进项目 Scope 标识,否则会破坏跨 Agent 召回。
{
"role": "user",
"metadata": { "actor_role": "user", "target_agent_id": "planner" }
}
{
"role": "assistant",
"metadata": { "actor_role": "assistant", "agent_id": "planner" }
}04 / 接入路径
原生适配器连接宿主事件;SDK 封装包裹你自己的模型调用;普通 MCP 仍是显式工具层,除非宿主另行提供生命周期 Hook。
NATIVE HOOKS · PILOT
通过 OpenClaw 插件生命周期完成自动召回与采集。
before_prompt_build使用当前问题召回用户全局与项目共享证据,并在模型执行前返回有界的 prependSystemContext。
agent_end成功且未中止的回答结束后,把用户问题和助手最终回复作为两条独立消息放入队列。
gateway_start / gateway_stop处理仅文件所有者可读的持久队列,避免临时 API 故障丢失已完成轮次。
{
plugins: {
entries: {
"tmcra-openclaw": {
enabled: true,
hooks: {
allowConversationAccess: true,
allowPromptInjection: true
},
config: {
sharedProjectId: "checkout-service",
includeGlobalScope: true
}
}
}
}
}同一工作流中的所有 Agent 应使用相同的 sharedProjectId。OpenClaw 的 agentId 不参与项目 Scope 计算,但会进入派生 Session 与消息归属。未配置 sharedProjectId 时,适配器依次使用工作区或聊天身份。
管理员必须明确授权读取对话与注入 Prompt。凭据只能保存在受保护的设备配置或 Gateway 环境中,不会暴露为模型工具。
MEMORY PROVIDER · PILOT
通过当前 Hermes MemoryProvider 合同接入自动记忆。
prefetch / queue_prefetch召回当前的精确问题;队列形式只预热同一查询的缓存,不改变召回语义。
sync_turn写入已完成的主对话轮次。同一项目的主 Agent 共享 Scope,但各自保留不同 Session。
on_delegation把父 Agent 的委派请求和子 Agent 的执行结果都记录为助手侧工作,同时区分父、子 Agent;两者都不会被误标成用户陈述。
python -m pip install https://tmcra.com/downloads/integrations/tmcra_hermes_plugin-0.4.1-py3-none-any.whl
tmcra-hermes install
hermes memory setup
tmcra-hermes status协作 Agent 应使用同一个稳定的 TMCRA_PROJECT_ID、项目根目录或工作区值。Hermes 会据此派生共享项目 Scope,同时把 agent_identity 用于各自的不透明 Session ID 与主体来源。
该 Provider 以单选方式启用,不修改 Hermes 核心。普通设备授权可以提供受保护凭据;本地待写队列含有对话内容,必须限制为文件所有者可读。
OPTIONAL WRAPPER · PREVIEW
在不替换 Agent Runtime 的前提下,包裹同步或异步模型调用。
SyncMemoryLifecycle 与 AsyncMemoryLifecycle 会先执行 prepare_turn,通过 PreparedTurn.model_messages() 交付安全边界内的上下文,并且只在拿到非空助手回复后执行 commit_turn。
from tmcra_client import (
AutomaticLifecycleConfig,
SyncClient,
SyncMemoryLifecycle,
)
with SyncClient(BASE_URL, api_key=access_token) as client:
memory = SyncMemoryLifecycle(client, AutomaticLifecycleConfig(
project_scope="project_checkout",
global_scope="user_global",
agent_id="planner",
agent_metadata={"specialty": "planning"},
# agent_private_scope="agent_planner_private", # opt in
))
turn = memory.run_turn(
user_text,
lambda prepared: call_model(prepared.model_messages()),
session_id=session_id,
)python -m pip install https://tmcra.com/downloads/integrations/tmcra_client-0.5.0-py3-none-any.whl
OPTIONAL WRAPPER · PREVIEW
同一个编译包既可在 JavaScript 中直接运行,也向 TypeScript 提供类型声明。
prepareTurn 会并行召回已配置的范围,并返回 modelMessages();commitTurn 把两个对话主体以 read-your-writes 一致性写入 projectScope;runTurn 则把两者连接在你的回答回调前后。
import {
TMCRAClient,
TMCRAMemoryLifecycle,
} from "@tmcra/typescript";
const client = new TMCRAClient({ baseUrl, apiKey: accessToken });
const memory = new TMCRAMemoryLifecycle(client, {
projectScope: "project_checkout",
globalScope: "user_global",
agentMetadata: { agent_id: "coder", specialty: "implementation" },
// agentPrivateScope: "agent_coder_private", // opt in
});
const turn = await memory.runTurn(
userText,
(prepared) => callModel(prepared.modelMessages()),
{ sessionId },
);npm install https://tmcra.com/downloads/integrations/tmcra-typescript-0.5.0.tgz
EXPLICIT MCP / OPTIONAL CODEX HOOKS · PREVIEW
选择显式记忆工具,或使用能够自动触发生命周期的宿主 Hook。
Server 提供 tmcra_recall、tmcra_ingest、tmcra_get_job 与 tmcra_wait_job。宿主必须主动在回答前调用召回、回答后调用写入;仅连接 stdio 无法自动观察宿主对话。
codex-hooks 模式复用现有 TMCRA Codex 插件。UserPromptSubmit 负责召回与注入,Stop 负责分别采集用户与助手记录。用户仍需重启 Codex、检查 /hooks 并主动授予信任。
python -m pip install https://tmcra.com/downloads/integrations/tmcra_mcp_server-0.4.0-py3-none-any.whl
# Generic MCP: explicit tools
tmcra-mcp-setup install --mode explicit
tmcra-mcp-setup status --mode explicit
# Codex: optional automatic lifecycle Hooks
tmcra-mcp-setup install --mode codex-hooks
tmcra-mcp-setup status --mode codex-hooks多 Agent MCP 宿主应传入相同的共享 Scope、不同的 session_id、原样保留的消息 role,以及可选但真实的 agent_id。宿主没有提供身份时,普通 MCP 不会凭空编造 Agent。
查看完整 Codex 安装指南VERIFIED ARTIFACTS
这些文件与干净环境安装和打包验收使用的是同一批制品;安装前请核对 SHA-256。
源码分发包和机器可读 manifest 也保存在同一目录,便于复现部署。
05 / 验收检查
让 Agent A 写入一个唯一事实,并等待写入完成。
在同一项目中通过 Agent B 提出相关的新问题,并确认召回发生在模型调用之前。
检查证据:Agent B 应能看到 Agent A 的进度,同时 role、agent_id、Session 与来源仍可区分。
确认 Agent 私有 Scope 只有在显式配置为召回范围后才可见。
短暂中断 API,确认适配器能够通过 Job 或持久队列恢复,且不会重复写入同一轮次。
06 / 接入
提交宿主平台、Agent 数量、项目边界规则和预期流量,我们会据此评估接入路径与最小授权范围。