AI

リポジトリチャット

探すより聞いたほうが早い質問があります。トークンの更新は実際どこで起きている のか。このコミットは一言でいうと何を変えたのか。なぜこのファイルがあるのか。 リポジトリチャットは開いているリポジトリについてそれに答え、根拠にした行を示し ます。

右側の列を詳細と共有します。上部のタブで切り替わるため、質問してもグラフの 選択は失われません。

文脈を固定したリポジトリチャット

何を読むのか

回答は二段階で組み立てられます。一段階目はリポジトリ自身の追跡ファイル一覧から、 少数のパスとリテラル検索を選びます。二段階目はその結果得られた抜粋だけを使って 答え、引用できるのもその抜粋だけです。存在しないファイルや行は「もっともらしい 回答」ではなく検証エラーになります。

二度目の視線。 最初のパスは名前だけを頼りにどのファイルが重要かを推測するしか なく、「これはどこから呼ばれているのか」で外れるのはまさにその推測です。そこで回答 には、推測する代わりに聞き返すことが許されています。追加のパス、追加のリテラル検索、 最近の履歴のコミットハッシュを指名でき、それらが持ち帰ったものと一緒に質問がもう一度 投げられます。これは多くても 2 回まで(各ラウンドは待ち時間の増えるモデル呼び出しです) で、最後のラウンドでは手元の材料で答えなければなりません。あなたに見えるのは、少し長い 待ち時間とより良い回答だけです。

含む 含まない
追跡ファイル(作業ツリーの内容そのまま) 追跡されていないファイル
追跡ファイルのステージ済み・未ステージの差分 無視ルールに一致するもの(追跡されていても)
ブランチ、先行/遅延、変更されたパスの一覧 機密に見えるファイル、バイナリ、生成物のパス

作業ツリーを読むため、コミットしていない変更についても質問できます。同時に、 質問した時点でその変更は端末から出ていきます。受け取るのは AI 機能で設定したプロバイダーです。

ひとつ補足があります。操作の提案(後述「チャットから操作を実行する」)を有効に すると、追跡されていないファイルの名前はリポジトリ状態に含まれます — 「新しいファイルをステージして」に必要だからです。ただし、その内容が読まれる ことは変わらずありません。

文脈を固定する

何を読むかは通常モデルが決めます。固定はそれを上書きする手段です。固定したものは 先に読まれ、コンテキスト予算の大きい方の取り分を受け取ります。

固定の方法は四つ。いずれも入力欄の上にある同じチップの列に入ります。

操作 得られるもの
候補チップをクリック ビューアで開いているファイル、またはグラフで選択中のコミット
ファイルタブの行をドラッグ そのファイル
コミットグラフの行をドラッグ そのコミット(メッセージと、ハンク単位の差分)
+ →「ファイルを選択…」、または Finder/エクスプローラーからドラッグ ディスク上の任意のファイル(リポジトリ外も可)

チップは続く質問でも固定されたままです。× で 1 つ外れ、会話を消すとすべて外れ ます。上限は 8 件です。

固定したコミットはメッセージと最大 12 個の差分ハンクを提供します。除外対象の パスに触れるハンクはその差分から落ちますが、コミット全体が落ちるわけではありま せん。

設定

設定 → AI → リポジトリチャット:

設定 内容
リポジトリについて質問する オフにするとタブ・ツールバーのボタン・ショートカットの対象が消えます。ほかの AI 機能はそのまま動きます
チャットのモデル チャット専用のモデル。空ならプロフィールのモデルを使います。質問はレビューより軽いので、小さいモデルで足りることが多くあります
コミット済みの内容のみ 作業ツリーではなく最新のコミットから回答します。未コミットの変更が端末を出ることはありません
チャットでファイルと Git の操作を提案 オフにするとチャットは純粋な読み取り専用に戻ります。操作カードも承認ドロップダウンもありません
ファイル読み取り専用モード オンにするとファイルの作成、編集、置換、削除を禁止し、Git 操作は引き続き利用できます。既定でオンです
提案された操作の実行方法 承認モードです — 後述「承認モード」を参照。破壊的な操作はどのモードでも確認します
チャットにリモート操作の提案を許可 既定ではオフ。オンにするとフェッチ、プル、プッシュ、プルリクエストの作成、スタックの送信が提案対象に加わります

AI 全体をオフにすると、チャットもいっしょに消えます。答えられないのに応答を差し 出すパネルは残しません。

チャットのモデルは、パネル上部のプロバイダー名の隣からも切り替えられます。設定と 同じ項目で、設定画面を開く必要はありません。

パネルタイトルの隣にある魔法の杖ボタンは AI 設定ウィザードを開きます。この リポジトリ向けのアシスタント設定ファイル(指示、エージェント、フック)を生成する ガイド付きのフローです。AI 機能を参照してください。

リポジトリチャットの設定

メッセージの操作

メッセージは普通のテキストです。任意の部分を選択してコピーできるほか、吹き出し を右クリックすると、コピーは選択範囲を、メッセージをコピーはメッセージ 全体を(回答は Markdown ソースとして)コピーします。クリックがリンク上なら リンクをコピーでそのアドレスをコピーできます。

リンクは常に既定のブラウザで開き、Gitcito の中では開きません。回答内の Markdown リンクも、自分のメッセージに書いた https:// アドレスも同じです。

メッセージが画像に触れているとき — docs/logo.png のようなリポジトリのパスや、 画像拡張子で終わる URL — その言及にカーソルを重ねると小さなプレビューが表示さ れます。リポジトリのパスは作業ツリーから読み取られ、読める画像に解決できない言 及は何も表示しません。

ホバーでの画像プレビュー

チャットから操作を実行する

事実ではなく変更を頼むと — Markdown ファイルをステージして、これを修正として コミットして、ビルド成果物を無視リストに入れて — 返信に操作カードが付いて きます。空の会話では、導入文の下にいくつかの例のリクエストがチップとして表示され、 クリックすると入力欄に入るので、送信前に編集できます。カードには、アシスタントが 実行したい具体的な手順が 1 行 1 操作で並び、実行と 却下のボタンが付きます。カードの中身はまだ何も起きていません。モデルにできる のは提案だけで、どの提案も表示される前に作業ツリーと突き合わせて検証されます — 存在しないファイルを名指しする操作は、描画されるのではなく拒否されます。

例のリクエストが並ぶ空のチャット

チャットでの操作の提案

リポジトリチャットは、正確な編集、ファイルの作成や全置換、削除を提案でき、続けて Git 操作 — 無視パターン、ステージ、ステージ解除、コミット、スタッシュ、破棄、ブランチ、 チェックアウト、タグ、そしてブランチ一覧と直近のコミットが示されているため merge、 rebase、revert、cherry-pick — を提案できます。展開できる diff は Gitcito がローカルで 計算します。既存ファイルは読んだ根拠から来ていなければならず、危険・機密・無視対象・ 生成物・バイナリ・古くなった・大きすぎる・シンボリックリンク経由の対象は拒否されます。 reset、履歴の書き換え、ブランチの削除、あらゆる強制操作は専用 UI にのみ残ります。

merge や rebase は競合で止まることがあります。止まった場合、実行はそこで終わり、カード はその行を失敗として記録し、すでに実行済みの件数を保ちます。競合バナーは、同じ操作を ツールバーから始めたときとまったく同じように引き継ぎます。

ファイル一式は最初の書き込み前に再検証され、途中で失敗すればロールバックされます。 コミット前にはステージ済み変更があることも確認します。カードは完了・失敗・スキップ された各操作と部分結果を表示します。その後、操作を許可しない別のモデル呼び出しが 実際の結果だけを要約します。

.gitcito.json を書くこともできます。 チャットには リポジトリ自身の設定ファイルの形が渡されるので、JIRA-1234 の チケットリンクを追加して や release ブランチを保護して は、ローダーが拒否する もっともらしいキーではなく、本物のスキーマに沿ったファイル操作になります。 ファイル操作が有効であることが必要です — ファイル読み取り専用モードの同じスイッチです。

絵が必要な行には絵がつきます。 一行の要約は「2 つのファイルをステージして」には 十分でも、「スタックに 4 つのプルリクエストを開いて」にはまったく足りません。だから形を 語る行は形を描きます — プッシュが公開するブランチとその先行数、merge や rebase が関わる 2 つの参照、revert や cherry-pick が再生するコミットとその件名、これから作られる プルリクエストの姿、そしてスタックははしごとして、各レベルのベースと、送信がそれを 作成するのか、付け替えるのか、そのままにするのかを添えて。

マシンの外へ出る操作

フェッチ、プル、プッシュ、プルリクエストの作成、スタックの送信は 既定でオフ で、 チャットにリモート操作の提案を許可 の後ろにあります。作業の公開は意識して選ぶ価値の ある判断であり、設定がオフのときはモデルにその操作の存在すら伝えません。提案して拒否 される、という「読まずに設定をオンにする」癖を教える失敗が起きないためです。

オンのとき:

操作 内容
フェッチ / プル ツールバーと同じ fetch と pull。プルの方式(マージ、fast-forward のみ、リベース)は提案の一部です
プッシュ 1 つのブランチを 1 つのリモートへ公開します。強制は決してしません — 強制プッシュは提案の語彙に存在しないため、提案すること自体ができません
PR を作成 リポジトリ自身の origin に対してプルリクエストを 1 つ、下書きかどうかを含めて作成します。カードはそのリンクを保持します
スタックを送信 スタック PR の送信一式: 各レベルをプッシュし、レベルごとにプルリクエストを作成または付け替え、ナビゲーション節を書き、GitHub のスタックを登録します

プッシュしてプルリクエストを開くチャットのプラン

提案されたプッシュは、実行前にツールバーのプッシュと同じガードを通ります — 保護ブランチの確認、認証情報らしきファイルを公開することへの警告、 リポジトリ自身のプッシュ前チェックリストです。これらはダイアログなので、プランの内側 からではなく、プランが始まる前に答えます。

プランを取り消す

プランはまとめて承認されるので、取り消しもまとめて行います。何かを変えうる最初の操作の 前に、Gitcito はブランチの位置を記録し、作業ツリーのスナップショットを取ります。完了した カードはそこで プランを取り消す を提供します。ブランチをそのコミットへ戻し、ツリーを 復元するので、プランが生み出したものは捨てられます。だから先に確認し、戻り先のコミットを 明示します。作成されたプルリクエストは開いたままです — ローカルのスナップショットが リモートを取り消すことはできません。

承認モード

入力欄の下にある盾のドロップダウン(設定 → AI → リポジトリチャットにも あります)が、カードの実行方法を決めます。

モード 実行
毎回確認する カードの実行を押すまで何も実行しません
安全な操作を自動実行 取り消し可能な整理だけでできた提案 — ステージ、アンステージ、無視、ブランチ、タグ — は届き次第実行し、それ以外はボタンを待ちます
すべての操作を自動実行 すべての提案を届き次第実行します。ただし破壊的なものは除きます

未コミットの変更を破棄する提案は、どのモードでも必ず先に確認し、確認には 失われるファイル名が並びます。カードは実際に起きたこと — 何件の操作が実行された か、あるいは止めたエラー — を報告し、その結果はアシスタントにも伝わります。だから 続きの質問は、計画が実行されたのか却下されたのかを踏まえて答えられます。

エラーをアシスタントと直す

git 操作が失敗し、AI チャットが使えるときは、エラートーストにスパークルボタンが 現れます。押すとチャットが開き、失敗の内容が入力欄に貼り付けられるので、「なぜ 失敗したのか、どうすればいいのか」がワンクリックになります。下書きは編集でき、 送信を押すまで何も送られません。

断ること

  • **機密に見えるファイルは読みません。**固定していても同じで、チップは理由付きで 「スキップ」として返ります。固定は機密のマスキングの抜け道では ありません。
  • バイナリと 512 KB を超えるファイルは、リポジトリ外から来た場合に同じように スキップされます。リポジトリ内では通常のルールが適用されます。
  • **勝手に書き込むことはありません。**モデルは道具を持たず、テキストだけです。 変更は提案カードとして届き、あなたの承認ルール(前述「承認モード」)の下でだけ 実行され、破壊的な手順は必ず確認します。チャットで Git 操作を提案をオフに すれば、提案すらしません。
  • **会話はメモリ上だけに存在します。**リポジトリごとにスレッドは独立し、Gitcito を終了すると破棄されます。

開き方

キー 内容
ツールバーの吹き出しボタン チャットタブの表示を切り替えます
⌘⌥B / Ctrl+Alt+B 右パネル全体を切り替えます
Enter メッセージを送信します
Shift+Enter 改行します

パネル切り替えの再割り当てを含め、残りはキーボードとショートカット にあります。

関連: AI 機能 · セキュリティと機密 · リポジトリ Wiki

この翻訳を GitHub で改善