这个项目能做什么
SNAFU(符号名称歧义修复器)是一个命令行开发者工具,利用大型语言模型(LLM)来帮助开发者为源代码中的符号选择更清晰、歧义更少的名称。它引入了一个名为名称歧义数(NAN)的指标,用于量化符号名称被误解的难易程度。
该工具通过一个多步骤的代理式管道运行。首先,它从源文件中提取符号,并将它们发送给 LLM,而不提供任何周围的上下文(例如函数体或文档字符串),以模拟开发者用新鲜眼光阅读代码时的认知负荷。LLM 提供一个可能的、互斥的解释列表,以及相应的概率。SNAFU 使用这些概率来计算香农熵,并由此得出 NAN,其中较低的分数表示更清晰的名称。
接下来是一个人工参与的步骤,用户确认符号的实际预期含义。然后,LLM 建议一个仅表达该确认含义的新名称。这个建议名称会被重新评估,以计算新的 NAN。如果新名称没有减少歧义(即增量为正),则会被丢弃。通过的建议会经过最终的健全性检查,由具有完整上下文的 LLM 确保新名称合理且与确认的含义一致。最后,工具会向用户呈现一份建议重命名的报告。
SNAFU 需要 Python 3.14 或更高版本,以及 `uv` 包管理器。它通过 `any-llm` 库支持多种 LLM 提供商,允许用户使用 `--model` 标志指定不同的模型。默认情况下,它原生理解 Python,并使用 Tree-sitter 来提取其他语言的符号,包括 Ruby、C#、Java、JavaScript、TypeScript、PHP、Rust 和 Go。
评论
0 评分人数达到10人后显示
登录后参与讨论。