OpenHands服务:这AI框架如何应对疑问?

摘要:AI Agent 框架探秘:拆解 OpenHands(4) 服务 目录AI Agent 框架探秘:拆解 OpenHands(4) 服务0x00 概述0x01 服务1.1 API 模式1.1.1 Actions1.1.2 observatio
AI Agent 框架探秘:拆解 OpenHands(4)--- 服务 目录AI Agent 框架探秘:拆解 OpenHands(4)--- 服务0x00 概述0x01 服务1.1 API 模式1.1.1 Actions1.1.2 observation1.2 服务器组件session.pysession/agent_session.pysession/conversation_manager/conversation_manager.pylisten.py1.3 服务工作流程描述1.4 listen_socket.py1.4.1 核心特色1.4.2 具体功能1.4.3 流程图1.4.4 会话连接1.4.5 代码0xFF 参考 0x00 概述 本篇结合官方文档进行解读OpenHands的服务器,这是OpenHands系统的立身基础。 因为本系列借鉴的文章过多,可能在参考文献中有遗漏的文章,如果有,还请大家指出。 0x01 服务 OpenHands提供了WebSocket服务器。 1.1 API 模式 可以发送或从服务器接收两种类型的消息: Actions Observations 1.1.1 Actions 一个action 包含三个部分: action:要采取的动作 args:动作的参数 message:可以放在聊天记录中的友好消息 有几种action 。它们的参数列在下面。 随着时间的推移,这个列表可能会增长。 initialize - 初始化代理。仅由客户端发送。 model - 要使用的模型名称 directory - 工作空间的路径 agent_cls - 要使用的代理类 start - 开始一个新的开发任务。仅由客户端发送。 task - 要开始的任务 read - 读取文件内容。 path - 要读取的文件路径 write - 写入内容到文件。 path - 要写入的文件路径 content - 写入文件的内容 run - 运行命令。 command - 要运行的命令 browse - 打开网页。 url - 要打开的URL think - 允许代理制定计划、设定目标或记录想法 thought - 要记录的想法 finish - 代理发出任务完成的信号 1.1.2 observation 一个observation 包含四个部分: observation:观察类型 content:表示观察数据的字符串 extras:额外的结构化数据 message:可以放在聊天记录中的友好消息 有几种observation 。它们的额外信息列在下面。 随着时间的推移,这个列表可能会增长。 read - 文件内容 path - 读取的文件路径 browse - URL的HTML内容 url - 打开的URL run - 命令的输出 command - 运行的命令 exit_code - 命令的退出代码 chat - 用户的消息 1.2 服务器组件 以下部分描述了OpenHands项目的服务器端组件。 session.py session.py 文件定义了Session类,它代表与客户端的WebSocket会话。关键特性包括: 处理WebSocket连接和断开 初始化和管理代理会话 在客户端和代理之间分发事件 向客户端发送消息和错误 session/agent_session.py agent_session.py 文件包含AgentSession类,它管理会话内代理的生命周期。关键特性包括: 创建和管理运行时环境 初始化代理控制器 处理安全分析 管理事件流 session/conversation_manager/conversation_manager.py conversation_manager.py 文件定义了ConversationManager类,它负责管理多个客户端会话。关键特性包括: 添加和重启会话 向特定会话发送消息 清理非活动会话 listen.py listen.py 文件是主服务器文件,它设置FastAPI应用程序并定义各种API端点。
阅读全文