核心洞察
记忆不是插件。技能不是插件。它们是同一个 harness。
记忆 API 不是可持续的产品品类,技能系统本质上只是 markdown。
背景
- Sarah Wooders + Harrison Chase(LangChain 创始人):记忆不是插件,它是 harness
- Vasilije(Cognee 创始人):技能不是静态文件,在动态环境中会静默退化
两者指向同一个东西:世界模型(world model)。
什么是世界模型
定义:Agent 所感知的一切以及用来预测下一步行动的全部上下文总和。
包含:
- 代码库布局
- 工具 schema
- 文件系统
- 最近 20 轮对话
- 用户偏好
本质:harness 加载来决定下一步的全部上下文聚合。
技能是记忆的子集吗?
| 维度 | 记忆 | 技能 |
|---|---|---|
| 功能 | 观察世界 | 编码规则 |
| 形式 | 原始上下文 | 压缩过程 |
| 声明 | "世界发生了什么" | "做任务 T,执行步骤 X, Y, Z" |
| 关系 | 被读取 | 读取记忆来改进 |
技能是记忆的压缩形式:
"世界过去对 X, Y, Z 的响应产生了 T,很可能再次产生。"
Cognee 的实现
统一存储
技能和记忆存储在同一个 store 中:
- 自我改进运行时(self-improvement runtime)
- Agentic 检索器(agentic retriever)
- 共享同一个图谱节点
技能摄取
cognee.remember("skills/")
一行代码即可摄取技能。
技能变更事件
SkillChangeEvent
技能变更时发射记忆事件:
- 技能是可进化的记忆节点
- 可追溯
- 可控制
相互增强
技能 ← 读取记忆 → 改进
记忆 ← 修正技能 → 改进
没有清晰的界限,因为不应该有。
改进 API
proposal_result = await cognee.remember(
SkillRunEntry(
selected_skill_id=skill_to_improve,
task_text="Review the current skill",
result_summary="Review missed boundary bug.",
success_score=score,
feedback=-1.0 if score < 0.7 else 1.0,
),
dataset_name=DATASET,
session_id=SESSION,
skill_improvement={
"skill_name": skill_to_improve,
"apply": False,
"score_threshold": 0.9,
},
)
参数说明:
| 参数 | 说明 |
|---|---|
task_text | 任务描述 |
result_summary | 结果摘要 |
success_score | 成功分数 |
feedback | 反馈(< 0.7 为 -1.0,否则 +1.0) |
score_threshold | 触发改进的阈值(0.9) |
apply | 是否立即应用改进 |
实战验证
Hackathon 成果:
- 21 个 LLM Knowledge Wikis
- 3 小时内建成
- 使用 Cognee + Redis 作为 session store
结论
核心观点
每个游戏棋盘之外的世界模型都是永久 misspecified(规格不全)的。
Harness 的工作不是修复 schema,而是在一个天生就是错的 schema 之上运行控制器。
Cognee 就是那个控制器,技能自我改进是第一步。
统一视角
无论你用:
- 记忆 API
- 技能系统
- Agent MD 文件
- 压缩策略
都是同一个世界模型的不同表现形式。
制胜 harness
从第一天起就把记忆和技能当作一个综合世界模型来对待的 harness 会赢。
检验标准
如果你的记忆系统不能路由技能,那它就不是记忆,更谈不上世界模型。
资源
- 作者:Vasilije (@tricalt),Cognee 创始人
- 原文:https://x.com/tricalt/status/2055876832797581406
- Cognee 开源:https://github.com/topoteretes/cognee
- 相关讨论:
- Sarah Wooders + Harrison Chase 的记忆 harness 观点
- Vasilije 技能不是静态文件的论述(170 万浏览):https://x.com/tricalt/status/2032179887277060476