# 核心模块架构 **本文档引用的文件** - [main.rs](file://crates/rcoder/src/main.rs) - [lib.rs](file://crates/rcoder/src/lib.rs) - [config.rs](file://crates/rcoder/src/config.rs) - [Cargo.toml](file://crates/rcoder/Cargo.toml) - [agent_model.rs](file://crates/shared_types/src/model/agent_model.rs) - [multi_image_config.rs](file://crates/shared_types/src/multi_image_config.rs) - [Dockerfile](file://docker/Dockerfile) - [docker-compose.yml](file://docker/docker-compose.yml) - [pingora-proxy](file://crates/pingora-proxy/src/lib.rs) - [docker_manager](file://crates/docker_manager/src/lib.rs) ## 目录 1. [简介](#简介) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构概述](#架构概述) 5. [详细组件分析](#详细组件分析) 6. [依赖分析](#依赖分析) 7. [性能考虑](#性能考虑) 8. [故障排除指南](#故障排除指南) 9. [结论](#结论) ## 简介 rcoder 是一个基于 Rust 的 AI 代理框架,旨在为 AI 驱动的开发平台提供核心服务。该系统通过集成多种 AI 代理(如 Claude 和 Codex),为项目提供智能开发支持。架构设计强调模块化、可扩展性和容器化部署,通过反向代理和 Docker 管理实现灵活的服务集成和资源隔离。 ## 项目结构 项目采用多 crate 的 Rust 工作区结构,核心模块包括 rcoder、agent_runner、shared_types、docker_manager 和 pingora-proxy。这种模块化设计实现了关注点分离,每个 crate 负责特定功能,通过工作区依赖进行集成。 ```mermaid graph TD A[crates/] --> B[rcoder] A --> C[agent_runner] A --> D[shared_types] A --> E[docker_manager] A --> F[pingora-proxy] A --> G[acp_adapter] A --> H[claude-code-agent] A --> I[codex-acp-agent] B --> J[src/] C --> K[src/] D --> L[src/] E --> M[src/] F --> N[src/] ``` **图表来源** - [Cargo.toml](file://Cargo.toml#L1-L205) **本节来源** - [Cargo.toml](file://Cargo.toml#L1-L205) ## 核心组件 系统核心由 rcoder 主服务、agent_runner 代理管理、shared_types 共享类型、docker_manager 容器管理和 pingora-proxy 反向代理组成。rcoder 作为主入口,协调各组件工作;agent_runner 管理 AI 代理生命周期;shared_types 提供跨 crate 的数据结构;docker_manager 处理容器操作;pingora-proxy 实现动态请求代理。 **本节来源** - [main.rs](file://crates/rcoder/src/main.rs#L1-L451) - [Cargo.toml](file://crates/rcoder/Cargo.toml#L1-L91) ## 架构概述 系统采用微服务架构,以 rcoder 为核心协调器,通过 HTTP API 接收外部请求,动态创建和管理 AI 代理容器。架构支持多代理类型,通过 ACP 协议与代理通信,并利用反向代理实现服务发现和负载均衡。 ```mermaid graph LR Client[客户端] --> |HTTP请求| Rcoder[rcoder主服务] Rcoder --> |创建容器| Docker[Docker引擎] Docker --> |运行| AgentContainer[AI代理容器] AgentContainer --> |ACP协议| Rcoder Rcoder --> |SSE流| Client Rcoder --> |反向代理| Pingora[pingora-proxy] Pingora --> |动态路由| Backend[后端服务] ``` **图表来源** - [main.rs](file://crates/rcoder/src/main.rs#L1-L451) - [pingora-proxy](file://crates/pingora-proxy/src/lib.rs#L1-L250) **本节来源** - [main.rs](file://crates/rcoder/src/main.rs#L1-L451) - [pingora-proxy](file://crates/pingora-proxy/src/lib.rs#L1-L250) ## 详细组件分析 ### rcoder 主服务分析 rcoder 是系统的核心服务,负责处理客户端请求、管理代理生命周期和协调系统组件。它通过 Axum 框架提供 REST API,集成 OpenTelemetry 进行遥测,并支持优雅关闭。 ```mermaid classDiagram class AppConfig { +default_agent : AgentType +projects_dir : PathBuf +port : u16 +proxy_config : Option +docker_config : Option } class CliArgs { +port : Option +projects_dir : Option +enable_proxy : bool +proxy_port : Option +default_backend_port : Option } class AppState { +config : AppConfig +pingora_service : Option } AppConfig --> CliArgs : "命令行参数覆盖" AppState --> AppConfig : "包含配置" ``` **图表来源** - [config.rs](file://crates/rcoder/src/config.rs#L1-L403) - [main.rs](file://crates/rcoder/src/main.rs#L1-L451) **本节来源** - [main.rs](file://crates/rcoder/src/main.rs#L1-L451) - [config.rs](file://crates/rcoder/src/config.rs#L1-L403) ### Agent 生命周期管理 系统通过 RAII 模式管理 AI 代理的生命周期,确保资源的正确清理。AgentLifecycleGuard 在 drop 时自动执行清理操作,防止资源泄漏。 ```mermaid stateDiagram-v2 [*] --> Idle Idle --> Active : "收到请求" Active --> Terminating : "收到取消信号" Terminating --> Idle : "清理完成" Active --> Idle : "任务完成" ``` **图表来源** - [agent_model.rs](file://crates/shared_types/src/model/agent_model.rs#L1-L483) **本节来源** - [agent_model.rs](file://crates/shared_types/src/model/agent_model.rs#L1-L483) ### 多镜像配置系统 系统支持灵活的多镜像配置,允许为不同服务类型指定不同的 Docker 镜像。配置系统包含全局默认、服务特定配置和选择策略。 ```mermaid classDiagram class MultiImageConfig { +global_defaults : GlobalImageDefaults +services : HashMap +selection_strategy : ImageSelectionStrategy +cache_config : ImageCacheConfig } class GlobalImageDefaults { +image : Option +arm64_image : Option +amd64_image : Option +default_image : Option +registry_prefix : Option } class ServiceImageConfig { +service_type : ServiceType +image : Option +arm64_image : Option +amd64_image : Option +default_image : Option +mounts : Vec +environment : HashMap +enabled : bool } MultiImageConfig --> GlobalImageDefaults : "包含" MultiImageConfig --> ServiceImageConfig : "包含多个" ``` **图表来源** - [multi_image_config.rs](file://crates/shared_types/src/multi_image_config.rs#L1-L604) **本节来源** - [multi_image_config.rs](file://crates/shared_types/src/multi_image_config.rs#L1-L604) ## 依赖分析 系统依赖关系清晰,rcoder 依赖 agent_runner、shared_types、docker_manager 和 pingora-proxy。shared_types 作为共享库,被多个 crate 依赖,提供统一的数据结构和协议定义。 ```mermaid graph TD Rcoder[rcoder] --> AgentRunner[agent_runner] Rcoder --> SharedTypes[shared_types] Rcoder --> DockerManager[docker_manager] Rcoder --> PingoraProxy[pingora-proxy] AgentRunner --> SharedTypes DockerManager --> SharedTypes PingoraProxy --> SharedTypes SharedTypes --> ACP[agent-client-protocol] ``` **图表来源** - [Cargo.toml](file://crates/rcoder/Cargo.toml#L1-L91) - [Cargo.toml](file://crates/agent_runner/Cargo.toml#L1-L79) **本节来源** - [Cargo.toml](file://crates/rcoder/Cargo.toml#L1-L91) - [Cargo.toml](file://crates/agent_runner/Cargo.toml#L1-L79) ## 性能考虑 系统在性能方面进行了多项优化:使用 Tokio 异步运行时处理并发请求,通过 DashMap 实现高效的状态管理,利用连接池减少资源开销。日志系统采用按天滚动策略,平衡了性能和可维护性。 **本节来源** - [main.rs](file://crates/rcoder/src/main.rs#L1-L451) - [config.rs](file://crates/rcoder/src/config.rs#L1-L403) ## 故障排除指南 系统提供了完善的故障排除机制,包括详细的日志记录、健康检查端点和调试工具。Docker 配置问题可通过环境变量和挂载检查解决,代理通信问题可通过日志级别调整进行诊断。 **本节来源** - [main.rs](file://crates/rcoder/src/main.rs#L1-L451) - [Dockerfile](file://docker/Dockerfile#L1-L305) - [docker-compose.yml](file://docker/docker-compose.yml#L1-L37) ## 结论 rcoder 架构设计合理,模块化程度高,具备良好的可扩展性和可维护性。通过微服务架构和容器化部署,系统能够灵活适应不同规模和需求的 AI 开发场景。未来可进一步优化性能监控和自动化部署流程。