mcpField
H
hmem — Humanlike Memory for AI Agents

hmem — Humanlike Memory for AI Agents

本地服务
github.com记忆与知识2414 周前更新

关于 hmem — Humanlike Memory for AI Agents

hmem 是面向 AI Agent 的持久化记忆框架,基于 SQLite 实现五级分层记忆,并按需加载内容,以减少 token 消耗。适合需要跨会话、跨设备和跨 AI 提供商保留项目上下文的开发者。

主要功能

  1. 01五级分层懒加载记忆
  2. 02基于 SQLite 的持久化存储
  3. 03自动记录会话并关联到项目
  4. 04后台 Haiku 检查点提取经验与决策
  5. 05技能文件按需加载
  6. 06提供 TypeScript SDK

适用场景

  1. 01新会话开始时快速加载项目简报
  2. 02跨设备与不同 AI 工具共享项目记忆
  3. 03搜索过去的错误和决策记录

MCP 相关

hmem 提供两个 MCP 服务:日常使用的 hmem(13 个工具,用于读写、搜索和项目管理)以及用于批量维护的 hmem-curate(11 个工具)。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"bumblebiber-hmem": {
"command": "npx",
"args": [
"-y",
"hmem-mcp"
],
"env": {
"HMEM_STORAGE_DIR": "<HMEM_STORAGE_DIR>"
}
}
}
}
启动命令npx -y hmem-mcp
需要配置的环境变量
HMEM_STORAGE_DIRDirectory where .hmem SQLite databases are stored. Defaults to ~/.hmem/

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmhmem-mcp1.6.7

工具

还没有获取到工具列表

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

详细介绍

hmem — 面向 AI Agent 的类人记忆

mcpindex

你的 AI 会忘掉会话之间的一切。hmem 可以解决这个问题。

只需调用一次 load_project()。约 3000 个 token。你的 Agent 就能了解项目中所有重要信息——过去的每个错误、每项决策、每个待办任务——跨会话、跨设备、跨 AI 提供商。无需为每次对话单独设置。也不用“让我重新阅读代码库”。它就是会记住。

AI Agent? 跳过此文件。请阅读 AGENT_SETUP.md——这份文档是为你而非人类编写的。

命名说明(v8.0): 这个软件包曾短暂以 its-over-9k(1.x)的名称发布。现在它又叫 hmem——纯粹的记忆框架,不包含其他内容。its-over-9k 这个名称现在属于一个独立项目:o9k token-efficiency meta-framework,它会组合此类技能和插件。相关项目:TIM——hmem 的下一代继任者(超图记忆、CRDT 同步)。


这是什么

hmem 不是笔记插件,而是面向 AI Agent 的记忆框架——一套完整的基础设施层,用于持久、可移植且节省 token 的知识,让知识能够跨越会话边界、设备切换和提供商变更。

四大核心保障:

支柱含义
Token 效率5 级按需加载——读多少,就付多少,从不多付
可移植性在 Claude、Gemini、GPT、本地模型和任何 MCP 客户端之间共享相同的记忆
高效存储分层树形结构——上下文随深度扩展,而非平铺追加
不浪费上下文自动捕获会话内容 + 项目简报 = 无需重新阅读

问题所在

每个 AI 会话都从零开始。你的 Agent 会问相同的问题、犯相同的错误、与上周的决策自相矛盾,还会浪费 50k 个 token 加载昨天已经处理过的上下文。

你试过各种变通办法——CLAUDE.md 文件、自定义提示词、手动粘贴上下文。但这些办法无法扩展。你有 10 个项目,在 3 台设备之间切换,还会使用不同的 AI 工具。

解决方案

You:    "Load project"
Agent:  [calls load_project("P0048") — 3000 tokens]
Agent:  "v1.2.9, TypeScript/SQLite/npm. 3 open bugs, 8 roadmap items.
         Last session: rebrand complete, rename_id bug fixed (89 changes).
         Next: O-Entry Auto-Purge. What's the focus today?"

就这么简单。只需 3000 个 token,就能获得完整的项目简报。Agent 会了解技术栈、架构、未解决的 Bug、近期决策,以及你上次停下的位置——即使昨天的“你”是在另一台机器上使用另一个 AI 的你。


工作原理

Level 1  ──  One-line summary          (always loaded — ~5k tokens for 300+ entries)
  Level 2  ──  Paragraph detail        (loaded on demand)
     Level 3  ──  Full context          (loaded on demand)
      Level 4  ──  Extended detail      (loaded on demand)
        Level 5  ──  Raw/verbatim data  (loaded on demand)

会话开始时,Agent 会加载第 1 级摘要——每条记忆占一行。需要细节时,它会逐层深入。300 条记忆只需 5k 个 token 即可浏览概览。单个项目约需 3000 个 token。

不会丢弃任何摘要内容。 第 1 级是压缩视图,但第 2 至第 5 级保留了完整的原始文本,逐字不差,并可按需访问。


框架功能

自动会话记忆

每次对话都会自动记录。不需要“保存你的工作”之类的提示,也不需要手动创建检查点。

You type  →  Agent responds  →  Stop hook fires  →  Exchange saved to O-entry
                                                   →  Linked to active project
                                                   →  Haiku auto-titles the session

在会话中途切换项目?O 条目也会随之切换。在另一台设备上开始新会话?下一个 Agent 会看到所有设备上的每次交流——对话永远不会消失。

Haiku 后台检查点

每经过 N 次交流(可配置,默认值为 5),一个 Haiku 子 Agent 就会在后台启动。它会阅读近期对话,提取经验教训、遇到的错误和作出的决策,然后将这些内容写入长期记忆——并拥有完整的 MCP 工具访问权限。主 Agent 不会受到任何打扰。

检查点还会在项目中写入一条交接说明:“已完成以下工作,以下工作正在进行,下一步是……”。下一个 Agent 无论使用哪台设备、哪个提供商,都能从你上次停下的位置准确接续。

基于项目,而非基于会话

会话无关紧要。项目才是一切。

  • O-条目关联到当前活动项目,而非会话
  • 检查点计数器统计项目交互次数,而非会话消息数
  • load_project 会显示近期对话及其完整上下文,涵盖所有设备
技能系统

hmem 附带完整的技能层——结构化行为文件,Agent 可按需加载。技能定义 Agent 应如何执行某项操作(调试、编写记忆、整理条目、处理会话开始),与记忆和提示词相互独立。

npx hmem update-skills    # Pull latest skills to your AI tool's skill directory

技能会独立进行版本管理和更新。无需重新安装,Agent 就能变得更智能。默认附带 21 项技能:

技能触发时机……
hmem-session-start每次会话开始时——加载项目,并显示待处理的 git 工作、未完成任务和路由错误的 O-条目
hmem-using-hmem会话开始时加载的元技能;定义强制执行的记忆习惯
hmem-read从长期记忆中读取内容(搜索、前缀筛选、find_related、跨项目读取)
hmem-write写入 hmem 时——选择前缀和树形位置、添加标签、检测重复项
hmem-search用户提到某件事却未提供 ID 时(“之前遇到的那个 bug”“上周的事”)
hmem-new-project创建 P-条目时——处理架构、章节和 O-条目关联
hmem-new-error按严格的 5 级框架创建 E-条目时
hmem-activate在会话中途切换活动项目,或修复路由错误的交互时
hmem-contextload_project 输出不足时,加载特定上下文
hmem-recall调度 Haiku 子 Agent 搜索 hmem 时
hmem-dispatch为任何搜索、查找或计算调度独立子 Agent 时
hmem-curate清理 .hmem 文件时(标记为过时、修正标题、合并重复项)
hmem-migrate-o将 O-条目迁移到与项目绑定的 5 级结构时
hmem-consolidate将会话检查点摘要合并为一份最终 O-条目摘要时
hmem-wipe执行 /clear 前的准备——保存高价值知识、更新 Next Steps
hmem-config查看或更改记忆设置、钩子、同步和检查点时
hmem-setup首次为 Claude Code / Gemini CLI / OpenCode 安装 hmem 时
hmem-sync-setup设置 hmem-sync 以实现跨设备同步时
hmem-update更新流程——运行 npm update -g、同步技能、应用迁移
hmem-release发布 hmem 前的检查清单
hmem-subagent为 hmem-dispatch 调度的子 Agent 提供模板
公司记忆

除了个人记忆,Agent 还可以维护一个共享的公司存储库——独立的 company.hmem,供多个 Agent 和团队成员读取。个人记忆和公司记忆可以共存;Agent 会同时查询二者。

import { openCompanyMemory } from 'hmem';
const store = openCompanyMemory('/path/to/project');
可嵌入的 SDK

hmem 附带完整文档的 TypeScript SDK——可将 HmemStore 直接导入你自己的 Agent、工具或自动化流水线:

import {
  HmemStore, openCompanyMemory, resolveHmemPath,
  loadHmemConfig, saveHmemConfig, DEFAULT_CONFIG, DEFAULT_PREFIXES, formatPrefixList,
  searchMemory,
} from 'hmem';
import type {
  AgentRole, MemoryEntry, MemoryNode, HmemConfig,
  SearchResult, SearchOptions, SearchScope,
} from 'hmem';

const store = new HmemStore('/path/to/agent.hmem');
const results = searchMemory('/path/to/project', 'auth token bug', { maxResults: 5 });

MCP 工具

hmem 附带两个 MCP 服务:

  • hmem(日常使用,13 个工具)——读取、写入、搜索和项目生命周期管理。
  • hmem-curate(维护,11 个工具)——批量编辑、架构迁移、备份和恢复。仅在整理时启用。
hmem — 日常使用的服务(13)
工具功能
read_memory5 级惰性读取——按 ID、前缀、搜索、时间或标签读取
write_memory创建包含标题、正文、标签和链接的新条目
append_memory向现有条目添加子节点
update_memory更新字段:标题、正文、标签、irrelevant、链接
search_memory使用 FTS5 全文搜索,并标明子节点来源
find_related根据标签重合度查找上下文相关的条目
load_project激活项目 + 获取完整简报 + 最近的会话
read_project读取项目但不激活(用于比较或参考)
create_project按标准架构创建新的项目条目
list_projects列出所有项目及其状态摘要
flush_context将当前会话上下文保存到长期记忆
move_nodes将子树移动到其他父节点下(也存在于整理服务中)
set_active_device注册设备并在设备间切换
hmem-curate — 维护服务(11)
工具功能
memory_stats按前缀统计数量、总 token 数、收藏项、主题标签和陈旧条目列表
memory_health查找失效链接、孤立标签、空条目和断开的链
export_memory将整个 .hmem 导出为可移植的 JSON 快照
import_memory将 JSON 快照导入 .hmem(破坏性操作)
update_many批量更新一组条目(irrelevant、标签、正文等)
tag_bulk在多个条目中添加或移除标签
tag_rename在所有条目中全局重命名标签
move_memory将整个条目移动到新的 ID 槽位
move_nodes将子树移动到其他父节点下(也存在于主服务中)
rename_id重命名条目的 ID;重写所有指向该条目的链接
reset_memory_cache使内存中的 L1 缓存失效(在直接写入 SQL 后使用)

日常使用的 hmem 服务由 hmem init 自动注册。hmem-curate 默认不启用,因为其中的工具具有破坏性——需要整理时再注册:

npx hmem mcp-add-curate          # adds the curate server to Claude Code (user scope)

然后仅在整理会话期间通过 /mcp 启用它。其他 MCP 客户端请参阅手动设置。


CLI 命令

执行 npm install -g hmem-mcp 后,hmem 二进制文件会加入 PATH。

面向用户
命令用途
hmem init为 AI 工具(Claude Code、OpenCode、Gemini CLI、Cursor、Windsurf、Cline)提供交互式安装程序。标志:--global / --local / --tools <list> / --dir <path> / --no-example
hmem update-skills将捆绑的技能文件复制/同步到检测到的 AI 工具(在 npm install 时自动调用)
hmem mcp-add-curate在 Claude Code 中注册 hmem-curate MCP 服务(可选;整理时通过 /mcp 启用)
hmem doctor检测宿主配置中过时或已弃用的 hmem MCP 条目
hmem stats记忆统计 + 按项目估算 token 数 + 🔴 4k 阈值标记
hmem setup-hook将 SessionStart 钩子重新添加到 Claude Code 设置中(如果已移除)
hmem version显示版本
钩子驱动程序(由 AI 工具调用,不要手动调用)
命令接入位置功能
hmem hook-startupUserPromptSubmit注入首条消息的上下文(记忆概览、项目列表、同步状态)。定期提醒创建检查点。从 stdin 读取 JSON
hmem log-exchangeStop(同步)将最新交互追加到当前活动的 O 条目
hmem checkpointStop(异步)在后台调用 Haiku/DeepSeek——提取经验、错误和决策;更新项目交接备注
hmem context-injectSessionStart[clear]在 /clear 后注入项目 + 规则上下文
hmem deactivateSessionStart[clear]清除当前会话的活动项目
hmem statuslinestatusLine渲染 Claude Code 状态栏(设备 · 活动项目 · 检查点计数)。从 stdin 读取 JSON
整理
命令用途
hmem delete <ID>永久删除条目(仅限整理者,绝不会同步)
hmem migrate-o-entries将 O 条目迁移到当前项目绑定的架构
hmem summarize-session <id>为会话生成摘要节点
同步(需要安装 hmem-sync)
命令用途
hmem sync push将本地记忆推送到同步服务器
hmem sync pull从同步服务器拉取最新记忆
hmem sync status显示服务器 URL · 身份验证状态 · 上次同步时间戳
hmem sync setup [--join]交互式设置密码短语和设备
备份 / 迁移
命令用途
hmem export-staging <hmem> <json>将 .hmem SQLite 导出为可移植的 JSON 暂存文件
hmem import-staging <json> <hmem>将 JSON 暂存文件重新导入 .hmem

hmem serve 会直接启动 MCP stdio 服务——你的 AI 工具会自动启动它;你只需在调试时手动运行。


记忆类别

默认前缀(可通过 hmem.config.json 中的 prefixes 配置):

前缀类别示例
P项目hmem | Active | TS/SQLite/npm
L经验教训HMEM_AGENT_ID must be set in hooks — resolveHmemPath falls back to wrong DB
T任务T0033 hmem-sync SaaS monetization — recurring monthly tier design
E错误158 spurious O-entries created when Haiku MCP lacked HMEM_NO_SESSION guard
D决策Project-based O-entries over session-based — sessions are meaningless
M里程碑v1.0.0 — package renamed to hmem, npm rebrand complete
S技能Skill: TypeScript debugging with source maps
N导航器高层导航条目(某个主题的目录)
H人员User Skill: TypeScript 9, Architecture 9, React 3
R规则Max one npm publish per day — batch changes
O原始记录自动记录的对话历史(每次交流、每台设备)
I基础设施Strato Server | Active | Linux | Ubuntu 22.04
C约定Tag scheme: lowercase, prefer existing tags before inventing

在 hmem.config.json 的 prefixes 下列出自定义前缀(例如,A 表示应用,F 表示函数参考),即可添加这些前缀——它们会自动出现在 read_memory({ prefix: "X" }) 筛选条件中。


快速开始

1. 安装
npm install -g hmem-mcp
2. 运行交互式安装程序
npx hmem init

它会检测你的 AI 工具、创建记忆目录、配置 MCP,并安装所有钩子:

钩子时机作用
UserPromptSubmit每条消息第一条消息:加载记忆概览。每第 N 条:提醒创建检查点
Stop(同步)每次响应将交流记录到当前 O 条目
Stop(异步)每次响应由 Haiku 自动为未命名会话添加标题
SessionStart[clear]执行 /clear 后重新注入项目上下文
3. 验证

重启 AI 工具,然后:

read_memory()

空响应 = 正常工作(首次运行)。错误 = 检查故障排除部分。

手动设置
Claude Code — 编辑 ~/.claude/.mcp.json
{
  "mcpServers": {
    "hmem": {
      "command": "/absolute/path/to/node",
      "args": ["/absolute/path/to/hmem/dist/mcp-server.js"],
      "env": {
        "HMEM_PROJECT_DIR": "/home/yourname/.hmem",
        "HMEM_AGENT_ID": "DEVELOPER"
      }
    }
  }
}

查找路径:

echo "Node: $(which node)"
echo "Server: $(npm root -g)/hmem/dist/mcp-server.js"
Open Code — 编辑 ~/.config/opencode/opencode.json
{
  "mcp": {
    "hmem": {
      "type": "local",
      "command": ["/absolute/path/to/node", "/absolute/path/to/hmem/dist/mcp-server.js"],
      "environment": { "HMEM_PROJECT_DIR": "/home/yourname/.hmem" },
      "enabled": true
    }
  }
}
Cursor / Windsurf / Cline

编辑 ~/.cursor/mcp.json、~/.codeium/windsurf/mcp_config.json 或 .vscode/mcp.json:

{
  "mcpServers": {
    "hmem": {
      "command": "/absolute/path/to/node",
      "args": ["/absolute/path/to/hmem/dist/mcp-server.js"],
      "env": { "HMEM_PROJECT_DIR": "/home/yourname/.hmem" }
    }
  }
}

配置

HMEM_PROJECT_DIR 中的 hmem.config.json(或 Agents/NAME/ 中):

{
  "memory": {
    "maxCharsPerLevel": [200, 2500, 10000, 25000, 50000],
    "maxDepth": 5,
    "checkpointMode": "auto",
    "checkpointInterval": 5,
    "recentOEntries": 10,
    "maxTitleChars": 50,
    "prefixes": { "X": "Custom" }
  },
  "sync": {
    "serverUrl": "https://your-server/hmem-sync",
    "userId": "yourname",
    "salt": "...",
    "token": "..."
  }
}
键默认值作用
checkpointMode"remind""auto" = 后台 Agent 写入 L/D/E。"remind" = 向主 Agent 显示提示
checkpointInterval5检查点之间的交互轮数。0 = 禁用
checkpointProvider"anthropic""anthropic" 或 "openai"(任何兼容 OpenAI 的服务:DeepSeek、Groq、……)
checkpointModel"claude-haiku-4-5-20251001"已配置服务提供商的模型名称
checkpointBaseUrl—兼容 OpenAI 的基础 URL(例如 https://api.deepseek.com/v1)
checkpointApiKeyEnv服务提供商默认值保存 API 密钥的环境变量。默认值:ANTHROPIC_API_KEY 或 OPENAI_API_KEY
recentOEntries10在 load_project 中显示的近期会话数
prefixes内置添加自定义条目类型

所有键都是可选的。缺少的键将使用默认值。

各运行环境的检查点设置

自动检查点 Agent 会在每 N 次交互后于后台运行。它需要调用大模型,有三种自动选择的方式:

  1. 环境变量中有 API 密钥(任何运行环境)→ 直接调用服务提供商 API。请在 hmem.config.json 中配置 checkpointProvider、checkpointModel 和 checkpointApiKeyEnv。适用于 Pi、Hermes、OpenCode 和 Claude Code。
  2. 没有 API 密钥,但 PATH 中有 claude CLI → 使用子进程回退方案(claude -p)。Claude Code / Claude Max 用户无需配置。
  3. 两者都没有 → 检查点会失败,并提示配置错误。

推荐的低成本设置(DeepSeek,约比 Haiku 便宜 10 倍):

{
  "memory": {
    "checkpointMode": "auto",
    "checkpointProvider": "openai",
    "checkpointModel": "deepseek-chat",
    "checkpointBaseUrl": "https://api.deepseek.com/v1",
    "checkpointApiKeyEnv": "DEEPSEEK_API_KEY"
  }
}

然后在你的 shell 配置文件中执行 export DEEPSEEK_API_KEY=sk-...。适用于任何运行环境。

Claude Code / Claude Max(无需配置): 无需设置服务提供商选项——子进程回退方案会使用你现有的 claude 登录信息。

各运行环境的交互日志记录: Claude Code 使用 Stop hooks(由 npx hmem init 安装)。Pi 使用内置扩展(src/extensions/pi-hmem.ts)。Hermes 需要 hermes-hmem 插件(参见 plugins/hermes-hmem/README.md)。OpenCode 使用与 Claude Code 相同的 hook 系统。

⚠ Pi 用户: 基于 Hook 的交互日志记录目前在 Pi 运行时中无法正常工作。交互不会自动保存到 O 条目。在此问题解决之前,可通过 hmem checkpoint 手动创建检查点。


跨设备同步

使用零知识 AES-256-GCM 加密,在所有设备间同步记忆。

npm install -g hmem-sync
npx hmem-sync connect     # Interactive wizard — first device creates, others join

将 HMEM_SYNC_PASSPHRASE 添加到 MCP 配置中,即可在每次读写时自动同步。

多服务冗余
{
  "sync": [
    { "name": "primary", "serverUrl": "https://server1/hmem-sync", "userId": "me", "salt": "...", "token": "..." },
    { "name": "backup",  "serverUrl": "https://server2/hmem-sync", "userId": "me", "salt": "...", "token": "..." }
  ]
}
公告

向所有设备上已同步的 Agent 广播:

npx hmem-sync announce --message "Server URL changing — update your config!"

Windows

在安装了 Git for Windows 的 Windows 系统上,Claude Code 默认会通过 Git Bash 执行 hook 和 statusLine 命令。Git Bash 的 MSYS2 运行时在启动时会间歇性崩溃,导致命令尚未运行就被终止。

修复方法:在 ~/.claude/settings.json 的每个 hook 命令和 statusLine 中添加 "shell": "powershell"。

完整可用配置请参见 settings.windows.example.json。主要区别如下:

{
  "env": {
    "HMEM_PATH": "C:/Users/YOUR_USERNAME/.hmem/Agents/DEVELOPER/DEVELOPER.hmem"
  },
  "hooks": {
    "Stop": [{
      "matcher": "",
      "hooks": [{
        "type": "command",
        "command": "node C:/Users/YOUR_USERNAME/AppData/Roaming/npm/node_modules/hmem/dist/cli.js log-exchange",
        "shell": "powershell"
      }]
    }]
  },
  "statusLine": {
    "type": "command",
    "command": "node C:/Users/YOUR_USERNAME/AppData/Roaming/npm/node_modules/hmem/dist/cli.js statusline",
    "shell": "powershell"
  }
}

运行 npm root -g,获取适用于你机器的正确 node_modules 路径。

Windows 上的 statusLine: 设置 "shell": "powershell" 后即可稳定运行。不设置时,statusLine 会间歇性消失。


故障排查

问题修复方法
read_memory() 失败检查 HMEM_PROJECT_DIR 是否为绝对路径,以及目录是否存在
nvm:node not found使用绝对路径:which node → 将其用作 "command"
Hook 未触发(Claude Code)重启 Claude Code。检查 ~/.claude/settings.json 是否包含全部 4 个 hook
Hook 未触发(Pi)已知问题——Pi 的 hook 集成目前无法正常工作。可使用 hmem checkpoint 手动创建检查点作为临时解决方法
未记录交互检查 HMEM_AGENT_ID 是否与 Agents/ 目录名称一致
同步失败运行 npx hmem-sync connect 重新进行身份验证

更新

npm update -g hmem    # MCP server + SDK
npm update -g hmem-sync      # Sync (if installed)
npx hmem update-skills       # Refresh skill files

License

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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