OpenHands 深度解析:开源界的 AI 软件工程师,能否改写编程未来?
OpenHands 深度解析:开源界的 AI 软件工程师,能否改写编程未来?
当 Devin 用封闭模型宣告”AI 程序员”时代的来临,OpenHands 选择用开源的方式,把这份能力交还给全世界。这不是简单的技术复刻,而是一场关于”AI 如何真正辅助人类编程”的深度探索。
引言:从 OpenDevin 到 OpenHands
2024 年 3 月,一款名为 Devin 的 AI 软件工程师产品横空出世,宣称能够独立完成编程任务、调试代码、甚至部署应用。它的出现引发了整个技术圈的震动——AI 真的可以替代程序员了吗?
就在 Devin 发布后不久,一个名为 OpenDevin 的开源项目迅速崛起,承诺提供与 Devin 同等能力的开源替代方案。仅仅几个月后,项目更名为 OpenHands,以全新的姿态继续演进。
为什么一个开源项目能在如此短的时间内获得如此高的关注度?它真的能实现”AI 软件工程师”的愿景吗?对于正在构建自己的 AI 代理系统的 OpenClaw 生态来说,OpenHands 又有哪些值得借鉴的地方?
这篇文章,我将带你深入 OpenHands 的每一个角落,从它的技术架构到核心能力,从安装部署到实际应用,从优势局限到未来展望。这不仅是一次技术剖析,更是一次对”AI 如何真正辅助人类编程”这一命题的深度思考。
一、项目背景与核心定位
1.1 起源与演进
OpenHands 的前身是 OpenDevin,由 MIT 的研究团队和社区开发者共同发起。项目的初衷很明确:打造一个开源的、可定制的、功能完整的 AI 软件工程师平台。
项目的演进历程可以概括为以下几个关键节点:
-
2024 年 3 月:Devin 发布,引发行业震动 -
2024 年 3 月底:OpenDevin 项目在 GitHub 上线,迅速获得数千星 -
2024 年 年中:项目更名为 OpenHands,标志着从”Devin 复刻”到”独立创新”的转变 -
2024 年下半年:社区快速迭代,功能不断完善,形成完整的生态系统
1.2 核心定位与设计哲学
OpenHands 的核心定位非常清晰:一个开源的 AI 软件工程师平台,能够自主完成软件开发的全流程任务。
但它与 Devin 有一个本质的区别:OpenHands 不是要替代程序员,而是要成为程序员的超级助手。这种设计哲学体现在以下几个方面:
-
透明性:所有代码开源,用户可以理解每一个决策过程 -
可定制性:用户可以根据自己的需求修改和扩展功能 -
安全性:通过 Docker 沙箱隔离,确保代码执行的安全 -
协作性:强调人机协作,而非完全自动化
1.3 与 Devin 的关系与区别
|
|
|
|
|---|---|---|
| 开源状态 |
|
|
| 模型依赖 |
|
|
| 部署方式 |
|
|
| 成本 |
|
|
| 可定制性 |
|
|
| 社区生态 |
|
|
| 透明度 |
|
|
关键区别:Devin 是一个商业产品,追求的是”开箱即用”的完整体验;而 OpenHands 是一个开源平台,追求的是”可塑性强”的灵活能力。
二、本地安装部署教程
2.1 环境依赖准备
OpenHands 支持多种部署方式,但都需要以下基础环境:
必需依赖:
-
Python 3.11+ -
Docker(推荐 20.10+) -
Git -
至少 4GB 可用内存 -
至少 10GB 磁盘空间
可选依赖:
-
Node.js 18+(用于前端开发) -
某个 LLM 的 API Key(如 OpenAI、Anthropic 等)
2.2 Docker 部署方式(推荐)
Docker 部署是最简单、最稳定的方式,适合绝大多数用户。
步骤 1:拉取镜像
docker pull allhandsai/openshands:latest
步骤 2:启动容器
docker run -it \ --pull=always \ -e SANDBOX_RUNTIME_CONTAINER_IMAGE=allhandsai/sandbox:latest \ -e WORKSPACE_BASE=/path/to/your/workspace \ -p 3000:3000 \ -v /var/run/docker.sock:/var/run/docker.sock \ --add-host host.docker.internal:host-gateway \ allhandsai/openshands:latest
步骤 3:访问应用 打开浏览器访问 http://localhost:3000,即可看到 OpenHands 的 Web 界面。
环境变量说明:
-
WORKSPACE_BASE:指定工作目录,OpenHands 将在此目录下创建和管理项目 -
SANDBOX_RUNTIME_CONTAINER_IMAGE:沙箱运行时镜像,用于隔离代码执行环境 -
LLM_API_KEY:LLM API 密钥(可选,可在 Web 界面配置)
2.3 源码手动搭建步骤
如果你希望深度定制或贡献代码,可以选择源码部署。
步骤 1:克隆仓库
git clone https://github.com/All-Hands-AI/OpenHands.gitcd OpenHands
步骤 2:安装 Python 依赖
# 创建虚拟环境python -m venv venvsource venv/bin/activate # Windows: venv\Scripts\activate# 安装依赖pip install -e .
步骤 3:配置环境变量 创建 .env 文件:
LLM_API_KEY=your_api_key_hereLLM_MODEL=gpt-4o # 或 claude-3-5-sonnet-20241022 等WORKSPACE_BASE=./workspace
步骤 4:启动服务
# 后端服务python -m opendevin.server# 前端服务(另开终端)cd frontendnpm installnpm run dev
步骤 5:访问应用 前端默认运行在 http://localhost:3001,后端运行在 http://localhost:3000。
2.4 启动配置与基础初始化
首次启动后,需要进行基础配置:
1. LLM 配置 在 Web 界面或 .env 文件中配置 LLM 参数:
# 支持多种模型LLM_MODEL=gpt-4o # OpenAILLM_MODEL=claude-3-5-sonnet # AnthropicLLM_MODEL=llama3:70b # 本地 Ollama 模型# API 配置LLM_API_KEY=sk-xxxLLM_BASE_URL=https://api.openai.com/v1 # 可选,用于代理
2. 工作空间配置
WORKSPACE_BASE=/path/to/workspaceWORKSPACE_MOUNT_PATH=/path/to/workspace # Docker 挂载路径
3. 沙箱配置
SANDBOX_RUNTIME_CONTAINER_IMAGE=allhandsai/sandbox:latestSANDBOX_USER_ID=1000 # 匹配宿主机用户 ID,避免权限问题
2.5 基础使用流程
第一步:创建新会话 在 Web 界面点击”New Conversation”,输入你的需求,例如:
“帮我创建一个 Python Flask 应用,包含用户注册和登录功能”
第二步:观察执行过程 OpenHands 会逐步执行以下操作:
-
分析需求,制定计划 -
创建项目结构 -
编写代码文件 -
安装依赖 -
运行测试 -
调试错误
第三步:交互与反馈 在过程中,你可以:
-
查看实时日志 -
提出修改意见 -
查看生成的代码 -
终止或继续执行
第四步:完成任务 任务完成后,你可以:
-
查看完整的项目文件 -
复制代码到本地 -
导出项目到 Git 仓库
三、整体架构与技术原理
3.1 系统架构概览
OpenHands 的架构采用分层设计,主要包括以下几个核心组件:
┌─────────────────────────────────────────────────────────┐│ Web Interface ││ (React + TypeScript Frontend) │└─────────────────────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────────────────────┐│ Server Layer ││ (FastAPI + WebSocket + Event Bus) │└─────────────────────────────────────────────────────────┘ │ ┌───────────────┼───────────────┐ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Agent Core │ │ Tool System│ │ Sandbox Env │ │ (LLM Loop) │ │ (Commands) │ │ (Docker) │ └─────────────┘ └─────────────┘ └─────────────┘
3.2 Agent 内核:LLM 驱动的智能循环
OpenHands 的核心是一个基于 LLM 的 Agent 循环,其工作流程如下:
1. 观察(Observation) Agent 首先观察当前状态:
-
文件系统状态 -
终端输出 -
浏览器内容 -
之前的执行历史
2. 思考(Thought) 基于观察,LLM 进行推理:
-
分析当前进度 -
识别下一步行动 -
制定执行计划
3. 行动(Action) Agent 执行具体操作:
-
运行终端命令 -
编辑文件 -
调用 API -
打开浏览器
4. 循环(Loop) 重复上述过程,直到任务完成或达到最大迭代次数。
关键设计:
# 伪代码示例classAgent:defstep(self, event_source):# 观察当前状态 observations = self.get_observations()# LLM 思考下一步 thought = self.llm.generate(observations)# 执行行动 action = self.parse_action(thought) result = self.execute_action(action)# 返回结果return Observation(result)
3.3 工具调用系统
OpenHands 提供了一套丰富的内置工具,Agent 可以根据需要调用:
文件操作工具:
-
read:读取文件内容 -
write:写入文件 -
edit:编辑文件(支持 diff 模式) -
ls:列出目录内容 -
find:搜索文件
终端工具:
-
run:执行 Shell 命令 -
kill:终止进程 -
background:后台运行命令
浏览器工具:
-
browse:打开网页 -
browse_interactive:交互式浏览
其他工具:
-
think:记录思考过程 -
finish:完成任务 -
reject:拒绝执行
工具调用机制:
# 工具定义示例@Tool('run')defrun_command(command: str) -> str:"""执行 Shell 命令""" result = subprocess.run(command, shell=True, capture_output=True)return result.stdout + result.stderr
3.4 沙箱执行环境
为了安全地执行代码,OpenHands 使用 Docker 作为沙箱环境:
沙箱架构:
┌─────────────────────────────────────┐│ Host Machine ││ ┌─────────────────────────────┐ ││ │ OpenHands Server │ ││ └─────────────────────────────┘ ││ │ ││ ▼ ││ ┌─────────────────────────────┐ ││ │ Docker Sandbox Container │ ││ │ - Isolated file system │ ││ │ - Network access control │ ││ │ - Resource limits │ ││ └─────────────────────────────┘ │└─────────────────────────────────────┘
安全机制:
-
文件系统隔离:沙箱内的文件操作不会直接影响宿主机 -
网络隔离:可控制沙箱的网络访问权限 -
资源限制:CPU、内存使用限制 -
用户权限:以非 root 用户运行
配置示例:
docker run \ --memory=4g \ --cpus=2 \ --network=bridge \ --read-only \ --tmpfs /tmp \ sandbox-image
3.5 多模型适配机制
OpenHands 支持多种 LLM 后端,通过统一的接口层实现模型无关性:
支持的模型:
-
OpenAI 系列(gpt-4o, gpt-4-turbo, gpt-3.5-turbo) -
Anthropic 系列(claude-3.5-sonnet, claude-3-opus) -
本地模型(Ollama, LM Studio) -
其他兼容 OpenAI API 的模型
统一接口:
classLLM:def__init__(self, model: str, api_key: str):self.model = modelself.client = self._create_client(model, api_key)defcomplete(self, messages: list) -> str:"""统一的补全接口""" response = self.client.chat.completions.create( model=self.model, messages=messages )return response.choices[0].message.content
模型选择策略:
-
复杂任务:使用更强的模型(如 gpt-4o, claude-3.5-sonnet) -
简单任务:使用成本更低的模型(如 gpt-3.5-turbo) -
隐私敏感:使用本地模型(如 llama3)
四、核心能力详解
4.1 自主软件开发
OpenHands 最核心的能力是自主完成软件开发任务。具体包括:
项目初始化:
-
创建项目目录结构 -
初始化版本控制(Git) -
生成配置文件(package.json, requirements.txt 等)
代码生成:
-
根据需求生成完整代码 -
遵循最佳实践和设计模式 -
自动生成文档和注释
依赖管理:
-
自动识别和安装依赖 -
解决依赖冲突 -
处理版本兼容性问题
实际案例:
用户输入:"创建一个 React + TypeScript 的待办事项应用,包含增删改查功能"OpenHands 执行流程:1. 分析需求,制定开发计划2. 使用 create-react-app 初始化项目3. 安装必要依赖(react-router, axios 等)4. 创建组件结构(TodoList, TodoItem, TodoForm)5. 实现 CRUD 逻辑6. 添加样式7. 运行测试8. 修复发现的 bug9. 输出完整的项目代码
4.2 全链路代码生成/审查/调试
代码生成:
-
支持多种编程语言(Python, JavaScript, TypeScript, Go, Rust 等) -
能够理解复杂的需求并分解为可执行的步骤 -
生成符合代码规范的代码
代码审查:
用户输入:"审查这个函数的代码质量"OpenHands 会:1. 分析代码结构和逻辑2. 检查潜在 bug 和安全漏洞3. 评估性能和可维护性4. 提供具体的改进建议5. 生成修复后的代码版本
代码调试:
-
自动识别错误信息 -
分析错误堆栈 -
定位问题根源 -
提出修复方案 -
验证修复效果
调试案例:
错误信息:TypeError: Cannot read property 'map' of undefinedOpenHands 调试流程:1. 分析错误堆栈,定位出错行2. 检查相关变量的值3. 发现数据源可能为空4. 添加空值检查5. 添加默认值处理6. 重新运行验证
4.3 终端操作
OpenHands 可以完全控制终端,执行各种命令:
文件操作:
# 创建目录结构mkdir -p src/components src/utils src/api# 复制/移动文件cp template.py src/main.py# 查找文件find . -name "*.py" -type f
版本控制:
# Git 操作git initgit add .git commit -m "Initial commit"git branch -M main
构建与部署:
# 安装依赖npm installpip install -r requirements.txt# 构建项目npm run buildpython setup.py build# 运行服务npm run devpython app.py
4.4 浏览器交互
OpenHands 可以打开浏览器,进行网页交互:
网页浏览:
-
访问文档网站 -
查找 API 信息 -
阅读 Stack Overflow 答案
表单填写:
-
自动填写注册表单 -
提交反馈表 -
完成在线测试
数据抓取:
-
抓取网页内容 -
提取关键信息 -
解析 JSON/API 响应
使用场景:
用户输入:"查找 Python requests 库的最新文档"OpenHands 会:1. 打开浏览器2. 访问 requests.readthedocs.io3. 浏览文档结构4. 提取关键 API 信息5. 总结常用方法6. 返回给用户
4.5 API 调用
OpenHands 可以调用各种 API,实现自动化集成:
HTTP 请求:
import requests# 调用外部 APIresponse = requests.get('https://api.github.com/repos/All-Hands-AI/OpenHands')data = response.json()
API 集成:
-
集成第三方服务(GitHub、Slack、Discord 等) -
调用云服务 API(AWS、GCP、Azure) -
使用 AI 服务(图像生成、语音合成等)
自动化工作流:
用户输入:"在 GitHub 上创建一个新仓库并推送代码"OpenHands 执行:1. 调用 GitHub API 创建仓库2. 配置 Git 远程地址3. 提交代码4. 推送到远程仓库5. 返回仓库链接
4.6 自动化测试
OpenHands 可以编写和运行测试:
测试框架支持:
-
pytest(Python) -
Jest(JavaScript) -
unittest(Python) -
Mocha(JavaScript)
测试生成:
用户输入:"为这个函数编写单元测试"OpenHands 会:1. 分析函数逻辑和边界条件2. 生成测试用例3. 编写测试代码4. 运行测试5. 修复失败的测试6. 输出测试覆盖率报告
持续集成:
-
自动生成 CI/CD 配置 -
设置 GitHub Actions -
配置自动化测试流水线
五、关键特性
5.1 多智能体协作
OpenHands 支持多智能体协作模式,可以分配不同的任务给不同的 Agent:
角色分工:
-
规划者(Planner):负责任务分解和进度管理 -
编码者(Coder):负责具体代码实现 -
审查者(Reviewer):负责代码质量检查 -
测试者(Tester):负责测试用例编写和执行
协作机制:
任务:开发一个电商网站多 Agent 协作流程:1. Planner 分析需求,拆分为:前端、后端、数据库2. Coder-Frontend 负责 React 页面开发3. Coder-Backend 负责 API 开发4. Tester 编写测试用例5. Reviewer 审查代码质量6. Planner 汇总进度,协调问题
5.2 模型无关(支持 Claude/GPT/本地模型)
OpenHands 的最大优势之一是模型无关性:
模型切换:
# 使用 OpenAILLM_MODEL=gpt-4oLLM_API_KEY=sk-xxx# 使用 AnthropicLLM_MODEL=claude-3-5-sonnet-20241022LLM_API_KEY=anthropic_xxx# 使用本地 OllamaLLM_MODEL=llama3:70bLLM_BASE_URL=http://localhost:11434
优势:
-
灵活性:根据任务复杂度选择合适的模型 -
成本控制:简单任务用便宜模型,复杂任务用强模型 -
隐私保护:敏感数据用本地模型 -
避免厂商锁定:随时切换模型提供商
5.3 Docker 沙箱安全
Docker 沙箱是 OpenHands 的核心安全机制:
安全特性:
-
文件系统隔离:沙箱内的操作不会影响宿主机 -
网络控制:可限制或允许网络访问 -
资源限制:CPU、内存、磁盘使用限制 -
进程隔离:沙箱内的进程独立运行
配置示例:
# docker-compose.ymlservices:sandbox:image:allhandsai/sandbox:latestsecurity_opt:-no-new-privileges:trueread_only:truetmpfs:-/tmpmem_limit:4gcpus:2
5.4 可扩展插件体系
OpenHands 支持插件扩展,用户可以添加自定义功能:
插件开发:
from opendevin.core.plugin import PluginclassMyCustomPlugin(Plugin): name = "my_custom_plugin"defon_event(self, event):if event.type == "command":self.handle_command(event.command)defhandle_command(self, command):# 自定义逻辑pass
插件市场:
-
社区贡献的插件 -
官方维护的插件 -
自定义私有插件
典型插件:
-
Git 操作插件 -
数据库操作插件 -
云服务集成插件 -
代码分析插件
六、与 OpenClaw 的异同对比
6.1 定位对比
|
|
|
|
|---|---|---|
| 核心定位 |
|
|
| 主要场景 |
|
|
| 目标用户 |
|
|
| 完成度 |
|
|
| 自主性 |
|
|
本质区别:
-
OpenHands 是一个完整的 AI 软件工程师产品,目标是”替代程序员完成编程任务” -
OpenClaw 是一个 AI 代理框架,目标是”帮助用户自动化各种任务”
6.2 能力边界
OpenHands 的优势领域:
-
完整的软件开发流程 -
代码生成和调试 -
终端操作和部署 -
技术文档阅读
OpenClaw 的优势领域:
-
通用任务自动化(邮件、日历、文件管理) -
多平台集成(微信、Discord、Slack) -
技能生态扩展 -
个性化工作流
重叠领域:
-
代码编写 -
终端命令执行 -
文件操作
6.3 运行环境
OpenHands:
-
依赖 Docker 沙箱 -
需要较强的计算资源 -
适合服务器/工作站部署
OpenClaw:
-
轻量级,无需 Docker -
可在普通笔记本运行 -
支持多种部署方式(本地、云、边缘)
6.4 技能系统
OpenHands 的工具系统:
-
内置固定工具集 -
扩展需要修改核心代码 -
工具与 Agent 深度耦合
OpenClaw 的技能系统:
-
插件化技能架构 -
用户可自由安装/更新技能 -
技能与框架解耦 -
支持技能市场
6.5 适用场景
OpenHands 更适合:
-
完整的软件开发项目 -
需要高度自主的任务 -
技术团队内部工具 -
代码质量要求高的场景
OpenClaw 更适合:
-
个人效率提升 -
跨平台自动化 -
定制化工作流 -
非编程类任务
七、适用场景与典型工作流
7.1 适用场景
1. 快速原型开发
场景:需要在 1 小时内验证一个想法工作流:1. 描述需求:"创建一个 Flask API,包含用户注册和登录"2. OpenHands 自动生成完整代码3. 运行测试验证4. 修改细节(如字段名、验证规则)5. 输出可运行的原型
2. 遗留代码维护
场景:需要理解并修改一段古老的代码工作流:1. 上传代码库2. 要求 OpenHands 分析代码结构3. 询问具体功能实现原理4. 提出修改需求5. OpenHands 生成修改方案6. 审查并应用修改
3. 学习新技术
场景:想学习 Rust 但不确定如何开始工作流:1. 要求 OpenHands 创建一个 Rust 学习项目2. 生成包含注释的示例代码3. 逐步解释每个概念4. 提供练习题和答案5. 根据反馈调整难度
4. 代码审查与优化
场景:需要审查团队提交的代码工作流:1. 上传代码 diff2. 要求 OpenHands 审查代码质量3. 获取详细的改进建议4. 生成修复后的代码5. 对比原代码和修复版本
7.2 优势与局限性
优势:
-
高度自主:可以独立完成复杂任务 -
多语言支持:支持多种编程语言 -
开源免费:无使用成本(除 API 费用) -
可定制:可根据需求修改 -
透明可审查:所有决策过程可见
局限性:
-
依赖 LLM 质量:效果受模型能力限制 -
可能产生幻觉:可能生成错误的代码 -
需要人工审查:不能完全信任自动生成的代码 -
成本问题:复杂任务消耗大量 API token -
学习曲线:需要理解如何有效引导 Agent
最佳实践:
-
将 OpenHands 视为”高级实习生”,而非”完全替代” -
重要代码必须人工审查 -
小步迭代,频繁验证 -
明确需求,减少歧义 -
保存工作进度,便于回滚
八、对 OpenClaw 生态的启发
8.1 可借鉴点
1. 工具系统的统一设计 OpenHands 的工具系统设计非常优雅:
-
统一的工具接口 -
清晰的工具分类 -
完善的错误处理
OpenClaw 可以借鉴:
-
标准化技能接口定义 -
工具调用的一致性体验 -
错误恢复机制
2. 沙箱安全理念 虽然 OpenClaw 不一定需要 Docker 沙箱,但可以学习:
-
危险操作的确认机制 -
文件操作的备份策略 -
网络请求的权限控制
3. 多模型适配策略 OpenHands 的模型无关设计值得学习:
-
统一的 LLM 接口层 -
灵活的模型切换 -
成本优化策略
4. 社区驱动的发展模式 OpenHands 的快速迭代得益于:
-
活跃的开源社区 -
清晰的贡献指南 -
透明的开发流程
8.2 潜在集成方向
方向 1:OpenHands 作为 OpenClaw 的技能
设想:将 OpenHands 的核心能力封装为 OpenClaw 的一个技能实现方式:1. 通过 Docker 容器运行 OpenHands 服务2. OpenClaw 通过 API 调用 OpenHands3. 作为"编程专家"技能提供给用户价值:- 扩展 OpenClaw 的编程能力- 利用 OpenHands 的成熟技术- 保持 OpenClaw 的轻量级特性
方向 2:混合 Agent 架构
设想:OpenClaw 的通用 Agent + OpenHands 的专业 Agent工作流:1. 用户提出任务2. OpenClaw 判断任务类型3. 编程任务 → 调用 OpenHands Agent4. 其他任务 → 使用 OpenClaw 技能5. 汇总结果,返回给用户
方向 3:共享工具生态
设想:OpenHands 和 OpenClaw 共享工具/技能实现:1. 统一工具定义标准2. 工具/技能双向兼容3. 共建工具市场价值:- 减少重复开发- 扩大生态规模- 提升用户体验
8.3 差异化发展建议
OpenClaw 的定位强化:
-
通用性:继续深耕非编程类任务自动化 -
易用性:保持低门槛,无需 Docker 等复杂依赖 -
生态性:发展技能市场,鼓励社区贡献 -
个性化:支持用户自定义工作流
避免正面竞争:
-
不追求”完全自主”,而是”智能辅助” -
不替代 OpenHands,而是互补 -
聚焦个人用户和小团队场景
结语:AI 软件工程师的未来
OpenHands 的出现,标志着 AI 在编程领域的突破已经从一个商业产品扩展到了开源社区。它证明了:
-
AI 确实可以完成编程任务:不是简单的代码补全,而是完整的开发流程 -
开源模式可以加速创新:社区的力量让项目快速迭代 -
透明度是信任的基础:开源让用户可以审查和信任 AI 的决策
但对于 OpenClaw 这样的通用 AI 代理框架来说,OpenHands 更像是一个专业领域的标杆,而非直接的竞争对手。OpenClaw 的优势在于:
-
通用性:不限于编程,可以处理各种任务 -
灵活性:通过技能系统无限扩展 -
易用性:无需复杂部署,开箱即用 -
个性化:根据用户需求定制工作流
未来,我们可能会看到:
-
OpenHands 继续深耕编程领域,成为”AI 程序员”的标杆 -
OpenClaw 拓展通用自动化,成为”AI 个人助理”的首选 -
两者可能融合:通过 API 调用或技能集成,实现能力互补
无论哪种路径,AI 辅助编程的时代已经到来。关键不是”AI 是否会替代程序员”,而是”如何与 AI 协作,成为更好的开发者”。
OpenHands 给出了它的答案:开源、透明、可定制。 OpenClaw 也在探索它的答案:通用、灵活、易用。
而最终的答案,需要每一个用户在实践中找到。
附录:资源链接
-
OpenHands GitHub: https://github.com/All-Hands-AI/OpenHands[1] -
OpenHands 官方文档: https://docs.all-hands.dev[2] -
OpenHands Docker Hub: https://hub.docker.com/r/allhandsai/openshands[3] -
OpenClaw GitHub: https://github.com/openclaw[4] -
OpenClaw 技能市场: https://clawhub.com[5]
引用链接
[1]https://github.com/All-Hands-AI/OpenHands
[2]https://docs.all-hands.dev
[3]https://hub.docker.com/r/allhandsai/openshands
[4]https://github.com/openclaw
[5]https://clawhub.com
夜雨聆风