ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

如何看懂 OpenOcta Agent 运行时原理:会话循环、工具编排与四级记忆完整剖析

如何看懂 OpenOcta Agent 运行时原理:会话循环、工具编排与四级记忆完整剖析 如何看懂 OpenOcta Agent 运行时原理会话循环、工具编排与四级记忆完整剖析【免费下载链接】openoctaOpenOcta is an open-source AIOps Agent installed on Windows macOS.项目地址: https://gitcode.com/gh_mirrors/op/openoctaOpenOcta 是一个运行在 Windows 与 macOS 上的开源 AIOps Agent智能运维数字员工。这篇文章带你从代码层面拆解它的 Agent 运行时三大核心会话循环Session Turn Loop、工具编排Tool Orchestration与四级记忆机制四级记忆帮助新手理解这个 Agent 是如何一轮轮思考、调用工具并记住你的。一、运行时全景先建立一张地图 ️OpenOcta 的运行时整体分为三层Gateway 层HTTP 接入与认证→Agent Runtime 层会话、模型调用、工具编排→工具与技能扩展层。整体设计在 docs/architecture.md 中有完整说明。核心代码集中在src/pkg/agent/eino/目录engine.go 负责搭建 Agent 引擎session_turn_loop.go 负责会话循环checkpoint.go 与 file_checkpoint_store.go 负责断点持久化。二、会话循环一个 TurnLoop 驱动整场对话2.1 为什么需要回合循环而不是简单的一次调用Agent 的多轮对话不是一次模型请求就结束的模型可能先回答、再发起工具调用、拿到结果继续推理、中途还要停下来等用户审批。OpenOcta 用TurnLoop回合循环把这一切统一为一个会话级队列TurnSession将每个聊天会话绑定到一条独立的 TurnLoop 上见 session_turn_loop.go#L125-L141队列里只有两类条目消息message和审批approval见 session_turn_loop.go#L19-L22用户新消息通过 PushMessage 入队审批结果通过 PushApproval 入队实现中断 → 人工批准 → 续跑的完整闭环2.2 抢占、中断与恢复Agent 的三杀能力会话循环真正出彩的地方是三个控制面能力能力实现位置说明抢占PreemptPushMessage新消息可在工具调用安全点取消正在执行的回合插队生效中断Interruptapproval_middleware.go敏感命令触发中断暂停等待人工审批恢复ResumegenResume依据断点存储精确恢复到被中断的工具调用处继续执行所有流式事件文本增量、工具调用、停止原因通过 runID 对应的事件通道逐条推送给前端见 onAgentEvents。特别注意 messageStopEndsAgentEventStream 的判定tool_use类型的停止只是模型回合边界Agent 会继续执行工具而不是结束整个任务——这是理解 Agent 循环的关键细节。三、工具编排DeepAgent 中间件流水线 ⚙️3.1 引擎构建一步装配出完整 AgentNewEngine 展示了整个装配流程模型抽象通过ModelFactory屏蔽不同大模型提供商差异文件系统后端本地 shell 与文件操作配合命令白名单校验工具包装内置工具浏览器、Web 搜索、定时任务、子 Agent 等统一经 tool_adapter.go 包装为 Eino 标准工具接口DeepAgent 组装默认最多 50 轮迭代engine.go#L111-L114防止无限循环烧 Token3.2 中间件栈给工具调用加护栏Agent 的行为质量很大程度取决于中间件。OpenOcta 按顺序挂载了一组中间件engine.go#L94-L104审批中间件approval_middleware.go高风险命令拦截并请求人工批准工具参数守卫tool_arguments_guard.go校验模型生成的工具参数合法性工具回合修复tool_turn_repair_middleware.go在上下文压缩后自动修复断裂的工具调用回合执行提示execute_tool_hint_middleware.go提示模型正确发起执行3.3 技能Skills与 MCP能力的两个扩展口除了内置工具Agent 还有两个能力扩展口技能包SKILL.md定义的专业领域提示词与领域工具加载逻辑在 skills/loader.go支持懒加载与按上下文匹配和MCP 服务器通过 src/pkg/acp/mcp/ 下的客户端与管理器把外部监控、运维系统挂入工具注册表。对模型而言本地工具和 MCP 工具走同一接口完全透明。四、四级记忆机制让 Agent 真正记住 OpenOcta 的记忆体系是工作 / 短期 / 长期 / 组织四层递进设计对照见 amc-enterprise-edition.md#L74层级名称载体生命周期L1工作记忆会话内消息 检查点当前回合L2会话历史会话转录 session_search工具当前会话L3短期笔记memory/YYYY-MM-DD.md每日文件天级L4精选长期记忆Evolution 存储 知识库 Vault跨会话/跨组织L1/L2会话转录维护在 transcript_history.go 与会话存储 session_store.go历史轮次可通过session_search工具被 Agent 主动检索详见 docs/knowledge-vault.mdL3系统提示词要求 Agent 每次会话先读SOUL.md、USER.md和近两天的每日笔记把发生的事写成原始日记规则见 AGENTS.md#L20-L46L4由 evolution/store.go 实现分为memory / user / soul / prompt四个有字符配额的精选文件每个会话开始时拍一张冻结快照注入系统提示词会话内的实时更新立即落盘、但到下个会话才生效保证行为稳定。组织级知识则通过知识库Knowledge Vault提供Obsidian 兼容的 Markdown 笔记 Bleve 全文索引 可选向量检索Agent 通过memory_search按需拉取五、延伸阅读从哪里继续深挖架构总览docs/architecture.md会话循环源码src/pkg/agent/eino/session_turn_loop.go引擎装配源码src/pkg/agent/eino/engine.go工具适配层src/pkg/agent/eino/tool_adapter.go四级记忆存储src/pkg/agent/evolution/store.go知识库产品文档docs/knowledge-vault.mdMCP 集成docs/mcp-configuration.md一句话总结OpenOcta 用一条可抢占、可中断、可恢复的 TurnLoop 驱动会话循环用DeepAgent 护栏中间件编排工具执行再用工作记忆 → 会话历史 → 每日笔记 → 精选长期记忆 知识库的四级体系沉淀经验——三者合力才让一个 AIOps Agent 既聪明又可控。【免费下载链接】openoctaOpenOcta is an open-source AIOps Agent installed on Windows macOS.项目地址: https://gitcode.com/gh_mirrors/op/openocta创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表