Memmy 正式发布:让不同 AI Agent 共享同一个人的长期记忆

2026-08-24 38 预计阅读时间: 1 分钟
来源: oschina.net AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:11 分钟

过去几个月,AI Agent 正在从“会聊天的工具”变成真正的工作伙伴:它们可以理解代码库、调用外部工具、执行多步任务,还能通过 Skills、MCP 和子 Agent 组合出更复杂的工作流。

但 Agent 越强,记忆断裂的问题就越明显。一个 Agent 记住了你的技术栈,另一个 Agent 不知道你的代码规范;一个 Agent 了解项目中的关键决策,切换工具后又要从零解释。Memmy 的发布,指向的正是这一层缺失的基础能力:让不同 AI 共享关于“同一个你”的长期上下文。

Agent 的短期上下文不等于长期记忆

大多数 Agent 都能读取当前对话、项目文件和工具返回结果,但这些信息通常只服务于当前任务。对话结束、会话切换,甚至更换 Agent 后,以下内容可能全部丢失:

  • 你偏好的编程语言、框架和工具链
  • 项目中已经确认的架构决策
  • 你习惯的代码风格、提交方式和沟通格式
  • 曾经验证过的方案,以及明确放弃某个方案的原因
  • 某个业务领域中的长期背景知识

这不是简单地增加一个更大的上下文窗口就能解决的问题。上下文窗口适合承载当前任务,长期记忆则需要被组织、检索、更新和治理。

可以把两者区分为:

当前上下文:我现在正在修复哪个 Bug?
长期记忆:我通常使用什么测试策略?这个项目为什么不用某个依赖?

如果长期记忆只存在某个 Agent 的私有会话中,用户就会被绑定在特定工具上。共享记忆层的价值,在于把“关于用户和项目的知识”从单个 Agent 中分离出来,成为多个 Agent 都能使用的基础设施。

Memmy 解决的是跨 Agent 的连续性

从产品定位看,Memmy 并不是另一个只负责回答问题的聊天窗口,而更接近 Agent 生态中的记忆层。它要承接的是跨会话、跨工具和跨 Agent 的连续性。

一个典型流程可以这样理解:

  1. Agent 在执行任务时发现新的稳定事实,例如项目采用 PostgreSQL,部署由 GitHub Actions 完成。
  2. 这些事实被整理成可检索的记忆,而不是原样保存整段对话。
  3. 后续 Agent 在处理相关任务前检索记忆。
  4. Agent 根据当前任务使用这些信息,同时把新的决策或修正写回记忆层。

这种模式可以让不同类型的 Agent 共享同一套基础信息:代码 Agent 读取工程约定,文档 Agent 读取表达偏好,运维 Agent 读取部署限制,研究 Agent 读取领域背景。它们不需要共享全部对话,只需要访问经过整理、与任务相关的记忆。

实践中要把记忆当成数据管理问题

“让 AI 记住一切”听起来很诱人,但无限保存会带来噪声、隐私和错误传播问题。可以这样实践:把记忆拆成带有来源、范围和更新时间的结构化记录。

下面是一个假设性的记忆服务 API 示例。它不是 Memmy 的官方接口,而是展示接入共享记忆层时可以采用的数据形态。运行前,将 MEMORY_URL 改成实际服务地址,并根据服务要求补充认证信息。

export MEMORY_URL="http://localhost:8080"

# 写入一条项目级长期记忆
curl -X POST "$MEMORY_URL/v1/memories" \
  -H "Content-Type: application/json" \
  -d '{
    "scope": "project:payments-api",
    "kind": "architecture_decision",
    "content": "支付服务统一使用 PostgreSQL 事务保证订单状态和支付记录的一致性。",
    "source": "agent:backend-reviewer",
    "confidence": 0.92,
    "tags": ["database", "transaction", "payments"]
  }'

# 在新任务开始前检索相关记忆
curl -G "$MEMORY_URL/v1/memories/search" \
  --data-urlencode "scope=project:payments-api" \
  --data-urlencode "query=订单状态更新和支付记录如何保持一致"

一个实际的 Agent 可以把记忆检索放在任务执行前,把写入放在任务完成后。伪代码如下:

import os
import requests

MEMORY_URL = os.environ["MEMORY_URL"]
SCOPE = "project:payments-api"


def load_context(query: str) -> list[dict]:
    response = requests.get(
        f"{MEMORY_URL}/v1/memories/search",
        params={"scope": SCOPE, "query": query},
        timeout=10,
    )
    response.raise_for_status()
    return response.json()["items"]


def save_decision(content: str, source: str) -> None:
    response = requests.post(
        f"{MEMORY_URL}/v1/memories",
        json={
            "scope": SCOPE,
            "kind": "task_decision",
            "content": content,
            "source": source,
            "confidence": 0.8,
        },
        timeout=10,
    )
    response.raise_for_status()


memories = load_context("如何修改支付状态以及需要运行哪些测试")
context = "\n".join(f"- {item['content']}" for item in memories)

prompt = f"""你正在维护支付服务。
请遵守以下长期项目记忆:
{context}

现在检查支付状态更新逻辑,并给出需要补充的测试。"""
print(prompt)

# Agent 完成任务后,只有稳定且可复用的结论才应该写回。
save_decision(
    "支付状态变更需要覆盖重复回调场景,并验证事务失败时订单不会进入已支付状态。",
    "agent:test-planner",
)

这里有一个关键边界:不要把所有中间推理、临时猜测和原始敏感数据都写入长期记忆。长期记忆应当更像经过确认的工程知识,而不是无限增长的聊天记录。

共享记忆需要权限和纠错机制

跨 Agent 共享信息会提升连续性,也会放大错误。一条错误记忆如果被多个 Agent 读取,可能影响代码、文档和运维操作。因此落地时至少要考虑以下问题:

  • 范围:个人偏好、团队规范、项目决策和组织级知识应该分开管理。
  • 来源:记录是谁、哪个 Agent 或哪个系统写入了这条记忆。
  • 置信度:未经确认的推测不能与已批准的架构决策拥有同等权重。
  • 时效性:依赖版本、部署环境和项目负责人都可能变化,记忆需要过期或复核机制。
  • 可删除性:用户应该能够查看、修改和删除关于自己的记忆。
  • 最小权限:一个只负责生成文档的 Agent,不一定需要读取全部生产环境信息。

可以把记忆检索看作一种数据访问,而不是隐藏在提示词里的魔法。每次注入 Agent 的内容都应该能回答三个问题:它从哪里来、为什么与当前任务相关、如果它是错的该如何修正。

采用建议:先从稳定事实开始

Memmy 这类共享记忆能力最适合从低风险、重复出现的信息开始接入,例如项目技术栈、代码风格、已确认的架构决策和测试约定。不要一开始就让 Agent 自动保存所有内容,更不要把生产凭据、个人隐私或未经验证的业务判断写入共享存储。

可以按下面的顺序推进:

  1. 选择一个项目作为试点,定义记忆范围和负责人。
  2. 只允许写入经过确认的稳定事实。
  3. 在 Agent 执行前检索少量高相关记忆,观察错误注入率和任务完成质量。
  4. 增加来源、置信度、更新时间和删除能力。
  5. 再把记忆能力扩展到更多 Agent、Skills 和 MCP 工作流。

Agent 的竞争力不只在于单次回答是否聪明,也在于它能否持续理解你的工作方式。Memmy 的意义,在于把这种连续性从某个 Agent 的私有上下文中抽离出来,让它成为可以被不同 AI 共同使用、审计和修正的长期能力。


相关推荐