| name | knowledge_graph |
| description | 读写用户的个人知识图谱(节点查询、创建、更新、掌握度)。 |
| always | true |
知识图谱操作
用户的知识组织在一张个人知识图谱中。每个概念是一个节点,节点之间通过关系边连接。
工具
| 工具 | 用途 |
|---|
search_nodes | 按关键词搜索节点,返回 id、标题、描述、掌握度 |
get_node | 按 node_id 获取节点详情 |
create_node | 创建新节点,同时通过 parent_node_ids / related_node_ids / contrast_node_ids 建立关系 |
update_node | 更新节点内容(标题、笔记、标签等) |
update_mastery | 更新掌握度(delta 范围 -1.0 ~ +1.0) |
掌握度
范围 0.0 ~ 1.0,通过 delta 增减。小步调整,不要一次大幅变动。
| 情况 | delta |
|---|
| 答对,理解清晰 | +0.1 ~ +0.2 |
| 答对但犹豫 | +0.05 |
| 答错,讲解后理解 | 0 ~ +0.05 |
| 答错且困惑 | -0.05 ~ -0.1 |
| 明确表示不懂 | -0.1 ~ -0.2 |
创建节点
节点粒度(重要)
一个节点 = 一个独立概念。判断标准:
- ✅ 「极限」「导数」「二叉树」「快速排序」— 单一概念,各自独立
- ❌ 「极限和导数」「栈与队列」「TCP/UDP」— 复合概念,必须拆分
如果用户一次提到多个概念,应分别创建节点,再通过关系连接(如 related_node_ids)。
何时创建
只为有独立学习价值的概念创建节点,不要为每个提到的词都创建。
关系(防止孤立节点)
每个新节点都应该与图谱中的已有节点建立联系。创建前必须充分搜索,按以下策略寻找关联:
- 直接搜索:用概念名搜索,如
search_nodes("导数")
- 上位概念搜索:搜索所属学科/领域,如
search_nodes("微积分") 或 search_nodes("高等数学")
- 相关概念搜索:搜索同类或前置概念,如
search_nodes("极限")(导数的前置知识)
至少尝试 2 种以上搜索词。如果搜索到了相关节点,必须通过关系参数连接:
| 关系类型 | 参数 | 场景 |
|---|
前置 prerequisite | parent_node_ids | 子概念 / 需要先掌握的基础 |
相关 related | related_node_ids | 同类 / 横向关联 |
对比 contrasts | contrast_node_ids | 对立 / 对照 |
极端情况:如果图谱中确实没有任何相关节点(如用户的第一个知识领域),先创建一个学科/领域级别的父节点(如「高等数学」「数据结构」),再创建具体概念节点挂在其下。
工作流
- 用户提问 →
search_nodes 查找相关节点
- 根据掌握度决定讲解深度(低→基础,高→深入或出题)
- 新概念必须在当轮创建:搜索相关节点 →
create_node 建立关系 → 然后讲解。不要等讲解完或下一轮才创建。
- 用户表现变化 →
update_mastery