Overllm:一款帮你揪出「用 LLM 干正则活」的代码扫描工具
Overllm 是一款本地静态分析工具,可识别代码中本可由普通库函数完成却调用大模型的场景,支持 Python 与 JS…
Overllm 是一个面向开发者的本地静态分析工具(linter),专门检测代码中「调用大语言模型去做普通代码就能完成的工作」的低效模式。它通过解析源码静态结构来识别问题,运行时不联网、不调用任何模型,因此速度快、可放进 pre-commit 钩子或 CI 流水线,作为代码提交前的质量门禁使用。
工具思路与定位
Overllm 的出发点是:很多开发者在简单任务上调用 LLM——例如让模型排序、去重、提取 URL 或解析日期——这些其实一行标准库代码就能完成。调用 LLM 意味着额外的延迟、费用以及结果不确定性。Overllm 的目标就是把这些「花大钱办小事」的位置标出来,并给出确定的替代方案。
与一般 AI 代码补全工具相反,Overllm 不评判「AI 写出的代码质量如何」,而是关注「你在哪里不该调用 AI」。它通过 Python 标准库的 ast 模块解析 Python 代码,通过 tree-sitter 解析 JavaScript 与 TypeScript。
主要检测规则
Overllm 内置多条规则,命中特定代码模式后给出提示,并附带「确定性替代方案」。默认仅显示 warning 及以上级别,因此干净的代码库运行后无输出、退出码为 0。
- llm-mechanical(error):prompt 要求排序、反转、计数、求和、去重、大小写转换、base64、对字面量做算术——提示使用一行标准库等价函数。
- llm-extraction(error):prompt 要求提取邮箱、URL、日期或数字——建议使用正则、datetime 或 urllib.parse。
- prompt-injection(error):来自 request.args、request.json 等不可信网络输入直接拼入 prompt——建议隔离用户消息、校验并约束模型输出。
- llm-in-loop(warning):LLM 调用出现在循环中,每次迭代都产生一次 API 请求——建议批量请求、缓存或移出循环。
- deprecated-model(error/warning):模型 ID 已是下线或被标记为即将移除的版本——提示切换到当前可用模型。
- unsupported-params(warning):在 OpenAI 推理系列(o1、o3 等)以及较新的 Anthropic 模型上设置了 temperature / top_p / top_k——这些参数会被服务端忽略,建议通过 prompt 控制。
- static-prompt(info):用户 prompt 是编译期常量,无变量输入——结果固定,建议预先计算或缓存。
工具支持识别 OpenAI、Anthropic、Google、Mistral、Cohere、Groq、AWS Bedrock、HuggingFace、Replicate、LangChain、LiteLLM、Ollama 等 Python SDK,以及 Vercel AI SDK、openai / anthropic Node SDK 与对应的裸 HTTP 请求。
隐私与本地化
Overllm 完全在本地运行:解析源码、打印结果,不上传代码、不调用 API、无需密钥、不发送遥测。其核心是数百行 Python,无强制依赖;JavaScript / TypeScript 支持通过可选的 tree-sitter 依赖实现。作者强调,断网情况下行为完全一致,方便在隔离环境审计。
使用与集成方式
- 安装:
pip install overllm(Python),或pip install "overllm[js]"(额外支持 JS/TS)。 - 命令行:
overllm app.py、overllm src/、overllm .;支持--exit-zero、--select、--ignore、--min-severity、--all、--format json|sarif|markdown等参数。 - 配置文件:在
pyproject.toml的[tool.overllm]段配置ignore与exclude。 - 抑制误报:在代码行尾加
# overllm: ignore或# overllm: ignore=llm-in-loop,或在文件顶部加# overllm: ignore-file。 - Pre-commit:在
.pre-commit-config.yaml中注册仓库与钩子,版本v0.4.0。 - GitHub Action:官方提供 Action,在 PR 中基于扫描结果留下接地气的评论;无问题时保持静默。
- MCP 服务器:内置 MCP server,可在 Claude Desktop、Cursor 等 AI 代理中调用。
总体而言,Overllm 并不构建新模型,而是为已有 LLM 集成提供「节流与纠错」层:把机械、可确定的任务留在代码里,把大模型留给真正需要语言理解的地方。
