1. 先别慌litellm 投毒到底影响了什么litellm 是一个在本地很常见的 LLM 调用代理层很多开发者用它把 OpenAI、Anthropic、通义、DeepSeek 等不同厂商的接口统一成一套 OpenAI 兼容格式。你本地跑的 Cursor、Continue、Cline、Aider、各种 Agent 脚本很可能都在背后调它。也正因为它是中间人一旦依赖包被投毒攻击者拿到的不只是某个工具的 Key而是你所有流经 litellm 的 Key 和请求内容。这次 litellm 投毒事件的核心风险点在于恶意版本会在你不知情的情况下读取环境变量、配置文件里的 API Key甚至把请求转发到攻击者控制的地址。对于本地跑 AI 工具的开发者来说最危险的不是我有没有装 litellm而是我装了而且 Key 散落在十几个工具里根本不知道哪个泄露了。这篇排查清单面向三类人本地用 litellm 做统一代理的、用各种 AI 编码工具但不确定底层调用的、以及 Key 到处复制粘贴想收口的。我会给出可复制的检查命令、settings.json / config.toml 配置骨架以及如何用 TaoToken 统一 Key 通道把调用入口收敛降低多工具散落 Key 的风险。先确认机器有没有中招再完成收口。2. 检查机器是否中招可复制的排查命令排查分四步查安装、查版本、查进程、查外联。全程在终端操作命令可直接复制。2.1 查 litellm 是否安装及版本# 查 pip 安装的 litellm 版本 pip show litellm 2/dev/null | grep -E Name|Version|Location # 查所有 Python 环境里的 litellm含虚拟环境 find / -name litellm -type d 2/dev/null | head -20 # 查 litellm 的安装来源确认是不是从官方 PyPI 装的 pip show litellm 2/dev/null | grep -i home-page\|author如果pip show显示的版本号是你没主动装过的或者 Location 指向了奇怪的路径就要警惕。正常从官方源安装的 litellmLocation 会在你的 site-packages 下版本号和你记忆中的一致。2.2 查依赖树里有没有被替换的包投毒往往不是 litellm 本体而是它的某个依赖被替换。重点查这几个# 查 litellm 的依赖树 pip show litellm 2/dev/null | grep -i requires # 逐个查关键依赖的版本和来源 for pkg in openai httpx requests pydantic; do echo $pkg pip show $pkg 2/dev/null | grep -E Name|Version|Location done2.3 查有没有可疑进程在跑# 查所有和 litellm 相关的进程 ps aux | grep -i litellm | grep -v grep # 查监听端口litellm 默认 4000 ss -tlnp 2/dev/null | grep -E 4000|8000|8080 # 查有没有进程在往外连陌生地址 ss -tnp 2/dev/null | grep ESTABLISHED如果发现 litellm 进程在跑但你根本没启动它或者它连的地址不是你配置的厂商域名这就是危险信号。2.4 查配置文件里的 Key 有没有被读过# 查常见配置文件最近修改时间 ls -la ~/.config/litellm/ 2/dev/null ls -la ~/.litellm/ 2/dev/null ls -la ./config.yaml 2/dev/null # 查环境变量里有没有明文 Key env | grep -iE api_key|openai|anthropic|token | sed s/.*/***/最后一条命令会把 Key 的值打码只显示变量名方便你确认哪些 Key 暴露在环境变量里。如果输出里有一堆OPENAI_API_KEY、ANTHROPIC_API_KEY说明你的 Key 散落在环境变量中任何能读环境变量的进程都能拿到。3. 用 TaoToken 统一 Key 通道收口排查完确认没中招或者已经清理干净下一步是收口。核心思路不再让每个工具各自持有厂商 Key而是所有工具统一指向一个入口由这个入口去对接上游。TaoToken 就是干这个的——它提供统一的 Key 和 API 通道你只需要在 TaoToken 控制台生成一个 Key所有工具都填这一个。这样做的好处很直接Key 只有一份泄露了只需在 TaoToken 控制台吊销重发不用挨个工具改调用入口收敛到一个地址排查外联时一眼就能看出是不是正常流量多工具散落 Key 的风险从十几个 Key 各自为政变成一个 Key 统一管理。TaoToken 的接入地址是https://taotoken.net/api兼容 OpenAI 格式所以任何支持自定义 base_url 的工具都能接。下面给出两个最常用的配置骨架。3.1 settings.json 配置骨架适用于 Cline / Continue 等{ llm: { provider: openai, baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥, model: claude-sonnet-4-20250514, temperature: 0.7, maxTokens: 4096 }, tools: { autoApprove: false, maxRequestsPerTask: 20 } }关键点baseUrl填 TaoToken 的 API 地址apiKey填你在 TaoToken 控制台生成的 Keymodel填你要用的模型名。不同工具的字段名可能略有差异但baseUrlapiKeymodel这三件套是通用的。3.2 config.toml 配置骨架适用于 Aider 等[openai] api-key sk-你的TaoToken密钥 base-url https://taotoken.net/api [model] name claude-sonnet-4-20250514 weak-model gpt-4o-mini editor-model claude-sonnet-4-20250514 [options] auto-commits false dark-mode true stream trueAider 用 TOML 配置base-url指向 TaoTokenapi-key用统一 Key。这样 Aider 的所有请求都走 TaoToken 通道不再直接持有厂商 Key。3.3 环境变量方式适用于脚本和 CLI 工具如果你有些工具只认环境变量可以这样设置# 写入 shell 配置永久生效 echo export OPENAI_API_KEYsk-你的TaoToken密钥 ~/.bashrc echo export OPENAI_BASE_URLhttps://taotoken.net/api ~/.bashrc source ~/.bashrc # 验证 echo $OPENAI_BASE_URL这样设置后所有读OPENAI_API_KEY和OPENAI_BASE_URL的工具都会自动走 TaoToken 通道。注意不要把真实 Key 提交到 Git建议用.env文件并加入.gitignore。4. 验证请求是否走通配置改完必须验证请求确实走了 TaoToken 通道而不是还在直连厂商。用 curl 发一个最小请求curl -s https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-你的TaoToken密钥 \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: 回复OK两个字}], max_tokens: 10 }正常返回类似{ id: chatcmpl-xxx, object: chat.completion, choices: [ { index: 0, message: {role: assistant, content: OK}, finish_reason: stop } ], usage: {prompt_tokens: 8, completion_tokens: 2, total_tokens: 10} }如果返回 401说明 Key 不对返回 404说明 base_url 路径写错了返回超时检查网络。验证通过后再去你的工具里发一条真实请求确认工具侧也走通了。对于想先确认模型可用性的可以直接在 TaoToken 的模型对话页面测试不用写代码就能验证 Key 和模型是否匹配。长期做编码和 Agent 的建议用 Coding Plan把常用模型的调用额度固定下来避免每次临时配。5. 本篇常见错排查5.1 配置改了但工具还在直连厂商现象改了 settings.json但抓包发现请求还是发往厂商域名。原因通常是工具缓存了旧配置或者有多个配置文件优先级不同。解决重启工具检查是否有~/.config/工具名/下的全局配置覆盖了项目配置。5.2 base_url 末尾多了或少了斜杠现象请求返回 404。原因https://taotoken.net/api和https://taotoken.net/api/在某些工具里行为不同。解决统一用不带末尾斜杠的https://taotoken.net/api让工具自己拼接/v1/chat/completions。5.3 环境变量和配置文件冲突现象配置文件里填了 TaoToken但环境变量里还有旧的厂商 Key工具优先读了环境变量。解决清理环境变量里的旧 Key或者确保工具的配置优先级高于环境变量。5.4 排查时误删了正常依赖现象清理 litellm 时把 openai、httpx 等公共依赖也卸了导致其他工具跑不起来。解决卸载前先pip show确认依赖关系只卸 litellm 本体公共依赖保留。如果不小心卸了重新pip install回来即可。5.5 Key 泄露后只改了一处现象发现 Key 泄露只在 TaoToken 控制台吊销了但本地工具里还存着旧 Key一直报 401。解决吊销后把所有工具的配置里的 Key 统一换成新生成的环境变量也要更新。这就是统一通道的好处——只需要换一个地方但前提是所有工具都指向了 TaoToken。排查和收口做完建议养成习惯每月检查一次pip list里 litellm 及相关依赖的版本确认没有异常变动所有 AI 工具的 Key 统一走 TaoToken 通道不再散落环境变量里的明文 Key 定期清理。机器安全这件事防的是不知道收口收的是管不过来。