5.OpenClaw源码解析_提示词8层装载

上节课我们学习了路由的概念,通过路由表和binding规则,可以让不同的agent服务不同的租户,并通过tier进行逐级匹配, 今天我们来学习OpenClaw智能层的概念,其做法有如下:

  1. 初始化时加载记忆:通过8次提示词加载丰富人格
  2. 加载两部分记忆,分别是MEMORY.md长期记忆和memory/daily/xxx.jsonl每日记忆
  3. 每次用户提问时,都加载两部分记忆,然后先进行tf-idf+余弦相似度+关键词搜索的混合搜索机制,并对结果进行时间衰减和MMR重排序,最终将相关且多样化的记忆碎片注入系统提示词。

1. 整体背景

1.1. 前期8层记忆加载(对应BootstrapLoader)

前期8个文件分别对应如下:

文件 身份
SOUL.md 人格
IDENTITY.md 身份
TOOLS.md 工具
USER.md 用户信息
HEARTBEAT.nd 心跳配置
BOOTSTRAP.md 引导
AGENTS.md 多代理
MEMORY.md 静态长期记忆

这些文件在启动时只加载一起,后续将会组装成系统提示词发送给大模型

1.2. 记忆组装

记忆组装发生在build_system_prompt这个函数中,共分为两层记忆,一个是MEMORY.md的静态内容,另一个来自__auto_recall混合搜索的记忆

1.3. 混合搜索和排序

混合搜索策略在MemoryStore.hybrid_search中。 在该函数中,首先会load所有的chunk, 然后分别经过:

  1. 关键词搜索:使用tf-idf进行搜索,得到score
  2. 向量检索: 使用余弦相似度比较向量相似度
  3. 加权:vector_weights * 0.7, keywords_weights * 0.3
  4. 计算时间衰减:从记忆块的path中取时间,然后计算与当前时间的age_days, 应用指数衰减:score *= exp(-decap_rate * age_days), decay_rate=0.01, 越近的记忆得分衰减越少,越旧的记忆得分越低
  5. MMR:

目的是在保证相关性的同时增加结果的多样性,避免返回内容相似的记忆。

输入时经过时间衰减后的结果列表,每个结果包含score相关性分数 ,和chunk文本。

算法步骤: 首先对每条结果进行分词,然后初始化已选择集合为空。

重复如下步骤: 对于每个未选中的结果i,计算MMR:

其中 similarity 使用 Jaccard 相似度(基于分词集合的交并比),选择 MMR 最大的结果加入已选集合

MMR计算代码如下:

ini 复制代码
@staticmethod
def _mmr_rerank(results, lambda_param=0.7):
    tokenized = [MemoryStore._tokenize(r["chunk"]["text"]) for r in results]
    selected = []
    remaining = list(range(len(results)))
    reranked = []
    while remaining:
        best_idx = -1
        best_mmr = float("-inf")
        for idx in remaining:
            relevance = results[idx]["score"]
            max_sim = 0.0
            for sel_idx in selected:
                sim = MemoryStore._jaccard_similarity(tokenized[idx], tokenized[sel_idx])
                if sim > max_sim:
                    max_sim = sim
            mmr = lambda_param * relevance - (1 - lambda_param) * max_sim
            if mmr > best_mmr:
                best_mmr = mmr
                best_idx = idx
        selected.append(best_idx)
        remaining.remove(best_idx)
        reranked.append(results[best_idx])
    return reranked

2. 流程设计

相关推荐
To_OC37 分钟前
大模型蒸馏是啥?说白了就是大厨带徒弟的学问
人工智能·llm·agent
新手来了@click1 小时前
JAVA+AI 简化开发操作|文章被 AI Agent 技术社区收录分享
人工智能
GuWenyue2 小时前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%
前端·数据库·人工智能
GuWenyue2 小时前
传统Agent工具两大痛点!300行代码落地MCP跨语言工具,彻底解耦LLM与工具
前端·人工智能·算法
Fzuim2 小时前
当 AI 也成为提交者:ThinkFlow 的 Git 提交规范,是怎么定的
git·agent·thinkflow
老云讲算力市场2 小时前
WAIC首日观察:国产算力与机器人加速落地,奇点算力迎来产业新机遇
人工智能·科技
糖果店的幽灵2 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
小林ixn2 小时前
大模型随机说话的秘密:Temperature 和 Top K 深度解析,LangChain 实战调优
人工智能·langchain
ALINX技术博客2 小时前
ALINX 亮相 2026 WAIC 世界人工智能大会,展示 AI 视觉 FPGA+GPU 异构计算与电子后视镜解决方案
人工智能·ai·fpga·世界人工智能大会·电子后视镜
程序员老猫3 小时前
当 AI 能写 80% 的代码时,后端工程师的核心价值还剩什么?
人工智能