harness - 内置拦截器的修改及添加
2026年7月4日 下午1:03:57
solon-ai-harness 已经预期了三个内置拦截器:
compressionInterceptor,负责上下文压缩处理(默认使用组合压缩策略)hitlInterceptor,处理人工介入处理(默认对bash工具绑定HitlStrategy)stopLoopInterceptor,负责防止无限循环(默认参数:3 次连续相同错误 / 8 轮窗口)
具体参考:《react - ReActInterceptor 拦截器》
1、修改现有的内置的拦截器
下面示意一下,具体需要按需定制(一般不需要)
HarnessEngine engine = HarnessEngine.of(...)
.sessionProvider(sessionProvider)
.compressionInterceptor(new ContextCompressionInterceptor())
.hitlInterceptor(new HITLInterceptor())
.stopLoopInterceptor(new StopLoopInterceptor(3, 8))
.build();
2、上下文压缩策略(CompressionStrategy)
默认的压缩拦截器使用组合压缩策略(CompositeCompressionStrategy),包含两层处理:
KeyInfoExtractionStrategy:提取干货(去水),保留关键信息,去除冗余内容。HierarchicalCompressionStrategy:滚动更新摘要,维护分层压缩的历史摘要。
// 自定义压缩策略
CompressionStrategy strategy = new CompositeCompressionStrategy()
.addStrategy(new KeyInfoExtractionStrategy())
.addStrategy(new HierarchicalCompressionStrategy());
ContextCompressionInterceptor interceptor = new ContextCompressionInterceptor(
40, // maxMessages: 消息条数阈值
60_000, // maxTokens: 内容长度阈值
3, // retries: 重试次数
() -> engine.getModelOrMain(engine.getCompressionModel()),
strategy);
HarnessEngine engine = HarnessEngine.of(...)
.sessionProvider(sessionProvider)
.compressionInterceptor(interceptor)
.build();
3、停止循环拦截器(StopLoopInterceptor)
StopLoopInterceptor 用于检测并阻止 Agent 陷入无限循环。默认配置为:在 8 轮窗口内,如果连续 3 次出现相同的错误,则停止 Agent 循环。
// 自定义停止循环参数
StopLoopInterceptor stopLoop = new StopLoopInterceptor(5, 10); // 5 次相同错误 / 10 轮窗口
HarnessEngine engine = HarnessEngine.of(...)
.sessionProvider(sessionProvider)
.stopLoopInterceptor(stopLoop)
.build();
4、HITL 拦截器(人工介入)
HITL(Human-in-the-Loop)拦截器默认对 bash 工具绑定 HitlStrategy 安全审计策略。启用 hitlEnabled 后,高危命令在执行前会被拦截并要求人工确认。
// 启用 HITL
engine.setHitlEnabled(true);
// 自定义 HITL 拦截策略
HITLInterceptor hitl = new HITLInterceptor();
hitl.onTool("bash", new HitlStrategy());
hitl.onTool("write", new WriteAuditStrategy()); // 自定义写入审计
HarnessEngine engine = HarnessEngine.of(...)
.sessionProvider(sessionProvider)
.hitlInterceptor(hitl)
.hitlEnabled(true)
.build();
关于 HitlStrategy 的 7 层安全审计策略,详见 《harness - HitlStrategy 安全审计策略》。
5、添加新的拦截器
通过 extensionAdd 方式,进一步定制智能体。其中包括添加"拦截器"(或者工具等)
HarnessEngine engine = HarnessEngine.of(...)
.sessionProvider(sessionProvider)
.extensionAdd((agentName,agentBuilder)->{
agentBuilder.defaultInterceptorAdd(new ReActInterceptor() {
@Override
public void onAgentStart(ReActTrace trace) {
ReActInterceptor.super.onAgentStart(trace);
}
});
})
.build();