Auto-Coder
是一个基于终端(terminal)的、利用大语言模型(LLM,比如 GPT 或类似模型)为开发者进行代码补全、解释和重构的 AI 辅助编程工具。它的理念很像“ChatGPT for terminal”,但专为程序员场景优化,可以无缝和本地代码、终端流程结合。初学使用参见这篇文档:把AI装进你的terminal终端:Auto-Coder终极编程助手体验-CSDN博客
Kotti是一个非常好的基于pyramid框架的web搭建项目,官方已停止更新,不支持pyramid2.x库。使用Auto-Coder将Kotti
的pyramid依赖库从1.x升级到2.x,参见:使用auto-coder将kotti项目的pyramid依赖从1.x升级到2.x,将SQLALchemy从1.x升级到2.x-CSDN博客
Kotti的其它库也大多老旧,有安全隐患,因此对它们进行安全检验,方法见:https://blog.csdn.net/skywalk8163/article/details/148102970 ,并使用Auto-Coder
来解决因版本升级带来的问题。
开始行动
在auto-coder里面使用的提示词为组合形式,由两部分组成,第一部分说明当前项目情况,第二部分布置当前的调试任务,一般一个任务只负责更新一个库。
第一部分能提示词:
Kotti这个项目使用的依赖库比较老,有些有安全隐患,请帮
我根据下面的安全检测信息,升级相关依赖库,并更新Kotti项目里面的相关代码。
第二部分提示词
将Kotti项目的requirements.txt文件发给大模型,比如gpt-4o,它会总结出当前有哪些库存在安全隐患。安全隐患最高的部分如下,将它们以单个依赖库拆分,不用修改,或者适当增加补充设定,如:建议升到4.3.0版本 等语句。
然后将每个部分跟第一部分组合,发送给Autocoder即可。
AI指出的安全隐患:
(0.6版本等字样,是在autocoder处理完毕后,手工保存项目设定的版本号)
bleach==4.1.0
这个版本存在多处 XSS 绕过漏洞(比如 CVE-2021-23980:标签过滤器逃逸,可以插入恶意脚本)。
建议强烈升级到 bleach>=6.0.0(前后API有变,需适配)。
0.6版本
-
bcrypt==3.2.2
- 有一些边界溢出修复(虽然不是直接可远程利用,但建议关注,见 bcrypt releases)。不是最紧急,但能升到3.2.7或更高更好。建议升到4.3.0版本
0.7版本
-
waitress==2.1.1
- 旧版曾有反序列化漏洞(比如 CVE-2022-24761: HTTP headers处理绕过)。
- 建议升级到2.1.2或更高(目前 waitress 最新 3.x )。
-
html2text==2020.1.16
- 旧版存在XSS和标签解析逃逸,详见 html2text CVEs。
- 建议升级至 >=2023.9.1。
-
bleach-allowlist==1.0.3
- 这个包本就是 bleach 的扩展,“allowlist”名为该系列已弃用命名,内容很久没更新。建议只在必要时用,并确认和 bleach 版本兼容,否则考虑替换掉。
在处理bleach-allowlist==1.0.3的时候,把系统给搞崩了,具体来说就是把bleach又退回到4.1.0版本了。
想找方法退回,但是没找到。(后来问作者,得知web版本可退回)也许终端版本无法任务回退吧。
于是只好让auto-coder再来一次:
Kotti这个项目使用的依赖库比较老,有些有安全隐患,请帮
我根据下面的安全检测信息,升级相关依赖库,并更新Kotti项目里面的相关代码。bleach=
=4.1.0
这个版本存在多处 XSS 绕过漏洞(比如 CVE-2021-23980:标签过滤器逃逸,可以插入恶意
脚本)。
建议强烈升级到 bleach>=6.0.0(前后API有变,需适配)。
现在版本是0.8,但是pytest是报错的:
修改
现在版本是0.9
requirements.txt文件已经修正
还需要继续解决pytest报错
明白了,是kotti自己的问题,没有重新安装
FAILED Kotti/kotti/tests/test_app.py::TestGetVersion::test_it - pkg_resources.ContextualVersionConflict: (bleach 6.2.0 (/home/skywalk/ub22p...
先保存个0.10版本。
另,从这个版本开始,kotti开始生成版本
生成
重新编译,ok
pip install -e .
测试test_app.py ok
====================== 16 passed, 5463 warnings in 7.12s =======================
生成了kotti1.0.tar.gz文件
该版本已经支持pyramid ,且SQLACchemy 等也升到较新的版本。bleach等四个库也升级到了新版本。
安装好后kotti显示2.0.10.dev1
总结
使用 Auto-coder完成Kotti项目的依赖库版本升级问题非常简单方便,只要把问题描述清楚,让它把指定的库升上去,后面它会自动更新代码,解决版本升级可能带来的各种代码问题。
当然过程是曲折的,毕竟依赖库牵一发而动全身,Auto-coder跟其它AI助手比起来又聪明又能干,不用询问就会自己修改代码,但是有时候也挺担心它太智能把项目搞崩,索性最终也没出现无法收拾情况。另外刚刚使用Auto-coder,不太熟悉操作,也走了一些弯路。
总之这次使用Auto-coder来自动更新项目的依赖库非常成功,是一次非常棒的体验,大家也都来试试吧!
用同样的办法,后续又升级了几个库 beaker==1.13.0 mako==1.3.10 waitress==3.0.2 webob==1.8.9 ,Kotti项目迎来了打包1.2 ,项目2.0.10dev2 版本,参见:https://skywalk.blog.csdn.net/article/details/148102970