Aiderが採用してるtree-sitterやコードコンテキスト周りの工夫面白そう
tree-sitterは、プログラミング言語のソースコードを構文解析するためのライブラリで、IDEやコードエディタで使用されている以下o1 proによるQA

Q: Aiderはコードコンテキストをどのように提供するのか
A: リポジトリ全体をマップ化し、クラスや関数など重要なシンボルのシグネチャを抽出してGPTに送る。これによりモデルが必要な依存関係を把握しやすくなり、チャット中に必要なファイルのみ詳しく追加する仕組みを実現している。

Q: リポジトリマップにtree-sitterを採用したメリットは何か
A: 以前のctagsよりも豊富な構文情報を得られ、関数の引数や型など詳細を抽出できる点である。さらにpy-tree-sitter-languagesによって主要言語を幅広くカバーでき、追加インストールの手間も減らせる。

Q: aiderのリポジトリマップはどのような情報を含んでいますか？ 
A: リポジトリ内の各ファイルのリスト、キーとなるシンボルの定義、関数の呼び出しシグネチャ、ソースコードから抽出した重要な定義行を含みます。

Q: リポジトリマップを送る際にトークン数が多くなる問題はどう解消しているか
A: ファイル間の依存関係をグラフ解析し、より重要度の高いシンボルのみを選択して送信する。たとえば「--map-tokens」でトークン上限を指定し、最も関連性が高い定義だけをGPTに送るようにしている。

Q: Aiderの今後の展望として何が挙げられているか
A: GPTとtree-sitterを使い、どのファイルを自動で修正すべきかを判断する機能を開発予定である。現在はユーザーが修正対象ファイルを指定しているが、将来的にはこのプロセスもAIが支援できる見込みである。