安全扫描
OpenClaw
可疑
medium confidence该技能的代码和文档大致符合其宣称的目的(本地 JSON 支持的知识图谱和保管库),但某些行为较广泛或出乎意料(主动注入代理指令文件、保管库存储在技能文件夹旁、知识图摘要暴露保管库密钥名称),安装前应审查。
评估建议
该技能实现了本地知识图谱和秘密保管库,但也(1)在安装时修补代理指令文件以引起主动使用,(2)鼓励保存多种敏感数据类型,(3)将保管库密钥和加密保管库存储在技能文件夹内以实现可移植性。安装前,请(1)审查 `scripts/install.mjs` 以查看将修改哪些文件,(2)备份 `AGENTS.md/CLAUDE.md/GEMINI.md`,(3)检查 `scripts/serialize.mjs` 和 `vault.mjs` 以确认保管库行为,(4)确保 `data/` 在 `.gitignore` 中,(5)确保 `.vault-key` 和 `vault.enc.json` 以严格权限创建,(6)考虑将高风险秘密存储在单独的审计保管库中,(7)考虑禁用主动注入行为或限制自动触发规则以避免自动捕获广泛的个人数据。...详细分析 ▾
ℹ 用途与能力
名称/描述与包含的代码一致(图表 CRUD、搜索、KGML 摘要、可视化、保管库)。一个小的不匹配:人类可读描述要求 KG 始终使用并主动触发,但注册表标志显示 always:false(技能预计在安装时修补代理指令文件以引起主动使用,而不是由平台强制包含)
⚠ 指令范围
运行时指令和脚本指示代理主动添加许多类型的个人数据(人员、位置、日常、凭据)并运行安装脚本以修补代理指令文件。该技能还指示将凭据存储在加密保管库中,序列化器将在 KGML 摘要中包含保管库密钥名称(不包含值)。主动捕获敏感类别和自动注入代理提示的组合增加了意外收集/暴露的风险。
ℹ 安装机制
无外部安装下载;代码为本地 JS(node 脚本)。这降低了供应链风险。然而,install.mjs 将修改工作区代理指令文件(AGENTS.md/CLAUDE.md/GEMINI.md)并在技能下创建 data/ 文件 —— 这是侵入式的,但文档中有描述。运行前请审查安装脚本。
⚠ 凭证需求
该技能不请求环境变量(良好),但它存储了一个加密保管库并将保管库密钥文件放在技能文件夹内以实现可移植性。设计故意将保管库密钥保留在技能旁边(记录的权衡)。序列化器在 KG 摘要中暴露保管库密钥名称 —— 尽管值是加密的,密钥名称可能在 KG 摘要加载到 LLM 上下文或共享时泄露敏感元数据。
ℹ 持久化与权限
该技能未设置 always:true,但安装程序修补了代理的指令文件,因此代理将被指示主动咨询/添加 KG。这使得该技能即使没有平台级 always:true 也能对代理行为具有持久影响(通过修改指令);这在文档中有解释,但这是一个重要特权,应进行审查。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv1.1.12026/3/2
添加了 SKILL.md 描述字段的引号以改进格式和兼容性。无功能或行为变化,仅更新文档。
● 可疑
安装命令 点击复制
官方npx clawhub@latest install knowledge-graph-skill
镜像加速npx clawhub@latest install knowledge-graph-skill --registry https://cn.clawhub-mirror.com
技能文档
个人知识图谱存储为 JSON,通过 CLI 脚本查询。生成紧凑的 KGML 摘要用于会话上下文。 核心指令在 AGENTS.md 中(安装时自动注入)。本文件仅涵盖设置、高级用法和参考。
首次设置
node scripts/install.mjs [--workspace /path/to/workspace] [--platform openclaw|claude|gemini]
自动检测平台并使用 KG 指令 + 图谱摘要修补代理指令文件(AGENTS.md、CLAUDE.md 或 GEMINI.md)。支持幂等操作。KGML 格式参考
#KGML v2 | e r | depth: |
[category]
Label(Alias):type — attr1,attr2
ChildLabel(CA):type — attrs ← 缩进 = parent>child
%rels
A>verb>B C>verb>D ← 跨分支关系(别名)
%vault key1,key2 ← vault 键名(无值)
高级查询命令
除了 AGENTS.md 中的基础命令(find、traverse、rels)之外:
node scripts/query.mjs children # 直接子节点
node scripts/query.mjs type # 所有指定类型的实体
node scripts/query.mjs cat # 所有指定类别的实体
node scripts/query.mjs orphans # 未链接的实体
node scripts/query.mjs stats # 图谱统计
node scripts/query.mjs recent [--days 7] # 最近创建/更新的实体
node scripts/query.mjs timeline [--from YYYY-MM-DD] [--to YYYY-MM-DD]
node scripts/query.mjs changed # 创建后修改过的实体
node scripts/query.mjs uncertain # 置信度 < 0.5 的实体
合并
node scripts/merge.mjs --target --source --mode absorb|nest
Vault(机密)
node scripts/vault.mjs set --note "description"
node scripts/vault.mjs get # 原始值(用于管道)
node scripts/vault.mjs list # 仅列出键
node scripts/vault.mjs del
深度启发式 — 提取多少层
在添加丰富知识项(文章、论文、报告、系统描述)之前,先评估复杂性:
# 评分文本内容并获取推荐深度 + 清单:
node scripts/depth-check.mjs "粘贴文本或摘要"
echo "文章文本" | node scripts/depth-check.mjs
node scripts/depth-check.mjs --file /path/to/article.txt
node scripts/depth-check.mjs --json # 机器可读格式# 分数解读:
# 0-1 → 1 层(仅根节点)
# 2-3 → 2 层(根节点 + 概念)
# 4-5 → 3 层(根 → 领域 → 机制)
# 6-7 → 4+ 层(完整提取,包含组织/事件/策略 + 跨关系)
关键规则: 对于复杂内容,绝不要停留在 2 层。如果分数 ≥ 4,提取所有命名组织、事件、策略和跨关系 — 而不仅仅是顶层主题。
可视化
node scripts/visualize.mjs # → data/kg-viz.html
node scripts/visualize.mjs --output /tmp/graph.html
务必使用此脚本。不要编写自定义 HTML。输出是自包含的,离线可用,无需 CDN。父边缘渲染为 蓝色虚线箭头(60% 不透明度)。常规边缘是红色实线箭头。
配置
所有设置都有合理的默认值。仅覆盖您需要的设置 — 配置仅存储您的更改。
node scripts/config.mjs # 列出所有设置及其当前值
node scripts/config.mjs get # 获取值(例如 summary.tokenBudget)
node scripts/config.mjs set # 设置值
node scripts/config.mjs reset # 将单个键重置为默认值
node scripts/config.mjs reset --all # 重置所有设置
node scripts/config.mjs --json # 完整配置以 JSON 格式输出
可用设置
| 部分 | 键 | 默认值 | 描述 |
|---|---|---|---|
| summary | tokenBudget | 5000 | kg-summary.md 的最大 token 数 |
maxChildDepth | auto | 树深度(null=自动:3/<100, 2/100-400, 1/>400) | |
maxAttrLen | 40 | 属性值的最大字符数 | |
maxPerRoot | 4 | 每个根子树显示的最大关系数 | |
compactThreshold | 400 | 紧凑模式的实体计数 | |
mediumThreshold | 200 | 中等深度的实体计数 | |
| validation | minEntities | 30 | 提取通过的最小实体数 |
minRelationRatio | 0.5 | 每实体的关系比率 | |
minDepth | 3 | 通过的最小层级深度 | |
minEvents | 3 | 通过的最小事件节点数 | |
| depthCheck | entityCapForEstimate | 50 | 目标估计的 NER 计数上限 |
minEntitiesMultiplier | 1.0 | 命名实体 → 最小目标乘数 | |
extraEntities | 30 | 添加到最小值以获取最大实体范围 | |
| consolidation | autoNest | true | 自动嵌套单关系孤立实体 |
mergeSuggestions | true | 建议合并相似标签 | |
pruneEmptyAttrs | true | 移除空/空值属性 | |
levenshteinThreshold | 2 | 合并建议的最大编辑距离 | |
| visualization | repulsion | 5000 | 物理排斥力 |
edgeRestLength | 160 | 默认边缘静止长度 | |
overlapPenalty | 3 | 重叠排斥乘数 | |
simulationSteps | 500 | 物理模拟迭代次数 | |
initialSpread | 1.5 | 初始节点扩散乘数 | |
zoomAnimationMs | 400 | 缩放至节点动画持续时间 |
data/kg-config.json(每个代理独立,已加入 gitignore)。跨代理访问(只读)
import { createReader } from '/lib/reader.mjs';
const kg = createReader();
kg.search("query"); kg.traverse("id", { depth: 2 }); kg.stats();
或 CLI:node scripts/export.mjs --format json --target /path/to/output.json记忆导入
node scripts/import-memory.mjs # 试运行
node scripts/import-memory.mjs --apply # 以置信度 0.5 添加
然后:node scripts/query.mjs uncertain 查看自动导入的实体。知识实体指南
knowledge 类型涵盖声明性和过程性知识。使用属性和标签进行区分:
| 类型 | 标签 | 关键属性 | 示例 |
|---|---|---|---|
| 事实/发现 | #fact, #til | source, field, summary | "LLMs 每 token 约使用 4 个字符" |
| 研究/论文 | #paper, #research | source, field, summary, author | AI 对齐论文发现 |
| 想法 | #idea | summary, status | "为 KG 查询构建 CLI" |
| 操作指南/程序 | #howto, #procedure | steps, context, summary | "如何在 Pi 上部署" |
| 心智模型 | #mental-model, #framework | steps, context, summary | "调试网络:ping→DNS→防火墙" |
| 工作流 | #workflow | steps, context, summary | "代码审查:先测试,再实现" |
steps: 有序过程作为字符串(使用→或编号:"1. 检查日志 → 2. 重现 → 3. 修复 → 4. 测试")context: 何时/何地应用此知识(例如"网络中断时","代码审查期间")summary: 此知识内容的简短描述
整合
每周运行 node scripts/consolidate.mjs 或当实体数 > 80 时运行。然后运行 summarize.mjs。
安全
- 切勿在聊天中打印 vault 值或记录到 memory/ 文件
- vault.enc.json 和 .vault-key 绝不能出现在上下文中
- 其他代理:通过 reader.mjs 只读访问,无写入权限
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制