【免费下载链接】OpenRathAn open-source, PyTorch-like runtime for dynamic multi-agent and multi-session workflows.项目地址https://gitcode.com/gh_mirrors/op/OpenRath点击查看免费下载OpenRath是一个开源的、PyTorch 风格的多智能体运行时其flow.Compressor组件专为上下文压缩而生它把越来越长的会话记录交给 LLM 总结成一段精简摘要在不丢失关键事实的前提下让后续对话保持低成本、可追踪。本文带你从零理解 OpenRath 的上下文压缩机制并掌握最佳实践。为什么多智能体会话会上下文爆炸在使用 Agent 构建应用时几乎所有开发者都遇到过同一个问题对话轮次一多上下文窗口就被撑爆——要么报错、要么响应变慢、要么费用飙升。OpenRath 的解法源于它对会话Session的独特设计上下文不再是一坨反复复制的消息字符串而是一张按时间顺序排列的ChunkTable块表每一行都有明确的角色类型块类型说明systemAgent 的系统提示user用户消息assistant模型回复可含工具调用tool_result工具执行结果轮次越多块表越长每次请求都要把整张表发给模型——这就是上下文爆炸的根源。OpenRath 的 Session 是可流动的结构化状态支持 fork分叉、detach脱离、merge合并、loop循环与compress压缩等操作压缩只是 Session 生命周期中的标准一环。Compressor 是什么一个可组合的 Workflow在 OpenRath 中Compressor是一个标准的 Workflow源码非常简洁compressor flow.Compressor( 把目前对话总结成一条简洁的助手消息保留关键事实去掉冗余, provider, ) session compressor.forward(session)它接收两个核心参数压缩指令compress_instruction告诉模型怎么压比如保留哪些关键信息Provider执行压缩的 LLM 提供方。和Agent一样Compressor的输入输出都是Session因此可以无缝嵌进任何工作流里与 Agent、工具、子工作流自由嵌套官方 README.md 中的最小工作流就展示了 Agent Compressor 的经典组合Agent 负责处理任务Compressor 负责在返回前把上下文瘦身。三步上手运行最简压缩示例项目内置了官方示例 example/08_compress.py核心逻辑只有三步# 1. 用 Agent 产生一段较长的对话 session agent(Session.from_user_message(……).to(local)) # 2. 用 Compressor 压缩 session compressor.forward(session) # 3. 对比压缩前后的块数量 print(len(session.chunk_table.rows))运行前只需配置一个 OpenAI 兼容的 API Key见 example/_shared/provider.py然后执行python example/08_compress.py你会直观地看到压缩前后的 chunk 数量对比——几十行块表被折叠成一行摘要。压缩内部如何工作Compressor底层调用的是 run_session_compress 函数一次 LLM 调用完成压缩。它有几个值得新手了解的设计细节1. 无损血缘Lineage记录压缩是有损操作lossy但 OpenRath 不会让你压完就忘。返回的新 Session 会带上完整的血缘元数据——父会话 ID、操作符run_session_compress、压缩标记——你随时可以回溯这段摘要来自哪次对话。2. 安全兜底拒绝截断摘要摘要会整体替换原有转录如果模型输出因 token 上限被截断finish_reasonlengthOpenRath 会直接抛出RuntimeError拒绝该摘要而不是悄悄丢失历史尾部——这是一个非常贴心的防坑设计src/rath/session/compress.py。3. 沙箱与工具隔离压缩请求会显式禁用工具tool_choicenone防止模型跑偏去调工具若原 Session 绑定了 Sandbox执行环境新 Session 会共享同一沙箱引用执行上下文不丢失。4. 可选持久化通过persistTrue或指定persist_path压缩结果会写入.openrath/sessions/session.id.jsonl方便审计与恢复。压缩指令怎么写compress_instruction决定了摘要的质量。不传时OpenRath 使用内置默认指令src/rath/session/compress.py其要点是将上方转录压缩成更短的叙事保留事实、用户目标和未完成任务只输出纯文本。实际项目中建议按业务场景定制指令例如结构化输出要求输出 JSON包含summary摘要与guards必须原样保留的关键字串测试用例 tests/integration/test_session_compress_real.py 就用这种摘要 守卫字面量的方式验证关键信息不丢失面向下游明确告诉模型这是给下游 LLM 看的上下文让摘要语言风格更适合再次作为提示输入。经验法则指令里写清楚保留什么、丢弃什么、输出什么格式压缩质量就有保障。与 Token 预算护栏搭配使用压缩是治本预算护栏是治标两者配合效果最佳压缩前在Provider上设置budget_total_tokens指定会话累计 token 上限超限后触发on_budget_exceeded回调src/rath/llm/provider.py回调中可以选择记录告警或抛出 BudgetExceededError 主动中止循环为下一次压缩争取时机压缩后新 Session 的cumulative_usage会重新累计长任务可以边聊边压把上下文稳定控制在窗口之内。相关测试见 tests/session/test_token_budget.py。小结OpenRath 把上下文压缩做成了会话生命周期中的一等公民✅flow.Compressor一行接入可自由组合进任意工作流✅ 压缩全程有血缘记录摘要可追溯、可审计✅ 拒绝截断摘要、禁用工具调用细节安全兜底✅ 与 Token 预算护栏、沙箱共享、JSONL 持久化无缝配合。长会话不再是负担压缩得当的多智能体系统才能跑得久、算得省。延伸阅读官方示例example/08_compress.pyCompressor 实现src/rath/flow/compressor.py压缩核心逻辑src/rath/session/compress.py块表与角色类型src/rath/session/chunk.py预算护栏src/rath/llm/budget.py赞分享【免费下载链接】OpenRathAn open-source, PyTorch-like runtime for dynamic multi-agent and multi-session workflows.项目地址https://gitcode.com/gh_mirrors/op/OpenRath点击查看免费下载相关推荐ComfyUI-LTXVideo 完整上手指南10 分钟跑通 LTX-2 AI 视频生成ComfyUI LTXVideo 完整上手指南10 分钟跑通 LTX 2 AI 视频生成 把深度图和边缘图塞进同一个控制 LoRA给模型叠加特定能力的轻量微人工智能大模型媒体生成视频AuC上下文管理揭秘两级压缩与Token预算控制如何防止AI大模型「上下文爆炸」AuC上下文管理揭秘两级压缩与Token预算控制如何防止AI大模型「上下文爆炸」 AuCAgents ufy Core是一个基于 Python 与 asy使用 LongLLMLingua 压缩检索上下文AutoRAG Passage Compressor 节点实战指南使用 LongLLMLingua 压缩检索上下文AutoRAG Passage Compressor 节点实战指南 AutoRAG 的 Long LLM Li人工智能AI AgentRAGMCP 服务工具调用上一篇Megacity Metro网络状态监测ThinClientDebugDisplay与ConnectionMonitor实现断线重连下一篇Moshi实时语音对话终极指南从麦克风到扬声器的全链路解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?