导航知识图谱技能
查询和管理统一的项目知识图谱。从任务、SOPs、系统文档和经验记忆中检索相关知识。
为什么存在这个技能
Navigator v6.0.0引入了项目知识图谱:
- 统一搜索:通过一个界面查询所有知识类型
- 经验记忆:模式、陷阱、决策、学习持久化
- 上下文感知检索:只加载相关知识(约1-2k令牌)
- 关系遍历:找到相关概念和文档
何时调用
查询触发器:
- “我们对X了解多少?”
- “显示与X相关的一切”
- “X有什么陷阱吗?”
- “关于X的决策是什么?”
- “找到关于X的所有知识”
记忆捕获触发器:
- “记住这个模式: …”
- “记住这个陷阱: …”
- “记住我们决定: …”
- “记住这个学习: …”
图管理触发器:
- “初始化知识图谱”
- “重建知识图谱”
- “显示图统计信息”
图谱位置
.agent/knowledge/graph.json (约1-2k令牌,查询时加载)
执行步骤
第1步:确定行动
查询(搜索知识):
用户:"我们对认证了解多少?"
→ 按概念查询图谱
捕获(存储记忆):
用户:"记住:认证变更经常破坏会话测试"
→ 创建新的记忆节点
初始化(构建图谱):
用户:"初始化知识图谱"
→ 根据现有文档构建图谱
统计(查看图谱):
用户:"显示图统计信息"
→ 显示图谱统计信息
第2步:加载或初始化图谱
检查图谱是否存在:
if [ -f ".agent/knowledge/graph.json" ]; then
echo "Graph exists"
else
echo "No graph found, will initialize"
fi
如果不存在则初始化:
python skills/nav-graph/functions/graph_builder.py \
--agent-dir .agent \
--output .agent/knowledge/graph.json
第3A步:查询知识(如果是查询行动)
从用户输入中提取概念:
用户:"我们对测试了解多少?"
→ 概念:测试
用户:"认证有什么陷阱吗?"
→ 概念:认证(标准化为认证)
运行查询:
python skills/nav-graph/functions/graph_manager.py \
--action query \
--concept "testing" \
--graph-path .agent/knowledge/graph.json
显示结果:
知识图谱:"testing"
任务(3)
- TASK-30:任务验证增强(已完成)
- TASK-17:视觉回归集成(已完成)
- TASK-11:项目技能生成(已完成)
记忆(2)
- 陷阱:"认证变更破坏会话测试"(90%)
- 模式:"总是先运行单元测试再集成"(85%)
SOPs(1)
- visual-regression-setup
文件(5)
- skills/backend-test/*
- skills/frontend-test/*
加载详情:"阅读 TASK-30" 或 "显示测试记忆"
第3B步:捕获记忆(如果是捕获行动)
从用户输入中解析记忆:
用户:"记住这个陷阱:认证变更经常破坏会话测试"
→ 类型:陷阱
→ 摘要:"认证变更经常破坏会话测试"
→ 概念:[认证,测试]
用户:"记住我们决定使用JWT而不是会话以实现扩展"
→ 类型:决策
→ 摘要:"使用JWT而不是会话以实现扩展"
→ 概念:[认证,架构]
确定记忆类型:
| 用户说 | 记忆类型 |
|---|---|
| “模式”,“我们使用”,“方法” | 模式 |
| “陷阱”,“小心”,“注意” | 陷阱 |
| “决定”,“选择”,“因为” | 决策 |
| “学习”,“发现”,“意识到” | 学习 |
创建记忆:
python skills/nav-graph/functions/graph_manager.py \
--action add-memory \
--memory-type pitfall \
--summary "auth changes often break session tests" \
--concepts "auth,testing" \
--confidence 0.9 \
--graph-path .agent/knowledge/graph.json
可选创建详细记忆文件:
# 陷阱:认证变更破坏会话测试
## 摘要
认证变更经常破坏会话测试的原因...
## 上下文
在TASK-XX期间发现当...
## 推荐方法
修改认证时,总是运行...
## 相关
- TASK-12:V3 Skills-Only
- SOP:autonomous-completion
确认捕获:
记忆捕获:mem-001
类型:陷阱
摘要:"认证变更经常破坏会话测试"
概念:认证,测试
置信度:90%
这将在处理认证或测试主题时浮现。
第3C步:初始化图谱(如果是初始化行动)
从现有文档构建:
python skills/nav-graph/functions/graph_builder.py \
--agent-dir .agent \
--output .agent/knowledge/graph.json
显示结果:
知识图谱初始化
扫描:
- 任务:35
- SOPs:12
- 系统文档:3
- 标记:8
提取:
- 概念:15
- 关系:47
图谱保存到 .agent/knowledge/graph.json
查询:"我们对[主题]了解多少?"
第3D步:显示统计信息(如果是统计行动)
显示图谱统计信息:
python skills/nav-graph/functions/graph_manager.py \
--action stats \
--graph-path .agent/knowledge/graph.json
输出:
知识图谱统计信息
==========================
总节点数:65
总边数:47
记忆:5
最后更新时间:2025-01-23T10:30:00Z
按类型:
任务:35
SOPs:12
系统:3
标记:8
概念:15
记忆:5
第4步:查找相关(可选)
如果用户询问相关项目:
用户:"TASK-29与什么相关?"
运行遍历:
python skills/nav-graph/functions/graph_manager.py \
--action related \
--node-id "TASK-29" \
--max-depth 2 \
--graph-path .agent/knowledge/graph.json
记忆类型
模式
“我们在这个项目中使用X做Y”
- 可重用的方法
- 项目约定
- 最佳实践
陷阱
“当接触Y时要小心X”
- 常见错误
- 陷阱
- 失败模式
决策
“我们选择X而不是Y因为Z”
- 架构决策
- 技术选择
- 权衡理由
学习
“在这个代码库中X通常意味着Y”
- 项目特定知识
- 错误解释
- 领域洞察
置信度系统
基础置信度:
- 基于纠正:0.8
- 显式捕获:0.9
衰减:
- 自上次验证以来每周1%
提升:
- 每次使用+5%(最多+25%)
阈值:
- 低于0.3:修剪候选
- 高于0.7:可靠的记忆
与其他技能的集成
nav-start(会话开始)
会话开始时加载图谱统计信息:
知识图谱:65个节点,5个记忆
相关:当前上下文中的2个记忆
nav-task(任务创建)
从新任务中自动提取概念:
创建TASK-35:项目记忆
提取的概念:知识,记忆,图谱
添加到图谱。
nav-profile(纠正)
纠正通过 correction_to_memory.py 自动创建记忆:
# 在nav-profile中检测到纠正时:
python3 skills/nav-graph/functions/correction_to_memory.py \
--action convert-one \
--correction-json '{"pattern": "...", "context": "...", "confidence": "high"}'
# 输出:
[纠正检测到]
→ 类型:陷阱(基于模式分析)
→ 概念:[认证,测试](自动提取)
→ 创建记忆:mem-002
→ 添加到图谱
同步所有纠正:
python3 skills/nav-graph/functions/correction_to_memory.py \
--action sync \
--profile-path .agent/.user-profile.json \
--graph-path .agent/knowledge/graph.json
nav-marker(上下文标记)
标记引用图谱状态:
## 图谱状态
- 浮现的记忆:mem-001, mem-003
- 活跃的概念:认证,测试
配置
在 .agent/.nav-config.json 中:
{
"knowledge_graph": {
"enabled": true,
"auto_capture_corrections": true,
"auto_capture_decisions": true,
"auto_surface_relevant": true,
"max_session_memories": 5,
"confidence_decay_rate": 0.01,
"staleness_threshold_days": 90,
"git_tracked": true
}
}
图谱维护
健康检查
python3 skills/nav-graph/functions/graph_maintenance.py --action health
输出:
知识图谱健康检查
========================================
总节点数:94
总边数:819
记忆:2(2个高置信度)
健康评分:100/100
未检测到问题!
冲突检测
找到可能相互矛盾的记忆:
python3 skills/nav-graph/functions/graph_maintenance.py --action conflicts
过时记忆检测
找到90+天未验证的记忆:
python3 skills/nav-graph/functions/graph_maintenance.py --action stale --stale-days 90
低置信度修剪
找到并可选移除低置信度记忆:
# 预览将被移除的内容
python3 skills/nav-graph/functions/graph_maintenance.py --action prune --threshold 0.3 --dry-run
# 实际移除(慎用)
python3 skills/nav-graph/functions/graph_maintenance.py --action prune --threshold 0.3 --execute
应用衰减
降低过时记忆的置信度:
python3 skills/nav-graph/functions/graph_maintenance.py --action decay --decay-rate 0.01
令牌预算
| 组件 | 令牌 | 何时 |
|---|---|---|
| graph.json(50个节点) | ~1000 | 查询时 |
| graph.json(200个节点) | ~2000 | 查询时 |
| 记忆摘要(5) | ~500 | 会话开始时 |
| 完整记忆详情 | ~500每个 | 按需 |
会话开销:~1.3k令牌
成功标准
图谱技能成功时:
- [ ] 查询返回跨知识类型的相关结果
- [ ] 记忆持久化并适当浮现
- [ ] 概念连接相关项目
- [ ] 置信度衰减/提升工作
- [ ] 图谱保持在2k令牌开销以下
最佳实践
好的查询:
- “我们对认证了解多少?”(具体概念)
- “测试有什么陷阱吗?”(范围类型)
- “显示与TASK-29相关的一切”(节点遍历)
好的记忆捕获:
- “记住:我们使用X做Y”(清晰的模式)
- “记住这个陷阱:X破坏Y”(具体问题)
- “记住我们决定X因为Y”(包括理由)
避免:
- 过于宽泛的查询(“我们了解什么?”)
- 在记忆中存储代码片段(使用路径代替)
- 捕获显而易见的知识(专注于项目特定洞察)
这项技能将Navigator从无状态助手转变为知识型团队成员