このプロジェクトについて

ainessは、既にインストールされているAIコーディングCLIを連携したチームに変えるデスクトップアプリケーション(Tauri 2、MITライセンス)です。モデルやAPIキーを同梱するのではなく、既存のツール(Claude Code、Antigravity、GitHub Copilot CLI、Gemini CLI、Codex CLI、opencode、Ollama、Aider)を検出し、駆動させます。これらの多くは設定パネルからインストール可能です。「カスタム」エージェントタイプを使用すれば、引数に{prompt}を代入して任意のコマンドを実行できます。セッションと認証情報は各CLIが保持する場所に留まり、アプリがキーを要求、保存、または読み取ることはありません。開発およびテストはWindowsプラットフォームで行われています。 オーケストレーションの仕組み エージェントはワンショットのCLIプロセスとして動作します。各呼び出しは「ラン」となり、プロバイダーごとに独自のセッションIDを通じて再開されるため、会話はランをまたいで維持されます。エージェントは役割に基づいた階層構造で配置されます。推論し、作業を分割して委任するが実装は行わない「プランナー」、実際に作業を行う「実装者」、そしてそれをチェックする「レビューヤー」です。委任はプランナーの回答内のフェンス付きブロックを通じて行われ、オーケストレーターがこれを解析してランに変換し、結果としてフィードバックします。このサイクルを「ラウンド」と呼び、最大回数は設定可能です。子エージェントはプランナーの会話を参照できないため、タスクは独立している必要があります。また、エージェントは一時停止してユーザーに選択肢付きの質問をすることができ、回答後に同じセッションでランが再開されます。 アプリ内部の機能 プロジェクトはワークスペースフォルダを指し、独自のチーム、状態、履歴、チャットを保持します。保存された「フォーメーション」は、スキルやMCPサーバーと共に新しいプロジェクトに適用できます。6つの列(バックログから完了まで)を持つカンバンボードは自動的に更新されます。プロンプトでタスクを作成し、委任されたタスクがそれに紐付き、承認待ちのものは「needs you」に、完了したランはレビューまたは準備完了に移動します。同じタスクはレイヤー化された依存関係グラフとしても表示され、接続をドラッグすることでブロッキング関係を宣言できます。その他のビューには、オーケストレーターとのチャットスレッド(ツール利用、折りたたみ可能な委任、保存済みプロンプト「オーダー」)、誰が誰に委任しているかと残りクォータを示す階層グラフ、生のイベントフィードと本物のPTYターミナルを備えた右ドック、エージェント別またはグローバルに設定可能な承認フロー、直接的および共有マルチエージェントチャット、通知、gitリポジトリの状態(ブランチ、変更のあるファイル、ahead/behind、CIステータス付きのオープンなプルリクエスト)、およびコンテキストに応じた右クリックメニューが含まれます。エージェントごとのgit worktreeと専用ブランチにより、2人の実装者がgitインデックスで競合することなく同時に作業でき、パネルからそれらのオープン、マージ、破棄が可能です。未コミットの作業がある場合はマージが拒否されます。 リモートおよびCLI 内蔵サーバーにより、LAN経由で同一のReact UIを単一の自己完結型ページとして公開します。URL内のトークンで保護されており(トークンがない場合は401)、スマートフォンからボードの閲覧、タスクの送信、ランの停止、質問への回答が可能です。cloudflaredやngrokによるオプションの公開URL(静的ドメイン対応)も利用できます。このページはバックグラウンドで動作している間、セキュアコンテキストが必要なブラウザ通知も提供します。トークン認証付きのHTTP APIにより、状態、SSEイベントストリーム、prompt、instruct、stop、approve、chatのエンドポイントが公開されています。同じオーケストレーターはヘッドレスなCLIとしても利用でき、タスクの実行、プロジェクト・エージェント・フォーメーションの管理、インストールの検出、クォータと使用量の確認、履歴の閲覧、承認処理、チャット、およびスマホ用ページの提供を行うコマンドが用意されています。 エクストラとデータ スキル、MCPサーバー、共有コンテキスト、およびプロファイルがエージェントのプロンプトに注入されます。フック機能により、task.started、task.finished、委任、またはapproval.requestedなどのオーケストレーターイベントに反応して、Slack/Discordや汎用ウェブフック、ローカルコマンド、システム通知、またはテンプレート変数を用いた別エージェントへの指示チェーンを実行できます。すべての設定、履歴、チャット、タスクボード、クォータマーク、ログはユーザーのAppDataフォルダ内のプレーンファイルに保存されます。履歴はプロジェクトごとに直近300ランと3000メッセージを保持し、ログは毎日ローテーションされ14日間保持されます。また、トークンは書き込み前にマスクされます。インターフェースはスペイン語、英語、ブラジルポルトガル語、簡体字中国語、日本語、フランス語、ドイツ語に翻訳されており、再起動なしで切り替え可能です(ベース辞書はスペイン語)。リリースはmainブランチのバージョンバンプからGitHub Actionsを通じてビルドおよび署名され、インストール済みアプリは自動的にアップデートされます。