このプロジェクトについて
SNAFU(Symbol Name Ambiguity Fixer-Upper)は、開発者がソースコード内のシンボルに明確で曖昧性の少ない名前を選択するのを支援するコマンドラインツールです。このツールは、シンボル名の誤解されやすさを定量化するNAN(Name Ambiguity Number)という指標を導入しています。
SNAFUは、複数のステップからなるエージェント型パイプラインで動作します。まず、ソースファイルからシンボルを抽出し、関数本体やドキュメント文字列などの周囲のコンテキストなしでLLMに送信します。これにより、開発者がコードを初めて読む際の認知負荷をシミュレートします。LLMは、その名前に対して考えられる複数の解釈とその確率を返します。SNAFUはこれらの確率を使ってシャノンエントロピーを計算し、NANを導出します。スコアが低いほど、名前は明確であることを意味します。
次に、人間による確認のステップがあります。ユーザーはシンボルの実際の意図を確定します。LLMは、その確認された意図のみを表現する新しい名前を提案します。この提案された名前は、新しいNANを計算するために再評価されます。新しい名前が曖昧さを減らさない場合(デルタが正の場合)、その提案は破棄されます。生き残った提案は、最終的な健全性チェックとして、完全なコンテキストを持つLLMによって評価され、新しい名前が理にかなっており、確認された意図と一致していることが確認されます。最後に、提案された名前の変更がユーザーに報告されます。
SNAFUは、Python 3.14以降と`uv`パッケージマネージャーが必要です。また、`any-llm`ライブラリを介して複数のLLMプロバイダーをサポートしており、ユーザーは`--model`フラグを使用して異なるモデルを指定できます。デフォルトでは、Pythonをネイティブに理解し、Ruby、C#、Java、JavaScript、TypeScript、PHP、Rust、Goなどの他の言語についてはTree-sitterを使用してシンボルを抽出します。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.