mcpField
T
TOMC Memory

TOMC Memory

本地服务
github.com记忆与知识266今天更新

关于 TOMC Memory

TOMC Memory 是面向 AI 助手的开源上下文准备与任务记忆工具,可在 CPU 上编译指定历史,并通过 MCP 服务或 Python API 显式保存和召回笔记。

主要功能

  1. 01基于 CPU 编译上下文
  2. 02按任务设置上下文预算
  3. 03显式保存和召回笔记
  4. 04提供 MCP 服务和 Python API
  5. 05多个助手共用本地笔记本

适用场景

  1. 01为任务准备长对话历史
  2. 02在新聊天中延续决策
  3. 03在不同助手间交接笔记

MCP 相关

其 MCP 服务提供准备上下文以及显式保存、召回任务笔记的工具。客户端可在本地运行,并共用笔记数据库。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbtomc-memory-0.1.1.mcpb

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

在 GitHub 上为我们点星TOMC MemoryGitHub 星标数 累计记录的克隆数

累计克隆数 · 自 2026-10-02 起记录 · 于 2026-10-23 UTC 更新。统计方法与更新

觉得 TOMC 实用?点击右上角的 ⭐ Star 来支持这个项目。

TOMC Memory

为 Codex / Claude Code / Cursor / TRAE / WorkBuddy 提供上下文压缩和任务记忆

在 CPU 上压缩并整理长历史记录,回忆已保存的任务笔记。

与 API 搭配使用 · 安装 TOMC Memory · 切换助手 · 查看演示 · 论文解读 · 论文结果 · English | 简体中文

CPU 预处理 · 无需训练或额外模型服务 · 纯文本输出 · 研究预览版

GitHub 官方主页 · 插件下载 · 安装指南

这是 TOMC Memory 的官方仓库,包含源代码、插件下载和安装指南。

查看已记录的示例 · API、共享记忆和评测指南

第 1 部分 · 使用 TOMC Memory

TOMC Memory 是一款基于任务导向记忆编译(Task-Oriented Memory Compilation,TOMC)的开源工具。它为 AI 助手压缩并编译上下文,并通过明确保存的笔记提供任务记忆。你可以通过 MCP 服务和 Python API 使用它。提供历史记录、下一项任务和记忆预算后,它会选择源文本并计算受支持的状态、关系或计数记录,让你的应用可以发送准备好的上下文,而非完整历史记录。准备过程在 CPU 上运行,无需训练或额外的模型服务。

制作视频、整理材料、处理文件或开发代码时,都可以使用任务记忆:通过 remember_memory 保存任务简介、决策、约束、已完成步骤和剩余工作,然后使用 recall_memory 为下一项任务准备这些笔记。这些示例展示了如何使用已保存的笔记。下方记录的测量结果涵盖合成项目历史记录和论文基准测试,各自采用不同的任务和协议;这些结果并不能证明在这些工作流的所有任务中都能达到相同性能。

将 Python API 添加到你自己的应用中,在 Codex 或 Claude Code 中安装插件,或通过本地 MCP 连接 Cursor、TRAE、Tencent WorkBuddy 和 Claude Desktop。节省量取决于历史记录和任务;较短的历史记录可以保持完整。默认设置会保留较长历史记录的约 80%。如果需要缩小请求规模,可在自己的任务上比较 40% 或 60% 的预算;参见单独的 Codex 和 Claude 结果。

在与同一助手或另一助手的新聊天中,重用已保存的任务笔记。如果两个客户端在同一台计算机上使用同一个 TOMC 数据库,就可以重用已保存的决策、约束和后续步骤。试试 Codex → Claude Code → Codex 交接。

在 Codex、Cursor、Claude Desktop 或 Claude Code 中安装 TOMC。提供历史记录、任务和预算;TOMC 为同一助手准备上下文。

这是预览版,版本为 0.1.0。从 采用 MIT 许可证的助手预览版下载插件。目前没有 PyPI 软件包或公开市场条目。

视频概览

TOMC 概览:缩小输入、切换助手、将笔记带到另一台计算机,以及 BEAM 结果

完整视频(1:37,含声音) · 中文视频 · 媒体和测试范围

API 集成会在下一次请求前调用 TOMC,并发送准备好的上下文。Codex 和 Claude Code 使用工具保存或调取任务笔记。视频中的数字来自采用各自协议的特定测试,不代表任何提供商的背书。

测量结果列出了 Codex 和 Claude Code 的测试协议及其源记录。

首次运行指南 · Python API · 完整结果和限制。

TOMC 是研究预览版。欢迎提供反馈、报告问题、提交拉取请求以及开展研究合作。设备选择与助手选择相互独立;跨设备传输笔记本需手动使用 Git。

在助手中安装

选择适合你客户端的配置。TOMC 会在本地使用 CPU 准备上下文;由你的助手生成答案。该插件本身不需要额外的模型 API 密钥或 GPU。

宿主负责管理当前聊天。 当 Codex、Claude Code 或其他宿主负责压缩对话时,TOMC 不会主动重新压缩该聊天。对于未知的宿主状态,默认也由宿主负责。请将 TOMC 用于单独提供的外部历史记录或明确保存的笔记。这是一项工具使用策略,不是自动压缩检测器。上下文归属。插件包 0.1.1 包含此策略;编译器核心仍为 0.1.0。

首次运行

Claude Code:保存一条笔记,然后在新聊天中回忆它。 请先安装 UV。在 Claude Code 中运行:

/plugin marketplace add ZipengWu365/TOMC
/plugin install tomc-memory@tomc

开始新会话或重新加载 VS Code,并在 /mcp 中检查 plugin:tomc-memory:tomc。明确要求助手运行该工具:

Use TOMC's remember_memory to save a note named api-refactor:
keep public API routes unchanged; pagination tests have not been written.
Show the tool result.

在使用同一本地笔记本数据库的新聊天中,询问:

Use TOMC's recall_memory on api-refactor.
Report the saved constraints and unfinished work. Show the tool result.

保存和回忆都需要明确调用工具。该插件不会自动记录整个聊天。Claude Code 详细配置 · 共享笔记本检查。

Codex CLI:安装插件并验证工具是否可用。 下载 0.1.2 Codex ZIP,将其解压到你会保留的目录中,然后在该目录下使用 UV 和兼容的 Codex CLI 运行:

uv run --no-project --python 3.12 install.py --check
uv run --no-project --python 3.12 install.py

第一条命令会检查前置条件,不会更改 Codex 配置。安装后,请启动一个新的 Codex 会话,并明确要求它保存/回忆一条指定名称的笔记。Codex 完整说明 · 平台验证。

Python API:在调用模型前检查离线上下文示例。 需要 Python 3.10+:

git clone https://github.com/ZipengWu365/TOMC.git && printf '\n%s\n%s\n' \
  'If TOMC helps with your work, consider a Star on GitHub (optional):' 'https://github.com/ZipengWu365/TOMC'
cd TOMC
python -m pip install -e .
python examples/api_context.py

上面的 Bash / Git Bash 命令会在成功克隆后显示可选的 Star 邀请。普通的 git clone 不会显示邀请;仅克隆不会安装 TOMC。

此示例会在本地准备并统计上下文;不会调用模型。要集成 TOMC,请将 prepared.messages 替换原始历史记录发送,同时保留应用程序的指令和协议。API 示例 · 参考文档。

其他客户端集成
客户端从这里开始前置条件
Codex CLI下载插件 ZIP当前版本的 Codex CLI,支持插件命令;并且 uv(uv)位于 PATH 中,或通过 --uv 提供
Codex IDE 扩展配置本地 MCP 服务已安装 .[mcp] 的本地 TOMC 环境
Cursor生成安装链接,或添加 MCP 配置本地 TOMC 运行环境;客户端工具调用尚未验证
TRAE(国际版 / CN)将 TOMC 添加为本地 MCP 服务本地 TOMC 运行环境;客户端工具调用尚未验证
Tencent WorkBuddy通过本地 MCP 配置 TOMC本地 TOMC 运行环境;客户端工具调用尚未验证
Claude Desktop下载 .mcpb 扩展已更新且支持 UV 扩展的 Claude Desktop;首次安装时需要网络访问
Claude Code/plugin marketplace add ZipengWu365/TOMC,然后运行 /plugin install tomc-memory@tomc(详情)uv;已在 Claude Code VS Code 扩展中测试
Codex 安装步骤
Codex CLI

下载上方的 ZIP,将其解压到你计划长期保留的目录中,然后在该目录下打开终端。运行:

uv run --no-project --python 3.12 install.py --check
uv run --no-project --python 3.12 install.py

第一条命令会检查前置条件,但不会注册插件或写入配置。第二条命令会为你的计算机准备路径、注册本地市场并安装 TOMC。启动新的 Codex 会话即可使用。必要时,UV 会下载 Python 和依赖项。如果可执行文件不在 PATH 中,请传入 --uv /absolute/path/to/uv 或 --codex /absolute/path/to/codex;如果 UV 本身不在 PATH 中,请使用 UV 可执行文件的路径启动该命令。请勿移动解压后的目录;如果移动了,请重新运行安装程序。请与他人分享原始 ZIP,而不是包含你本机路径的已配置副本。

对于 Codex IDE 扩展,请在已安装 .[mcp] 的环境中运行 python -m tomc setup --client codex,并将输出的 MCP 条目添加到设置中。设置指南中包含直接注册命令。在客户端中使用原生插件或独立的 TOMC MCP 注册,避免出现重复工具。

Cursor 安装步骤
Cursor

克隆仓库,并按照助手设置指南激活本地环境。在该环境中运行:

python -m pip install -e '.[mcp]'
python -m tomc setup --client cursor --link

打开输出的链接,然后确认 Add to Cursor。启动新聊天,并检查 TOMC 是否已启用。该链接会注册你已安装的环境;请勿移动该环境,如果移动了,请重新生成链接。在一台计算机上生成的链接不能用作另一台计算机的安装程序。

TRAE 安装步骤 #### TRAE

使用 Cursor / TRAE 指南及其中可直接编辑的 JSON 模板。在设置 → MCP → 添加 → 手动创建中添加,并选择本地环境。或者,启用项目 MCP 并使用 .trae/mcp.json。在已安装 .[mcp] 的当前源码检出环境中,运行 python -m tomc setup --client trae 可打印适用于你环境的配置。TRAE 要求命令路径中不包含空格;指南还提供锁定的 UV 运行时。设置命令只会打印配置,不会更改客户端设置。

TRAE 和 Cursor 客户端的工具发现与模型调用尚未经过验证。这是手动 MCP 集成预览;报告连接错误时,请附上客户端版本和操作系统。

Tencent WorkBuddy 安装步骤
Tencent WorkBuddy

按照 WorkBuddy 指南编辑适用于本地运行时的 JSON 模板。打开插件 → MCP 服务 → 配置 MCP。将 tomc 条目合并到用户级 ~/.workbuddy/mcp.json 或项目级 .workbuddy/mcp.json 中,并保留现有服务。在已安装 .[mcp] 的当前源码环境中,也可以运行 python -m tomc setup --client workbuddy 生成配置。此命令只会打印配置。

这是手动本地 MCP 集成预览。WorkBuddy 客户端的工具发现和模型调用尚未验证;Tencent 的市场中未列出 TOMC。

Claude Desktop 安装步骤
Claude Desktop
  1. 下载上面的 .mcpb 文件。
  2. 打开设置 → 扩展 → 高级设置 → 安装扩展…,然后选择该文件。
  3. 按照安装提示操作,然后开始新的聊天,并检查 TOMC 的五个工具是否可用。

受支持的宿主会通过 UV 运行时安装 Python 和锁定的依赖项;使用此软件包无需克隆仓库或手动设置 Python。

Claude Code 安装步骤
Claude Code

Claude Code 运行与本地 MCP 服务相同的锁定运行时。将上面的 .mcpb 文件(ZIP 存档)解压到你准备长期保留的目录,然后使用实际的解压路径运行以下命令:

uv sync --locked --directory "/absolute/path/to/extracted"
claude mcp add tomc-memory --scope user -- uv run --locked --directory "/absolute/path/to/extracted" src/server.py

启动新的 Claude Code 会话并运行 /mcp,检查五个工具。请在请求中指定工具名称,例如 “在这段历史记录上使用 tomc-memory prepare_context,任务为……,预算为 200”。如果 claude 不在 PATH 中,请使用 VS Code 扩展 resources/native-binary 文件夹中捆绑的 CLI(Windows 上为 claude.exe)。操作步骤、VS Code 说明和使用技巧

在 VS Code 扩展中使用 Claude Opus 5.5、预算为 8,192 的试用中,回忆一个笔记本内容时正确回答了五个问题;与将 20K 和 40K 令牌的历史记录粘贴到提示词中相比,成本分别低了 38% 和 65%;历史记录约为 10K 令牌时,成本则没有变化。预算为 1,024 时成本更低,但遗漏了一些最新值。请在聊天之外导入较长的历史记录。

**已在 Windows、macOS 和 Linux 上测试,并在 Claude Code 中通过测试。**三个系统上的安装和工具检查均已通过;真实模型调用已在 Codex 的 Windows preview.4 版本、macOS 以及使用 Claude Opus 5.5 的 Claude Code 中通过验证。Claude Desktop、Cursor 和 Codex 应用中的图形界面安装仍未经验证。平台检查和日期

使用技巧(英文) · 中文使用技巧 · Windows 安装反馈 · 完整安装指南 · 验证记录 · Claude 校验和 · Codex 校验和。

切换助手,保留项目笔记

在 Codex 中保存项目简介,在 Claude Code 中接着处理,然后把更新后的笔记带回来。在两个客户端中都安装 TOMC,并让两个服务打开同一个 SQLite 文件。每次保存和回忆都是显式的工具调用。共享路径设置。

Codex 保存项目笔记;Claude Code 回忆并更新笔记;Codex 读取最新笔记。同一台计算机上的一个共享 TOMC 笔记本,显式保存和回忆。
用三个提示词试试交接

此示例保存的是计划笔记,并非声称测试已经运行。

位置向助手提问
Codex使用 TOMC 的 remember_memory 将以下内容保存为 api-refactor:保持公共 API 路由和响应字段不变。尚未编写或运行分页测试。
新的 Claude Code 聊天使用 TOMC 的 recall_memory 回忆 api-refactor,任务:规划分页测试,预算:1024。然后使用 remember_memory 追加:测试计划——覆盖空结果、最后一页和无效页参数。测试仍未运行。显示两个工具结果。
新的 Codex 聊天使用 TOMC 的 recall_memory 回忆 api-refactor,任务:总结 API 约束、最新测试计划和未完成的工作,预算:1024。在回答前显示返回的记忆。

笔记本会保留原始笔记和追加的更新;回忆会为下一项任务整理这段历史。这是共享已保存的笔记,而不是迁移原生聊天历史,也不提供跨设备云同步。MCP 互操作性和用户引导的检查。

自动 API 请求循环

在现有的同步 Chat Completions 调用前使用 AutomaticChatSession:默认采用便于缓存的稳定前缀(直到请求不再适配,编译后的记忆都保持不变)、缓存的模型限制、一次性的窗口边界回退,以及简短的原生压缩冷却时间。只有发出的旧历史视图会改变;原始历史、指令、近期消息和工具协议仍由调用方保留。默认的词汇打包路径现在可避免重复扫描前缀。34 个模型的容量快照。这不会让已安装的 MCP 插件拦截内置客户端请求,也不声称已通过原生客户端或模型验收。

在 API 调用前使用

使用 python -m pip install -e . 从此检出版本安装核心包。准备历史记录,检查 prepared.prompt,然后通过现有的聊天补全客户端发送 prepared.messages:

from tomc import prepare_context

prepared = prepare_context(history, task)
response = client.chat.completions.create(
    model=model,
    messages=prepared.messages,
)

此处的 history、task、client 和 model 是应用现有的输入和客户端。**对于此请求,请替换原始历史记录;将准备好的上下文追加到原始历史中会增加输入量。**保留应用所需的任何指令。对于其他文本 API,请将消息映射为提供商所需的格式。TOMC 会更改请求文本,但不会更改模型权重。API 指南和令牌计数。

经测量的节省
Windows Codex · gpt-6.1-sol

每种预算下均为 45/45 个答案正确。 在九段合成团队聊天记录(三个种子,历史记录约为 10K、20K 和 40K 个 token)中,Windows Codex 0.160.0 针对每段历史记录回答了五个关于最新项目状态的问题。保留了原始模型、ultra 努力度和已安装的插件。每次开始新的回答聊天前,TOMC 都通过已安装的 MCP 工具准备上下文。

Windows Codex:四种预算均为 45/45。平均请求输入量及配对降幅。

精确数值(可复制文本)
发送的上下文平均请求输入 token 数平均配对输入降幅正确答案
完整历史记录42,191参考值45/45
TOMC · 40% 历史记录预算28,71329.7%45/45
TOMC · 60% 历史记录预算33,34419.5%45/45
TOMC · 默认 80% 历史记录预算38,0359.2%45/45

输入量是 Codex 报告的总量,包括缓存输入、宿主指令和工具定义。降幅是九个配对历史记录级比率的平均值,而不是表中平均值之比。这些数据针对每段历史记录和每种条件下的一个回答轮次;如果要求模型在聊天中准备或回忆信息,则会增加轮次。所有准备好的上下文都使用 tomc_raw 源选择,未使用编译后的操作记录。这项测试评估的是合成最新状态检索,而非一般编码质量。英文报告 · 中文报告 · 记录数据 · 预算提示。完整历史记录请求使用了安装 TOMC 且启用所有现有插件的同一配置文件。表格涵盖测试框架中每种条件下的单个回答轮次;完整的 Agent 工作流可能涉及额外轮次。

Claude Code · Claude Opus 5.5

在约为 10K、20K 和 40K 个 token 的合成团队聊天记录中,这些记录包含数十到数百次状态更新以及相似的干扰信息,Claude Opus 5.5 回答了五个关于最新项目状态的问题。TOMC 保留 40% 的历史记录时,五个答案均与完整历史记录条件下的答案一致。回答请求的成本如下:

Claude Code:10K、20K 和 40K 历史记录的成本;所有显示的条件均为 5/5。

精确数值(可复制文本)
历史记录完整历史记录TOMC 保留 40%TOMC 保留 60%
~10K 个 tokenUS$0.169 · 5/5US$0.075 · 5/5 (−56%)US$0.103 · 5/5 (−39%)
~20K 个 tokenUS$0.334 · 5/5US$0.141 · 5/5 (−58%)US$0.195 · 5/5 (−42%)
~40K 个 tokenUS$0.628 · 5/5US$0.255 · 5/5 (−59%)US$0.369 · 5/5 (−41%)

Claude Code 默认预算检查。 未设置 budget 时,TOMC 会保留历史记录估算 token 数的约 80%(至少 1,024,因此较短的历史记录会完整保留)。在每种长度的三段不同历史记录中,Claude Opus 5.5 正确回答了全部 45 个问题,输入量减少约 20%;保留 50%、60% 和 70% 时也都正确回答了全部 45 个问题,节省约 49%、39% 和 30%。预算较小时开始出现过时的值:保留 10–20% 时,五个问题中只有三到四个回答正确。只有在你自己的任务样本中对照完整历史记录检查后,才传入较小的 budget。这些是合成历史记录,使用了一个模型,且请求工作流与 Codex 测试不同。验证记录 · 预算提示

助手插件提供上下文准备工具。它不会拦截每个 API 请求,也不会清除活动聊天中已有的消息。若要使用较小的请求,你的应用必须发送准备好的上下文;也可以将其交给新聊天。笔记本存储是可选的。

准备上下文

安装后,请让你的助手调用 TOMC 的 prepare_context 工具。将下方文本作为 history 传入,将 task 设为 "What are the current framework and backup_framework values?",将 budget 设为 64,然后让助手根据返回的记忆作答。

framework = Flask
backup_framework copies framework
framework = FastAPI
Monday notes: the team reviewed the project backlog, discussed deployment windows and agreed to keep the public API routes and response fields unchanged during the refactor.
Tuesday notes: the migration plan still needs a review from the database owner, and the pagination tests have not yet been written or run.
Wednesday notes: the team checked the release checklist, added a rollback task, and postponed the documentation update until after the test results are available.

此示例使用显式赋值和快照副本。TOMC 准备 framework = FastAPI 和 backup_framework = Flask,并附上来源链接。工具的使用由宿主控制;现有模型会生成答案。

在相同指令和任务下,使用 cl100k_base 计算,此示例的消息文本从 147 个 token 减少到 108 个 token。此处统计消息内容,不包括提供方的聊天封装和工具;这只是单个示例,不代表实际计费使用量或固定的节省比例。运行 python examples/api_context.py 可进行离线词法估算,或参阅 API 指南 了解 BPE 计数。

prepare_context 不会保存此历史。已经符合预算的历史会保持原样;对于较长的文本,可以使用检索,而不是类型化记录。budget 限制的是词法计数器下的记忆;任务文本和工具封装还会带来额外开销。

可选:在不同聊天中保留历史

笔记本会以原始形式存储提供的文本。recall_memory 会为指定任务准备该历史;直接调用 prepare_context 无需笔记本,也不会向其中写入内容。

尝试在两个聊天或助手之间共享记忆

在第一个聊天中,例如在 Codex 里:

使用 TOMC 将以下内容记为 api-refactor:保持公共 API 路由和响应字段不变。分页测试仍需编写。

在新聊天中,例如在使用同一数据库的 Claude Code 里:

从 TOMC 中找回 api-refactor。在继续之前,提醒我有哪些限制条件和未完成的工作。

默认数据库为 ~/.tomc/memory.sqlite3。两个服务都必须指向同一个文件;自定义 --store 或 TOMC_MEMORY_PATH 可以让客户端使用独立文件。检查路径并尝试交接。TOMC 会读取传递给其工具的笔记;安装它并不会自动捕获每次聊天的内容。助手会根据其权限设置决定调用哪些工具。

试用演示

此演示展示 TOMC 如何为任务准备上下文。它不会在不同聊天之间创建笔记本。

本地运行

Gradio 界面需要 Python 3.10–3.13。克隆仓库:

git clone https://github.com/ZipengWu365/TOMC.git && printf '\n%s\n%s\n' \
  'If TOMC helps with your work, consider a Star on GitHub (optional):' 'https://github.com/ZipengWu365/TOMC'
cd TOMC

在 macOS 上,先检查 python3 --version:系统自带的 Python 3.9 无法运行 TOMC。安装 UV 后,可以让它提供 Python 3.12 并直接启动演示:

uv run --python 3.12 --extra demo python -m demo.app

或者,使用已有的兼容 Python,并按照下面的步骤设置环境。macOS 指南。

在 Linux/macOS 上,使用 UV 管理 Python,避免系统缺少 venv/ensurepip 模块。以下命令已通过 Linux 检查:

uv venv --python 3.12 --seed .venv
source .venv/bin/activate

如果你更愿意使用系统 Python,可运行 python3 -m venv .venv 并按上文所述激活环境。Debian/Ubuntu 系统需要安装对应的 python3-venv 软件包。如果失败的命令已创建不完整的环境,可运行 uv venv --python 3.12 --allow-existing --seed .venv 恢复。

或者,在已安装 Python 3.12 的 Windows PowerShell 中运行:

py -3.12 -m venv .venv
.venv\Scripts\Activate.ps1

然后安装并启动演示:

python -m pip install -e '.[demo]'
python -m demo.app
  1. 打开 http://127.0.0.1:7860 并选择 立即使用。
  2. 点击 试用演示以准备示例,或粘贴你的历史记录、输入下一个任务并点击 准备。
  3. 使用复制图标复制准备好的提示词,并将其粘贴到你常用的模型中。

支持文本、Markdown、消息 JSON 和 JSONL。安装后,本地准备过程可离线运行。使用准备好的提示词时,由你的模型生成答案;默认演示不会调用读取器 API。托管预览会在 Space 服务端处理输入。

使用 30 秒导览查看引导示例,使用 工作台比较策略,或使用 研究证据浏览已存档的论文结果。桌面视图 · 移动视图。

在 Ubuntu 24.04.5 和 Python 3.12.13 上,全新下载通过了 Linux 安装和浏览器检查。报告包含截图、插件检查和安装反馈。

实用技巧
  • 从 试用演示及其 小型请求示例开始。对于普通文本,可尝试 均衡或 更多细节,并在降低预算前检查保留的来源。
  • 在下一次 API 请求中发送准备好的消息,而不是原始历史记录。手动使用时,将提示词粘贴到新聊天中;若将其添加到已有的长聊天中,该聊天此前的输入仍会保留。
  • 让任务问题具体明确。检查状态记录和来源文本,尤其是在更改历史记录或记忆大小后。Token 显示的是消息内容估算值,并非服务提供商的计费信息。
  • 使用插件时,请保持安装目录和 Python 环境不变。每个客户端只注册一个 TOMC;共享原始软件包,而不要共享包含本地路径的配置。Linux 报告介绍了验证和恢复方法。

第 2 部分 · 论文解读

论文题为 Task-Oriented Memory Compilation: Executable State Representations for Long-Context Language Models。arXiv 链接即将添加。本节介绍其方法和已存档的结果。

在论文中,GPT-5.1、Rednote preview 和 DeepSeek V4.1 Flash 是 API 读取器模型。每组配对的基线与 TOMC 对比都使用同一个读取器。Codex 和 Claude Code 是插件试验中的助手宿主,分别使用 gpt-6.1-sol 和 Claude Opus 5.5;这些试验与论文基准测试相互独立。读取器模型与助手宿主

TOMC 的计算内容

长对话中,变化的事实、较早的副本和证据散落在各条消息中。调用 LLM 前,TOMC 会针对当前问题准备记忆。它会计算状态、关系或计数记录,并在 token 预算内将这些记录与选定的源文本结合。

基于 CPU 构建 · 无需训练或辅助神经模型 · 纯文本输出 · 研究预览版

TOMC 选择证据、计算任务记录,并将其与供同一 API 读取器使用的源文本结合。

论文中的方法概述。演示使用小型参考解析器;方法文档说明了它与基准实现的区别。

假设一段历史包含以下更新:

drink = tea
backup_drink copies drink
drink = decaf tea

当前值为 drink = decaf tea,而 backup_drink = tea 保留了复制时的值。TOMC 按顺序执行这些操作,并将结果记录关联到对应的源行。

在 Python 中运行此示例
from tomc import compile_memory

result = compile_memory(
    messages="drink = tea\nbackup_drink copies drink\ndrink = decaf tea",
    query="What are the current drink and backup_drink values?",
    token_budget=128,
    strategy="tomc",
)
print(result.compiled_memory)
print(result.ledger)  # records and their sources
drink 变为 decaf tea 时,backup_drink 仍保留 tea。源标签会使这个小示例的估算 token 数从 31 增至 36。

运行 python examples/snapshot.py 可查看完整示例,其中还会追踪 seat。此示例演示复制语义。源标签会增加 token 数;此示例不衡量回答质量。

关系和计数也遵循同样的思路:在将记忆交给读取器之前,先计算问题所需的操作。对于询问原因、引述或状态记录无法表达的其他细节的问题,应保留源文本的措辞。

同一读取器:基线记忆与 TOMC 记忆

BEAM 研究使用 GPT-5.1、Rednote preview 和 DeepSeek 4.1 Flash,在 100K、500K、1M 和 10M token 的历史记录上回答问题。每个读取器使用 TOMC 记忆或六种基线记忆配置之一作答。

  • **质量:**在 500K、1M 和 10M 下的全部 54 组读取器 × 基线 × 长度比较中,以及全部 18 组整体比较中,TOMC 的平均分均更高。
  • **读取器输入:**在 100K–10M 范围内,整体输入量比 LIGHT 低 36.57%,比分层 LLMLingua-2 低 37.38%;计算平均值时,各读取器的变化权重相同。其他一些基线的输入量低于 TOMC。
  • **基于 CPU 构建:**在六次重放中,测得的 TOMC 阶段平均耗时为 4.21 s/次调用,CUDA 分配量为 0 GiB,进程 RSS 峰值为 3.75 GiB。在记录的阶段中,每次调用的构建时间比 BRIEF-Pro 短 11.4 倍,比 LongLLMLingua 短 17.1 倍。这些是阶段耗时比,不包括读取器推理。

在每一组配对中,同一读取器会使用由指定基线或 TOMC 构建的记忆回答匹配的问题,并在配对内采用匹配的评分方式。

不同历史长度下的 BEAM 回答质量:三种读取器、六种基线和不含编译的 TOMC 在整体、100K、500K、1M 和 10M token 下的基线 / TOMC 分数对及相对变化。 整体和 10M 下 TOMC 相对于各基线的读取器输入量变化。
表格文本 | Baseline | GPT-5.1 | Δ (%) | Rednote preview | Δ (%) | DeepSeek 4.1 Flash | Δ (%) | Mean Δ (%) | |---|---:|:---|---:|:---|---:|:---|:---| | **Overall (all lengths)** | | | | | | | | | LLMLingua-2-D (2024) | 34.60 / **55.75** | ↑ 61.1 | 31.23 / **50.75** | ↑ 62.5 | 29.90 / **53.48** | ↑ 78.8 | ↑ 67.5 | | LongLLMLingua (2024) | 32.77 / **51.68** | ↑ 57.7 | 32.75 / **47.73** | ↑ 45.7 | 36.32 / **53.45** | ↑ 47.2 | ↑ 50.2 | | BRIEF-Pro (2026) | 34.85 / **51.41** | ↑ 47.5 | 33.87 / **48.04** | ↑ 41.9 | 37.51 / **53.29** | ↑ 42.1 | ↑ 43.8 | | LLMLingua-2-H (2024) | 40.98 / **56.25** | ↑ 37.3 | 36.50 / **51.76** | ↑ 41.8 | 33.36 / **53.08** | ↑ 59.1 | ↑ 46.1 | | BEAM-RAG (2026) | 47.94 / **54.90** | ↑ 14.5 | 48.10 / **51.90** | ↑ 7.9 | 47.48 / **53.26** | ↑ 12.2 | ↑ 11.5 | | LIGHT (2026) | 48.65 / **55.32** | ↑ 13.7 | 47.32 / **51.63** | ↑ 9.1 | 51.44 / **53.16** | ↑ 3.3 | ↑ 8.7 | | TOMC w/o compilation | 55.00 / **56.20** | ↑ 2.2 | **51.25** / 50.34 | ↓ 1.8 | 49.74 / **52.74** | ↑ 6.0 | ↑ 2.1 | | **100K tokens** | | | | | | | | | LLMLingua-2-D (2024) | 51.70 / **62.78** | ↑ 21.4 | 45.03 / **56.24** | ↑ 24.9 | 44.73 / **58.22** | ↑ 30.1 | ↑ 25.5 | | LongLLMLingua (2024) | 39.23 / **57.29** | ↑ 46.0 | 35.36 / **50.53** | ↑ 42.9 | 43.55 / **57.63** | ↑ 32.3 | ↑ 40.4 | | BRIEF-Pro (2026) | 36.67 / **55.90** | ↑ 52.5 | 34.54 / **52.18** | ↑ 51.1 | 44.43 / **57.63** | ↑ 29.7 | ↑ 44.4 | | LLMLingua-2-H (2024) | 53.37 / **63.58** | ↑ 19.1 | 45.19 / **58.53** | ↑ 29.5 | 45.05 / **56.65** | ↑ 25.7 | ↑ 24.8 | | BEAM-RAG (2026) | 53.58 / **62.26** | ↑ 16.2 | 53.48 / **58.25** | ↑ 8.9 | 51.57 / **58.21** | ↑ 12.9 | ↑ 12.7 | | LIGHT (2026) | 60.50 / **62.26** | ↑ 2.9 | 57.05 / **58.25** | ↑ 2.1 | **61.01** / 58.21 | ↓ 4.6 | ↑ 0.1 | | TOMC w/o compilation | 57.89 / **58.45** | ↑ 1.0 | **55.78** / 52.78 | ↓ 5.4 | 53.05 / **53.19** | ↑ 0.3 | ↓ 1.4 | | **500K tokens** | | | | | | | | | LLMLingua-2-D (2024) | 36.68 / **58.99** | ↑ 60.8 | 33.96 / **56.71** | ↑ 67.0 | 30.49 / **59.22** | ↑ 94.3 | ↑ 74.0 | | LongLLMLingua (2024) | 34.36 / **56.82** | ↑ 65.4 | 34.86 / **54.54** | ↑ 56.5 | 36.54 / **59.43** | ↑ 62.6 | ↑ 61.5 | | BRIEF-Pro (2026) | 37.42 / **55.18** | ↑ 47.5 | 35.71 / **54.00** | ↑ 51.2 | 39.49 / **59.43** | ↑ 50.5 | ↑ 49.7 | | LLMLingua-2-H (2024) | 37.31 / **59.00** | ↑ 58.1 | 37.13 / **57.94** | ↑ 56.0 | 33.53 / **59.58** | ↑ 77.7 | ↑ 63.9 | | BEAM-RAG (2026) | 53.09 / **59.10** | ↑ 11.3 | 52.88 / **56.04** | ↑ 6.0 | 53.08 / **59.46** | ↑ 12.0 | ↑ 9.8 | | LIGHT (2026) | 49.48 / **59.60** | ↑ 20.4 | 52.38 / **56.04** | ↑ 7.0 | 54.78 / **59.46** | ↑ 8.5 | ↑ 12.0 | | TOMC w/o compilation | 56.13 / **57.47** | ↑ 2.4 | **50.99** / 50.85 | ↓ 0.3 | 50.25 / **56.02** | ↑ 11.5 | ↑ 4.5 | | **1M tokens** | | | | | | | | | LLMLingua-2-D (2024) | 24.67 / **58.69** | ↑ 137.9 | 23.90 / **50.54** | ↑ 111.5 | 24.56 / **54.47** | ↑ 121.7 | ↑ 123.7 | | LongLLMLingua (2024) | 32.66 / **50.91** | ↑ 55.9 | 32.81 / **45.75** | ↑ 39.4 | 36.94 / **54.47** | ↑ 47.5 | ↑ 47.6 | | BRIEF-Pro (2026) | 35.10 / **53.03** | ↑ 51.1 | 35.66 / **46.88** | ↑ 31.5 | 36.58 / **54.47** | ↑ 48.9 | ↑ 43.8 | | LLMLingua-2-H (2024) | 43.34 / **58.78** | ↑ 35.6 | 36.01 / **51.97** | ↑ 44.3 | 32.74 / **55.10** | ↑ 68.3 | ↑ 49.4 | | BEAM-RAG (2026) | 50.75 / **56.38** | ↑ 11.1 | 48.51 / **53.40** | ↑ 10.1 | 50.05 / **53.06** | ↑ 6.0 | ↑ 9.1 | | LIGHT (2026) | 51.25 / **56.59** | ↑ 10.4 | 45.83 / **53.40** | ↑ 16.5 | 51.15 / **53.06** | ↑ 3.7 | ↑ 10.2 | | TOMC w/o compilation | 50.96 / **52.68** | ↑ 3.4 | 46.92 / **47.34** | ↑ 0.9 | 45.90 / **49.02** | ↑ 6.8 | ↑ 3.7 | | **10M tokens** | | | | | | | | | LLMLingua-2-D (2024) | 25.36 / **42.57** | ↑ 67.8 | 22.05 / **39.54** | ↑ 79.3 | 20.35 / **42.20** | ↑ 107.4 | ↑ 84.8 | | LongLLMLingua (2024) | 24.86 / **41.74** | ↑ 67.9 | 27.97 / **40.10** | ↑ 43.4 | 28.25 / **42.28** | ↑ 49.7 | ↑ 53.7 | | BRIEF-Pro (2026) | 30.25 / **41.59** | ↑ 37.5 | 29.60 / **39.13** | ↑ 32.2 | 29.52 / **41.63** | ↑ 41.0 | ↑ 36.9 | | LLMLingua-2-H (2024) | 29.88 / **43.65** | ↑ 46.1 | 27.66 / **38.66** | ↑ 39.8 | 22.56 / **41.58** | ↑ 84.3 | ↑ 56.7 | | BEAM-RAG (2026) | 34.39 / **41.89** | ↑ 21.8 | 37.46 / **39.83** | ↑ 6.3 | 35.20 / **42.29** | ↑ 20.1 | ↑ 16.1 | | LIGHT (2026) | 33.38 / **42.87** | ↑ 28.4 | 34.02 / **38.81** | ↑ 14.1 | 38.76 / **41.86** | ↑ 8.0 | ↑ 16.8 |
基线总体输入变化10M 输入变化
LLMLingua-2-D(2024)-10.95%-43.81%
LongLLMLingua(2024)-11.75%-19.03%
BRIEF-Pro(2026)+280.37%+297.87%
LLMLingua-2-H(2024)-37.38%-45.65%
BEAM-RAG(2026)+8.79%-3.27%
LIGHT(2026)-36.57%-41.99%

D/H 分别表示直接式/分层式 LLMLingua-2。总体结果汇总了每个阅读器在所有长度下的有效配对;各行的配对集合和评分协议各不相同,因此请在每个单元格内进行比较。平均分较高并不能证明差异显著。输入变化是相对于基线的 TOMC:负值表示 token 更少。直接式 LLMLingua-2 的 1M 运行产生了 200 条空记忆;这些分数予以保留,但输入量减少不视为成功压缩。

10M 数据于 2026-10-10 添加:来自 10 个会话的 200 个 BEAM 问题,3,600 对中有 3,596 对有效,使用匿名且位置平衡的成对评分标准进行评分。LLMLingua-2 的两个 10M 行均使用了修复后的批次,其中记忆非空。无编译行涵盖 100K–1M;10M 消融实验仍在运行。10M 数据和评分。

BEAM 长历史比较、阅读器特定能力分数和编译消融实验。

顶部的比较按阅读器汇总有效的 500K/1M 问题,然后计算各阅读器相对变化的平均值。能力图使用共同的有效问题,并对各长度进行等权平均。所有长度、配对数和协议。

编译后的记录带来了什么? 一项单独的 BEAM 消融实验移除了记录及其附带指令,同时保留源文本和上游路由。三种阅读器的时间推理分数在启用编译时均较高,但编译的总体影响因阅读器而异。这项比较针对启用和未启用编译的情况,与上表的基线比较相互独立。

基于 RULER 的诊断检查状态跟踪,以及 NIAH 和 QA2 所需的源文本。修复后的 NIAH 源移除配对得分为 87.28 / 82.26 平均 F1,移除后输入减少约 43%–44%。该结果来自单独的配对重跑;其分数不会与历史 Query 结果合并。任务结果和局限。

论文图 3:RULER 任务比较和独立组件移除实验,分别展示质量和阅读器输入节省情况。

论文中的图 3。面板 a、b 以 Query 选择作为输入参照;面板 c、d 使用完整 TOMC/状态路由,并以 † 标记修复后的 NIAH 配对。VT 是状态路由诊断。更大的 2×2 审阅版式 · 数值结果。

论文的构建成本表 3保留了实测的阶段耗时以及 CPU/GPU/RAM 的统计范围;不包括阅读器推理。图表来源。

证据快照已与 2026-09-28 的手稿提交 7399657 同步。上述分数由基准适配器生成。演示版使用更精简的解析器和逐行 BM25;其中的 rag 与 BEAM-RAG 不同,其 hybrid 路由器也不同于历史 Hybrid-RAG 对照。

选择策略
策略发送给读取器的记忆适用场景
raw完整输入,即使超出预算未压缩的参考内容
head / tail开头或结尾的文本基于位置的控制
rag按 BM25 排序的源文本行词法查找
tomc仅记录机制;找不到记录时执行检索检查支持的状态、关系或计数操作
tomc_raw(编译器默认值)记录加上选定的源文本需要计算记录和原始措辞的任务
hybrid根据固定任务规则选择的表示形式混合任务和引文请求
字符串匹配和输入限制

参考解析器可识别 key = value、B copies A 和 x -[rel]-> y 等格式。证据选择和路由也使用固定的词法规则。改述、含糊的名称、隐式更新和不熟悉的格式,可能导致证据遗漏或路由不合适。

对于结构化状态,请使用文档所述语法并检查源链接。对于普通文本,请使用检索或保留源文本的路由。这些选项能保留有用证据,但不能保证预算内包含所有相关细节。支持的操作 · 已知限制。

Token 数量

默认情况下,演示会报告词法估算值。其记忆计数不包含任务、聊天框架、读取器输出和检查器。可选的 tiktoken:cl100k_base 会按该编码计数;服务商的计费结果可能不同。retention_ratio 表示输出/输入,compression_ratio 表示输入/输出。任何显示的价格均来自用户提供的费率。默认演示不会调用读取器 API。

在 Python 中使用

对于 Python 应用,请在现有读取器调用前调用 prepare_context(history, task)。

你的读取器模型保持不变。 TOMC 会返回文本,你可以将其用于任何基于文本的大模型 API,或复制到聊天界面中。内置连接器支持兼容 chat-completions 的 API;其他服务商则使用你自己的客户端和消息格式。构建记忆不需要模型权重或 API 密钥。答案生成仍照常使用你选择的模型。

History + current task → TOMC on CPU → prepared context → your existing LLM API

核心包要求 Python 3.10+,且没有运行时依赖。在已激活的环境中,从检出目录运行 python -m pip install -e .:

from tomc import prepare_context

context = prepare_context(
    "The workshop now has 28 attendees. Room B is available but not booked.",
    "What should we do next?",
)
print(context.prompt)  # paste into a chat interface
# Or pass context.messages to your existing chat-completions client.
# For other APIs, use context.prompt or map the messages to their input format.
检查结果并扩展演示
python -m pip install -e '.[demo,dev,mcp]'
python -m pytest -q
python benchmarks/reproduce/current.py
python benchmarks/reproduce/results.py
python -m mkdocs build --strict

当前结果脚本会验证快照哈希和汇总算术。历史结果脚本会根据对话汇总重建较早的四读取器统计数据。可复现性介绍了各批次可用的内容。

若要运行你自己的读取器,请将 result.reader_messages(query) 传递给你的客户端,或使用可选的 API 连接器。LLMLingua 适配器需单独安装。CONTRIBUTING.md介绍了检查方法,以及如何报告编译器错误处理的输入。

引用与许可

TOMC 的源代码和原创合成示例可在 MIT License 下免费使用,包括商业使用、修改、再分发以及集成到其他项目中。软件副本或其重要部分必须保留版权和许可声明。欢迎反馈、贡献和合作。

如果 TOMC 对您的研究有所帮助,请引用这篇论文。我们鼓励引用,但引用并非额外的许可条件。该论文是 Zipeng Wu、Yanjun Zhao、Fabian Spill 和 James Andrews 撰写的预印本;arXiv 编号将在可用时补充。CITATION.cff 为 GitHub 的 Cite this repository 按钮提供相同的条目。如需反馈和合作,请联系 Zipeng Wu([email protected])。

@misc{wu2026tomc,
  title  = {Task-Oriented Memory Compilation: Executable State Representations for Long-Context Language Models},
  author = {Wu, Zipeng and Zhao, Yanjun and Spill, Fabian and Andrews, James},
  year   = {2026},
  note   = {Preprint},
  url    = {https://github.com/ZipengWu365/TOMC}
}

示例均为合成数据。此仓库仅分发数值基准汇总数据,不包含问题文本、读者答案或私有 API 载荷。数据来源 · 数据与许可。

面向维护者

维护者草稿:发布文案 · 发布计划 · 发布检查清单。

Hugging Face 部署设置。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。