# Knowledge Graph

> 读写用户的个人知识图谱（节点查询、创建、更新、掌握度）。

- Skill: `tencent/knowledge-graph` (Agent Skill)
- Install (CLI): `npx skillmds@latest add tencent/knowledge-graph`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tencent/knowledge-graph/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tencent (https://skillmd.com/u/tencent)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tencent/knowledge-graph

---


# 知识图谱操作

用户的知识组织在一张个人知识图谱中。每个概念是一个节点，节点之间通过关系边连接。

## 工具

| 工具 | 用途 |
|------|------|
| `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`）。

### 何时创建

只为有独立学习价值的概念创建节点，不要为每个提到的词都创建。

### 关系（防止孤立节点）

每个新节点都应该与图谱中的已有节点建立联系。**创建前必须充分搜索**，按以下策略寻找关联：

1. **直接搜索**：用概念名搜索，如 `search_nodes("导数")`
2. **上位概念搜索**：搜索所属学科/领域，如 `search_nodes("微积分")` 或 `search_nodes("高等数学")`
3. **相关概念搜索**：搜索同类或前置概念，如 `search_nodes("极限")`（导数的前置知识）

至少尝试 2 种以上搜索词。如果搜索到了相关节点，必须通过关系参数连接：

| 关系类型 | 参数 | 场景 |
|---------|------|------|
| 前置 `prerequisite` | `parent_node_ids` | 子概念 / 需要先掌握的基础 |
| 相关 `related` | `related_node_ids` | 同类 / 横向关联 |
| 对比 `contrasts` | `contrast_node_ids` | 对立 / 对照 |

> **极端情况**：如果图谱中确实没有任何相关节点（如用户的第一个知识领域），先创建一个学科/领域级别的父节点（如「高等数学」「数据结构」），再创建具体概念节点挂在其下。

## 工作流

1. 用户提问 → `search_nodes` 查找相关节点
2. 根据掌握度决定讲解深度（低→基础，高→深入或出题）
3. **新概念必须在当轮创建**：搜索相关节点 → `create_node` 建立关系 → 然后讲解。不要等讲解完或下一轮才创建。
4. 用户表现变化 → `update_mastery`

