Files
2026-06-01 13:54:52 +08:00

7.0 KiB
Raw Permalink Blame History

附录

**本文档中引用的文件** - [README.md](file://README.md) - [config.yml](file://config.yml) - [CLAUDE.md](file://CLAUDE.md) - [install.md](file://install.md) - [Cargo.toml](file://Cargo.toml) - [crates/rcoder/src/config.rs](file://crates/rcoder/src/config.rs) - [crates/pingora-proxy/src/config.rs](file://crates/pingora-proxy/src/config.rs) - [crates/shared_types/src/multi_image_config.rs](file://crates/shared_types/src/multi_image_config.rs) - [crates/shared_types/src/service_type.rs](file://crates/shared_types/src/service_type.rs)

目录

  1. 相关链接
  2. 许可证
  3. 变更日志
  4. FAQ

相关链接

本项目依赖并关联多个外部资源和文档,以下是关键链接的详细说明:

  • 项目仓库: GitHub - 项目源代码的主仓库,包含所有开发分支和发布版本。
  • 问题追踪: Issues - 用于报告 bug、提出功能请求和讨论技术问题的平台。
  • 贡献指南: CONTRIBUTING.md - 详细说明如何为项目贡献代码,包括开发流程、代码风格和提交规范。
  • ACP 协议: Agent Client Protocol - RCoder 所依赖的 AI 代理通信协议的官方文档。
  • Claude Code: Anthropic Claude Code - 集成的 Claude AI 代理的官方文档和 API 参考。
  • OpenAI Codex: OpenAI Codex Documentation - 集成的 OpenAI Codex 代理的相关文档。

这些链接为开发者提供了深入理解项目架构、协议细节和外部依赖的入口。

Section sources

许可证

本项目采用 MIT 或 Apache-2.0 双许可证模式,为使用者提供了灵活的选择。您可以在以下两种许可证中选择一种来遵守:

  • MIT 许可证: 允许在任何项目中自由使用、复制、修改、合并、发布、分发、再许可和销售软件的副本,只需在软件和衍生作品中包含原始版权声明和许可声明。
  • Apache-2.0 许可证: 提供了更全面的条款,包括明确的专利授权、商标使用限制和贡献者责任豁免。它还要求在分发源代码或二进制文件时包含 NOTICE 文件。

这种双许可证策略旨在平衡开源社区的开放性与企业用户的法律确定性。详细的许可证文本可以在项目根目录下的 LICENSE 文件中找到。

Section sources

变更日志

v0.1.0 (当前版本)

新增功能

  • 初始版本发布
  • 基于 ACP 协议的 AI 代理统一管理
  • HTTP API 接口支持
  • Claude Code 和 OpenAI Codex 代理集成
  • YAML 配置文件支持
  • 命令行参数支持
  • 多层配置系统(命令行 > 环境变量 > 配置文件 > 默认)
  • OpenTelemetry 集成和分布式追踪
  • Swagger UI API 文档
  • 项目文件解析器 (Nuwax Parser)

技术特性

  • 基于 Rust 2024 Edition
  • 异步架构 (Tokio)
  • 模块化设计 (Workspace Crates)
  • 实时通信 (SSE)
  • 结构化日志 (Tracing)

Section sources

FAQ

如何配置 AI 代理?

AI 代理的配置主要通过环境变量完成。对于 Claude Code 代理,需要设置 ANTHROPIC_API_KEYANTHROPIC_MODEL 环境变量。例如:

export ANTHROPIC_API_KEY="your-api-key"
export ANTHROPIC_MODEL="claude-3-sonnet-20240229"

对于 OpenAI Codex 代理,需要参考其官方文档进行相应的设置。

Section sources

如何解决端口被占用的问题?

如果遇到端口被占用的情况,可以通过命令行参数 --port 指定一个不同的端口。例如:

cargo run --bin rcoder -- --port 8087

此外,也可以通过环境变量 RCODER_PORT 或在 config.yml 配置文件中修改 port 字段来更改端口。

Section sources

配置系统的优先级是怎样的?

RCoder 的配置系统遵循一个明确的优先级顺序,从高到低依次为:

  1. 命令行参数:最高优先级,直接在启动命令中指定。
  2. 环境变量:中等优先级,可以在系统或 shell 中设置。
  3. 配置文件:较低优先级,存储在 config.yml 文件中。
  4. 默认配置:最低优先级,由代码中的默认值提供。

例如,如果同时在命令行指定了 --port 8080,在环境变量中设置了 RCODER_PORT=9000,并且在 config.yml 中配置了 port: 3000,最终生效的端口将是 8080。

Section sources

如何启用和配置 Pingora 反向代理?

要启用 Pingora 反向代理,需要在启动命令中添加 --enable-proxy 参数,并通过 --proxy-port 指定监听端口。例如:

cargo run --bin rcoder -- --enable-proxy --proxy-port 8080

您也可以在 config.yml 文件中配置 proxy_config 部分,包括 listen_portdefault_backend_port 等选项。代理请求应直接发送到 Pingora 的监听端口,路径格式为 /proxy/{port}/{path}

Section sources

Docker 容器是如何管理的?

RCoder 使用 DockerManager 和 ContainerManager 组件来动态创建和管理每个项目的独立 Docker 容器。容器的镜像选择策略支持多镜像配置可以根据系统架构ARM64/AMD64自动选择合适的镜像。相关的配置在 config.ymldocker_config 部分定义,包括镜像仓库、资源限制和网络模式等。

Section sources

如何进行故障排查?

当遇到问题时,建议按照以下步骤进行排查:

  1. 查看 RUST_LOG=debug 启用的详细日志输出。
  2. 检查 README.mdCLAUDE.md 中的相关说明。
  3. 搜索已有的 Issues 看是否已有解决方案。
  4. 使用 cargo clippycargo fmt 检查代码质量和格式。
  5. 如果问题依然存在,可以创建一个新的 Issue 并提供详细的错误信息和复现步骤。

Section sources