使用说明
amem——代理内存MCP服务器
本地MCP服务器,将BM25搜索、内存间链接和丰富的元数据添加到Claude Code的内存系统中。没有嵌入,没有API键,没有严重的依赖关系。
灵感来自 A-mem纸.
安装
git clone https://github.com/alejandroSuch/amem.git
cd amem
bun install
bun run build
这将在以下位置生成一个独立的二进制文件 dist/amem --不需要运行时依赖关系。
配置
克劳德代码
添加 ~/.claude/settings.json 供全球使用:
{
"mcpServers": {
"amem": {
"command": "/absolute/path/to/amem/dist/amem"
}
}
}
或者添加一个 .mcp.json 在项目根目录中为每个项目使用:
{
"mcpServers": {
"amem": {
"command": "/absolute/path/to/amem/dist/amem"
}
}
}
其他MCP主机(Cursor、Windsurf等)
amem是stdio上的标准MCP服务器。使用主机所需的任何配置,指向编译的二进制文件:
{
"command": "/absolute/path/to/amem/dist/amem",
"transport": "stdio"
}
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
AMEM_BASE_DIR |
~/.claude |
所有内存存储的基本目录 |
AMEM_VERBOSE |
(未设置) | 设置为 1 将所有工具调用记录到 $AMEM_BASE_DIR/amem.log |
全球记忆去 $AMEM_BASE_DIR/memory/,将记忆投射到 $AMEM_BASE_DIR/projects/<id>/memory/。不需要环境变量——默认值符合Claude Code的约定。
内存格式
---
name: "memory name"
description: "short description"
type: user|feedback|project|reference
keywords: [term1, term2]
tags: [tag1, tag2]
context: "one-line summary"
links: [other-memory-id]
created: 2026-03-16
updated: 2026-03-16
---
Markdown content...
与Claude Code的内置内存向后兼容——扩展字段是可选的。
工具
记忆搜索
BM25对记忆搜索进行了排名。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
query |
string | yes | 搜索查询 |
scope |
"global" |
"project" |
无 |
type |
"user" |
"feedback" |
"project" |
tags |
string[] | no | 按标签筛选(或匹配) |
limit |
number | no | 最大结果数(默认值:10) |
memory_add
创造新的记忆。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
content |
string | yes | 内存内容(标记) |
name |
string | yes | 内存名称 |
description |
string | yes | 搜索相关性的简短描述 |
type |
"user" |
"feedback" |
"project" |
scope |
"global" |
"project" |
是 |
keywords |
string[] | 否 | 搜索关键字 |
tags |
string[] | no | 分类标签 |
context |
string | no | 单行上下文摘要 |
links |
string[] | no | 相关内存的ID |
内存更新
更新现有内存的元数据或内容。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
string | yes | 内存ID |
scope |
"global" |
"project" |
yes |
name |
string | no | 新名称 |
description |
string | 否 | 新描述 |
type |
"user" |
"feedback" |
"project" |
keywords |
string[] | 否 | 新关键字 |
tags |
string[] | no | 新标签 |
context |
string | no | 新上下文 |
links |
string[] | 否 | 新链接 |
content |
string | 否 | 新内容 |
记住_删除
按ID删除内存。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
string | yes | 内存ID |
scope |
"global" |
"project" |
yes |
memory_links
获取一个内存及其关联的邻居。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
id |
string | yes | 内存ID |
scope |
"global" |
"project" |
yes |
memory_list
列出所有内存(仅元数据,无内容)。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
scope |
"global" |
"project" |
无 |
type |
"user" |
"feedback" |
"project" |
作用域解析
Zero config--项目ID是自动导出的:
- 尝试
git rev-parse --show-toplevel获取repo根目录(解析工作树) - 如果不是git repo,则返回cwd
- 将路径转换为slug:
/Users/me/projects/foo→-Users-me-projects-foo
存储路径:
- 全球:
~/.claude/memory/ - 项目:
~/.claude/projects/<project-id>/memory/
搜索详细信息
- 发动机:wink-bm25-text-search
- 索引字段 具有权重:名称(3)、描述(2)、关键字(2),标签(1)、上下文(1),内容(1)
- 分词:wink nlp-utils(标记化+词干+停用词删除)
- 突变的全索引重建——小于1000个记忆在10ms内
- BM25排名后按范围、类型、标签进行帖子过滤
脚本
bun run dev # Run directly (Bun handles TypeScript natively)
bun run build # Compile standalone binary → dist/amem