转载请注明出处❤️
作者:测试蔡坨坨
原文链接:caituotuo.top/c61096b5.html
1 故事背景
你好,我是测试蔡坨坨。
最近看网上 Trae Solo 挺火,相比于普通的AI编程工具,它更像是一个完整的 AI 研发平台,集成了终端、编辑器、浏览器和文档等工具,能够从需求分析、原型设计、前后端开发、调试优化到最终部署,提供一条龙的解决方案。
更重要的是,Trae Solo 具备强大的上下文工程能力,能够理解和整合复杂的项目上下文、业务逻辑、技术栈信息,并在整个开发流程中保持上下文的连贯性。简单来说,一个人用 Trae Solo 就相当于拥有了一个完整的研发团队。不过现在刚开放,算力有限,想用的话得开国际版 Trae Plus 还得有邀请码,要么就去官网申请 Whitelist,然后等通知。
官网:https://www.trae.ai/solo
正好朋友有邀请码,我就马不停蹄地开了个 Trae 国际版 Plus,第一个月 3 $,后面每月 10 $。结果开完之后准备用,发现邀请码失效了(王德发!!!),原来是有人把 5 个邀请码全用光了……
算了,没邀请码就继续等呗……
结果今天看到女友大周六还在埋头苦干录数据,我就好奇过去看了看。原来她们幼儿园有个工作,每天采购的食材都有纸质配送单,得一条一条录到食品安全管理系统里,搞什么一品一码,方便追溯食材来源。
手搓大概分为以下几个步骤:
- 登录食品安全管理系统
- 进入食品溯源管理页面
- 点击新增验收记录
- 然后拿着纸质配送单,一个一个食材往系统里录。每录一个还得先搜索食材名字,再填数量,最后保存
我一看这操作,心想这不就是纯体力活嘛,完全可以自动化啊!无非就是:
- 拍个照识别配送单上的信息,弄成数据格式
- 自动获取系统的单号
- 根据食材名字自动查询系统里的食品信息
- 自动提交保存
正好 Trae Plus 的钱都花了,不能浪费啊,我就跟女友说:"来,咱们用 AI 写个自动化脚本,以后这活儿就不用你手工干了!"
2 Trae 实现过程:零基础也能写代码
2.1 前期准备:抓包和分析接口
女友一听要写代码,有点抗拒:“我不会编程,肯定搞不定。”
我说:"没事,AI 会写代码,但是我们得先搞清楚那个系统是怎么工作的。你先按平时的流程操作一遍,我教你抓包看看后台都调了什么接口。"
于是我让她打开 Chrome 浏览器,按 F12 打开开发者工具,切到 Network 标签页。然后让她按平时的流程操作一遍:
第一步:获取单号
点击"新增验收记录"的时候,我们在 Network 里看到了一个请求:- POST https://127.0.0.1:9999/getbillno.action?kind=6
复制代码 响应就是一个简单的单号,比如:YS202507310001
我跟她说:"看到没,这就是系统自动生成单号的接口,咱们脚本也得调这个。"
第二步:查询食品信息
然后让她在搜索框里输入"鸡蛋",我们又看到了一个查询接口:- POST https://127.0.0.1:9999/canyin/entlistyuancaidetail.action
- 参数:areaCode=¶m=yuanliao&value=鸡蛋&page=1&rows=10
复制代码 响应是个 JSON,里面有食品的详细信息:- {
- "total": 1,
- "rows": [
- {
- "bianhao": "356CYA075858G",
- "yuanliao": "鸡蛋",
- "mingcheng": "某某食品有限公司",
- "productor": "XXXX餐饮管理服务有限公司",
- // ... 其他字段
- }
- ]
- }
复制代码 第三步:保存数据
最后让她填完数量点保存,又抓到了提交接口:- POST https://127.0.0.1:9999/canyin/addyuancai.action
复制代码 这个接口参数特别多,包含了所有的食品信息和数量。
我跟女友说:"你看,整个流程就是调这三个接口,现在我们把这些信息告诉 AI,让它帮我们写代码自动调用这些接口。"
女友这才明白过来:“原来网页背后是这么回事!”
2.2 图片识别:从纸质单据到结构化数据
接下来就是最关键的一步——让 AI 识别配送单。我跟女友说:"你直接把配送单拍个照发给 Trae,然后告诉它你要干什么就行了。"
女友有点不敢相信:"就这么简单?"
我说:"对,就跟聊天一样,你就说:'帮我识别这张配送单,把所有商品信息提取出来,保存成 JSON 格式'。"
女友看到结果后惊呆了:“天哪,这比我肉眼识别可快太多了!”
2.3 接口自动化:让机器替代重复劳动
接下来就是最有技术含量的部分了——让 AI 写代码自动调接口。我跟女友说:"现在把刚才抓包的那些接口信息告诉 Trae,让它写个 Python 脚本自动处理。"
女友问:"我要怎么跟它说啊?"
我说:"就把刚才看到的那些接口地址、参数、响应格式都贴给它,然后说你要实现什么功能就行了。"
于是女友就跟 Trae 说:"我需要一个 Python 脚本,能够:
- 读取刚才识别出来的 JSON 数据
- 调用 getbillno.action 获取单号
- 对每个食材调用 entlistyuancaidetail.action 查询信息
- 最后调用 addyuancai.action 保存数据"
然后把抓包的接口信息都贴了过去。
然后 Trae 就开始写代码了!
核心功能包括:
1. 获取单号- def get_bill_no(delivery_date):
- """获取单号,优先从缓存读取,否则请求新单号并存入缓存"""
- # Trae 还贴心地加了缓存机制,避免重复请求
复制代码 2. 查询食品信息- def query_food_info(food_name, bianhao=''):
- """查询食品信息"""
- # 根据食材名称查询系统中的标准食品信息
复制代码 3. 新增溯源记录- def add_food_entry(bill_no, delivery_date, food_item, food_info):
- """新增溯源信息"""
- # 将食材信息提交到食品安全管理系统
复制代码 2.4 智能优化:处理实际运行的复杂性问题
在实际调试脚本的过程中,我们遇到了不少意料之外的问题。每次发现问题,我们就告诉 Trae,它都能很快帮我们想出解决方案并实现。
商品名称清洗问题:第一次跑脚本的时候发现,配送单上的商品名字经常写得比较冗余,与系统中存储的信息匹配不上,比如"鲜鸡蛋(75个)"、"安井豆沙包360克*12包"这种,系统里搜索的时候根本找不到。
我们把这个问题告诉 Trae:"配送单上的商品名称不规范,需要清洗一下再查询。比如:鲜鸡蛋(75个)->鸡蛋、豆沙包360克->豆沙包、豆沙包*12包->豆沙包 …"
Trae 马上就明白了,给我们加了个清洗函数:- def clean_food_name(name):
- """
- 根据规则清洗商品名称:
- 1. 去掉括号及括号内的内容
- 2. 去掉星号(*)及其后面的内容
- 3. 移除末尾的重量单位
- """
- name = re.sub(r'[\((].*?[\))]', '', name)
- name = name.split('*')[0]
- name = re.sub(r'\d+\.?\d*\s*(kg|g|千克|克|斤|L)$', '', name, flags=re.IGNORECASE)
- return name.strip()
复制代码 特殊商品映射问题:测试的时候又发现了一个更棘手的问题,有些食材比如"大米"、"面粉"这种常见的,用名称搜索会匹配到好几条记录,系统不知道该选哪个。
我们又跟 Trae 说:"有些食材名称会匹配到多条信息,需要建个映射表直接用 code 编号,确保结果只有一条。"
Trae 立马就明白了这个逻辑,给我们建了个特殊映射表:- special_food_map = {
- '鸡蛋': '356CYA075858G',
- '玉米粒': '356CY9083954T',
- '黄豆': '356CY90840032',
- # ... 更多映射
- }
复制代码 错误处理机制:在多次测试中,我们发现总有一些食材因为各种原因处理失败,比如网络超时、接口返回异常,还有一些食材在系统里根本查询不到信息。
我们就告诉 Trae:"需要把处理失败的条目记录下来,方便后续手工处理。"
在我们的引导下,Trae 很快就加了完整的错误处理逻辑,把失败的条目自动保存到 failed_entries.json 文件里,方便后面补录。
2.5 使用体验
我让女友尝试时,她还有点紧张,担心自己不懂编程会搞砸。
我说:"放心,就三步操作,比你平时用手机还简单。"
实际使用起来确实超级简单:
- 拍个照,让 Trae 识别配送单,生成 JSON 文件
- 双击运行脚本:python food_traceability.py
- 喝杯茶等着就行了
几分钟后脚本跑完了,她去系统里一看,所有数据都录进去了!
原本需要两三个小时的工作,现在不到五分钟就完成了。
3 思考与反思:AI 编程的现状与未来
3.1 模型选择的考量
在折腾的过程中,我们试了 Gemini-2.5 Pro 和 Claude 4-Sonnet 两个模型。总的来说:
- Claude 4-Sonnet:写出来的代码质量更高,逻辑更严谨,更适合处理复杂业务
- Gemini-2.5 Pro:识别图片的能力更强,而且对中文理解更好
3.2 AI 识图的局限性
图片清晰的话,识别率基本能达到 99%,但是遇到模糊的字就容易出问题。比如我们测试的时候,AI 会脑补一个看起来合理的答案,把"蚬子(溪蛤)"看成了"鲫鱼(溪鲶)"。
3.3 非技术人员使用 AI 编程的可能性
门槛降低:之前连 Python 是什么都不知道,现在居然能搞定自动化任务。
效率提升:原来要干几个小时的活儿,现在几分钟就搞定,这谁不爱啊!
思维方式:比如现在看到什么重复性工作都会问:"这个能不能也让 AI 帮忙自动化一下?"
3.4 AI 编程的边界与思考
复杂业务逻辑:如果涉及多个系统交互、复杂的业务规则,AI 还是需要很多背景信息才能搞定。
安全性问题:AI 生成的代码可能有安全漏洞,特别是处理敏感数据的时候得小心。
后期维护:业务需求变了的时候,怎么让 AI 理解并正确修改现有代码,这还是个难题。
4 结语:拥抱变化,保持理性
这次的经历让我觉得,AI Coding 不只是个工具,更像一个聪明的编程搭档,能听懂你的需求,写出代码,还能处理各种异常情况。如果用传统开发方式,光是需求分析、技术选型、编码实现就得好几天。
对于非技术人员来说,AI Coding 确实大大降低了技术门槛,让更多人能享受到自动化的便利。
对于技术人员来说,也许可以极大地提高开发效率,让我们能把更多精力投入到更有创造性的工作中。(水面上的“显性价值”是编码更快、节省时间和降低成本。在水下包含了更深层的系统性影响:开发者体验层面,提升开发者体验、保持心流状态、提高开发者留存;产品质量层面,提升代码质量和可维护性,减少bug和技术债务;业务影响层面,改善客户体验,更快产品上市。)
当然,我们也要保持理性,AI 编程还不能完全替代程序员。它更像一个超级助手,帮助我们更快、更好地把想法变成现实。
PS: 如果你也想尝试 AI 编程,建议从简单的自动化任务开始,慢慢探索它的能力边界。
关于作者:测试蔡坨坨,一个爱折腾新技术的测试工程师,目前在探索 AI 在软件测试领域的应用。如果你对 AI 编程或软件测试有任何问题,欢迎一起交流讨论。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |