记忆 + 知识组合
状态:运行中 (Running)。认知的
MemoryService和KnowledgeService通过C-COG-*提供;运行时桥接契约是已准入的消费路径。
Cognition 包含两个不同的服务,它们共同承载了代理对用户和事实的持续理解。两者看似相似,底层行为却截然不同。
| 服务 | 承载内容 | 连续性 | 更新方式 |
|---|---|---|---|
| 记忆 | “我对参与者的记忆”——关系连续性 | 每个代理 + 每个参与者范围 | 代理的行为 + 已准入的记忆写入路径 |
| 知识 | “我可以检索的事实”——结构化信息 | 每个知识库范围 | 策划流程 + 摄取路径 |
混淆这两个服务会导致不良的代理行为:应该存储在记忆中的关系事实会被分散到知识库中(脆弱且无范围限制);应该存储在知识库中的事实会被嵌入到记忆中(高变动率,低检索质量)。
记忆:关于参与者的连续性
| 属性 | 值 |
|---|---|
| 权威 | cognition/kernel/memory-service-contract.md |
| 范围 | 每个代理 + 每个参与者(已准入的 bank 范围:AGENT_CORE、AGENT_DYADIC 等) |
| 变更 | 通过已准入的记忆写入路径 |
| 检索 | 通过认知的提示通道和桥接表面 |
| 隐私 | 双方记忆不会跨参与者共享 |
记忆承载了代理与一个人的关系历史:偏好、之前的对话、约定的惯例、正在进行的主题。bank 范围是隐私和隔离的基本单位。
知识:可检索的事实
| 属性 | 值 |
|---|---|
| 权威 | cognition/kernel/knowledge-service-contract.md |
| 范围 | 每个知识库 |
| 变更 | 通过策划/摄取(不是来自单次对话) |
| 检索 | 通过结构化的检索表面 |
| 隐私 | 每个知识库授权 |
知识承载了代理可以查找的事实:文档、常见问题解答、特定领域的参考。知识不是记录特定参与者所说内容的地方。
为什么分离很重要
如果记忆服务吸收了知识服务:
- 每个参与者都会携带相同的事实副本
- 策划流程需要更新 N 个副本
- 跨参与者的事实更新会无声地漂移
如果知识服务吸收了记忆服务:
- 隐私边界会崩溃(一个参与者的记忆在一个共享的知识库中 = 泄露)
- 记忆的每个关系的保真度会降为“知识库恰好所说的内容”
Cognition 同时保留两者。应用程序通过已准入的表面来消费这两者;它们不会发明第三种融合它们的东西。
运行时如何消费认知
Runtime 是执行权威。Cognition 是认知权威。运行时桥接契约 (cognition/kernel/runtime-bridge-contract.md) 定义了 Runtime 可以消费的内容:
| 桥接接口 | 所有者 | 用途 |
|---|---|---|
| 记忆消费 | 认知 | Runtime 在回合组装时请求相关记忆 |
| 知识消费 | 认知 | Runtime 在回合组装时请求相关知识 |
| 提示服务 | 认知 | 认知在已准入的通道下组装提示 |
| 引用图 | 认知 | 认知解释为什么某个工件相关 |
桥接是消费,不是吞并。Runtime 不能重新定义记忆 bank 是什么或知识是如何策划的。Cognition 不依赖 Runtime 来成为自己。
读者场景:代理回忆用户
用户第二天回来与他们的代理交谈。
- 回合到达。 Runtime 收到
(agent_id, conversation_anchor_id)的回合。 - Runtime 调用 Cognition 桥接以获取记忆。 请求在代理 + 参与者 bank 范围内 (
AGENT_DYADIC+AGENT_CORE根据已准入策略) 的相关记忆。 - Cognition 返回记忆。 由 bank 范围和提示通道分离规则限定。
- Runtime 调用 Cognition 桥接以获取知识。 如果回合需要事实(例如,代理有一个绑定到其配置文件的知识库),则询问知识服务。
- 知识返回匹配的事实。 通过已准入的检索表面。
- Runtime 组装回合。 记忆 + 知识在已准入的提示通道分离下参与提示服务。
- 代理响应。 回合生命周期按照
runtime-agent-service-contract.md进行。
两个服务都参与了。没有一个吞并另一个。Runtime 通过桥接消费两者,但不重新定义它们。
读者场景:回合后的记忆写入
回合完成后,代理的行为可能会允许一次记忆写入。
- 记忆写入选项出现。 根据代理的已准入记忆写入规则。
- Cognition 准入。 写入在已准入的 bank 范围内 (
AGENT_DYADIC对于此参与者) 进入记忆。 - 其他参与者不受影响。 跨参与者范围得到尊重;写入对其他参与者的双方记忆不可见。
读者场景:知识策划更新
维护者更新了一个许多代理使用的知识库中的事实。
- 策划流程更新。 知识库条目被更新。
- 未来的检索看到新事实。 下次代理查询此知识库时,他们检索到更新的事实。
- 记忆不变。 过去的每个参与者的记忆快照不会被无声地重写。如果记忆引用了旧事实,引用图(参见 引用图)显示了关系;清理决策是明确的。
边界保持“知识改变”不会无声地改变“这个用户曾经说过什么”。
此组合不做的事情
- 它不允许 Runtime 吞并 Cognition。
- 它不允许记忆吸收知识或知识吸收记忆。
- 它不允许应用程序代码跳过桥接直接消费。
- 它不允许通过共享知识库导致跨参与者的记忆泄露。
边界总结
| 关注点 | 所有者 |
|---|---|
| 独立的认知权威 | cognition/kernel/cognition-contract.md (C-COG-*) |
| 记忆服务真相 | memory-service-contract.md |
| 知识服务真相 | knowledge-service-contract.md |
| Runtime 消费桥接 | runtime-bridge-contract.md |
| 提示服务(带通道分离) | prompt-serving-contract.md(参见 提示通道) |