Appearance
1. windows下截屏的小工具
- 用 python 写了一个简单的截屏工具,桌面应用程序
- 改了很多次,开始用 Trae CN ,但程序有很多问题
- 后来试过 Linma ,才试成功
2. python 函数行号检查器
2.1. 需求来源
- 在完成一个使用 Cursor 对代码库进行分析的项目时,发现的一个需求。
- 在 github 代码库中找一个 python 项目,使用 Cursor 对代码库进行分析。整理出项目情况分析、测试用例分析等,给 Trae 团队提供测试数据。
- AI 对 python 代码中函数的起始行号和结束行号的分析时,总是不准。如果让它多次检查,能每次都给出不一样的错误情况,完全没有可用性。
- 所以考虑用代码自己写一个检查器。
- 用 python 写了一个简单的检查器,能够对一个 python 文件中的函数的起始行号和结束行号进行检查。
2.2. 实践经验
开始简单让AI进行编程,但实际得出的效果并不好,对函数的结束行号的判断总是有偏差。
对一个项目中所有 test 目录下的代码中函数的起始行号和结束行号的数据手工进行了整理,并给出一份MD文件,试图以此作为标准,对AI进行的编程进行验证。
尝试了很多次,效果极差,速度极慢,很多时候长时间无响应,无法判断是不是 cursor 的问题。
换了 CodeBuddy 软件,速度上按理说应该不差了,但很多步骤依旧很慢,于是意识到这应该不是模型的问题,而是此任务大模型不擅长,导致的通病。
改成对每个测试文件用一个 json 来描述,然后让AI对代码进行验证,速度快了不少,终于能够跑通了所有的测试数据。
想要让AI对代码做整体重构,结果出了问题,捅了马蜂窝了,测试数据很多跑不通了。
需要重新尝试。
经过多次迭代后,它终于意识到用通过 AST 模块进行分析,最终结果是理想的。
2.3. 新的重构尝试
2.3.1. 重构代码
plaintext
根据你之前的结论,重新设计 temp6/check-function-num.py 的代码结构。
新生成的代码保存在 temp7/check-function-num.py ,版本为 1.5.0
之前你分析的这个程序源代码的问题是:
1. 重要的业务逻辑(比较、保存、报告生成)都在类外部
2. 没有充分利用面向对象的优势
3. 代码组织不够模块化
并且你给出的修改优先级是:
1. 高优先级:将 compare_with_reference() 封装到 FunctionComparator 类
2. 高优先级:将 save_results() 封装到 FileHandler 类
3. 中优先级:将 save_comparison_report() 封装到 ReportGenerator 类
4. 低优先级:考虑创建主控制器类来协调各个组件2.3.2. 增加功能
plaintext
在原有代码 temp7/check-function-num.py 的基础上增加功能:
指定一个文件地址,读取这个文件中所有定义的函数,给出该函数的起始行号和结束行号,将相关信息保存到一个 json 文件中。
生成的 json 文件中的结构,参考 test-case/test_readme.json 的内容结构。
生成的 json 文件,保存在目录 result 目录中。3. 结论
- AI 辅助编程,确实神奇,但非神器 - 它能做很多事,但未必都是对的。对错与否,靠文字概率,这就比较玄学了。
- 自己能做的事自己做,不要依赖 AI 来完成,有时效率更高 - 开始我连启动开发服务器这种操作都是通过提示词来完成的,后来发现白白额外消耗 token ,还不如自己手写命令快,有时它还会会错意。
- 要做AI的主人,自己把控方向 - AI没有对错,一顿操作猛如虎,一看结果二百五。