Trusted — Risk Score 8/100
Last scan:10 hr ago Rescan
8 /100
smart-agent-memory
跨平台 Agent 长期记忆系统 — 分层上下文供给 + Skill经验记忆 + 温度模型 + 自动归档
纯 Node.js 原生实现的 Agent 记忆系统,无外部依赖,代码逻辑清晰,无任何恶意行为。发现一处轻微不一致:内存 CLI 引用了不存在的 lib/cn-optimize.js 模块,导致中文优化命令在当前版本不可用,但不影响核心功能。
Skill Namesmart-agent-memory
Duration47.2s
Enginepi
Safe to install
无需隔离。唯一缺陷是缺少 lib/cn-optimize.js 导致 diagnose/optimize-tags/compress 命令报错,建议补全该模块或在 memory-cli.js 中做 try-catch 保护。

Findings 2 items

Severity Finding Location
Low
lib/cn-optimize.js 模块缺失 Doc Mismatch
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
Low
scripts/extract.js 文件缺失 Doc Mismatch
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
ResourceDeclaredInferredStatusEvidence
Filesystem WRITE WRITE ✓ Aligned SKILL.md: permissions[read/write]: ~/.openclaw/workspace/memory
Shell NONE NONE 仅使用 child_process.execFileSync('qmd', ...) 且为可选工具,非 shell 管道
Network NONE NONE 无任何网络请求代码
Environment NONE NONE 仅使用 MEMORY_DIR 环境变量,未访问敏感凭证

File Tree

10 files · 115.1 KB · 3210 lines
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

Dependencies 1 items

PackageVersionSourceKnown VulnsNotes
node:sqlite 内置(Node.js>=22.5) Node.js 内置 No 纯内置模块,无第三方依赖

Security Positives

✓ 声称零外部依赖属实,只使用 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 完整性极高,详细说明各命令行为和架构