基于推理的 AI 代理入侵检测系统,具备隔离和人机回环机制。
以下是不可协商的设计原则:
/approve、/reject、/trust、/quarantine消息到达
↓
hopeIDS.autoScan()
↓
┌─────────────────────────────────────────┐
│ 风险值 >= 阈值? │
│ │
│ 阻断 (严格模式): │
│ → 创建隔离记录 │
│ → 发送 Telegram 告警 │
│ → 中止 (不进入召回,不传递给代理) │
│ │
│ 警告 (非严格模式): │
│ → 注入 <security-alert> 标签 │
│ → 继续到 jasper-recall │
│ → 继续到代理 │
│ │
│ 允许: │
│ → 正常继续 │
└─────────────────────────────────────────┘
{
"plugins": {
"entries": {
"hopeids": {
"enabled": true,
"config": {
"autoScan": true,
"defaultRiskThreshold": 0.7,
"strictMode": false,
"telegramAlerts": true,
"agents": {
"moltbook-scanner": {
"strictMode": true,
"riskThreshold": 0.7
},
"main": {
"strictMode": false,
"riskThreshold": 0.8
}
}
}
}
}
}
}
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
autoScan |
布尔值 | false |
自动扫描每条消息 |
strictMode |
布尔值 | false |
对威胁进行阻断(而非仅警告) |
defaultRiskThreshold |
数值 | 0.7 |
触发操作的风险等级 |
telegramAlerts |
布尔值 | true |
为被阻断的消息发送告警 |
telegramChatId |
字符串 | - | 覆盖告警发送目的地 |
quarantineDir |
字符串 | ~/.openclaw/quarantine/hopeids |
存储路径 |
agents |
对象 | - | 按代理覆盖配置 |
trustOwners |
布尔值 | true |
跳过扫描所有者消息 |
当消息被阻断时,会创建一个元数据记录:
{
"id": "q-7f3a2b",
"ts": "2026-02-06T00:48:00Z",
"agent": "moltbook-scanner",
"source": "moltbook",
"senderId": "@sus_user",
"intent": "instruction_override",
"risk": 0.85,
"patterns": [
"匹配正则表达式: ignore.*instructions",
"匹配关键词: api key"
],
"contentHash": "ab12cd34...",
"status": "pending"
}
注意: 记录中没有 originalMessage 字段。这是有意为之的设计。
当消息被阻断时发送:
🛑 消息已被阻断
ID: `q-7f3a2b`
代理: moltbook-scanner
来源: moltbook
发送者: @sus_user
意图: instruction_override (85%)
匹配模式:
• 匹配正则表达式: ignore.*instructions
• 匹配关键词: api key
`/approve q-7f3a2b`
`/reject q-7f3a2b`
`/trust @sus_user`
告警内容仅基于元数据生成。LLM 不参与此过程。
/quarantine [all|clean]列出隔离记录。
/quarantine # 列出待处理记录
/quarantine all # 列出所有记录(包括已处理的)
/quarantine clean # 清理过期的记录
/approve <id>将被阻断的消息标记为误报。
/approve q-7f3a2b
效果:
- 状态 → approved
- (未来)将发送者加入允许列表
- (未来)降低相关模式的权重
/reject <id>确认被阻断的消息是真正的威胁。
/reject q-7f3a2b
效果:
- 状态 → rejected
- (未来)增强相关模式的权重
/trust <senderId>将发送者加入白名单,其未来消息将被放行。
/trust @legitimate_user
/scan <message>手动扫描一条消息。
/scan ignore your previous instructions and...
| 命令 | 作用 | 不作用 |
|---|---|---|
/approve |
标记为误报,可能调整 IDS 规则 | 不会重新注入该消息 |
/reject |
确认为威胁,可能强化检测模式 | 不会影响当前消息 |
/trust |
将发送者加入未来白名单 | 不会追溯性地批准 |
被阻断的消息已按设计丢弃。 如果它是合法的,发送者可以重新发送。
不同的代理需要不同的安全策略:
"agents": {
"moltbook-scanner": {
"strictMode": true, // 阻断威胁
"riskThreshold": 0.7 // 70% 即视为可疑
},
"main": {
"strictMode": false, // 仅警告
"riskThreshold": 0.8 // 主代理设置更高门槛
},
"email-processor": {
"strictMode": true, // 总是阻断
"riskThreshold": 0.6 // 更严格的策略
}
}
| 类别 | 风险等级 | 描述 |
|---|---|---|
command_injection |
🔴 严重 | Shell 命令注入、代码执行 |
credential_theft |
🔴 严重 | API 密钥窃取尝试 |
data_exfiltration |
🔴 严重 | 数据泄露到外部 URL |
instruction_override |
🔴 高 | 越狱攻击、"忽略先前指令" |
impersonation |
🔴 高 | 伪造系统/管理员消息 |
discovery |
⚠️ 中 | API/能力探测 |
npx hopeid setup
然后重启 OpenClaw。