接手一个没人管的Python老项目,第一件事往往是翻依赖。哪个包已经停更、哪个版本埋着雷,全靠人肉读changelog,一读就是一两天。有个叫DepExit的工具想把这活儿压到13分钟,而且它有个怪脾气:AI给出的迁移方案,它一个字都不信,除非自己先跑通。
![]()
这套东西的逻辑可以概括成一句话——Gemma负责提方案,执行负责拍板。整个流程里,模型没有最终裁决权。
具体怎么分工?先看"看"的部分。确定性代码负责解析requirements*.txt和pyproject.toml,用ast遍历每个文件找import、私有API调用和monkeypatch,把项目装进干净的虚拟环境,逐个包单独导入,跑pytest,再从PyPI和GitHub拉发布历史。这些活全由代码干,不经过模型。
然后是"想"的部分。Gemma 4只拿到DepExit收集到的证据和涉及的确切文件,返回替换决策、代码改动、依赖变更,以及一些用来锁定仓库所依赖行为的小测试。用的是gemma-4-31b-it,走Gemini API,并自动回退到gemma-4-26b-a4b-it。通过Ollama做本地推理也支持。
最后是"判"的部分,也是最关键的一环。确定性代码把方案应用到一份全新拷贝上,同时跑原测试和Gemma自己写的测试,新旧依赖各跑一遍。只有所有风险指标消失、没有回归、旧包不再被引用,这个方案才算verified。失败的话,具体的失败输出会回传给Gemma,给它一次修正机会。
每个依赖最终产出一份Dependency Exit Capsule:一份JSON记录、一个可读的Markdown页面、一个patch。里面每一条事实都带标签——OBSERVED、MEASURED、AI-SUGGESTED或AI·VERIFIED。哪些来自文件、哪些来自实际运行、哪些只是模型的建议,一眼能分清。Gemma不判定风险,不给自己打分,也永远不是OBSERVED或MEASURED字段的来源。它提议的包会拿去PyPI核对,每一次prompt和原始响应都存进capsule旁边。
这套"不信AI"的设计不是凭空来的。早前一次运行里,Gemma的回复被截断了,实际什么都没改,但requests却被标成了verified。问题是从自家capsule里读出来的,随后修了解析器,加了方案校验和逐指标复查。现在提交的那次运行是修复后的版本。
作者还拿一个无关项目做了无AI测试——jazzband/prettytable,337个测试,暴露出四个布局bug,当天修完。
完整跑一遍的样本放在examples/linkwatch-run/,对象是组织方的LinkWatch仓库。克隆后打开report.html,或者在GitHub上读SUMMARY.md。这次运行产出于2026年10月15日,用gemma-4-31b-it经Gemini API完成,耗时13分钟。工具本身只用Python标准库,不需要额外安装任何东西。
谁愿意为这个掏钱?接烂摊子Python代码库的自由职业者和小型代理公司,以及继承了老项目的小团队。按作者的说法,今天做一次这样的审计意味着一天到两天读changelog加猜。DepExit把它变成一次13分钟的运行,产出一份能交给客户的报告和一个能审的patch。健康项目里一次错误的迁移比不迁移更糟,所以真正值钱的部分是:没跑过的东西,不会被声称已修好。
开源在这里的作用是可核查。Gemma 4的权重是Apache 2.0,加上每次prompt和原始响应都被保存,capsule成了一份可重放的记录,而不是黑箱答案。depexit replay可以在之后不调用任何模型的情况下重新验证一份已保存的方案。愿意付费的人往往不能把客户代码发给闭源API,DepExit可以对着Ollama里的本地Gemma 4跑,代码留在机器上。切换模型是个flag的事——--ai google或--ai ollama,不用重写。
第一个用户的反馈挺实在:在依赖过期的Python项目上试过,觉得识别高风险包、理解潜在替换方案确实有用,尤其认可它不只是用AI建议迁移,而是真的测了、给了证据。不满意的地方是报告太细,希望有个更简单的改动摘要,还建议加上更清晰的迁移优先级,帮开发者决定先修哪个。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.