smallnest/pigo

pi agent in Golang

解決する課題

pigoは、要件の理解からコードの修正までのサイクルを自動化するために設計されたコマンドラインAIコーディングエージェントです。LLMがローカルの開発環境内で直接ファイルを読み書きし、コマンドを実行できるようにすることで、ハイレベルなプロンプトと具体的なファイル変更の間のギャップを埋めます。

仕組み

このプロジェクトは、中央のエージェントループがユーザー、LLMプロバイダー、および一連のローカルツールの間の相互作用を管理する、階層化されたランタイムアーキテクチャを実装しています。2層のループシステムを使用しています。1つはアシスタントがツールの呼び出しを停止するまでレスポンスのストリームとツールの実行を処理するインナーループ、もう1つはフォローアップメッセージを管理するアウターループです。

主な構成要素は以下の通りです:

  • マルチプロバイダー対応: OpenRouter、Ollama、Anthropic、およびOpenAI互換のエンドポイントに対応しています。
  • ツール統合: ファイル操作 (read, write, edit)、検索 (grep, find)、シェル実行 (bash)、およびウェブアクセス (webfetch, websearch) の組み込みツールを備えています。
  • セキュリティゲート: 信頼されていないディレクトリでの「副作用」のあるツール(bashwrite など)に対してユーザーの確認を必要とするプロジェクト信頼システム。
  • コンテキスト管理: LLMのウィンドウ制限に近づいた際の自動コンテキスト圧縮(要約)。

対象者

  • ターミナル内でスニペットを生成するだけでなく、実際のコーディングタスクを実行できるAIエージェントを求める開発者
  • 自動化スクリプトに「ヘッドレス」モード (-p) を使用できるCI/CDエンジニア
  • 提供されているSDKを通じて、自身のアプリケーションにコーディングエージェント機能の組み込みを検討しているGo開発者

ハイライト

  • デュアル実行モード: 対話型REPLと、CI/CD統合用のヘッドレススクリプトモードの両方をサポートしています。
  • 拡張可能なアーキテクチャ: 「Skills」(再利用可能なプロンプトベースの機能)、プラグイン、およびシェルコマンドを介してエージェントの動作をインターセプトまたは変更できる堅牢なHooksシステムを備えています。
  • 柔軟なツール制御: ホワイトリスト (--allowed-tools) とブラックリスト (--disallowed-tools) によるきめ細かなツールアクセス。
  • セッションの永続化: 以前のセッションのリスト表示、再開、および継続が可能。
  • プロンプトテンプレート: 一般的なタスク向けに、複雑なパラメータ構文を持つ再利用可能なMarkdownテンプレートをサポートしています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト