93 lines
5.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)をご覧ください。