桃子桃子快讯
返回首页
工具

Overllm:一款帮你揪出「用 LLM 干正则活」的代码扫描工具

Overllm 是一款本地静态分析工具,可识别代码中本可由普通库函数完成却调用大模型的场景,支持 Python 与 JS…

2026.07.05 · 周日6 分钟阅读

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.pyoverllm src/overllm .;支持 --exit-zero--select--ignore--min-severity--all--format json|sarif|markdown 等参数。
  • 配置文件:在 pyproject.toml[tool.overllm] 段配置 ignoreexclude
  • 抑制误报:在代码行尾加 # 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 集成提供「节流与纠错」层:把机械、可确定的任务留在代码里,把大模型留给真正需要语言理解的地方。

信源