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端点。
