35|循环检测与注入防御:如何在运行时防止 Agent 失控与被劫持?
Henry

你好,我是 Henry,欢迎来到《OpenClaw 核心原理与实战》。
上节课我们配好的权限矩阵从静态层面控制了“Agent 能用什么工具”,但实际场景静态权限防不住“合法能力的滥用”,例如下面的两个问题:
无限循环:Agent 反复调用同一个被允许的工具,deny 列表挡不住。
Prompt Injection:外部内容中嵌入恶意指令劫持 Agent 行为,跟工具权限无关。
基于这两个问题,这节课重点讲解运行时防护机制,通过动手实操来解决具体问题。
实操一:触发循环检测
OpenClaw 定义了 5 种循环检测器,覆盖不同的循环模式:

循环检测器检测方式是对工具名和参数做 SHA256 哈希(hashToolCall() 函数),比较连续调用的哈希是否相同。如果中间结果变化了,计数器重置。因此,“连续无进展”是关键。
具体来说,系统维护一个滑动窗口(TOOL_CALL_HISTORY_SIZE = 30),记录最近 30 次工具调用的哈希值。每次新的工具调用进来,检测器会检查:这个哈希在窗口中连续出现了多少次?如果结果和上一次不同(比如读文件返回的内容变了),计数器归零。一个正在等待异步任务完成的 Agent 可能确实需要轮询多次,但只要每次结果有变化就不算循环。这就是为什么全局熔断器的触发条件是“30 次连续无进展”而非“30 次总调用”。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《OpenClaw 核心原理与实战》,新⼈⾸单¥59
《OpenClaw 核心原理与实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论