2026年6月30日 2 分钟阅读

HALO 完全指南:用 RLM 分析 Agent 生产轨迹,自动发现系统级故障模式

tinyash 0 条评论

概述

运行 AI Agent 的生产环境里,trace(执行轨迹)每天都在堆积。你看到某个 Agent 偶尔失败、偶尔超时、偶尔返回错误结果——但当你手动翻看几十条 JSONL 日志时,每一条看起来都不一样,根本找不到规律。

HALO(Hierarchical Agent Loop Optimizer)就是为解决这个问题而生的。它是一个基于 RLM(Recursive Language Model)的 Agent 轨迹分析工具,能自动从生产轨迹中发现系统级的故障模式,并生成可操作的修复建议。项目由 context-labs 开源,采用 MIT 许可证,GitHub 上已获得 1000+ Star。

HALO Loop:闭环优化的核心机制

HALO 的核心理念是一个四步闭环,称为 HALO Loop:

  1. 收集:从 Agent harness 中收集生产轨迹。HALO 使用 OpenTelemetry 兼容的 tracing 格式,支持从 Langfuse、Arize、JSONL 文件等多种来源导入。
  2. 分析:将轨迹喂给 HALO-RLM 引擎。引擎会将轨迹分解,理解不同执行之间的共同故障模式,生成分析报告。
  3. 修复:将分析报告发送给 Cursor、Claude Code、Codex 等编码 Agent,由它们生成并应用针对 harness 的修改。
  4. 部署:修改后的 harness 重新上线,收集新的轨迹,循环重复。

为什么不能直接用 Claude Code 分析 trace?HALO 的作者在实践中发现:通用编码 Agent 面对超长轨迹时,容易过拟合到单个或少量的异常上,看不到跨 execution 的系统性问题。RLM 的递归分解机制正是为处理这种「长文本中找模式」的场景而设计的。

安装

HALO 提供两种使用方式:CLI 工具和桌面应用。

CLI 安装(推荐)

pip install halo-engine

halo --help

桌面应用

macOS 用户可以通过一键安装脚本获得桌面端:

curl -fsSL https://inference.net/halo/install.sh | sh

安装包是已签名的 DMG 文件,也可以在 GitHub Releases 页面直接下载。

CLI 使用详解

基本用法

HALO 需要一个 JSONL 格式的轨迹文件和一个分析提示词:

export OPENAI_API_KEY=sk-xxx

halo path_to_your_traces.jsonl \
  -p "Diagnose errors you find and suggest fixes"

HALO 使用标准的 OpenAI 环境变量 OPENAI_API_KEYOPENAI_BASE_URL,可以轻松切换为任何兼容的 API 提供商。

关键参数

HALO 的 CLI 参数设计非常细致,以下是几个最常用的:

参数默认值说明
TRACE_PATH必填JSONL 轨迹文件路径
--prompt, -p必填分析提示词
--model, -mgpt-5.4-mini主模型(也作为合成和压缩的回退)
--synthesis-model--model轨迹摘要模型(推荐用小模型如 gpt-4.1-nano
--compaction-model--model上下文压缩模型(最大 token 消耗者,强烈建议用小模型)
--max-depth2子 Agent 最大递归深度
--max-turns20每个 Agent 的最大轮次
--max-parallel10最大并行子 Agent 数
--telemetry关闭开启 OpenInference 遥测追踪

切换 API 提供商示例

halo traces.jsonl \
  -p "Find recurring failures" \
  --base-url https://openrouter.ai/api/v1 \
  -H "HTTP-Referer: https://example.com"

Telemetry 遥测

HALO 可以输出自身运行的 OpenInference 轨迹(不是分析你的轨迹,而是追踪 HALO 自己内部的 LLM 调用、工具调用和 Agent 活动):

halo traces.jsonl --prompt "..." --telemetry

CATALYST_OTLP_TOKEN 环境变量设置时,遥测数据会上传到 inference.net 的 Catalyst 平台;未设置时会写入本地 JSONL 文件。

Python API 集成

对于需要将 HALO 嵌入到自有工作流中的场景,Python SDK 提供了六个入口点:

from engine.main import run_engine_async, stream_engine_output_async

async for item in stream_engine_output_async(messages, config, trace_path):
    logger.info("step", extra={
        "sequence": item.sequence,
        "agent": item.agent_name
    })

选择哪个入口点取决于你对可观测性的需求:

函数返回类型适用场景
stream_engine_async`AsyncIterator[AgentOutputItemAgentTextDelta]`实时 UI,需要所有事件包括 token delta
stream_engine_output_asyncAsyncIterator[AgentOutputItem]按步骤记录/持久化每个完成的 step
run_engine_asynclist[AgentOutputItem]只需要最终结果,不需要中间步骤
对应的 sync 版本同上同步代码中调用

实际效果:AppWorld 基准测试

HALO 的团队在 AppWorld 基准测试上验证了效果。AppWorld 是测试 Agent 使用多应用服务(Spotify、Venmo、文件系统、通讯录等)能力的基准集。

在仅对 harness 提示词进行优化的条件下(不修改模型本身),HALO 带来的提升非常显著:

  • Gemini 3 Flash:dev 准确率从 36.8% 提升到 52.6%(+15.8 点),test 从 37.5% 提升到 48.2%(+10.7 点)
  • Sonnet 4.6:dev 准确率从 73.7% 提升到 89.5%(+15.8 点),test 从 62.5% 提升到 73.2%(+10.7 点)

HALO 发现的典型问题包括:幻觉工具调用、工具参数的冗余参数、拒绝循环、语义正确性问题。每个问题都对应一个可以直接编辑的提示词修复。

排错

Q: 轨迹文件格式要求?

A: JSONL 格式,每一行是一个独立的 trace 事件。支持 OpenTelemetry 兼容格式、Langfuse 导出格式、Arize 导出格式。

Q: 模型选择建议?

A: 主模型用 gpt-5.4-mini 或同等能力模型足够。合成和压缩模型强烈建议使用更小的模型如 gpt-4.1-nano——它们是最大 token 消耗者,用小模型能显著降低成本。

Q: 桌面应用有哪些功能?

A: 桌面应用提供了轨迹导入可视化、历史浏览、分析报告展示、修复推送到编码 Agent 等图形界面功能。

Q: 私有化部署?

A: HALO 完全本地运行。轨迹文件存储在本地,LLM 调用通过你自己配置的 API 密钥发送。如果你需要托管版本,可以注册 inference.net 平台。

总结

HALO 解决的是一个真实的痛点:生产环境中 AI Agent 的轨迹数据量远超人工分析能力,而通用编码 Agent 又无法跨 execution 发现系统性问题。通过 RLM 递归分解 + 闭环优化流程,HALO 将轨迹分析从「翻日志碰运气」变成了可重复、可量化的工程流程。

如果你正在运行生产级的 Agent 服务,并且发现错误模式越来越难以定位,HALO 值得一试。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。