Day 19:记忆衰减 - 让 AI 学会遗忘

🤖 系列:Java工程师转AI Agent 3个月学习计划

👤 作者:宸丶一 | 28岁Java程序员,正在学习 AI Agent 开发中ing...

🎯 今日目标: 记忆衰减、衰减策略、记忆清理

💬 个人格言: 代码改不改变世界我不知道,但先让我准时下班。


前言

Day 18 搞定了记忆自动提取,今天继续升级 -- 记忆衰减

说白了就是解决一个问题:AI 怎么学会"遗忘"?

人类会遗忘,AI 也需要。记住所有信息不现实:存储空间有限、检索效率下降、信息会过时。所以需要一套机制,让 AI 自动忘记不重要的信息,保留重要的。

今天我们就来学:什么时候忘、怎么忘、忘之前要不要存档。


学习目标

  1. 搞懂记忆衰减是什么,为什么需要遗忘
  2. 学会三种衰减策略:指数、线性、对数
  3. 掌握记忆清理与归档
  4. 完成思考题

一、什么是记忆衰减?

先说清楚一个概念:记忆衰减就是旧记忆逐渐失去重要性的过程。

你可以把它理解成缓存淘汰策略 -- 越久没用的数据,越容易被清除。

用 Java 的话说:记忆衰减 = LRU 缓存淘汰。用得少的先删,用得多的留着。

衰减流程:
#mermaid-svg-Rkr68WiGv0GW80lP{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Rkr68WiGv0GW80lP .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Rkr68WiGv0GW80lP .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Rkr68WiGv0GW80lP .error-icon{fill:#552222;}#mermaid-svg-Rkr68WiGv0GW80lP .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Rkr68WiGv0GW80lP .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Rkr68WiGv0GW80lP .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Rkr68WiGv0GW80lP .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Rkr68WiGv0GW80lP .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Rkr68WiGv0GW80lP .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Rkr68WiGv0GW80lP .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Rkr68WiGv0GW80lP .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Rkr68WiGv0GW80lP .marker.cross{stroke:#333333;}#mermaid-svg-Rkr68WiGv0GW80lP svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Rkr68WiGv0GW80lP p{margin:0;}#mermaid-svg-Rkr68WiGv0GW80lP .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Rkr68WiGv0GW80lP .cluster-label text{fill:#333;}#mermaid-svg-Rkr68WiGv0GW80lP .cluster-label span{color:#333;}#mermaid-svg-Rkr68WiGv0GW80lP .cluster-label span p{background-color:transparent;}#mermaid-svg-Rkr68WiGv0GW80lP .label text,#mermaid-svg-Rkr68WiGv0GW80lP span{fill:#333;color:#333;}#mermaid-svg-Rkr68WiGv0GW80lP .node rect,#mermaid-svg-Rkr68WiGv0GW80lP .node circle,#mermaid-svg-Rkr68WiGv0GW80lP .node ellipse,#mermaid-svg-Rkr68WiGv0GW80lP .node polygon,#mermaid-svg-Rkr68WiGv0GW80lP .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Rkr68WiGv0GW80lP .rough-node .label text,#mermaid-svg-Rkr68WiGv0GW80lP .node .label text,#mermaid-svg-Rkr68WiGv0GW80lP .image-shape .label,#mermaid-svg-Rkr68WiGv0GW80lP .icon-shape .label{text-anchor:middle;}#mermaid-svg-Rkr68WiGv0GW80lP .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Rkr68WiGv0GW80lP .rough-node .label,#mermaid-svg-Rkr68WiGv0GW80lP .node .label,#mermaid-svg-Rkr68WiGv0GW80lP .image-shape .label,#mermaid-svg-Rkr68WiGv0GW80lP .icon-shape .label{text-align:center;}#mermaid-svg-Rkr68WiGv0GW80lP .node.clickable{cursor:pointer;}#mermaid-svg-Rkr68WiGv0GW80lP .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Rkr68WiGv0GW80lP .arrowheadPath{fill:#333333;}#mermaid-svg-Rkr68WiGv0GW80lP .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Rkr68WiGv0GW80lP .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Rkr68WiGv0GW80lP .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Rkr68WiGv0GW80lP .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Rkr68WiGv0GW80lP .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Rkr68WiGv0GW80lP .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Rkr68WiGv0GW80lP .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Rkr68WiGv0GW80lP .cluster text{fill:#333;}#mermaid-svg-Rkr68WiGv0GW80lP .cluster span{color:#333;}#mermaid-svg-Rkr68WiGv0GW80lP div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Rkr68WiGv0GW80lP .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Rkr68WiGv0GW80lP rect.text{fill:none;stroke-width:0;}#mermaid-svg-Rkr68WiGv0GW80lP .icon-shape,#mermaid-svg-Rkr68WiGv0GW80lP .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Rkr68WiGv0GW80lP .icon-shape p,#mermaid-svg-Rkr68WiGv0GW80lP .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Rkr68WiGv0GW80lP .icon-shape .label rect,#mermaid-svg-Rkr68WiGv0GW80lP .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Rkr68WiGv0GW80lP .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Rkr68WiGv0GW80lP .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Rkr68WiGv0GW80lP :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是



记忆创建
初始分数: 10
时间流逝
计算衰减分数
分数 > 阈值?
保留记忆
重要性 >= 8?
归档保存
删除记忆

为什么需要遗忘?

  • 存储空间有限,不能无限存储
  • 检索效率下降,记忆太多会变慢
  • 信息会过时,旧信息可能不准确
  • 像人类一样,遗忘是正常的

二、三种衰减策略

衰减策略有三种,各有各的特点:

策略 公式 特点 适用场景
指数衰减 score = importance * e^(-rate * days) 前期暴跌,快速失效 事件类记忆
线性衰减 score = importance * (1 - days / max_days) 匀速平缓下降 一般记忆
对数衰减 score = importance * (1 - log(days) / log(max_days)) 前期快降,长期保留 重要记忆

衰减曲线对比:
#mermaid-svg-trCuAli9fVto55B6{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-trCuAli9fVto55B6 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-trCuAli9fVto55B6 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-trCuAli9fVto55B6 .error-icon{fill:#552222;}#mermaid-svg-trCuAli9fVto55B6 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-trCuAli9fVto55B6 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-trCuAli9fVto55B6 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-trCuAli9fVto55B6 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-trCuAli9fVto55B6 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-trCuAli9fVto55B6 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-trCuAli9fVto55B6 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-trCuAli9fVto55B6 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-trCuAli9fVto55B6 .marker.cross{stroke:#333333;}#mermaid-svg-trCuAli9fVto55B6 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-trCuAli9fVto55B6 p{margin:0;}#mermaid-svg-trCuAli9fVto55B6 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 三种衰减策略对比 0714306090 109876543210 分数

代码实现:

python 复制代码
class ExponentialDecay:
    """指数衰减:快速遗忘"""
    def __init__(self, rate=0.1):
        self.rate = rate
    
    def calculate(self, memory, days):
        return memory.importance * math.exp(-self.rate * days)

class LinearDecay:
    """线性衰减:匀速遗忘"""
    def __init__(self, max_days=30):
        self.max_days = max_days
    
    def calculate(self, memory, days):
        if days >= self.max_days:
            return 0
        return memory.importance * (1 - days / self.max_days)

class LogarithmicDecay:
    """对数衰减:慢速遗忘"""
    def __init__(self, max_days=100):
        self.max_days = max_days
    
    def calculate(self, memory, days):
        if days >= self.max_days:
            return 0
        return memory.importance * (1 - math.log(days + 1) / math.log(self.max_days)

三、记忆清理:降级、删除、归档

衰减后的记忆需要处理,三种处理方式:

处理方式 条件 说明
降级 分数 < 5 降低重要性,继续保留
删除 分数 < 2 删除记忆,释放空间
归档 重要性 >= 8 长期保存,不删除

清理流程:
#mermaid-svg-yAlSBtNj9Rky6nGi{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-yAlSBtNj9Rky6nGi .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-yAlSBtNj9Rky6nGi .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-yAlSBtNj9Rky6nGi .error-icon{fill:#552222;}#mermaid-svg-yAlSBtNj9Rky6nGi .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-yAlSBtNj9Rky6nGi .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-yAlSBtNj9Rky6nGi .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-yAlSBtNj9Rky6nGi .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-yAlSBtNj9Rky6nGi .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-yAlSBtNj9Rky6nGi .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-yAlSBtNj9Rky6nGi .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-yAlSBtNj9Rky6nGi .marker{fill:#333333;stroke:#333333;}#mermaid-svg-yAlSBtNj9Rky6nGi .marker.cross{stroke:#333333;}#mermaid-svg-yAlSBtNj9Rky6nGi svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-yAlSBtNj9Rky6nGi p{margin:0;}#mermaid-svg-yAlSBtNj9Rky6nGi .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-yAlSBtNj9Rky6nGi .cluster-label text{fill:#333;}#mermaid-svg-yAlSBtNj9Rky6nGi .cluster-label span{color:#333;}#mermaid-svg-yAlSBtNj9Rky6nGi .cluster-label span p{background-color:transparent;}#mermaid-svg-yAlSBtNj9Rky6nGi .label text,#mermaid-svg-yAlSBtNj9Rky6nGi span{fill:#333;color:#333;}#mermaid-svg-yAlSBtNj9Rky6nGi .node rect,#mermaid-svg-yAlSBtNj9Rky6nGi .node circle,#mermaid-svg-yAlSBtNj9Rky6nGi .node ellipse,#mermaid-svg-yAlSBtNj9Rky6nGi .node polygon,#mermaid-svg-yAlSBtNj9Rky6nGi .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-yAlSBtNj9Rky6nGi .rough-node .label text,#mermaid-svg-yAlSBtNj9Rky6nGi .node .label text,#mermaid-svg-yAlSBtNj9Rky6nGi .image-shape .label,#mermaid-svg-yAlSBtNj9Rky6nGi .icon-shape .label{text-anchor:middle;}#mermaid-svg-yAlSBtNj9Rky6nGi .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-yAlSBtNj9Rky6nGi .rough-node .label,#mermaid-svg-yAlSBtNj9Rky6nGi .node .label,#mermaid-svg-yAlSBtNj9Rky6nGi .image-shape .label,#mermaid-svg-yAlSBtNj9Rky6nGi .icon-shape .label{text-align:center;}#mermaid-svg-yAlSBtNj9Rky6nGi .node.clickable{cursor:pointer;}#mermaid-svg-yAlSBtNj9Rky6nGi .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-yAlSBtNj9Rky6nGi .arrowheadPath{fill:#333333;}#mermaid-svg-yAlSBtNj9Rky6nGi .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-yAlSBtNj9Rky6nGi .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-yAlSBtNj9Rky6nGi .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-yAlSBtNj9Rky6nGi .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-yAlSBtNj9Rky6nGi .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-yAlSBtNj9Rky6nGi .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-yAlSBtNj9Rky6nGi .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-yAlSBtNj9Rky6nGi .cluster text{fill:#333;}#mermaid-svg-yAlSBtNj9Rky6nGi .cluster span{color:#333;}#mermaid-svg-yAlSBtNj9Rky6nGi div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-yAlSBtNj9Rky6nGi .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-yAlSBtNj9Rky6nGi rect.text{fill:none;stroke-width:0;}#mermaid-svg-yAlSBtNj9Rky6nGi .icon-shape,#mermaid-svg-yAlSBtNj9Rky6nGi .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-yAlSBtNj9Rky6nGi .icon-shape p,#mermaid-svg-yAlSBtNj9Rky6nGi .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-yAlSBtNj9Rky6nGi .icon-shape .label rect,#mermaid-svg-yAlSBtNj9Rky6nGi .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-yAlSBtNj9Rky6nGi .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-yAlSBtNj9Rky6nGi .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-yAlSBtNj9Rky6nGi :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是





记忆列表
分数 >= 5?
保留: active
分数 >= 2?
降级: degraded
重要性 >= 8?
归档: archived
删除: deleted

代码实现:

python 复制代码
class MemoryCleanup:
    def __init__(self, degrade_threshold=5.0, delete_threshold=2.0):
        self.degrade_threshold = degrade_threshold
        self.delete_threshold = delete_threshold
    
    def cleanup(self, memories):
        result = {"active": [], "degraded": [], "archived": [], "deleted": []}
        
        for memory in memories:
            if memory.current_score >= self.degrade_threshold:
                result["active"].append(memory)
            elif memory.current_score >= self.delete_threshold:
                result["degraded"].append(memory)
            elif memory.importance >= 8:
                result["archived"].append(memory)
            else:
                result["deleted"].append(memory)
        
        return result

四、运行效果

跑一下代码看看实际效果:

复制代码
============================================================
 Day 19 第一步:记忆衰减基础
============================================================
[记忆衰减计算器] 初始化完成,衰减速率: 0.1

--- 记忆衰减测试 ---

记忆: 用户叫宸一,28岁
  初始重要性: 9
  时间衰减分: 0.00
  频率分数: 0.11
  综合分数: 2.73

记忆: 用户喜欢 Spring Boot
  初始重要性: 7
  时间衰减分: 0.00
  频率分数: 0.06
  综合分数: 2.12

记忆: 用户今天学了 Python
  初始重要性: 5
  时间衰减分: 0.00
  频率分数: 0.01
  综合分数: 1.50

五、思考题精选

今天的思考题,挑几道有意思的分享:

1. 三种衰减策略对比

指数衰减:前期暴跌,快速失效

线性衰减:匀速平缓下降

对数衰减:前期快降,长期保留权重

这个对比非常清晰!三种策略各有适用场景。

2. 衰减速率设置

速率快:短时记、丢关键历史、结果震荡

速率慢:存过期噪音、跟不上新趋势、冗余低效

调参核心:贴合业务数据有效生命周期,实验验证平衡新旧信息权重。

说到了调参的核心 -- 贴合业务生命周期。

3. 未来展望

更加智能化,让用户无感衰减。

"无感衰减"这个概念很好 -- 用户不需要知道 AI 在遗忘,但 AI 确实在优化记忆。


六、Java 设计模式应用

今天的思考题第10题问:如果用 Java 实现记忆衰减系统,会用到哪些设计模式?

1. 策略模式(Strategy Pattern)

用途:不同的衰减策略(指数、线性、对数)

java 复制代码
// 策略接口
public interface DecayStrategy {
    double calculate(Memory memory, int days);
}

// 具体策略:指数衰减
public class ExponentialDecay implements DecayStrategy {
    private double rate = 0.1;
    
    @Override
    public double calculate(Memory memory, int days) {
        return memory.getImportance() * Math.exp(-rate * days);
    }
}

// 上下文:使用策略
public class MemoryDecayCalculator {
    private DecayStrategy strategy;
    
    public void setStrategy(DecayStrategy strategy) {
        this.strategy = strategy;
    }
}

2. 观察者模式(Observer Pattern)

用途:记忆衰减触发时通知其他组件

java 复制代码
// 观察者接口
public interface MemoryDecayListener {
    void onMemoryDecayed(Memory memory, double oldScore, double newScore);
    void onMemoryDeleted(Memory memory);
}

// 主题:记忆衰减器
public class MemoryDecaySubject {
    private List<MemoryDecayListener> listeners = new ArrayList<>();
    
    public void notifyDecayed(Memory memory, double oldScore, double newScore) {
        for (MemoryDecayListener listener : listeners) {
            listener.onMemoryDecayed(memory, oldScore, newScore);
        }
    }
}

3. 工厂模式(Factory Pattern)

用途:创建不同的清理器和归档器

java 复制代码
public interface MemoryCleanupFactory {
    MemoryCleanup createCleanup();
    MemoryArchiver createArchiver();
}

// 标准清理工厂
public class StandardCleanupFactory implements MemoryCleanupFactory {
    @Override
    public MemoryCleanup createCleanup() {
        return new MemoryCleanup(5.0, 2.0);
    }
}

// 激进清理工厂(存储空间紧张时使用)
public class AggressiveCleanupFactory implements MemoryCleanupFactory {
    @Override
    public MemoryCleanup createCleanup() {
        return new MemoryCleanup(7.0, 4.0);
    }
}

七、学习模式的意义

说到这里,我想聊聊我们的学习模式 -- 和 AI Agent 一起学习。

为什么这个模式有意义?

  1. 即时反馈 -- 写完代码马上能跑,有问题马上问
  2. 个性化指导 -- AI 会根据你的水平调整难度
  3. 持续跟进 -- AI 记得你的学习进度和卡点
  4. 降低门槛 -- 不用到处查资料,AI 帮你整理好

我们的学习流程

#mermaid-svg-seWN3Gr27uMEg4na{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-seWN3Gr27uMEg4na .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-seWN3Gr27uMEg4na .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-seWN3Gr27uMEg4na .error-icon{fill:#552222;}#mermaid-svg-seWN3Gr27uMEg4na .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-seWN3Gr27uMEg4na .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-seWN3Gr27uMEg4na .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-seWN3Gr27uMEg4na .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-seWN3Gr27uMEg4na .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-seWN3Gr27uMEg4na .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-seWN3Gr27uMEg4na .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-seWN3Gr27uMEg4na .marker{fill:#333333;stroke:#333333;}#mermaid-svg-seWN3Gr27uMEg4na .marker.cross{stroke:#333333;}#mermaid-svg-seWN3Gr27uMEg4na svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-seWN3Gr27uMEg4na p{margin:0;}#mermaid-svg-seWN3Gr27uMEg4na .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-seWN3Gr27uMEg4na .cluster-label text{fill:#333;}#mermaid-svg-seWN3Gr27uMEg4na .cluster-label span{color:#333;}#mermaid-svg-seWN3Gr27uMEg4na .cluster-label span p{background-color:transparent;}#mermaid-svg-seWN3Gr27uMEg4na .label text,#mermaid-svg-seWN3Gr27uMEg4na span{fill:#333;color:#333;}#mermaid-svg-seWN3Gr27uMEg4na .node rect,#mermaid-svg-seWN3Gr27uMEg4na .node circle,#mermaid-svg-seWN3Gr27uMEg4na .node ellipse,#mermaid-svg-seWN3Gr27uMEg4na .node polygon,#mermaid-svg-seWN3Gr27uMEg4na .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-seWN3Gr27uMEg4na .rough-node .label text,#mermaid-svg-seWN3Gr27uMEg4na .node .label text,#mermaid-svg-seWN3Gr27uMEg4na .image-shape .label,#mermaid-svg-seWN3Gr27uMEg4na .icon-shape .label{text-anchor:middle;}#mermaid-svg-seWN3Gr27uMEg4na .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-seWN3Gr27uMEg4na .rough-node .label,#mermaid-svg-seWN3Gr27uMEg4na .node .label,#mermaid-svg-seWN3Gr27uMEg4na .image-shape .label,#mermaid-svg-seWN3Gr27uMEg4na .icon-shape .label{text-align:center;}#mermaid-svg-seWN3Gr27uMEg4na .node.clickable{cursor:pointer;}#mermaid-svg-seWN3Gr27uMEg4na .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-seWN3Gr27uMEg4na .arrowheadPath{fill:#333333;}#mermaid-svg-seWN3Gr27uMEg4na .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-seWN3Gr27uMEg4na .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-seWN3Gr27uMEg4na .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-seWN3Gr27uMEg4na .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-seWN3Gr27uMEg4na .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-seWN3Gr27uMEg4na .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-seWN3Gr27uMEg4na .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-seWN3Gr27uMEg4na .cluster text{fill:#333;}#mermaid-svg-seWN3Gr27uMEg4na .cluster span{color:#333;}#mermaid-svg-seWN3Gr27uMEg4na div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-seWN3Gr27uMEg4na .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-seWN3Gr27uMEg4na rect.text{fill:none;stroke-width:0;}#mermaid-svg-seWN3Gr27uMEg4na .icon-shape,#mermaid-svg-seWN3Gr27uMEg4na .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-seWN3Gr27uMEg4na .icon-shape p,#mermaid-svg-seWN3Gr27uMEg4na .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-seWN3Gr27uMEg4na .icon-shape .label rect,#mermaid-svg-seWN3Gr27uMEg4na .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-seWN3Gr27uMEg4na .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-seWN3Gr27uMEg4na .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-seWN3Gr27uMEg4na :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 用户:帮我准备今天的学习任务
AI:生成学习材料
代码 + 笔记 + 思考题
用户:运行代码,完成思考题
AI:检查答案,给反馈
用户:帮我写 CSDN 文章
AI:生成文章,分享知识
发布到平台

这个模式的核心价值

  • 学以致用 -- 学完就写文章,加深理解
  • 知识沉淀 -- 文章就是学习笔记,以后可以回顾
  • 分享传播 -- 帮助其他学习者
  • 持续动力 -- 有人陪你学,不容易放弃

八、前 19 天学习复盘

回顾一下我们走过的路:

阶段 天数 主题 核心概念
基础 Day 1-5 API、对话、工具调用 Agent 的基本能力
进阶 Day 6-10 LangChain、FastAPI、流式输出 框架和部署
深入 Day 11-15 多Agent、人机协作、任务追踪 复杂系统
记忆 Day 16-19 上下文管理、跨会话记忆、自动提取、衰减 记忆系统

学习路线图

#mermaid-svg-pogYWVSofs0KBjgF{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-pogYWVSofs0KBjgF .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-pogYWVSofs0KBjgF .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-pogYWVSofs0KBjgF .error-icon{fill:#552222;}#mermaid-svg-pogYWVSofs0KBjgF .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-pogYWVSofs0KBjgF .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-pogYWVSofs0KBjgF .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-pogYWVSofs0KBjgF .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-pogYWVSofs0KBjgF .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-pogYWVSofs0KBjgF .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-pogYWVSofs0KBjgF .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-pogYWVSofs0KBjgF .marker{fill:#333333;stroke:#333333;}#mermaid-svg-pogYWVSofs0KBjgF .marker.cross{stroke:#333333;}#mermaid-svg-pogYWVSofs0KBjgF svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-pogYWVSofs0KBjgF p{margin:0;}#mermaid-svg-pogYWVSofs0KBjgF .edge{stroke-width:3;}#mermaid-svg-pogYWVSofs0KBjgF .section--1 rect,#mermaid-svg-pogYWVSofs0KBjgF .section--1 path,#mermaid-svg-pogYWVSofs0KBjgF .section--1 circle,#mermaid-svg-pogYWVSofs0KBjgF .section--1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .section--1 text{fill:#ffffff;}#mermaid-svg-pogYWVSofs0KBjgF .node-icon--1{font-size:40px;color:#ffffff;}#mermaid-svg-pogYWVSofs0KBjgF .section-edge--1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .edge-depth--1{stroke-width:17;}#mermaid-svg-pogYWVSofs0KBjgF .section--1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-pogYWVSofs0KBjgF .lineWrapper line{stroke:#ffffff;}#mermaid-svg-pogYWVSofs0KBjgF .disabled,#mermaid-svg-pogYWVSofs0KBjgF .disabled circle,#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:lightgray;}#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:#efefef;}#mermaid-svg-pogYWVSofs0KBjgF .section-0 rect,#mermaid-svg-pogYWVSofs0KBjgF .section-0 path,#mermaid-svg-pogYWVSofs0KBjgF .section-0 circle,#mermaid-svg-pogYWVSofs0KBjgF .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-pogYWVSofs0KBjgF .section-0 text{fill:black;}#mermaid-svg-pogYWVSofs0KBjgF .node-icon-0{font-size:40px;color:black;}#mermaid-svg-pogYWVSofs0KBjgF .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-pogYWVSofs0KBjgF .edge-depth-0{stroke-width:14;}#mermaid-svg-pogYWVSofs0KBjgF .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-pogYWVSofs0KBjgF .lineWrapper line{stroke:black;}#mermaid-svg-pogYWVSofs0KBjgF .disabled,#mermaid-svg-pogYWVSofs0KBjgF .disabled circle,#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:lightgray;}#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:#efefef;}#mermaid-svg-pogYWVSofs0KBjgF .section-1 rect,#mermaid-svg-pogYWVSofs0KBjgF .section-1 path,#mermaid-svg-pogYWVSofs0KBjgF .section-1 circle,#mermaid-svg-pogYWVSofs0KBjgF .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .section-1 text{fill:black;}#mermaid-svg-pogYWVSofs0KBjgF .node-icon-1{font-size:40px;color:black;}#mermaid-svg-pogYWVSofs0KBjgF .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .edge-depth-1{stroke-width:11;}#mermaid-svg-pogYWVSofs0KBjgF .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-pogYWVSofs0KBjgF .lineWrapper line{stroke:black;}#mermaid-svg-pogYWVSofs0KBjgF .disabled,#mermaid-svg-pogYWVSofs0KBjgF .disabled circle,#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:lightgray;}#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:#efefef;}#mermaid-svg-pogYWVSofs0KBjgF .section-2 rect,#mermaid-svg-pogYWVSofs0KBjgF .section-2 path,#mermaid-svg-pogYWVSofs0KBjgF .section-2 circle,#mermaid-svg-pogYWVSofs0KBjgF .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .section-2 text{fill:#ffffff;}#mermaid-svg-pogYWVSofs0KBjgF .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-pogYWVSofs0KBjgF .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .edge-depth-2{stroke-width:8;}#mermaid-svg-pogYWVSofs0KBjgF .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-pogYWVSofs0KBjgF .lineWrapper line{stroke:#ffffff;}#mermaid-svg-pogYWVSofs0KBjgF .disabled,#mermaid-svg-pogYWVSofs0KBjgF .disabled circle,#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:lightgray;}#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:#efefef;}#mermaid-svg-pogYWVSofs0KBjgF .section-3 rect,#mermaid-svg-pogYWVSofs0KBjgF .section-3 path,#mermaid-svg-pogYWVSofs0KBjgF .section-3 circle,#mermaid-svg-pogYWVSofs0KBjgF .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .section-3 text{fill:black;}#mermaid-svg-pogYWVSofs0KBjgF .node-icon-3{font-size:40px;color:black;}#mermaid-svg-pogYWVSofs0KBjgF .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .edge-depth-3{stroke-width:5;}#mermaid-svg-pogYWVSofs0KBjgF .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-pogYWVSofs0KBjgF .lineWrapper line{stroke:black;}#mermaid-svg-pogYWVSofs0KBjgF .disabled,#mermaid-svg-pogYWVSofs0KBjgF .disabled circle,#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:lightgray;}#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:#efefef;}#mermaid-svg-pogYWVSofs0KBjgF .section-4 rect,#mermaid-svg-pogYWVSofs0KBjgF .section-4 path,#mermaid-svg-pogYWVSofs0KBjgF .section-4 circle,#mermaid-svg-pogYWVSofs0KBjgF .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .section-4 text{fill:black;}#mermaid-svg-pogYWVSofs0KBjgF .node-icon-4{font-size:40px;color:black;}#mermaid-svg-pogYWVSofs0KBjgF .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .edge-depth-4{stroke-width:2;}#mermaid-svg-pogYWVSofs0KBjgF .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-pogYWVSofs0KBjgF .lineWrapper line{stroke:black;}#mermaid-svg-pogYWVSofs0KBjgF .disabled,#mermaid-svg-pogYWVSofs0KBjgF .disabled circle,#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:lightgray;}#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:#efefef;}#mermaid-svg-pogYWVSofs0KBjgF .section-5 rect,#mermaid-svg-pogYWVSofs0KBjgF .section-5 path,#mermaid-svg-pogYWVSofs0KBjgF .section-5 circle,#mermaid-svg-pogYWVSofs0KBjgF .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .section-5 text{fill:black;}#mermaid-svg-pogYWVSofs0KBjgF .node-icon-5{font-size:40px;color:black;}#mermaid-svg-pogYWVSofs0KBjgF .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .edge-depth-5{stroke-width:-1;}#mermaid-svg-pogYWVSofs0KBjgF .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-pogYWVSofs0KBjgF .lineWrapper line{stroke:black;}#mermaid-svg-pogYWVSofs0KBjgF .disabled,#mermaid-svg-pogYWVSofs0KBjgF .disabled circle,#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:lightgray;}#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:#efefef;}#mermaid-svg-pogYWVSofs0KBjgF .section-6 rect,#mermaid-svg-pogYWVSofs0KBjgF .section-6 path,#mermaid-svg-pogYWVSofs0KBjgF .section-6 circle,#mermaid-svg-pogYWVSofs0KBjgF .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .section-6 text{fill:black;}#mermaid-svg-pogYWVSofs0KBjgF .node-icon-6{font-size:40px;color:black;}#mermaid-svg-pogYWVSofs0KBjgF .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .edge-depth-6{stroke-width:-4;}#mermaid-svg-pogYWVSofs0KBjgF .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-pogYWVSofs0KBjgF .lineWrapper line{stroke:black;}#mermaid-svg-pogYWVSofs0KBjgF .disabled,#mermaid-svg-pogYWVSofs0KBjgF .disabled circle,#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:lightgray;}#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:#efefef;}#mermaid-svg-pogYWVSofs0KBjgF .section-7 rect,#mermaid-svg-pogYWVSofs0KBjgF .section-7 path,#mermaid-svg-pogYWVSofs0KBjgF .section-7 circle,#mermaid-svg-pogYWVSofs0KBjgF .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .section-7 text{fill:black;}#mermaid-svg-pogYWVSofs0KBjgF .node-icon-7{font-size:40px;color:black;}#mermaid-svg-pogYWVSofs0KBjgF .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .edge-depth-7{stroke-width:-7;}#mermaid-svg-pogYWVSofs0KBjgF .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-pogYWVSofs0KBjgF .lineWrapper line{stroke:black;}#mermaid-svg-pogYWVSofs0KBjgF .disabled,#mermaid-svg-pogYWVSofs0KBjgF .disabled circle,#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:lightgray;}#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:#efefef;}#mermaid-svg-pogYWVSofs0KBjgF .section-8 rect,#mermaid-svg-pogYWVSofs0KBjgF .section-8 path,#mermaid-svg-pogYWVSofs0KBjgF .section-8 circle,#mermaid-svg-pogYWVSofs0KBjgF .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .section-8 text{fill:black;}#mermaid-svg-pogYWVSofs0KBjgF .node-icon-8{font-size:40px;color:black;}#mermaid-svg-pogYWVSofs0KBjgF .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .edge-depth-8{stroke-width:-10;}#mermaid-svg-pogYWVSofs0KBjgF .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-pogYWVSofs0KBjgF .lineWrapper line{stroke:black;}#mermaid-svg-pogYWVSofs0KBjgF .disabled,#mermaid-svg-pogYWVSofs0KBjgF .disabled circle,#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:lightgray;}#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:#efefef;}#mermaid-svg-pogYWVSofs0KBjgF .section-9 rect,#mermaid-svg-pogYWVSofs0KBjgF .section-9 path,#mermaid-svg-pogYWVSofs0KBjgF .section-9 circle,#mermaid-svg-pogYWVSofs0KBjgF .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .section-9 text{fill:black;}#mermaid-svg-pogYWVSofs0KBjgF .node-icon-9{font-size:40px;color:black;}#mermaid-svg-pogYWVSofs0KBjgF .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .edge-depth-9{stroke-width:-13;}#mermaid-svg-pogYWVSofs0KBjgF .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-pogYWVSofs0KBjgF .lineWrapper line{stroke:black;}#mermaid-svg-pogYWVSofs0KBjgF .disabled,#mermaid-svg-pogYWVSofs0KBjgF .disabled circle,#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:lightgray;}#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:#efefef;}#mermaid-svg-pogYWVSofs0KBjgF .section-10 rect,#mermaid-svg-pogYWVSofs0KBjgF .section-10 path,#mermaid-svg-pogYWVSofs0KBjgF .section-10 circle,#mermaid-svg-pogYWVSofs0KBjgF .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .section-10 text{fill:black;}#mermaid-svg-pogYWVSofs0KBjgF .node-icon-10{font-size:40px;color:black;}#mermaid-svg-pogYWVSofs0KBjgF .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .edge-depth-10{stroke-width:-16;}#mermaid-svg-pogYWVSofs0KBjgF .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-pogYWVSofs0KBjgF .lineWrapper line{stroke:black;}#mermaid-svg-pogYWVSofs0KBjgF .disabled,#mermaid-svg-pogYWVSofs0KBjgF .disabled circle,#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:lightgray;}#mermaid-svg-pogYWVSofs0KBjgF .disabled text{fill:#efefef;}#mermaid-svg-pogYWVSofs0KBjgF .section-root rect,#mermaid-svg-pogYWVSofs0KBjgF .section-root path,#mermaid-svg-pogYWVSofs0KBjgF .section-root circle{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-pogYWVSofs0KBjgF .section-root text{fill:#ffffff;}#mermaid-svg-pogYWVSofs0KBjgF .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-pogYWVSofs0KBjgF .edge{fill:none;}#mermaid-svg-pogYWVSofs0KBjgF .eventWrapper{filter:brightness(120%);}#mermaid-svg-pogYWVSofs0KBjgF :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 基础阶段 Day 1-5 API 调用 对话循环 工具调用 函数调用 规划Agent 进阶阶段 Day 6-10 LangChain 代码片段 向量数据库 FastAPI 流式输出 深入阶段 Day 11-15 源码分析 多Agent 人机协作 任务追踪 子Agent 记忆阶段 Day 16-19 上下文管理 跨会话记忆 自动提取 记忆衰减 19天学习路线

关键突破

  1. Day 1-5:从零开始,学会调用 API,理解 Agent 是什么
  2. Day 6-10:学会用框架,能部署自己的 Agent 服务
  3. Day 11-15:理解多 Agent 协作,学会任务管理
  4. Day 16-19:掌握记忆系统,让 Agent 拥有长期记忆

九、总结

今天学了 3 个核心概念,用 Java 的话说就是:

概念 Java 类比
记忆衰减 LRU 缓存淘汰
衰减策略 策略模式
记忆清理 数据清理工具

一句话总结:记忆衰减 = 让 AI 学会遗忘,像缓存淘汰一样自动清理不重要的信息。


下一步

Day 20 可能的主题:

  • 记忆共享:多个智能体共享记忆
  • 记忆可视化:记忆的图形化展示
  • 记忆同步:跨设备记忆同步

端午安康 🐉

写这篇文章的时候,明天就是端午假期了。

19 天了,从一个 Java 程序员,慢慢摸到了 AI Agent 的门道。学习这件事,最难的不是知识本身,而是坚持。

端午节,吃粽子、赛龙舟、挂艾草。

提前祝大家端午安康,假期愉快! 🎊

学习这件事,急不来。该休息的时候好好休息,该学习的时候认真学习。

假期回来,我们继续。


写在最后

19 天了,从一个 Java 程序员,慢慢摸到了 AI Agent 的门道。

学习这件事,最难的不是知识本身,而是坚持。

有人陪你学,有人给你反馈,有人帮你整理 -- 这就是和 AI Agent 一起学习的意义。

继续加油


🤖 系列:Java工程师转AI Agent 3个月学习计划

👤 作者:宸丶一 | 28岁Java程序员,正在学习 AI Agent 开发中ing...

💬 个人格言: 代码改不改变世界我不知道,但先让我准时下班。

如果觉得有帮助,点个赞再走呗!