マイクロソフトは、Windowsターミナルをベースに、エージェント統合機能を備えたIntelligent Terminalをオープンソースで公開した。簡単にいうと、AI組み込みのWindowsターミナルで、シェル上のエラーに対して、解説や提案を行える(写真01)。Windowsターミナルに、エージェント用の専用ペインやステータスバーボタンなどが追加されており、Agent Client Protocol(ACP)準拠のエージェントを利用可能だ。なお、標準では、GitHub Copilotがエージェントとして選択されている。
Microsoftは、2023年に、Canary版Windowsターミナル用に「Terminal Chat」を公開したが、実験的なもので、チャットは別ウィンドウで行い、AIエージェントもAzure OpenAI Serviceしか選択できなかった。
今回のIntelligent Terminalは、ターミナルとエージェントの統合を行い、エージェントとのやりとりを現在のウィンドウを分割したペインで行えるようにした。
このIntelligent Terminalは、PowerShellやbashといったシェルでのエラーから、正しいと思われるコマンドラインを提案、実行させる機能がある。もちろん、シェルの内部/組み込みコマンドの使い方にも対応するだけでなく、たとえば.NET SDKのコマンドなどの外部コマンドにも対応する。
マイクロソフトは、Windows 11でAI利用を推進し、多くの添付アプリケーションにAIを組み込むなどしたが、こっちのほうは、NPUを搭載したマシンのみの話であり、全体的に不評だった。今回のIntelligent Terminalは、開発者向けの機能なので、一般向けのAI利用とはちょっと異なる。また、利用するAIもGitHub Copilotであり、Windows標準のCopilotとは異なる。
意外でもないと思うが、Windows標準のPowerShellは、従来のcmd.exeに比べると、ユーザーの評価で劣る。もっとも、利用せざるを得ない人も多く、代替品もないので贅沢は言ってられない。とはいえ、PowerShellのシェルというよりは、まず「言語」というコンセプトは、理解できなくもないが、やはりシェルとしての使い勝手に劣る点がある。たとえば、スペースが含まれるパスを使うときには、ダブルクオートで括るというのは、cmd.exeでもそうだったが、PowerShellでは、これは文字列として認識されてしまい、実行ファイルのパスだったときには、コマンドラインの先頭に評価演算子「&」を置く必要がある。似たようなことに、引数に式を使う場合にはカッコで囲む必要があり、必然的にカッコを多用しなくてはならない。
また、コマンドの汎用性を求めるがゆえに、cmd.exeでは単純だった処理、たとえばシンボリックリンクの作成が多数のオプションが必要なコマンドになってしまうといった面倒さがある。
そういうわけで、PowerShellを日常的に利用するものの、利用頻度の低いコマンドなどでは、たしかにエラーを出してしまうことが少なくない。こうしたとき、Intelligent Terminalでは、エラーに応じたアドバイスや正しいコマンドの提示が行われる。利用者としてはうろ覚えでエラーを出しても、そのあとインターネット検索とかせずに、なんとか正しいコマンドにたどり着けるわけだ。
PowerShellに関しては、「Command Not Found」ユーティリティがあり、該当するコマンドが存在しなかった場合に、プログラムを実行させることができる。PowerToysには、適当なコマンドをwingetでインストールするコマンドラインを提示するツールがある。ただし、この機能は、シェル側にプログラムを組み込む必要があり、かつ、コマンドが存在しない場合の対応しかできない。
bashにも似たような機能があり、ディストリビューションのリポジトリから、実行させようとしたコマンドを探して提案できる。現在のIntelligent Terminalは、PowerShellだけでなく、bashにも対応している。
Intelligent Terminalは、エージェントがシェル側の状態を監視していて、エラー以外に、次に何をするべきか? なども提案できる。たとえば、.NET SDKをインストールすれば、次にインストールが正しくおこなえたかどうかを確認するコマンド(dot.exe --info)を提案してくる。もちろん、存在しないコマンドを実行しようとすれば、適当なプログラムのインストールを提案するだけでなく、著名なコマンドならばPowerShellでは、これで同等の処理ができるといった提案もする(写真02)。
-

写真02: awkと入力すると、wslを使う方法やwingetなどのパッケージマネージャ経由でインストールする方法、gitをインストールして付属のBASH/MSYS2を使う方法を提案する。さらには、PowerShellのSelect-Stringコマンドなどでawkのパターンマッチング的な処理が可能とする提案も行う
初回のインストールでは、GitHub Copilotのインストールが行われる。このとき、Webブラウザが開いて認証ページを表示するが、そのときに必要な認証コードは、Intelligent Terminalに表示されている。コードが表示されるまで少し時間がかかるため、気がつきにくい。
今回のタイトルネタは、ディビット・ブリン(David Brin)の「知性化シリーズ」(原題The Uplift series。ハヤカワ文庫)である。設定は、興味深いのだが、筆者は、動物が主人公になるのが苦手。スタータイド・ライジングだけしか読めていない。

