可信 — 风险评分 8/100
上次扫描:10 小时前 重新扫描
8 /100
smart-agent-memory
跨平台 Agent 长期记忆系统 — 分层上下文供给 + Skill经验记忆 + 温度模型 + 自动归档
纯 Node.js 原生实现的 Agent 记忆系统,无外部依赖,代码逻辑清晰,无任何恶意行为。发现一处轻微不一致:内存 CLI 引用了不存在的 lib/cn-optimize.js 模块,导致中文优化命令在当前版本不可用,但不影响核心功能。
技能名称smart-agent-memory
分析耗时47.2s
引擎pi
可以安装
无需隔离。唯一缺陷是缺少 lib/cn-optimize.js 导致 diagnose/optimize-tags/compress 命令报错,建议补全该模块或在 memory-cli.js 中做 try-catch 保护。

安全发现 2 项

严重性 安全发现 位置
低危
lib/cn-optimize.js 模块缺失 文档欺骗
memory-cli.js 第18行 require('../lib/cn-optimize') 但 lib/ 目录中不存在该文件,导致 diagnose/optimize-tags/compress/optimize-search/optimize-flush 五个命令运行时抛出 MODULE_NOT_FOUND 错误。这是代码缺陷而非安全威胁,但影响了声称的中文优化功能完整性。
const cn = require('../lib/cn-optimize');
→ 补全 lib/cn-optimize.js 模块,或在 memory-cli.js 顶部用 try-catch 包裹 require 并对相关命令做降级提示
scripts/memory-cli.js:18
低危
scripts/extract.js 文件缺失 文档欺骗
README.md 和 memory-cli.js 的 usage 提示中提到 extract 命令由 scripts/extract.js 提供,但实际文件中不存在该文件。extract 功能由 lib/extract.js 实现(extractSkill 函数),CLI 直接调用该函数而非通过 scripts/extract.js。这不影响功能但与文档描述不符。
const { extractSkill } = require('../lib/extract');
→ 文档中 extract 命令描述应指向 lib/extract.js,或创建 scripts/extract.js 作为包装脚本以保持文档一致性
scripts/memory-cli.js:26
资源类型声明权限推断权限状态证据
文件系统 WRITE WRITE ✓ 一致 SKILL.md: permissions[read/write]: ~/.openclaw/workspace/memory
命令执行 NONE NONE 仅使用 child_process.execFileSync('qmd', ...) 且为可选工具,非 shell 管道
网络访问 NONE NONE 无任何网络请求代码
环境变量 NONE NONE 仅使用 MEMORY_DIR 环境变量,未访问敏感凭证

目录结构

10 文件 · 115.1 KB · 3210 行
JavaScript 7f · 2357L Markdown 2f · 836L JSON 1f · 17L
├─ 📁 lib
│ ├─ 📜 cn-optimize.js JavaScript 292L · 7.8 KB
│ ├─ 📜 extract.js JavaScript 61L · 1.3 KB
│ ├─ 📜 search.js JavaScript 104L · 3.3 KB
│ ├─ 📜 sqlite-store.js JavaScript 592L · 23.9 KB
│ ├─ 📜 store.js JavaScript 585L · 21.2 KB
│ └─ 📜 temperature.js JavaScript 90L · 2.3 KB
├─ 📁 scripts
│ └─ 📜 memory-cli.js JavaScript 633L · 25.8 KB
├─ 📋 _meta.json JSON 17L · 469 B
├─ 📝 README.md Markdown 608L · 20.9 KB
└─ 📝 SKILL.md Markdown 228L · 8.2 KB

依赖分析 1 项

包名版本来源已知漏洞备注
node:sqlite 内置(Node.js>=22.5) Node.js 内置 纯内置模块,无第三方依赖

安全亮点

✓ 声称零外部依赖属实,只使用 Node.js 内置模块(fs, path, os, child_process, node:sqlite)
✓ 无网络请求,无凭证访问,无数据外泄
✓ 无 shell 注入风险:smartSearch 使用 execFileSync 传数组参数,CLI 参数解析用安全数组方式
✓ 文件写入严格限定在 ~/.openclaw/workspace/memory/ 目录
✓ extractSkill 写入 SKILL.md 的位置(~/.openclaw/skills/<name>/)是合法的 OpenClaw 技能目录
✓ qmd 工具调用有 10 秒超时和 try-catch 降级,不可用水无感知
✓ 没有 eval、atob、base64 解码等混淆手段
✓ 没有访问 ~/.ssh、~/.aws、.env 等敏感路径
✓ README.md 完整性极高,详细说明各命令行为和架构