Skip to content
标题:AI辅助编程01-初体验
描述:初次体验AI辅助编程,通过开发Python截屏工具和函数行号检查器实践。发现AI在特定任务上准确性不佳,需人工验证和调整。最终通过AST模块和代码重构获得理想结果,总结AI辅助编程需人工把控方向。
发布日期:2025/06/15
标签:
AICoding

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没有对错,一顿操作猛如虎,一看结果二百五。

基于 MIT 许可发布。