OpenHands_技术分析与规划
OpenHands 开源项目全面技术分析与规划文档
1. 项目概述
OpenHands是一个AI驱动的开发平台,专注于自动化软件开发过程。该项目提供了多种使用方式,包括软件代理SDK、命令行界面(CLI)、本地GUI和云服务,旨在通过AI技术减少开发人员的编码工作量,提高开发效率。
1.1 核心特性
- AI驱动的代码生成与修改:支持多种大型语言模型(LLM),如GPT、Claude等
- 多代理协作系统:支持代理之间的任务委托与协作
- 沙箱环境执行:提供安全的代码执行环境
- Web界面与命令行界面:满足不同用户的使用习惯
- 企业级功能:提供多用户支持、RBAC权限管理等高级功能
2. 项目模块分析
2.1 核心架构模块
2.1.1 openhands/core - 核心模块
职责:提供整个系统的基础功能与核心逻辑
关键组件:
main.py:系统主入口,负责初始化和运行控制器config.py:配置管理,支持从文件和环境变量加载配置logger.py:日志系统,支持多种输出格式和级别loop.py:主循环控制,负责代理的迭代执行setup.py:系统初始化,创建代理、控制器、运行时等组件
2.1.2 openhands/controller - 控制器模块
职责:管理代理的执行流程和状态
关键组件:
agent_controller.py:代理控制器,管理代理生命周期和状态转换agent.py:代理基类,定义代理接口和通用功能state/state.py:状态管理,保存和恢复代理执行状态action_parser.py:动作解析器,解析LLM响应为具体动作stuck.py:卡点检测,检测代理是否陷入循环
2.1.3 openhands/agenthub - 代理实现模块
职责:实现各种类型的代理,执行不同任务
关键代理类型:
CodeActAgent:代码执行代理,负责代码编写和执行BrowsingAgent:网页浏览代理,负责网页内容获取PlannerAgent:规划代理,负责任务分解和规划
2.1.4 openhands/events - 事件系统
职责:实现事件驱动架构,处理系统内的各种事件
关键组件:
event.py:事件基类,定义事件接口event_stream.py:事件流,管理事件的发布和订阅action/:动作事件,如文件操作、命令执行等observation/:观察事件,如命令输出、文件内容等
2.1.5 openhands/runtime - 运行时环境
职责:提供代码执行环境,管理沙箱和资源
关键组件:
- 沙箱环境:提供隔离的执行环境
- 插件系统:支持扩展运行时功能
- 资源管理:管理计算资源和限制
2.1.6 openhands/security - 安全模块
职责:确保系统安全性,防止恶意代码执行
关键组件:
analyzer.py:安全分析器,检测潜在安全风险- 权限控制:管理操作权限
- 输入验证:验证用户输入和代码
2.2 前端模块 frontend/
职责:提供Web用户界面,与后端API交互
技术栈:
- React + TypeScript:前端框架
- Redux + TanStack Query:状态管理
- Tailwind CSS:样式框架
- Vite:构建工具
- WebSocket:实时通信
关键组件:
- 聊天界面:用户与代理交互
- 文件浏览器:查看和编辑项目文件
- 设置面板:配置系统参数
- 任务管理:查看和管理任务状态
2.3 企业版模块 enterprise/
职责:提供企业级功能,扩展开源版本
关键功能:
- 用户认证:OAuth集成
- 多租户支持:隔离不同组织的数据
- 高级权限管理:RBAC权限系统
- 计费与订阅:Stripe集成
- 高级监控:性能指标和使用统计
3. 系统架构与流程图
3.1 系统架构图
3.2 核心业务流程图
4. 技术栈详细清单
4.1 后端技术栈
| 类别 | 技术/框架 | 版本 | 用途 |
|---|---|---|---|
| 编程语言 | Python | ^3.12,❤️.14 | 主要开发语言 |
| Web框架 | FastAPI | * | REST API服务 |
| ASGI服务器 | Uvicorn | * | 异步Web服务器 |
| 语言模型接口 | LiteLLM | >=1.74.3, <=1.80.7 | 多模型统一接口 |
| Docker | * | * | 容器化沙箱环境 |
| 数据库 | SQLAlchemy | ^2.0.40 | ORM框架 |
| 数据库驱动 | asyncpg, pg8000 | ^0.30.0, ^1.31.5 | PostgreSQL驱动 |
| 事件处理 | python-socketio | ^5.11.4 | WebSocket实现 |
| 认证 | python-jose | >=3.3 | JWT处理 |
| 浏览器自动化 | Playwright | ^1.55.0 | 网页自动化 |
| 终端模拟 | pexpect | * | 终端交互 |
| 监控 | OpenTelemetry | ^1.33.1 | 性能监控 |
| 内存分析 | memory-profiler | ^0.61.0 | 性能分析 |
4.2 前端技术栈
| 类别 | 技术/框架 | 版本 | 用途 |
|---|---|---|---|
| 框架 | React | * | 用户界面框架 |
| 语言 | TypeScript | * | 类型安全的JavaScript |
| 状态管理 | Redux, TanStack Query | * | 全局状态管理 |
| 构建工具 | Vite | * | 前端构建工具 |
| 路由 | React Router | * | 单页应用路由 |
| 样式框架 | Tailwind CSS | * | CSS框架 |
| 测试框架 | Vitest, React Testing Library | * | 单元测试 |
| 代码格式化 | ESLint, Prettier | * | 代码规范 |
| 国际化 | i18next | * | 多语言支持 |
4.3 基础设施与运维
| 类别 | 技术/框架 | 版本 | 用途 |
|---|---|---|---|
| 容器化 | Docker | * | 应用容器化 |
| 编排 | Docker Compose | * | 多容器编排 |
| CI/CD | GitHub Actions | * | 持续集成与部署 |
| 包管理 | Poetry | ^2.1.2 | Python依赖管理 |
| 包管理 | npm | * | Node.js依赖管理 |
| 代码质量 | Ruff, MyPy, Pre-commit | 0.12.5, 1.17.0, 4.2.0 | 代码检查与格式化 |
| 测试 | pytest | * | Python测试框架 |
| 监控 | OpenTelemetry | ^1.33.1 | 性能监控 |
5. 典型使用场景分析
5.1 场景一:自动化代码修复
场景描述:开发者有一个代码库,其中包含一些bug和性能问题,希望利用OpenHands自动识别和修复这些问题。
流程分析:
- 用户通过Web界面上传或指定代码库
- CodeActAgent扫描代码库,识别潜在问题
- 代理创建修复计划,并征求用户确认
- 代理执行修复操作,包括代码修改和测试
- 用户提供反馈,代理根据反馈进行调整
- 完成后,代理生成修复报告和代码变更摘要
涉及的模块:
- CodeActAgent:负责代码分析和修改
- 文件系统代理:处理文件读写操作
- 终端代理:运行测试和代码检查工具
- 事件系统:记录所有操作和结果
5.2 场景二:自动化功能开发
场景描述:产品经理需要为现有Web应用添加一个新功能,如用户认证系统。
流程分析:
- 用户描述新功能需求和技术栈
- PlannerAgent将大任务分解为多个子任务
- CodeActAgent逐一实现每个子任务:
- 设计数据库模式
- 实现后端API
- 开发前端组件
- 添加测试用例
- BrowsingAgent搜索最佳实践和示例代码
- 用户随时可以检查进度并提供反馈
- 完成后,系统生成功能文档和部署指南
涉及的模块:
- PlannerAgent:任务分解和规划
- CodeActAgent:代码实现
- BrowsingAgent:资料搜索
- 文件系统代理:文件操作
- 终端代理:运行开发工具
5.3 场景三:企业级多团队协作
场景描述:大型企业中有多个开发团队,需要使用OpenHands进行协作开发,同时需要权限管理和审计功能。
流程分析:
- 管理员通过企业版控制台设置组织结构和团队
- 配置不同角色的权限(开发者、项目经理、审计员等)
- 各团队成员通过OAuth登录系统
- 开发者创建项目并邀请团队成员
- 系统记录所有操作,用于审计和性能分析
- 管理员通过仪表板监控资源使用和项目进度
- 系统根据使用情况生成账单和报告
涉及的模块:
- 企业版认证模块:OAuth集成和用户管理
- 权限管理模块:RBAC权限控制
- 审计模块:操作记录和合规检查
- 监控模块:资源监控和性能分析
- 计费模块:订阅管理和账单生成
6. 深入解析:事件驱动架构
6.1 设计模式
OpenHands的核心架构采用了事件驱动架构模式(Event-Driven Architecture),这是一种分布式系统架构模式,其中系统组件之间通过事件进行通信。这种架构的主要优点包括:
- 松耦合:组件之间不需要直接依赖,只需要知道事件的格式
- 可扩展性:新组件可以轻松添加到系统中,只需订阅相关事件
- 灵活性:系统行为可以通过改变事件处理方式来调整,而无需修改组件
6.2 核心实现
6.2.1 事件流(EventStream)
事件流是整个事件系统的核心,它负责事件的发布、订阅和路由:
class EventStream:
def __init__(self):
self._subscribers: Dict[EventStreamSubscriber, Callable] = {}
self._events: List[Event] = []
def add_event(self, event: Event, source: EventSource):
# 添加事件到历史记录
self._events.append(event)
# 通知所有订阅者
for subscriber, callback in self._subscribers.items():
try:
callback(event)
except Exception as e:
logger.error(f"Error in subscriber {subscriber}: {e}")
6.2.2 事件类型
系统定义了多种事件类型,主要包括:
- 动作事件(Action):表示请求执行的操作,如文件编辑、命令执行等
- 观察事件(Observation):表示操作结果或环境信息,如命令输出、文件内容等
每个事件都有特定的属性和方法,用于序列化、反序列化和处理。
6.2.3 事件处理流程
事件处理遵循以下流程:
- 代理生成动作事件
- 事件流发布动作事件
- 运行时接收动作事件并执行
- 运行时生成观察事件
- 事件流发布观察事件
- 控制器接收观察事件并更新状态
- 前端通过WebSocket接收状态更新
6.3 关键配置项
事件系统的关键配置项包括:
max_events:最大事件数量,超过此数量将触发事件压缩或删除event_filters:事件过滤器,用于过滤不需要保存的事件persist_events:是否持久化事件到磁盘compression_threshold:事件压缩阈值,超过此数量的事件将被压缩
6.4 在整个项目中的作用
事件驱动架构在OpenHands中起到以下关键作用:
- 解耦组件:允许前端、控制器、代理和运行时独立开发和演进
- 支持实时更新:通过事件流和WebSocket实现前端实时更新
- 记录执行历史:保存所有事件用于调试、审计和学习
- 实现异步处理:支持非阻塞的事件处理和并发执行
- 支持重放和恢复:通过保存的事件序列可以重放或恢复会话
7. 可复用功能模块
7.1 LiteLLM集成模块
功能:提供统一的LLM接口,支持多种语言模型
输入输出接口:
- 输入:提示文本、模型配置、生成参数
- 输出:生成的文本、token使用情况、元数据
独立库可行性:高。这是一个设计良好的抽象层,可以轻松抽离为独立库,用于其他需要多模型支持的项目。
7.2 沙箱环境管理模块
功能:提供安全的代码执行环境,支持多种隔离技术
输入输出接口:
- 输入:代码或命令、执行参数、资源限制
- 输出:执行结果、错误信息、资源使用情况
独立库可行性:高。这是一个通用的沙箱环境,可用于其他需要安全代码执行的项目,特别是在线代码执行平台。
7.3 事件流系统
功能:实现事件的发布、订阅和持久化
输入输出接口:
- 输入:事件对象、订阅者回调
- 输出:事件历史、订阅通知
独立库可行性:中高。需要根据具体场景调整接口,但核心设计可以复用,适用于其他事件驱动系统。
7.4 文件系统抽象层
功能:提供统一的文件操作接口,支持本地和远程文件系统
输入输出接口:
- 输入:文件路径、操作类型、数据
- 输出:操作结果、文件内容、元数据
独立库可行性:高。这是一个通用的文件系统抽象,可以用于其他需要多文件系统支持的项目。
7.5 代理状态管理模块
功能:管理代理的执行状态,支持状态持久化和恢复
输入输出接口:
- 输入:状态更新、状态查询请求
- 输出:当前状态、状态历史
独立库可行性:中。与代理系统紧密耦合,但状态管理部分可以抽象为通用库。
8. 二次开发建议
8.1 建议一:增强可视化任务规划功能
目标模块:openhands/agenthub/PlannerAgent
实施思路:
- 集成图形化任务分解工具,允许用户可视化地创建和修改任务分解
- 开发任务依赖关系管理功能,支持并行任务执行
- 实现任务优先级和资源分配机制
- 添加任务进度跟踪和可视化展示
预期收益:
- 提高复杂任务的可管理性和可理解性
- 支持更高效的并行任务执行
- 增强用户对任务执行过程的控制感
风险评估:
- 中等复杂度,需要UI和后端协调开发
- 可能增加系统复杂度,需要谨慎设计UI
8.2 建议二:实现智能代码审查助手
目标模块:新增openhands/agenthub/CodeReviewAgent
实施思路:
- 创建专门的代码审查代理,结合静态分析和AI审查
- 集成多种代码质量标准和安全规则
- 实现上下文感知的审查建议,考虑项目特定规范
- 开发与现有Git工作流的无缝集成
预期收益:
- 提高代码质量和安全性
- 减少人工审查工作量
- 标准化代码审查流程
风险评估:
- 高复杂度,需要深入的代码分析和安全知识
- 可能产生大量误报,需要精细调整算法
8.3 建议三:开发性能优化与缓存机制
目标模块:openhands/core和openhands/runtime
实施思路:
- 实现智能结果缓存,减少重复计算和API调用
- 开发增量文件处理,避免全量文件分析
- 优化LLM调用策略,如批处理和请求合并
- 实现资源使用预测和动态分配
预期收益:
- 显著提高系统响应速度
- 降低API调用成本
- 提升用户体验
风险评估:
- 中等复杂度,需要仔细设计缓存策略
- 可能引入一致性问题,需要健全的缓存失效机制
9. 项目目录结构
OpenHands/
├── build_vscode.py # VSCode扩展构建脚本
├── build.sh # 项目构建脚本
├── CITATION.cff # 引用信息
├── CNAME # 域名配置
├── CODE_OF_CONDUCT.md # 行为准则
├── COMMUNITY.md # 社区指南
├── config.template.toml # 配置模板
├── CONTRIBUTING.md # 贡献指南
├── CREDITS.md # 贡献者名单
├── Development.md # 开发指南
├── docker-compose.yml # Docker编排配置
├── docker/ # Docker相关配置
├── enterprise/ # 企业版代码
│ ├── alembic.ini # 数据库迁移配置
│ ├── Dockerfile # 企业版Docker配置
│ ├── LICENSE # 企业版许可证
│ ├── Makefile # 企业版构建脚本
│ ├── README.md # 企业版说明
│ ├── saas_server.py # SaaS服务器
│ ├── dev_config/ # 开发配置
│ ├── doc/ # 文档
│ ├── enterprise_local/ # 本地企业版配置
│ ├── experiments/ # 实验功能
│ └── integrations/ # 第三方集成
├── evaluation/ # 评估工具
├── frontend/ # 前端代码
│ ├── .env.sample # 环境变量模板
│ ├── .eslintrc # ESLint配置
│ ├── package.json # 前端依赖配置
│ ├── playwright.config.ts # Playwright配置
│ ├── README.md # 前端说明
│ ├── src/ # 前端源码
│ │ ├── api/ # API调用
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # React组件
│ │ ├── context/ # 本地状态管理
│ │ ├── hooks/ # 自定义Hooks
│ │ ├── i18n/ # 国际化
│ │ ├── mocks/ # API模拟
│ │ ├── routes/ # 路由配置
│ │ ├── services/ # 业务服务
│ │ ├── state/ # Redux状态
│ │ ├── types/ # TypeScript类型定义
│ │ ├── utils/ # 工具函数
│ │ └── root.tsx # 入口文件
│ ├── __tests__/ # 测试文件
│ ├── public/ # 公共资源
│ └── vite.config.ts # Vite配置
├── kind/ # Kubernetes配置
├── LICENSE # 开源许可证
├── Makefile # 构建脚本
├── openhands/ # 核心代码
│ ├── __init__.py # 包初始化
│ ├── version.py # 版本信息
│ ├── README.md # 核心模块说明
│ ├── agenthub/ # 代理实现
│ │ ├── __init__.py # 包初始化
│ │ └── README.md # 代理说明
│ ├── app_server/ # 应用服务器
│ │ ├── __init__.py # 包初始化
│ │ ├── config.py # 服务器配置
│ │ ├── errors.py # 错误处理
│ │ ├── README.md # 服务器说明
│ │ └── v1_router.py # API路由
│ ├── controller/ # 控制器
│ │ ├── __init__.py # 包初始化
│ │ ├── action_parser.py # 动作解析
│ │ ├── agent_controller.py # 代理控制器
│ │ ├── agent.py # 代理基类
│ │ ├── replay.py # 重放功能
│ │ ├── stuck.py # 卡点检测
│ │ └── state/ # 状态管理
│ ├── core/ # 核心功能
│ │ ├── config/ # 配置管理
│ │ ├── exceptions.py # 异常定义
│ │ ├── logger.py # 日志系统
│ │ ├── loop.py # 主循环
│ │ ├── main.py # 主入口
│ │ ├── setup.py # 系统初始化
│ │ └── schema.py # 数据模式
│ ├── critic/ # 评价系统
│ │ ├── __init__.py # 包初始化
│ │ ├── base.py # 评价基类
│ │ └── finish_critic.py # 完成评价
│ ├── events/ # 事件系统
│ │ ├── __init__.py # 包初始化
│ │ ├── event.py # 事件基类
│ │ ├── event_stream.py # 事件流
│ │ ├── action/ # 动作事件
│ │ ├── observation/ # 观察事件
│ │ └── utils.py # 事件工具
│ ├── integrations/ # 集成模块
│ │ ├── provider.py # 提供者集成
│ │ └── service_types.py # 服务类型
│ ├── memory/ # 记忆系统
│ │ ├── __init__.py # 包初始化
│ │ ├── memory.py # 记忆实现
│ │ └── vector_memory.py # 向量记忆
│ ├── resolver/ # 解析器
│ │ ├── __init__.py # 包初始化
│ │ └── issues_resolver.py # 问题解决
│ ├── runtime/ # 运行时
│ │ ├── __init__.py # 包初始化
│ │ ├── base.py # 运行时基类
│ │ └── plugins/ # 插件系统
│ ├── security/ # 安全模块
│ │ ├── __init__.py # 包初始化
│ │ └── analyzer.py # 安全分析
│ └── utils/ # 工具函数
├── openhands-cli/ # CLI工具
├── openhands-ui/ # UI组件
├── poetry.lock # Python依赖锁定
├── pydoc-markdown.yml # 文档生成配置
├── pyproject.toml # Python项目配置
├── pytest.ini # 测试配置
├── README.md # 项目说明
├── scripts/ # 脚本工具
├── skills/ # 技能定义
└── tests/ # 测试代码
10. 入门指南
10.1 本地环境搭建
系统要求
- 操作系统:Windows 10+, macOS 10.15+, 或 Linux (Ubuntu 18.04+)
- Python:3.12 或更高版本
- Node.js:20.x 或更高版本
- Docker:最新稳定版
- Git:2.20 或更高版本
环境变量配置
- 创建配置文件:
cp config.template.toml config.toml
- 编辑配置文件,设置必要的API密钥:
[llm]
model = "gpt-4o"
api_key = "your_openai_api_key_here"
- 设置环境变量:
export OPENAI_API_KEY="your_openai_api_key_here"
export WORKSPACE_DIR="./workspace"
10.2 从克隆到运行
- 克隆仓库:
git clone https://github.com/OpenHands/OpenHands.git
cd OpenHands
- 安装Python依赖:
pip install poetry
poetry install
- 安装前端依赖:
cd frontend
npm install
cd ..
- 构建项目:
make build
- 启动服务:
# 启动后端和前端
make run
# 或分别启动
make start-backend
make start-frontend
- 访问应用:
打开浏览器访问 http://localhost:3001
10.3 "Hello World"功能修改示例
以下是一个简单的"Hello World"示例,展示如何添加一个新的命令工具:
- 创建新命令工具:
# 在 openhands/runtime/plugins/ 目录下创建 hello_world.py
from openhands.events.action import Action
from openhands.events.observation import Observation
class HelloWorldAction(Action):
def __init__(self):
self.name = "hello_world"
class HelloWorldObservation(Observation):
def __init__(self, message="Hello, World!"):
self.content = message
def execute_hello_world(action):
return HelloWorldObservation()
- 注册新工具:
# 在 openhands/runtime/plugins/__init__.py 中添加
from .hello_world import execute_hello_world, HelloWorldAction
def register_hello_world_tools():
return {
"hello_world": {
"action": HelloWorldAction,
"execute": execute_hello_world
}
}
- 测试新工具:
# 在测试文件中添加测试
def test_hello_world():
action = HelloWorldAction()
observation = execute_hello_world(action)
assert observation.content == "Hello, World!"
- 运行测试:
poetry run pytest tests/test_hello_world.py -v
- 在UI中测试:
启动应用后,在聊天界面输入"执行hello_world命令",应该会看到"Hello, World!"的输出。
11. 商业化盈利模式规划
11.1 核心付费功能点规划
11.1.1 高级AI代理功能
- 多代理协作:支持多个专业代理协同工作,如代码审查代理、安全审计代理等
- 自定义代理训练:允许企业使用自己的数据训练定制化代理
- 高级推理能力:集成最新的大型语言模型,提供更强的推理和分析能力
11.1.2 企业级管理与安全
- 高级权限管理:细粒度的RBAC权限控制,支持自定义角色和权限
- 审计与合规:完整的操作日志和合规报告,满足企业审计需求
- 私有部署:支持在客户自有VPC中部署,确保数据不出企业环境
11.1.3 高级集成与扩展
- 企业系统集成:与JIRA、GitLab、Jenkins等企业开发工具深度集成
- 自定义工作流:允许企业定义和管理自定义开发工作流
- API优先:提供完整的REST API和Webhook,支持与其他系统集成
11.2 服务模式
11.2.1 SaaS订阅模式
- 免费版:有限制的基本功能,每月一定数量的任务
- 专业版:面向个人和小团队,提供完整功能和更高使用限制
- 企业版:面向大型企业,提供高级管理功能、私有部署和专属支持
11.2.2 商业授权许可
- 开源核心:继续维护MIT许可的开源核心版本
- 企业版源码:提供商业许可,允许企业查看和修改企业版源码
- OEM合作:与工具厂商合作,将OpenHands技术集成到他们的产品中
11.2.3 服务与支持
- 技术支持服务:提供不同级别技术支持,从社区论坛到专属技术客户经理
- 咨询与培训:提供企业实施咨询和开发者培训服务
- 定制开发:为企业提供定制功能开发服务
11.3 市场定位与客户群体分析
11.3.1 主要目标市场
-
中小型科技公司和初创企业
- 需求:提高开发效率,减少人力成本
- 痛点:开发资源有限,希望自动化重复性工作
- 定位:专业版SaaS订阅,提供高性价比的自动化开发工具
-
大型企业和金融机构
- 需求:提高开发效率,确保代码质量和安全性
- 痛点:复杂的开发流程,严格的合规要求
- 定位:企业版SaaS或私有部署,提供高级安全和管理功能
-
独立开发者和小型工作室
- 需求:提高个人生产力,快速原型开发
- 痛点:时间有限,需要快速验证想法
- 定位:免费版和专业版,提供易用的AI辅助开发工具
11.3.2 次要市场
-
教育机构和培训机构
- 需求:编程教学辅助,自动化作业批改
- 定位:教育版定制服务,集成教学管理系统
-
政府和公共部门
- 需求:提高IT项目效率,确保代码安全
- 定位:定制化企业版,满足特殊合规要求
11.3.3 竞争优势
- 多代理架构:相比单一AI助手,多代理协作系统可以处理更复杂的任务
- 开源核心:透明度和可信度更高,社区贡献可以加速创新
- 灵活性:支持多种部署方式和使用模式,满足不同客户需求
- 集成能力:与现有开发工具和工作流无缝集成
11.3.4 市场进入策略
- 社区驱动增长:通过开源社区积累用户和口碑
- 免费增值模式:提供免费版本吸引用户,然后转化为付费用户
- 合作伙伴生态:与开发工具厂商和服务商建立合作关系
- 内容营销:通过博客、网络研讨会和案例研究展示产品价值
本文档基于OpenHands开源项目的最新版本(0.62.0)分析编写,随着项目发展,部分内容可能需要更新。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)