概要
Qoder CLIの動作原理を理解することで、その挙動をより正確に予測し、効果的なプロンプトを作成できるようになります。また、必要に応じて適切に制御し、修正を行うことも可能になります。
Qoder CLIの中核はエージェントです。エージェントはユーザーのリクエストを受け取り、意図を理解し、手順を計画し、ツールを呼び出してプロジェクトや環境と対話し、各ステップの結果に基づいてタスクが完了するまで戦略を継続的に調整します。このプロセス全体は、エージェント、ツール、権限、コンテキストという4つの要素が連携して動作します。
エージェントメインループ
Qoder CLIがリクエストを処理する際、大まかには以下のループを経ます。
- リクエストの受信:ユーザーの入力を読み取り、現在のコンテキスト(会話履歴、プロジェクト指示、メモリ)と組み合わせて、達成したい目標を理解します。
- 次のステップの計画:モデルが次に何をすべきかを決定します。ファイルを読み込んで現状を把握するか、コードを検索するか、直接修正するか、あるいはコマンドを実行して検証するかを選択します。
- ツールの呼び出し:エージェントがツールを通じて具体的なアクションを実行します。例えば、ファイルの読み取り、コードの編集、シェルコマンドの実行、コードの検索、Webページの取得などです。
- 結果の観察:ツールから返された結果をコンテキストに再度取り込みます。
- 継続または終了:結果に基づいてタスクが完了したかどうかを判断します。未完了の場合はステップ2に戻って次のステップを計画し、完了した場合はまとめを提示します。
--max-turns を使用して1回の実行における最大会話ターン数を制限することで、自動化シナリオでの無限ループを防ぐことができます。
ツール
エージェント自体は思考と意思決定のみを担当し、外部世界に対する実際の操作はすべてツールを通じて行われます。Qoder CLIには、以下の一般的なツールが組み込まれています。
- ファイル関連:ファイルの読み取り、書き込み、編集、およびディレクトリの参照。
- 実行関連:シェルコマンドの実行。
- 検索関連:コンテンツによるコード検索(Grep)、ファイル名による検索(Glob)。
- 情報関連:Web検索、Webスクレイピング。
権限
ツールの呼び出しは、ファイルの修正、コマンドの実行、ネットワークへのアクセスといった副作用を伴う可能性があります。ユーザーが常に制御権を握れるよう、Qoderは各ツール呼び出しの前に権限チェックを行い、その結果は以下の3つのいずれかになります。
- allow:ツールを即座に実行します。
- ask:確認後に実行します。
- deny:その呼び出しをブロックします。
ask の処理方法は異なります。インタラクティブターミナルでは確認のためのポップアップが表示され、非対話(ヘッドレス)モードでは ask が拒否に変換され、SDKやIDE統合ではホストプログラムに決定が委ねられます。
権限モード、ルール構成、ディレクトリ信頼の完全な説明については、権限 を参照してください。
コンテキスト
Qoderはセッションごとにコンテキストを再構築します。意思決定の際に依存する背景情報は、主に以下の3つのレベルから得られます。
- 会話コンテキスト:現在のセッションにおける履歴メッセージ、ツール呼び出し、およびその結果。会話が進むにつれて、コンテキストは蓄積されていきます。
- プロジェクト指示:
AGENTS.mdやルールなど、ユーザーまたはチームによって維持される静的メモリで、プロジェクト構造、開発標準、コラボレーションの取り決めを記述します。 - 長期メモリ:セッションをまたいで保持される情報で、チームの取り決めやオプションの自動メモリを含みます。