paper2skills Playbook

AgeMem — LTM+STM 统一 Agent 记忆:RL 自适应管理跨会话知识

Skill-AgeMem-Unified-Agent-Memory · 16-智能体工程

causalexperimentoptimizationmulti_agentpricing广告与投放客服与VOC推荐与搜索MAS与智能体工程定价与利润风控与合规WF-B 广告优化WF-C 客服分诊WF-D 选品扫描WF-E Review监控WF-F 动态定价WF-G Listing内容优化
年化 ROI10 万
实现难度⭐⭐⭐☆☆
业务视角
适用角色CTO / 技术负责人 · 产品经理 · 数据工程师
适用平台跨境运营 AI Agent 工程落地 · Amazon SP API + LLM 集成 · 多平台数据采集 Agent
什么情况下用想把 AI 集成到业务系统,但 LLM 稳定性差、幻觉问题、成本控制都是挑战;Agent 任务失败了不知道哪步出了问题
成功是什么样的AI Agent 在生产环境稳定运行,失败可追踪,成本可控,复杂任务完成率 >85%
业务痛点
LLM 返回结果不稳定不可靠AI 幻觉导致业务决策错误Agent 任务失败了不知道哪步出问题AI 调用成本控制不住

1. 解决的问题

AgeMem 是首个将 LTM(长期记忆)和 STM(短期记忆)统一到 Agent Policy 的端到端框架。传统方案把两种记忆当作独立模块,由外置 Memory Manager 或启发式 trigger 决策,导致组合效果差、部署成本高(需要额外 expert LLM)。AgeMem 的突破在于:记忆操作本身就是 action,由同一个 LLM policy 通过 RL 学习"何时调什么"。

2. 核心算法逻辑

AgeMem 是首个将 LTM(长期记忆)和 STM(短期记忆)统一到 Agent Policy 的端到端框架。传统方案把两种记忆当作独立模块,由外置 Memory Manager 或启发式 trigger 决策,导致组合效果差、部署成本高(需要额外 expert LLM)。AgeMem 的突破在于:记忆操作本身就是 action,由同一个 LLM policy 通过 RL 学习"何时调什么"。

3. 业务应用场景

业务问题:广告 Agent 每次启动都是"空白大脑",无法记住上周/上月哪些关键词 ROAS 高、竞品在哪些词上加价、大促节点的效果规律。一个有经验的广告优化师积累这些知识需要 3 个月,Agent 每次从零开始。

数据要求: - LTM:历史关键词 ROAS 表(`keyword → {avg_roas, peak_season, last_updated}`) - STM:当周广告报表(7 天窗口数据,含竞品曝光份额变化) - 触发事件:每次广告报表 review + 每次大促前后

预期产出: - 关键词效果 LTM 条目(自动 Add/Update/Delete 过期词) - 当周 STM 摘要(压缩 7 天数据为 3-5 条核心洞察) - 出价建议(基于 LTM 历史 + STM 当周趋势融合推理)

4. 输入数据要求

请查看原始代码模板获取输入规格。

5. 输出结果

请查看原始代码模板获取输出规格。

6. 业务价值 / ROI

10 万

7. 代码模板

代码块数量:1 · 路径:未检测到

"""
AgeMem — LTM+STM 统一 Agent 记忆 RL 管理
论文: arXiv:2601.01885 | 2026年1月
场景: 广告 Agent 跨会话关键词效果积累 + 选品 Agent 品类知识持久化
"""
from __future__ import annotations

import json
import time
from dataclasses import dataclass, field
from enum import Enum
from typing import Any


class MemoryType(str, Enum):
    LTM = "LTM"
    STM = "STM"


@dataclass
class MemoryItem:
    item_id: str
    content: str
    memory_type: MemoryType
    importance: float = 0.5
    timestamp: float = field(default_factory=time.time)
    tags: list[str] = field(default_factory=list)
    ttl_seconds: float | None = None

    def is_expired(self) -> bool:
        if self.ttl_seconds is None:
            return False
        return (time.time() - self.timestamp) > self.ttl_seconds


class LTMStore:
    def __init__(self):
        self._store: dict[str, MemoryItem] = {}

    def add(self, item: MemoryItem) -> str:
        self._store[item.item_id] = item
        return item.item_id

    def update(self, item_id: str, content: str, importance: float | None = None) -> bool:
        if item_id not in self._store:
            return False
        self._store[item_id].content = content
        self._store[item_id].timestamp = time.time()
        if importance is not None:
            self._store[item_id].importance = importance
        return True

    def delete(self, item_id: str) -> bool:
        return bool(self._store.pop(item_id, None))

    def search(self, query: str, top_k: int = 5) -> list[MemoryItem]:
        results = [
            item for item in self._store.values()
            if any(tag in query.lower() for tag in item.tags)
               or query.lower() in item.content.lower()

8. 论文来源

  • 2601.01885