|
|
@@ -45,6 +45,36 @@ port 地址是 port_mapping 在文件 `eventstream_runtime.py`中 `self.containe
|
|
|
> OpenHands/openhands/runtime/action_execution_server.py
|
|
|
|
|
|
|
|
|
+### 文件操作
|
|
|
+
|
|
|
+1. 前端通过 WebSocket 发送文件更新请求到 `listen_socket.py`
|
|
|
+ - 请求通过 `websocket_endpoint` 接收
|
|
|
+ - 消息格式包含操作类型(创建/修改/删除)和文件内容
|
|
|
+ - 消息被路由到对应的 session handler
|
|
|
+
|
|
|
+2. 在 `session_manager.py` 中处理请求
|
|
|
+ - `init_or_join_session` 获取或创建对应会话
|
|
|
+ - `handle_message` 方法解析消息类型
|
|
|
+ - 文件操作请求被转发到 `agent_session`
|
|
|
+
|
|
|
+3. `agent_session.py` 处理文件操作
|
|
|
+ - `process_file_operation` 方法处理具体操作
|
|
|
+ - 创建/修改操作通过 `write_file` 方法
|
|
|
+ - 删除操作通过 `delete_file` 方法
|
|
|
+ - 所有操作通过 runtime 的 API 执行
|
|
|
+
|
|
|
+4. 文件操作通过 runtime 执行
|
|
|
+ - 通过 `action_execution_server.py` 的 API 接口
|
|
|
+ - 使用 `FileOperationsPlugin` 处理具体文件操作
|
|
|
+ - 操作在容器内的 workspace 目录执行
|
|
|
+ - 结果通过 WebSocket 返回给前端
|
|
|
+
|
|
|
+5. 文件同步机制
|
|
|
+ - 使用 inotify 监控文件变化
|
|
|
+ - 变化通过 `FileWatcherPlugin` 处理
|
|
|
+ - 重要变化会通知前端更新
|
|
|
+ - 双向同步确保一致性
|
|
|
+
|
|
|
|
|
|
## vscode
|
|
|
route:
|