OpenHands 入门指南
您已经安装了 OpenHands并且 设置了您的 LLM。接下来呢?
OpenHands 可以帮助您处理各种工程任务。但这项技术 仍然很新,我们还有很长的路要走,才能拥有无需任何指导就能承担大型、复杂 工程任务的智能体。因此,了解智能体擅长什么,以及 它可能需要什么帮助非常重要。
Hello World
您可能想尝试的第一件事是一个简单的 "hello world" 示例。 这可能比听起来更复杂!
尝试提示智能体:
请编写一个 bash 脚本 hello.sh,打印 "hello world!"
您应该看到,智能体不仅编写了脚本,还设置了正确的 权限并运行脚本以检查输出。
您可以继续提示智能体优化您的代码。这是一个很好的 与智能体合作的方式。从简单开始,然后迭代。
请修改 hello.sh,使其接受一个名称作为第一个参数,但默认为 "world"
您还可以使用任何需要的语言,尽管智能体可 能需要花一些 时间来设置它的环境!
请将 hello.sh 转换为 Ruby 脚本,并运行它
从头开始构建
智能体在 "绿地" 任务(不需要 任何关于现有代码库的上下文的任务)方面表现得非常出色,它们可以直接从头开始。
最好从一个简单的任务开始,然后迭代它。最好也要 尽可能具体地说明您想要什么,技术栈应该是什么,等等。
例如,我们可以构建一个 TODO 应用:
请在 React 中构建一个基本的 TODO 列表应用。它应该只有前端,所有状态 应该保存在 localStorage 中。
一旦骨架搭建好,我们就可以继续迭代应用:
请允许为每个任务添加一个可选的截止日期
就像正常开发一样,经常提交和推送代码是很好的做法。 这样,如果智能体偏离轨道,您总是可以恢复到旧的状态。 您可以要求智能体为您提交和推送:
请提交更改并将其推送到名为 "feature/due-dates" 的新分支
添加新代码
OpenHands 还可以很好地将新代码添加到现有代码库中。
例如,您可以要求 OpenHands 向您的项目添加一个新的 GitHub action
来检查您的代码。OpenHands 可能会查看您的代码库以确定应该使用什么语言,
但随后它可以直接将一个新文件放入 ./github/workflows/lint.yml
请添加一个 GitHub action 来检查此仓库中的代码
某些任务可能需要更多上下文。虽然 OpenHands 可以使用 ls
和 grep
在您的代码库中搜索,但提前提供上下文可以让它移动得更快、
更准确。而且这会让您花费更少的 token!
请修改 ./backend/api/routes.js 以添加一个新路由,返回所有任务的列表
请在 ./frontend/components 目录中添加一个新的 React 组件,用于显示 Widget 列表。 它应该使用现有的 Widget 组件。
重构
OpenHands 在重构现有代码方面表现出色,尤其是在小块中。 您可能不想尝试重新构建整个代码库,但拆分 长文件和函数、重命名变量等往往效果很好。
请重命名 ./app.go 中的所有单字母变量
请将 widget.php 中的函数
build_and_deploy_widgets
拆分为两个函数:build_widgets
和deploy_widgets
请将 ./api/routes.js 拆分为每个路由的单独文件
Bug 修复
OpenHands 还可以帮助您跟踪和修复代码中的错误。但是,任何 开发人员都知道,修复错误可能非常棘手,通常 OpenHands 需要更多上下文。 如果您已经诊断出错误,但希望 OpenHands 找出逻辑,这会有所帮助。
目前
/subscribe
端点中的电子邮件字段拒绝 .io 域名。请修复这个问题。
./app.py 中的
search_widgets
函数正在执行区分大小写的搜索。请使其不区分大小写。
在使用智能体进行错误修复时,进行测试驱动开发通常很有帮助。 您可以要求智能体编写一个新测试,然后迭代直到修复错误:
hello
函数在空字符串上崩溃。请编写一个测试来重现此错误,然后修复代码以通过测试。
更多
OpenHands 能够在几乎任何编码任务上提供帮助。但需要一些练习 才能充分利用它。请记住:
- 保持任务简单
- 尽可能具体
- 提供尽可能多的上下文
- 经常提交和推送
有关如何充分利用 OpenHands 的更多提示,请参阅提示最佳实践。