关系记忆
关系记忆是 knowledge 工具中可选择启用的图谱侧。 当代理需要记住事物之间如何关联,而不仅仅是哪些文本片段匹配查询时,请使用它。
这与普通的长期记忆是分开的。knowledge 工具由 zeroclaw-memory 知识图谱支持,而普通记忆仍然是通过 memory_* 工具暴露的 Memory 后端。
普通长期记忆回答诸如“我们对这个主题了解什么?”这类问题。结构化关系记忆回答诸如“哪些节点与这个事物相连?”,“谁管理这个客户?”,或者“哪些技能工作流使用此能力?”这类问题。
启用知识图谱
图形工具默认处于禁用状态。在期望 agent 调用 knowledge 之前,请先在配置中启用它:
[knowledge]
enabled = true
当前关系捕获是显式的。代理通过 knowledge 操作(如 capture 和 relate)存储图条目;启用该工具并不会自动开启摄取。关系记忆可能包含敏感的运营或业务上下文,因此操作人员应自行选择要存储的内容。
概念
该图存储节点和有向边。
节点类型:
pattern:可复用的工作流、实践或技能化流程decision:设计选择、策略决策,或已接受的方向lesson:从一次事件、评审或运行中学到的东西expert:所有者、管理者、维护者角色或代理角色technology:提供程序、工具、协议或能力面client:被跟踪的账户、项目、工作区或外部组contact:客户端或项目的联系人点interaction:会议、请求、审查、事件,或其他带日期的接触点
关系:
usesreplacesextendsauthored_byapplies_tomanages_clientcontact_ofinteracted_with
方向很重要。例如,contact 指向 client 时使用 contact_of,而 client 指向 interaction 时使用 interacted_with。
工具操作
knowledge 工具支持诸如 capture、search、relate、suggest、expert_find、lessons_extract 和 graph_stats 等通用记忆操作。
面向关系的操作有:
| 操作 | 必填字段 | 使用 |
|---|---|---|
graph_neighbors | node_id | 返回任意节点的入边和出边。 |
client_network | client_id | 返回 client 节点的联系人、管理者和最近的交互。 |
interaction_log | client_id | 返回与 client 节点连接的最近交互节点。 |
这些是面向模型的工具操作,不是 CLI 子命令。下面的 JSON 示例展示了当技能或指令要求代理捕获或检查图关系时,它可以传递的参数。
客户端关系示例
创建客户端节点。capture 返回 node_id;请将该值用作下面的 <client-node-id>:
{
action: "capture",
"node_type": "client",
"title": "示例工作区",
"内容": “用于演示关系记忆的中性占位工作区。”,
"tags": ["example", "workspace"]
}
创建一个联系人节点,然后将其与客户端关联:
{
action: "capture",
"node_type": "contact",
"title": 项目联系人,
"内容": “示例工作区的主要联系人角色。除非策略允许,否则不要存储个人联系方式。”,
"tags": ["example", "contact"]
}
{
action: "relate",
"from_id": "<contact-node-id>",
"to_id": "<client-node-id>",
"relation": "contact_of"
}
创建一个交互并将其附加到客户端:
{
action: "capture",
"node_type": "interaction",
"title": "范围审查",
"内容": 已审阅下一个实现切片,并同意将 UI 辅助函数排除在范围之外。,
"tags": ["example", "review"]
}
{
action: "relate",
"from_id": "<client-node-id>",
"to_id": "<interaction-node-id>",
"relation": "interacted_with"
}
请求当前网络:
{
action: "client_network",
"client_id": "<client-node-id>"
}
询问最近的交互:
{
action: "interaction_log",
"client_id": "<client-node-id>",
"limit": 10
}
技能能力示例
关系记忆不仅用于客户端式跟踪。一个技能可以引导代理从已安装的技能工作流构建能力图谱。有关包含设置和验证步骤的完整可复制版本,请参阅在技能中使用关系记忆。
示例 SKILL.md:
---
name: capability-map
description: Capture and query the relationship between local skills, capabilities, and steward roles
version: 0.1.0
author: zeroclaw_operator
tags: [knowledge, skills, capability-map]
---
# Capability map
Use the `knowledge` tool when the operator asks which skill, capability, or steward role is connected to a workflow.
Capture each reusable skill workflow as a `pattern` node. Capture reusable tool or platform surfaces as `technology` nodes. Capture maintainer or agent stewardship roles as `expert` nodes, using role names rather than personal details.
Use `uses` from a skill workflow to a capability it relies on. Use `authored_by` from a skill workflow to the role that maintains it. Use `graph_neighbors` when the operator asks what a skill depends on or what depends on a capability.
Do not store secrets, personal contact details, private URLs, or account identifiers. Summarize sensitive context outside the graph or ask before storing it.
代理可以捕获并关联这样的技能工作流:
{
action: "capture",
"node_type": "pattern",
"title": "发布检查技能",
"内容": 在发布签署前审查变更日志、版本标签、验证证据和回滚说明。,
"tags": ["skill", release]
}
{
action: "capture",
"node_type": "technology",
"title": "文档翻译工作流",
"内容": "使用 mdBook 翻译流水线处理源文档和翻译缓存验证。",
"tags": ["capability", docs]
}
{
action: "relate",
"from_id": "<release-check-skill-node-id>",
"to_id": "<docs-translation-capability-node-id>",
"relation": "uses"
}
然后操作员可以问“release check skill 依赖什么?”,agent 可以调用:
{
action: graph_neighbors,
"node_id": "<release-check-skill-node-id>",
"limit": 10
}
隐私规则
关系记忆是持久的。把它像任何其他公共或共享知识库一样对待:
- 在示例和测试中使用中性的占位符。
- 不要存储密钥、令牌、个人电子邮件地址、私有 URL、账户 ID 或会话 ID。
- 除非操作员的部署策略明确允许,否则不要存储个人联系方式。
- 优先使用诸如
ZeroClawMaintainer、release-steward或project-contact之类的角色标签,而不是使用真实姓名。 - 除非数据源、保留策略和审查流程都清晰,否则请保持自动摄取关闭。