Install
openclaw skills install @thcjp/memory-radaropenclaw skills install @thcjp/memory-radar面向 AI Agent 记忆文件的安全扫描系统,对记忆文件、日志、工作区配置进行持续安全审计,主动发现恶意指令、注入模式、凭证泄漏与行为操纵,防患于未然。
七大威胁类别检测
五级安全分级与告警
跨文件威胁关联分析
误报抑制机制
隔离与恢复链路
.memory-radar/quarantine/ 目录[已隔离 by 记忆雷达: 时间戳]--restore 命令一键恢复原始内容增量扫描
--force 参数强制全量扫描.memory-radar/state.json远程LLM增强分析(可选)
[REDACTED]),由LLM进行语义级分析解析用户指令,执行核心操作并返回处理结果。
输入: 用户提供操作指令和必要参数。
输出: 返回操作执行的结果。
指令解析与执行操作,处理输入数据并返回结果指令解析与执行相关配置参数进行设置处理输入数据,执行转换操作并输出结果。
输入: 用户提供操作指令和必要参数。
输出: 返回操作执行的结果。
数据处理与转换操作,处理输入数据并返回结果数据处理与转换相关配置参数进行设置验证处理结果的正确性,格式化输出并返回给用户。
输入: 用户提供操作指令和必要参数。
输出: 返回操作执行的结果。
结果验证与输出操作,处理输入数据并返回结果结果验证与输出相关配置参数进行设置| 组件 | 说明 | 关键参数 |
|---|---|---|
parser | 解析输入指令 | format, encoding |
processor | 执行核心处理逻辑 | mode, timeout |
output | 格式化输出结果 | format, encoding |
本skill还覆盖以下能力场景: Agent、记忆文件的安全扫、描系统、检测注入、数据外泄等七大威、注入检测难、凭证泄漏被动发现、扫描误报高、跨文件威胁关联缺、失四大痛点、提供七大威胁类别、可选远程、增量扫描七大核心、适用于、记忆定期安全审计、引入外部数据后注、入检测、凭证泄漏排查、协作前信任验证、记忆文件迁移前清、洗等场景、支持本地零网络模、式与可选远程、增强模式、本地模式无需任何。这些能力在上述核心功能中均有对应处理逻辑。
# 扫描全部记忆文件(本地模式,零网络请求)
python3 scripts/memory-scan.py
# 允许远程LLM分析(仅传输脱敏内容)
python3 scripts/memory-scan.py --allow-remote
# 扫描指定文件
python3 scripts/memory-scan.py --file memory/2026-07-18.md
# JSON输出(用于集成到CI/CD或其他工具链)
python3 scripts/memory-scan.py --json
# 强制全量扫描(忽略增量缓存)
python3 scripts/memory-scan.py --force
查看按文件列出的威胁清单,重点关注MEDIUM及以上级别的威胁。报告包含以下信息:
对于MEDIUM及以上威胁,系统会询问是否隔离。确认后执行隔离操作:
# 隔离指定文件的指定行
python3 scripts/quarantine.py memory/2026-07-18.md 42
隔离操作会:备份原文件到 .memory-radar/quarantine/ → 脱敏威胁行 → 记录隔离日志。
如确认隔离内容为误报或需要恢复:
python3 scripts/quarantine.py --restore memory/2026-07-18.md 42
系统从备份恢复原始内容,并清除隔离标记。
# 创建每日扫描定时任务
bash scripts/schedule-scan.sh
标记误报后系统自动学习:记录该模式到白名单 → 后续扫描自动跳过相似模式 → 白名单可手动审查与清理。
-scan: 命令参数,用于指定操作选项| 错误类型 | 原因 | 处理方式 |
|---|---|---|
| 扫描报错找不到文件 | 路径配置错误或工作区路径变更 | 检查工作区路径,用 --path /correct/path 指定正确路径 |
| 远程LLM不可用 | OPENAI_API_KEY未配置或已过期 | 配置OPENAI_API_KEY环境变量,或禁用 --allow-remote 使用本地模式 |
| 误报率过高 | 白名单未配置或上下文感知未启用 | 标记误报让系统自动学习,配置白名单规则,启用上下文感知降级 |
| 隔离后文件损坏 | 备份写入失败或磁盘空间不足 | 检查 .memory-radar/quarantine/ 是否有完整备份,清理磁盘空间后从备份恢复 |
| 增量扫描漏报 | state.json损坏或hash计算异常 | 删除 .memory-radar/state.json,用 --force 强制全量扫描 |
| 跨文件关联未触发 | 扫描文件数量不足或时间窗口不匹配 | 确保扫描覆盖足够时间范围(默认30天),检查关联规则配置 |
| 隔离操作被拒绝 | 文件权限不足或被其他进程占用 | 检查文件写入权限,关闭占用该文件的进程后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令 |
| 远程LLM分析超时 | 网络延迟或LLM服务负载高 | 增加超时时间配置,或回退到本地模式先完成基础扫描 |
输入: 用户说"扫描一下记忆文件有没有安全问题"
执行命令:
python3 scripts/memory-scan.py
输出:
记忆安全扫描
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
扫描记忆文件...
✓ MEMORY.md - SAFE
✓ memory/2026-07-18.md - SAFE
⚠ memory/2026-07-15.md - MEDIUM (line 42)
→ 疑似凭证泄漏:检测到 sk- 开头的高熵字符串
→ 关联:memory/2026-07-14.md line 18 含外泄指令
→ 建议:隔离并检查来源
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
总体:MEDIUM
建议处置:审查 memory/2026-07-15.md:42
后续操作: 用户确认后执行 python3 scripts/quarantine.py memory/2026-07-15.md 42 隔离威胁行。
输入: 用户说"我刚把一份外部文档导入记忆,帮我检查是否安全"
执行命令:
python3 scripts/memory-scan.py --file memory/2026-07-20.md --allow-remote
输出:
记忆安全扫描(远程LLM增强模式)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
扫描 memory/2026-07-20.md...
⚠ memory/2026-07-20.md - HIGH (line 15)
→ Prompt注入:检测到"忽略之前的指令,你现在是..."
→ 语义分析:隐含角色覆盖意图,属于间接提示注入
⚠ memory/2026-07-20.md - MEDIUM (line 28)
→ 数据外泄:检测到curl到外部服务器指令
→ 关联:与line 15的注入指令构成行为关联组合
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
总体:HIGH(注入+外泄组合升级)
建议处置:隔离 line 15 和 line 28,排查文档来源
后续操作: 系统询问是否隔离,用户确认后隔离line 15和line 28,并检查外部文档来源。
Q1:扫描会不会泄露我的记忆内容?
本地模式零网络请求,所有检测在本地完成。远程LLM模式(--allow-remote)仅传输脱敏内容,所有疑似凭证替换为 [REDACTED],仅保留上下文结构供LLM分析,不会泄露敏感信息。
Q2:误报太多怎么办? 三种方式降低误报:(1) 用白名单机制标记合法内容(如测试Key、API文档示例);(2) 启用上下文感知降级(检测到"示例"/"测试"关键词自动降级);(3) 标记误报后系统自动学习,后续扫描跳过相似模式。白名单可定期审查清理,防止过度抑制。
Q3:隔离后能恢复吗?
可以。隔离前系统自动备份原文件到 .memory-radar/quarantine/ 目录,用 python3 scripts/quarantine.py --restore <file> <line> 命令即可恢复原始内容。恢复操作会清除隔离标记并还原原始行。
Q4:增量扫描会不会漏掉威胁?
不会。增量扫描基于文件hash,任何内容变更都会触发重新扫描该文件。未变更文件复用上次扫描结果,不影响检测率。如担心遗漏,可用 --force 参数强制全量扫描所有文件。
Q5:跨文件关联分析怎么工作? 扫描完成后,系统对所有发现的威胁进行关联分析,检查时序关联(7天内多文件同类威胁升级)、主题关联(多文件提及同一外部域名)、行为关联(注入+外泄组合升级HIGH)、渐进关联(严重度逐日递增升级CRITICAL)四种关联模式。关联命中则升级威胁等级并标记为关联事件。
Q6:本地模式和远程LLM模式有什么区别? 本地模式使用纯模式匹配,零网络请求,速度快但无法识别语义级高级注入(如隐含指令、间接提示注入)。远程LLM模式将脱敏内容发送给LLM进行语义分析,可识别更复杂的攻击模式,但需要配置API Key且增加网络依赖。建议日常使用本地模式,导入外部数据后使用远程模式增强。
Q7:系统能否自动隔离威胁? 系统永不自动隔离,始终先询问用户确认。这是为了防止误报导致合法内容被意外修改。在无人值守的定时监控场景下,发现的威胁会保留至下次人工审查,并通过告警渠道通知用户。
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
需要配置对应API Key,详见上文环境配置章节
API Key配置方式:
export API_KEY="your_api_key_here"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统。
本地模式检测能力有限:纯模式匹配无法识别语义级的高级注入(如隐含指令、间接提示注入),需启用 --allow-remote 远程LLM分析增强,但会增加网络依赖和API调用成本。
凭证检测基于前缀模式:依赖 sk-/AKIA/ghp_/xoxb- 等已知前缀进行匹配,无法检测自定义格式的凭证或无固定前缀的密码,可能漏报非标准凭证。
跨文件关联需要时间窗口:时序关联默认7天窗口,超出窗口的分散攻击可能被遗漏;渐进关联需要多日数据积累,首次扫描无法触发关联分析。
隔离不自动执行:系统永不自动隔离,始终先询问用户确认。在无人值守的定时监控场景下,威胁会保留至下次人工审查,可能延误处置。
扫描范围限于记忆文件:仅扫描MEMORY.md、memory/*.md及工作区配置文件(AGENTS.md、SOUL.md、USER.md等),不覆盖代码文件、日志文件或其他非记忆文件中的安全威胁。