コース目次
アカデミーモジュール 6 · Git・コード・地図・デザインの活用
ターミナルとコードグラフの活用
このレッスンで学ぶこと
- ターミナルタブを開く、隠す、サイズ変更する、終了する操作ができ、隠してもシェルが止まらない理由を説明できる。
- @メンションでターミナルの直近出力をAIへ渡し、取得される範囲を正確に説明できる。
- コードインテリジェンスが、シンボルとファイル間の関係を端末内だけでトリプルとして整理する仕組みを説明できる。
- コードインデックスを構築し、クラウド埋め込みの利用を判断し、4つの構築段階を読み取れる。
- サイドバー、ノート、エンティティページ、チャットの各画面で、コードインテリジェンスを見つけられる。
ビルドエラーをAIに相談するとき、ターミナルの出力を毎回コピーする必要はありません。コードグラフを使えば、設計ノートと実装コードも一緒に確認できます。
このレッスンでは2つの開発ツールを扱います。ターミナルドックではアプリ内でシェルを実行し、出力をチャットに添付できます。コードインテリジェンスは、ソースコードのシンボルと関係をグラフに索引化します。
下部のターミナルでコマンドを実行
ターミナルドックはVSCode風の下部パネルで、OSの実際のターミナルチャネルである真のPTY上で、実際のシェルを実行します。macOSではzshまたはbash、WindowsではPowerShellまたはcmdです。プロンプト、色、alias、ジョブ制御、vim、lessのすべてが単独のターミナルと同じように動きます。実際に本物のターミナルだからです。
シェルは$SHELL変数から選ばれ、ログインシェルとして起動するため、PATHとaliasが読み込まれます。新しいシェルはアクティブなワークスペースフォルダーから始まるので、すぐにlsでノートを確認できます。
ドックを開くと、何も覆わずにエディターを縦に分割します。ドックはワークスペースを開いている間だけ存在します。Home画面ではボタンが隠れ、ショートカットも動作しません。
- タイトルバー:右側のツール群にある、四角いターミナルアイコン。ツールチップには⌘`付きで"Terminal"と表示され、ドックが開いている間は押された状態になります。
- キーボード:⌘`(Windows/LinuxではCtrl+`)で、VSCodeと同じようにドックを切り替えます。Settings ▸ Shortcutsの"Toggle terminal"で変更できます。
- macOSメニューバー:View ▸ "Toggle Terminal"。
- "Search everything"パレット(⌘⇧F):"Toggle terminal"を実行します。変更の有無にかかわらず、現在のショートカットが表示されます。
- GitHubサインイン:自動のデバイスフローを使えない場合、ダイアログに"Open terminal"が表示され、
gh auth loginの実行を案内します。
タブと、隠す/終了するの違い
| 操作 | 場所 | 動作 |
|---|---|---|
| +("New Terminal") | ドックの見出し、タブの隣 | ワークスペースフォルダーで新しいシェルタブを開き、フォーカスします。作成順に"Terminal 1"、"Terminal 2"…と名づけられます。 |
| タブをダブルクリック | タブ列 | "Rename"ダイアログを開きます。"dev server"や"git"など、区別しやすい名前をつけられます。 |
| タブの✕("Kill terminal") | カーソルを合わせたタブとアクティブなタブ | そのシェルプロセスを実際に終了します。最後のタブを終了すると、パネルも折りたたまれます。 |
| シェブロン("Close panel") | ドックの見出し右側 | ドックを隠します。各シェルはスクロールバックを保ったまま動き続けます。 |
| 上端をドラッグ | ドック上の細い線 | 分割の高さを変えます。高さは再起動後も保持されます(既定300px、最小120px。エディター側も常に120px以上残ります)。 |
パネルを折りたたんでも、プロセスは終了しません。 シェブロンまたは⌘で閉じる操作は表示を隠すだけなので、シェルは動き続け、スクロールバックも残ります。カーソルがターミナル内にあっても⌘は機能します。プロセスを終了するのは✕("Kill terminal")だけです。
exitと入力した場合やクラッシュした場合など、シェルが自分で終了すると、薄い"[process exited]"という行が表示されます。終了済みのタブは閉じるまで残ります。再起動ボタンはないため、終了して新しいタブを開いてください。
あとで見つけやすい名前をターミナルにつける
開発サーバー、git、一時的なコマンド用など、複数のシェルを並行して実行できます。各タブは独立したセッションで、それぞれにスクロールバックとプロセスがあります。
ダブルクリックで名前を変更できます。チャットの@メンション選択欄でも、"Terminal 3"より"dev server"のほうがずっと見つけやすくなります。
ターミナルの出力をチャットに添付
単独のターミナルにはない機能があります。チャット入力欄で@と入力すると、メンション選択欄に"Terminals"カテゴリーが表示されます。ひとつ選ぶと@Terminal 1のようなチップがメッセージに入り、選んだ瞬間のターミナルの直近出力のスナップショットを添付します。
"このビルドが失敗した理由は?"と尋ねれば、エージェントがその出力を読みます。コピー&ペーストもスクリーンショットも不要です。
2つのシェル、ひとつの橋
ドックは自分用のターミナルです。エージェントはチャット内のカードで承認された、別のサンドボックス実行環境でコマンドを動かします。そのコマンドがドックに表示されることはありません。
@メンションだけが両者をつなぎます。エージェントは自分のシェルで起きたことを読むことができますが、入力することはできません。
コードインテリジェンス:コードをトリプルで捉える
2つ目の機能は、ワークスペースにソースコードがあると動き始めます。高速な端末内パーサーであるローカルインデクサーが読み取ります。AIモデルもネットワーク通信も使いません。
すべてのシンボルとファイル間の関係を、ワークスペースごとのコードグラフストアにトリプルとして記録します。関数、メソッド、クラス、構造体、列挙型、trait、モジュール、型alias、定数のすべてが対象です。.gitignoreに従い、隠しディレクトリを除外し、1ファイルあたりおよそ8 msで処理するため、高速かつ無料です。
この決定論的マップの上に、任意のクラウド処理を重ねられます。最初に同意すると、短いコード抜粋を埋め込みへ変換し、コードを意味で検索できるようにします。同じ処理でノートと概念も共通のベクトル空間へ置かれます。これがクロスモーダルブリッジです。
graph.ts imports → types.ts
buildGraph() calls → parseNote()
NoteIndex extends → BaseIndex
render.ts references → buildGraph()- PTY(pseudo-terminal)
- OSレベルの実際のターミナルチャネル。ドック内でもプロンプト、色、vim、ジョブ制御が通常どおり動く理由。
- コードグラフ/コードインデックス
- ソースコードを決定論的に整理したローカルマップ。ファイルとシンボルをノード、calls/imports/extends/referencesをエッジとして、ワークスペースごとにトリプルで保存する。
- セマンティックコード埋め込み
- 一度同意した場合に利用する任意のクラウド処理。完全一致する単語ではなく、意味でコードを検索できるようにする。
- クロスモーダルブリッジ
- コードシンボルとノート/概念のラベルをひとつのベクトル空間へ埋め込み、"この概念に最も近いコード"とその逆を順位づけする仕組み。結果は一致率で表示される。
- LSP(language server)
- PATH上で見つかる言語別の外部サーバー。自動補完、ホバー、定義へ移動を提供する。ない場合、エディターはコードグラフで移動する。
| 言語 | コードグラフへの索引 | IDE機能(language server) |
|---|---|---|
Rust(.rs) | 対応 | rust-analyzer |
| TypeScript / TSX | 対応 | typescript-language-server |
| JavaScript | 対応 | typescript-language-server |
Python(.py) | 対応 | pyright |
Go(.go) | 対応 | なし(グラフによる移動のみ) |
ノートとコードに、同じ規律を使う
Consilienceはコードをノートと同じように扱います。対象を見つけ、関係を記録し、両方をトリプルとして保存します。知識表現の言葉では、関数はオブジェクト、呼び出しはリンクです。大規模な分析基盤と同じ、オブジェクト・リンク・プロパティモデルです。
違いは認識の根拠です。ノートグラフはLLMが文章を読んで構築するため確率的です。コードグラフはパーサーが構築するため決定論的で、呼び出しエッジはソースに存在するか、しないかのどちらかです。そのためコードインデックスは無料、オフライン、即時で動きます。同意が必要なのは、唯一確率的な層である埋め込みだけです。
インデックスを構築する
- 管理パネルを開く
ナレッジグラフ表示の左メニューで"Code intelligence"を選びます。構築セクションの名前は"Code in AI search"です。(主スイッチが無効なら、"Open Settings"ボタン付きで"Code intelligence is off"と表示されます。切り替えはSettings ▸ Code intelligenceにあります。)
- "Build"を押す
"Build code index"の行が、.gitignoreに従ってソースファイルを走査します。"Scan files" → "Parse code" → "Link references" → "Embed symbols"の段階的チェックリストが進み、それぞれに完了数/総数がリアルタイム表示されます。"Cancel"でいつでも中止できます。
- クラウド埋め込みを決める
初回構築では、"Make your code searchable by meaning?"という一度だけのダイアログが出ます。"Turn on meaning-based search"はセマンティック層を有効にします。"Keep everything on this device"は、インデックスを端末内だけに保ちます。どちらを選んでも識別子検索とグラフ検索は機能し、ローカルインデックスは必ず構築されます。
- 結果を読む
完了すると、わかりやすい言葉で"Your code is searchable"と表示されます。その後はファイル監視が変更に合わせてインデックスを更新します。古い、または誤ったインデックスには"Rebuild"を使えます。
コードインテリジェンスが現れる場所
- コードタブがアクティブになると、ワークスペースサイドバーに"Code context"グループが加わります。"Code graph"には状態バッジ("Indexed"/"Not indexed"/"Parse error")がつき、"Defined symbols"、"Used by"、"Uses"が並びます。各行は移動リンクで、関係を示すcalls/imports/extends/referencesタグがあります。
- 同じグループの"Related knowledge"はカーソル位置に追従します。関数内へカーソルを置くと、意味の近いノートや概念が並び、"View as graph"でシンボルを中心とした3Dの星座を開けます。
- ノートのドキュメントサイドバーとエンティティページの両方に"Related code"が現れ、文章や360°プロフィールから、実装するシンボルへ直接移動できます。
- Code intelligenceパネルの"Concept ↔ code"では、概念を検索して展開すると、一致率順にシンボルが並びます。クリックするとファイルが開きます。
- Chat:インデックスが完成すると、エージェントはリポジトリを整理し、意味でコードを検索し、シンボルの隣接関係をたどれます。ワークスペース検索結果にも"Code"セクションが加わります。
- 3Dグラフには"Show code"切り替えがあり、コードファイルを独自のノード種類として表示します。ファイルツリーでは、未処理のコードファイルに赤い状態点、解析エラーに警告三角形がつきます。
外部language serverをインストールすると、一般的なIDE機能も重なります。F12(またはCmd-click)で定義へ移動、Shift+F12で参照、F2でファイル横断の名前変更、⇧⌥Fで整形し、入力中は診断の波線も表示されます。サーバーがない状態でコードファイルを開くと、"Richer TypeScript support available"のように言語名を示し、インストールページへリンクするトーストが一度だけ表示されます。それまでは、エディターがコードグラフを使って静かに移動します。
実行し、メンションし、尋ねる
- ⌘
(Windows/LinuxではCtrl+)を押します。ドックが開き、ワークスペースフォルダーで"Terminal 1"が起動します。 ls -laや、リポジトリであればgit statusなど、実際に出力があるコマンドを実行します。- チャット入力欄で
@と入力し、"Terminals"を選んで"Terminal 1"をクリックします。入力欄にチップが表示されます。 - "このターミナルから何がわかり、ワークスペースについて何を示していますか?"と尋ねて送信します。
- 任意:ワークスペースにソースコードがある場合、ナレッジグラフ表示 ▸ "Code intelligence"を開き、"Build"を押します。"Scan files" → "Parse code" → "Link references" → "Embed symbols"の進行を確認します。
エージェントが取得済みのスクロールバックから答えるため、コピー&ペーストは不要です。インデックスを構築した場合は"Your code is searchable"へ変わり、コードファイルのサイドバーに"Code graph"セクションが加わります。
折りたたんで隠し、新しい出力は再メンションする
パネルを折りたたむと、ドックを安全に隠せます。各シェルはスクロールバックを保ったまま動き続け、⌘`を押せばすぐに戻ります。
新しい出力が届いた直後にもう一度ターミナルをメンションすると、エージェントが最新のスナップショットを読めます。
以上が開発者向けの2つの機能です。1つのショートカットで開く本物のシェルと、チップひとつでチャットへつなぐ橋。そして、ノートと同じトリプルの規律で整理されたコードベースです。アイデアとその実装を、互いに見つけられるようになります。同じトリプルには座標も持たせられ、エージェントが地図上へ描画できます。