情节记忆(按会话记录)
按时间和会话 ID 索引每次对话中发生的事情。
情节记忆(按会话记录) 是 CoddyKit 上的免费 AI Agents 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。
本课时的部分内容尚未翻译,以英文显示。
三种记忆类型
受认知科学启发,代理记忆通常分为三类:
- 情景记忆——发生过什么(本次对话、上周的会话)
- 语义记忆——关于世界或用户的事实
- 程序记忆——技能(成功的操作序列)
本课程介绍情景记忆。
什么是情景记忆
情景记忆存储带有时间戳和上下文的具体事件。对于代理来说,它就是每次会话的对话日志。
这是最基础、也最容易构建的记忆形式。
数据模型
每次交互或每次会话对应一行:
CREATE TABLE episodes (
id BIGSERIAL PRIMARY KEY,
user_id TEXT NOT NULL,
session_id TEXT NOT NULL,
role TEXT NOT NULL, -- system/user/assistant/tool
content TEXT NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
metadata JSONB
);Saving Each Turn
def save_turn(user_id, session_id, role, content, metadata=None):
conn.execute('''
INSERT INTO episodes (user_id, session_id, role, content, metadata)
VALUES (%s, %s, %s, %s, %s::jsonb)
''', (user_id, session_id, role, content, json.dumps(metadata or {})))Loading a Session
def load_session(session_id):
rows = conn.execute('SELECT role, content FROM episodes WHERE session_id = %s ORDER BY id', (session_id,))
return [{'role': r[0], 'content': r[1]} for r in rows]多会话历史记录
有时您需要同一用户之前会话中的上下文,例如“爱丽丝昨天问了什么?”:
def recent_sessions(user_id, n=5):
rows = conn.execute('''
SELECT DISTINCT session_id, MIN(created_at) AS started
FROM episodes WHERE user_id = %s
GROUP BY session_id ORDER BY started DESC LIMIT %s
''', (user_id, n))
return [r[0] for r in rows]为过去的会话生成嵌入
为了按主题检索旧情景,请为每个会话摘要生成嵌入:
def index_session(session_id):
summary = summarise(load_session(session_id))
vec = embed(summary)
save_to_vector_db(session_id, vec, summary)检索情景记忆
当用户询问“我们上周讨论了什么定价问题?”时,请通过嵌入进行搜索:
def search_episodes(user_id, query):
qvec = embed(query)
candidates = vector_db.query(qvec, k=10, filter={'user_id': user_id})
return [load_session(c.id) for c in candidates]隐私与保留期限
情景日志中包含大量 PII。请应用以下措施:
- 静态数据加密
- 账户关闭时删除该用户的数据
- N 天后自动清除
- 在进行任何分析之前进行掩码处理或假名化
压缩旧情景
逐字保留最近的交互;将较早的交互压缩为摘要:
if session_age_days > 30:
summary = summarise(load_session(sid))
conn.execute('UPDATE episodes SET content = %s WHERE session_id = %s', (summary, sid))
conn.execute('DELETE FROM episodes WHERE session_id = %s AND created_at < NOW() - INTERVAL \'1 day\'', (sid,))情景记忆与短期上下文
短期上下文 = 当前消息列表(模型此刻看到的内容)。情景记忆 = 数据库中的记录,可搜索、持久化且容量更大。
将情景记忆连接到其他记忆
从一个情景中可以提取:
- 语义事实(“用户偏好摄氏度”)
- 程序技能(成功执行的一系列工具调用)
这些内容会输入另外两种记忆。
用于评估的重放
保存原始情景,以便重放。当您修改代理后,重新运行旧情景,并检查新的输出是否仍然良好。
什么是情景记忆
情景记忆存储什么?
回顾
情景记忆 = 带时间戳的会话日志,存储在数据库中。可以按用户、会话或嵌入进行搜索。压缩旧记录。将其输入语义记忆和程序记忆。
常见问题解答
「情节记忆(按会话记录)」课时是免费的吗?
是的 — 「情节记忆(按会话记录)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。
「情节记忆(按会话记录)」这节课中我会学到什么?
按时间和会话 ID 索引每次对话中发生的事情。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Agents 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「情节记忆(按会话记录)」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Agents 课中编写并运行代码吗?
能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 情节记忆(按会话记录)
- 语义记忆(向量化事实)
- 程序记忆(技能库)
- 记忆衰减与垃圾回收