360 Secure SkillHub
360 安全技能中心

OpenClaw: trust validation

该 Skill 为 OpenClaw 4.2 提供记忆信任验证规则:通过向宿主 agents.defaults.systemPrompt 注入规则,要求模型在基于记忆改代码、回答问题或发消息前,先用文件存在性检查、代码与配置检索等方式验证记忆,并区分文件、代码、配置、偏好四类记忆给出验证结果处理方式。

nicshliu
nicshliu
热度 41.39
最近更新 2026-05-11 17:39:59
分类:知识依赖:代码执行 / 读写文件应用场景:笔记整理 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add openclaw-trust-validation
Metadata
name
openclaw-trust-validation
description
为 OpenClaw 4.2 添加记忆信任验证规则,防止模型盲目信任记忆内容。当模型要基于记忆内容做决策、改代码、发消息时触发验证流程。适用于记忆内容可能过时、用户问"记忆准确吗"、或要求验证记忆的场景。

OpenClaw Trust Validation

防止模型盲目信任记忆内容,在基于记忆行动前进行验证。

核心问题

Claude Code 有 TRUSTING_RECALL_SECTION 和完整的「Before recommending from memory」规则,OpenClaw 完全没有这层保护。模型可能:

  • 基于过时记忆修改代码
  • 基于不存在的信息回答问题
  • 错误地引用文件/函数/配置

信任决策树

模型要使用记忆内容?
├── 否 → 直接使用
└── 是 → 记忆指向文件/函数/配置?
    ├── 否(如用户偏好)→ 直接使用
    └── 是 → 记忆年龄 ≤ 7 天?
        ├── 是 → 使用前简单验证
        └── 否 → 必须完整验证(grep/文件存在性检查)

验证规则(Before Acting on Memory)

规则 1:文件存在性检查

# 如果记忆提到某个文件
test -f [文件路径] && echo "文件存在" || echo "⚠️ 文件不存在"

规则 2:代码/函数存在性检查

# 如果记忆提到某个函数、变量、配置
rg -n "函数名|变量名" [文件路径] | head -5

规则 3:配置值验证

# 如果记忆说"配置是 X"
grep -n "配置名" [配置文件]

规则 4:验证后才行动

验证流程:
1. 执行 grep/文件检查
2. 检查结果是否与记忆一致
3. 一致 → 安全使用
4. 不一致 → 更新记忆或告知用户"记忆可能已过时"
5. 找不到 → 告知用户"记忆指向的内容已不存在"

系统 prompt 注入

在 ~/.openclaw/openclaw.json 的 agents.defaults.systemPrompt 中添加:

## 记忆信任规则

**重要**:记忆是从过去的会话中提取的信息,可能已过时或错误。

### 当你要基于记忆行动时:

1. **文件类记忆**("根据 X 文件..."、"X 文件中设置...")
   → 先执行 `test -f [文件路径]` 确认文件存在

2. **代码类记忆**("X 函数在 Y 文件"、"应该调用 Z")
   → 先执行 `rg -n "X" [文件路径]` 确认代码仍存在

3. **配置类记忆**("配置项是..."、"应该设置为...")
   → 先执行 `grep "配置项" [配置文件]` 确认配置未变

4. **偏好类记忆**("用户喜欢..."、"用户通常...")
   → 可直接使用,但标注"基于历史记忆"

### 验证结果处理:

- ✅ 验证通过:正常行动
- ⚠️ 验证不匹配:更新记忆后行动,或告知用户"记忆可能已过时"
- 🔴 验证失败(内容不存在):**不要**按记忆行动,告知用户"记忆指向的内容已不存在"

验证免触发条件

以下情况可跳过验证:

  • 用户明确确认"那个文件还在"
  • 记忆是当前会话生成的(sessionDeltaMessages 内)
  • 用户说"我知道这是旧记忆,直接用"