mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 05:48:36 +08:00
93 lines
5.9 KiB
Plaintext
93 lines
5.9 KiB
Plaintext
# OpenHandsを始める
|
||
|
||
[OpenHandsを実行](./installation)して、
|
||
[LLMをセットアップ](./installation#setup)しました。次は何をしますか?
|
||
|
||
OpenHandsはさまざまなエンジニアリングタスクを支援できます。しかし、この技術はまだ新しく、複雑なタスクを独立して処理できるエージェントの実現にはまだ遠い道のりがあります。エージェントが得意とすることと、サポートが必要な部分を理解することが重要です。
|
||
|
||
## Hello World
|
||
|
||
まずは簡単な「hello world」の例から始めましょう。思ったより難しいかもしれません!
|
||
|
||
エージェントに次のようにプロンプトしてみましょう:
|
||
> 「hello world!」と表示するbashスクリプトhello.shを書いてください
|
||
|
||
エージェントはスクリプトを作成し、適切な権限を設定し、実行して出力を確認します。
|
||
|
||
コードを改良するためにエージェントにさらにプロンプトを続けることができます。これはエージェントと作業する素晴らしい方法です。シンプルに始めて、反復していきましょう。
|
||
|
||
> hello.shを修正して、最初の引数として名前を受け取るようにしてください。ただし、デフォルトは「world」にしてください
|
||
|
||
また、必要な言語を使用することもできます。エージェントは環境のセットアップに時間がかかる場合があります。
|
||
|
||
> hello.shをRubyスクリプトに変換して、実行してください
|
||
|
||
## ゼロからの構築
|
||
|
||
エージェントは「グリーンフィールド」タスク、つまり既存のコードについてのコンテキストが不要で、
|
||
ゼロから始められるタスクに優れています。
|
||
シンプルなタスクから始めて、そこから反復していきましょう。欲しいものと技術スタックについて具体的に指示しましょう。
|
||
|
||
例えば、TODOアプリを構築するとします:
|
||
|
||
> フロントエンドのみのTODOアプリをReactで構築してください。すべての状態はlocalStorageに保存してください。
|
||
|
||
基本的な構造ができたら、さらに改良を続けます:
|
||
|
||
> 各タスクにオプションの期限を追加できるようにしてください。
|
||
|
||
通常の開発と同様に、コードを頻繁にコミットしてプッシュしましょう。
|
||
これにより、エージェントが道を外れた場合でも、常に古い状態に戻すことができます。
|
||
エージェントにコミットとプッシュを依頼することもできます:
|
||
|
||
> 変更をコミットして、「feature/due-dates」という新しいブランチにプッシュしてください
|
||
|
||
## 新しいコードの追加
|
||
|
||
OpenHandsは既存のコードベースに新しいコードを追加するのに優れています。
|
||
|
||
例えば、コードをリントするGitHub actionを追加するようOpenHandsに依頼できます。言語を判断するためにコードベースをチェックし、`./github/workflows/lint.yml`に新しいファイルを作成するかもしれません。
|
||
|
||
> このリポジトリのコードをリントするGitHub actionを追加してください。
|
||
|
||
一部のタスクにはより多くのコンテキストが必要です。OpenHandsはlsやgrepなどのコマンドを使用して検索できますが、前もってコンテキストを提供することで作業が速くなり、トークンの使用量が減ります。
|
||
|
||
> ./backend/api/routes.jsを修正して、すべてのタスクのリストを返す新しいルートを追加してください。
|
||
|
||
> ./frontend/componentsディレクトリに、Widgetのリストを表示する新しいReactコンポーネントを追加してください。
|
||
> 既存のWidgetコンポーネントを使用する必要があります。
|
||
|
||
## リファクタリング
|
||
|
||
OpenHandsは小さな単位でのコードリファクタリングに優れています。コードベース全体を再設計するよりも、
|
||
長いファイルや関数を分割したり、変数名を変更したりする方が効果的です。
|
||
|
||
> ./app.goの一文字変数をすべて改名してください。
|
||
|
||
> widget.phpの`build_and_deploy_widgets`関数を`build_widgets`と`deploy_widgets`の2つの関数に分割してください。
|
||
|
||
> ./api/routes.jsを各ルートごとに別々のファイルに分割してください。
|
||
|
||
## バグ修正
|
||
|
||
OpenHandsはバグの追跡と修正を支援できますが、バグ修正は難しく、多くの場合より多くのコンテキストが必要です。
|
||
すでに問題を診断していて、OpenHandsにロジックを処理してもらうだけの場合は役立ちます。
|
||
|
||
> `/subscribe`エンドポイントのメールフィールドが.ioドメインを拒否しています。これを修正してください。
|
||
|
||
> ./app.pyの`search_widgets`関数が大文字と小文字を区別する検索を行っています。大文字と小文字を区別しないようにしてください。
|
||
|
||
バグ修正には、テスト駆動開発が非常に役立ちます。エージェントに新しいテストを書いてもらい、バグが修正されるまで反復することができます:
|
||
|
||
> `hello`関数が空の文字列でクラッシュします。このバグを再現するテストを書いて、コードを修正してテストに合格するようにしてください。
|
||
|
||
## その他
|
||
|
||
OpenHandsはほぼすべてのコーディングタスクを支援できますが、最良の結果を得るには練習が必要です。
|
||
以下のヒントを心に留めておきましょう:
|
||
* タスクを小さく保つ。
|
||
* 具体的に指示する。
|
||
* 十分なコンテキストを提供する。
|
||
* 頻繁にコミットしてプッシュする。
|
||
|
||
OpenHandsを最大限に活用する方法についての詳細は、[プロンプトのベストプラクティス](./prompting/prompting-best-practices)をご覧ください。 |