1、今天开始优化ChatWith,比如流式输出、Markdown渲染、深色模式等功能同样也可以加到ChatWith里,另外尝试一下增加多模型设置和切换功能
2、测试下看Cursor能否看懂这种指令“参考NoteWith,完善一下ChatWith在与AI对话时的流式输出和Markdown渲染效果”毕竟上次使用时刚刚用它完善了NoteWith的流式输出和Markdown渲染效果,但看样子Cursor无法在修改一个项目时参考另一个项目的代码
3、在修正“新的实例没有加载已保存的大模型相关配置”这一问题之后,测试流式输出和Markdown渲染的效果,发现还有一些可优化的地方,比如:1.我添加了支持深度思考的模型,但没有看到思考过程,需要同样以流式输出显示思考的过程,并且在样式上要和回答的内容有所区别,且可以将思考过程折叠和展开 2.回答的内容在流式输出时好像会居中显示,也不符合日常的使用习惯 3.正在流式输出时,回答内容的上方有一个灰色的圆形,那是啥?
4、继续修正测试时发现的小问题,比如:1.为什么思考的过程和回答内容都显示不全?2.Markdown渲染效果也有问题,比如同时使用多个Markdown语法时会混合显示部分渲染效果和语法标记,可否把几种比较常见的Markdown语法混用情况写到MarkdownRenderer里?3.应该优先显示思考过程,再显示回答内容,现在会先显示一部分回答内容,然后又弹出了思考内容
5、继续修正测试时发现的小问题,比如:1.在回答过程中会出现上下两部分同时显示的问题,到底哪个是思考过程?2.回答完毕后只剩一个回答结果,但回答过程中内容显示错乱,而且回答过程中无法上下滑动查看回答内容,3.“收藏”页面需要改成列表,以列表形式,显示每条收藏的内容的前两行,并且点击打开后可查看经Markdown渲染的内容
6、继续修正测试时发现的小问题,比如:1.我需要按照这个顺序:先流式输出思考过程,思考完成后,思考内容自动折叠,之后流式输出回答内容。2.目前这版的思考过程和回答内容无法区分,且在对话界面会同时显示两块内容,不知道哪个是思考过程哪个是回答内容,且应用会卡死
7、多次调整之后发现仍然无法搞定思考过程流式输出的需求,好在回答内容可以正常流式输出了,然后让Cursor去掉对话界面顶部的“已加载全部消息”提示,并且收藏列表页顶部添加一条和对话页顶部一样的搜索栏,并且收藏列表的样式、间距等和对话列表保持一致,让界面更统一一些
8、边添加功能边测试真的太重要了,之前用Trae编写ChatWith并且让Cursor做了些优化之后,一直没有实际测试,今天才发现有这么多的细节问题需要调整
9、接下来在设置中增加深色模式切换功能,让用户可以在浅色、深色、跟随系统三个选项间切换,然后增加多模型设置和切换功能,比如可以在设置中添加新模型,可以给不同的模型添加备注,在对话界面可以自行切换模型(显示模型的备注)
10、Cursor在修改过程中出现了单个对话内容太长的提示,可能是因为我在上次修改的基础上继续进行对话,导致触及了单个对话的内容长度限制,于是开启了一个新的对话,好在出现这一提示之前已经构建成功了
11、接下来优化设置界面添加模型、编辑模型的逻辑,在设置界面中点击“添加新模型”时,直接打开添加新模型页面,内容和编辑模型界面一致,然后设置界面的模型名字和备注名字换一下顺序,突出备注名,弱化模型名,之后再根据测试情况继续优化编辑模型的操作方式,以及外观选项的显示效果和位置,模型管理放在上面,外观设置往下挪
12、反复测试并让Cursor优化设置、模型添加/编辑、切换的功能,出现了切换外观不立即全局生效,首次打开编辑模型界面时内容为空的问题,于是让Cursor添加多处调试信息以帮助定位错误,结合调试信息,Cursor解决了首次打开编辑模型界面内容为空的问题,但外观切换不能立即全局生效的问题还存在
13、Cursor解释说SettingsView在sheet内部,可能时因为外观的变动未能正确传递到sheet内部的视图,于是让Cursor将SettingsView拆分成独立的文件,但还是没能解决外观变动不立即全局生效的问题,再次让Cursor检查后快速修正,看来可能将SettingsView拆分成独立文件后的确提升了应用的可维护性,检查和修正问题变得简单些了
14、到今天为止,尝试使用AI(按使用频率排序Cursor>Trae>Lingma)开发应用已经有一个月了,简单总结下:
1.初期构思应用时,需求尽量简单一些,提升首次编写的成功率
2.找到一个心目中的样本,参考它的功能构思自己应用的功能,或者结合它的不足,让Cursor在自己的应用中有针对性的解决
3.后续增加功能时,每增加一个功能就在Cursor中构建,并且在模拟器中测试一下,看是否有明显问题,修正问题之后再增加新功能,不要妄图一次增加太多功能
4.遇到问题,可以让Cursor在代码中添加调试信息,结合调试信息和实测表现,Cursor可以更快地解决问题
5.关于数据持久化方案,零基础开发不要轻易尝试Core Data,UserDefaults对于一个刚刚开发的应用也已经足够了,不可能一步到位,等对Swift足够熟悉之后,再尝试Core Data
6.开发过程中不要频繁切换工具,也不要频繁切换模型,其实Cursor的Auto模式就已经够用了,切换模型可能会导致在修改某个功能的同时,其它功能也被修改
7.可以在开发过程中让Cursor记住你的某些使用习惯,比如默认用哪个型号的模拟器,在修改后先行构建测试,检查有没有语法和编译问题等等
8.如果卡在某个功能上太长时间无法解决,可以开启一个新会话,再让Cursor重新检查问题出在哪儿,或者先妥协一下,缩减一些功能
15、仍然不确定目前ChatWith,以及NoteWith是否能正常展现支持深度思考的模型的思考过程,留给明天吧,今天就到这儿了
标签: DevLog
DevLog:2025年8月1日
1、我发现在备忘录界面中添加文字时就会一直出现报错信息,Cursor表示这些错误信息主要来自输入法系统,表明在文本输入过程中出现了问题,Cursor对NoteEditView的代码进行了优化,并且优化NoteEditView的主要逻辑,减少不必要的更新
2、Cursor修复完成后再次测试,问题仍然存在,于是要求Cursor评判是否是昨天添加的设置对齐方式的功能,或者限定备忘录默认字体产生的影响
3、Cursor不仅没能修复大量出现的错误,还产生了新的问题:一是创建新备忘录/编辑备忘录时标题栏不显示了,二是创建的新备忘录没有出现在备忘录列表里,先让它把这两个问题解决掉
4、Cursor用添加调试信息的方法快速解决了上面第二个问题,于是让它用类似的方法,添加调试信息,看看能不能解决在添加文字、调整对齐方式时大量出现的错误信息,多次修改之后终于解决了大量报错和应用崩溃的问题
5、在测试其它的格式设置按钮时发现,粗体、斜体、下划线、删除线等格式,一旦设置后就很难取消,正常的话应该再点一次就能取消格式设置,但现在需要点击多次才能取消,在修改过程中还遇到了设置格式时有时会生效有时不生效的问题 ,Cursor表示是格式检查逻辑和UI更新实际的问题,但多次修改后无果
6、决定先简化备忘录的格式设置工具栏,只保留加粗、斜体、下划线、删除线 四个按钮,其它的按钮及相关功能先删掉,但多次修改后仍然不能正常使用格式设置功能
7、决定将目前备忘录编辑界面的富文本编辑器改为Markdown编辑器,并且给这个编辑器添加和AI对话界面相同的Markdown渲染机制,之后再让Cursor移除了底部的工具栏,增加了常驻的字数统计功能,发现Cursor在一些设计细节上做的还是很好的,比如字数统计功能的位置、字体、颜色、对齐、背景、内边距等,都能尽量做到美观
8、之后让Cursor结合应用目前的功能刷新一下README,NoteWith至此暂时结束,下一步优化ChatWith,比如流式输出、Markdown渲染、深色模式等功能同样也可以加到ChatWith里,另外尝试一下增加多模型设置和切换功能
9、最近Cursor更新属实有些频繁,这几天基本一天一更新了,界面和交互上有一些小变化,别的变化暂时没发现
DevLog:2025年7月31日
1、询问了Cursor如果要增强NoteWith对iPad的兼容性,需要做哪些调整,Cursor表示不需要单独开发一个iPad版本,因为SwiftUI提供了很好的跨设备适配能力,可以先使用SwiftUI的响应式设计,之后再涉及iPad专用导航结构,最后再添加拖拽、分屏等高级功能,这样可以实现大部分业务逻辑和服务层代码的复用,只需要维护一套代码,功能更新同时适配两个平台,且用户体验一致
2、而且有这样一个兼容iPad的应用之后,就不用再开发单独的Mac版本,可利用Apple提供的Mac Catalyst技术,将iPad应用转换为Mac应用,无需重写代码,只需在Xcode中启动一个选项,即可保持与iPad版本相同的功能和界面:在Xcode项目设置中选择项目target、在”General”标签页勾选”Mac Catalyst”选项,选择”Mac”作为部署目标
3、发现自己的对NoteWith的设想和腾讯的ima.copilot有点像,决定体验一下ima,参考它来丰富NoteWith的功能,知识库功能更
4、下一步,优化AI问答页面的显示效果,需要支持流式输出,不要等回答完了再一次弹出全部回答内容,如果模型支持深度思考,同样也要以流式输出来展现思考过程,且思考内容与回答内容样式要有所区别,比如思考内容用灰色文字,可折叠/展开,回答内容用黑色文字
5、这个问题看来有点难度,Cursor尝试了多种不同的解决方案,但成功搞定了,之后继续优化,跟Cursor说,有几个小问题需要优化下:1.回答内容右侧的收藏图标,等回答结束后再出现,不要还没回答就出现 2.回答内容貌似不支持Markdown,需要添加对Markdown的支持 3.对话详情页需要跟着回答内容的流式输出自动向下滑动
6、Cursor创建了MarkdownRenderer.swift,并且让我手动添加到Xcode项目中,但模拟器测试发现还是不支持Markdown渲染,另外两个需求已经实现了,继续让Cursor修正,修正一次后发现目前会同时显示Markdown语法和渲染后的效果,继续让Cursor修正,再修正一次后发现如果有文字同时应用多个Markdown语法,会显示一种渲染效果+一种Markdown语法标记,不会只显示渲染效果,继续让Cursor针对集中常见的Markdown语法组合做优化,比如标题+加粗、列表+加粗、引用+加粗,终于解决了这一问题
7、Cursor给出了修改思路:先处理块级语法,再处理行内语法,使用循环处理确保所有标记都被移除,如果找不到结束标记,会移除开始标记,同时避免无限循环和语法错误
8、下一步对备忘录列表和备忘录界面进行优化,设置默认格式,默认采用苹方字体,字体大小默认和AI对话输出的无Markdown语法的字体大小一致,增加对齐方式的选择按钮,选中文字后可设置居中、居左、居右、两端对齐四种对齐方式
9、Cursor完成上述需求后,继续对对齐方式的设置按钮、默认行间距、默认字体大小进行优化,之后让Cursor处理设置对齐方式时DEBUG信息中出现大量错误信息和应用崩溃的问题,目前问题仍然存在
10、下一步在模拟器中测试下,是调整对齐方式时会频繁报错甚至崩溃,还是进行其它操作时会频繁报错,以更精确的定位问题,让Cursor修改
DevLog:2025年7月30日
1、继续对NoteWith进行优化,先对比DoitWith的启动页代码,调整了NoteWith启动页的标题和副标题字体大小,之后让Cursor调换AI对话和备忘录TAB的顺序
2、之后主要调整设置界面,首先把底部的设置改成“我的”,左上角的“设置”也改成“我的”,然后把AI模型相关的设置改成弹窗,目标是:点击“我的”可显示模型设置(点击AI模型设置后打开弹窗,在弹窗中设置API密钥、API地址、模型名称)、数据管理(包含回收站,需要删除回收站的图标)、数据统计(包含AI会话数量、备忘录数量),Cursor在修改完成后没有主动构建,跟Cursor强调了下以后完成每次修改后都构建一下试试
3、发现Cursor在修改底部的导航文字(“设置”改成“我的”)之后,原本的齿轮图标就不合适了,需要替换成比较合适的图标,另外需要在“我的”页面增加深色模式切换功能,可在 跟随系统、浅色、深色 三个选项间切换
4、在模拟器中测试发现,“我的”页面的AI模型、回收站,以及外观设置的三个按钮只有在点击文字和箭头时才会触发对应操作,需要改成点击整行时都能触发对应操作,继续让Cursor修改,Cursor表示是对按钮点击区域进行了优化,移除了Button和buttonStyle(PlainButtonStyle()),改用HStack + contentShape(Rectangle()) + onTapGesture
5、然后优化AI对话中的收藏操作,目前消息右侧的收藏按钮有点小,且位于消息的中间位置,消息比较长时不便于点击收藏,需要调整到消息的顶部位置,并且适当增大收藏按钮,在点击收藏按钮后需要提示收藏成功,在Cursor修改完成后,再对提示文字“已收藏”进行优化,改成了浮在对话界面中间停留一秒后自动消失,Cursor不仅完成了需求,还增加了阴影、动画效果、平滑动画,效果不错,今天到此结束,明天再测试和优化其它功能
DevLog:2025年7月29日
1、今天的目标是把DoitWith的分组功能加回来,目标是:
1.点击右上角的“+”可以选择创建新Todo、创建新分组
2.创建新Todo时可以选择分组
3.点击左上角“Edit”后,每条Todo右侧的删除按钮左边增加一个编辑按钮,点击弹出编辑界面,类似添加Todo界面,可以选择这条Todo的分组、设置截止日期和重复频率
4.设置中增加分组管理功能,可以删除分组,确认后即删除
2、决定让Cursor分步操作,先实现上面和1和2,Cursor增加了分组颜色设置等细节优化,但存在这些问题:新创建的分组不会出现在Todo列表里,我的需求是 即使目前已有的分组下都没有Todo,也要呈现在Todo列表里;另外新创建的Todo也没有出现在Todo列表里,检查一下是怎么回事;还有,创建完分组或Todo后,ActionSelectionView能否自动消失?目前还需要手动点一下取消才会消失
3、让Cursor修正这些问题之后,继续优化,发现点击左上角“Edit”时,只有General分组下的Todo支持拖动排序,其它分组下的Todo同样需要支持拖动排序,另外设置页面的TODO统计,数字也不对,是不是只统计了General分组下的Todo?然后去掉设置中的Reset to Default Data按钮和功能,我不需要
4、Cursor快速修复了上述问题,发现给Cursor的需求要尽量具体到某个按钮的某个功能,还有就是在付费之后Cursor的效率有明显的提升
5、继续修复一些小问题:点击左上角“Edit”后,我需要暂时隐藏掉Todo条目最左侧的圆圈,可能会让人误解这是多选按钮;另外现在每条Todo在点击完成后都无法撤销,我需要在再次点击时撤销完成状态
6、Cursor快速修复了上述问题,继续测试后发现还有问题,从回收站中恢复的Todo条目,不会回到原本所属的分组,而是到了General分组里,继续让Cursor修复问题,Cursor甚至还给出了“如果原来的分组被删除了,恢复的Todo会添加到General分组作为降级处理”的额外方案
7、从2-6的需求全部完成,接下来继续增加编辑Todo、管理分组的功能,先增加编辑Todo的功能,需求是:点击左上角“Edit”后,每条Todo右侧的删除按钮左边增加一个编辑按钮,点击弹出编辑界面(类似添加Todo的界面)可以在编辑界面修改这条Todo的标题、描述,设置截止日期和重复频率
8、Cursor在修改后仍然存在一些问题,一是编辑、删除、拖动排序三个按钮离的有点近,可以稍微拉大一点间距,防止误触,二是点击编辑按钮弹出了“删除”的弹窗,没有进入编辑界面,关于间距的修复,由于编辑、删除按钮和拖动按钮不属于同一个组件,无法调整边距,在尝试两次后撤销了间距调整操作,第二个问题已经修复完成,但存在首次打开Todo编辑界面立即消失,需要再次打开才能编辑Todo的问题,继续让Cursor修复,多次修改未果,点击编辑按钮会弹出删除的弹窗
9、决定换一种交互形式,去掉每条Todo右侧的编辑和删除按钮,改成长按每条Todo弹出菜单,菜单里包含编辑Todo、删除两个功能,点击编辑Todo进入编辑界面,点击删除弹出弹窗,确认后即删除(Cursor认为这样更加简洁,且符合iOS的设计规范)
10、实现这一需求后,发现首次长按Todo条目、编辑Todo时会弹出一个空白页面,再次编辑Todo时才会弹出完整的编辑界面,继续让Cursor检查并修正该问题,多次修改后解决
11、我发现即使不点击左上角的Edit按钮,也能通过长按和拖动来调整Todo的顺序,可以让Cursor去掉左上角的按钮,以及点击按钮后界面的变化相关代码,但要保留拖动调整Todo顺序的功能,Cursor边修改边检查/修复问题,涉及了TodoView.swift、TodoRowView.swift、GroupTodoRowView三个文件
12、接下来继续优化应用,主要针对分组管理:一是在Todo界面搜索栏下方添加几个按钮,按钮上显示分组的名字,点击可以直达该分组所在位置,创建新分组时自动在添加新按钮(Cursor说这叫“分组导航按钮”);二是需要在设置中增加管理分组功能,可以在这里删除分组,删除后该分组内的Todo自动移动到General分组,先增加第一个功能,增加分组导航栏
13、接下来让Cursor实现管理分组功能,Cursor创建了一个新的GroupManagementView视图来管理分组,可以在设置-管理分组中统一查看分组颜色标识、分组名称、分组内的Todo数量,也能点击删除,删除时会有确认对话框,并告知删除后的Todo会移动到General分组里
14、下一步优化搜索功能,目前的搜索框不是很好用,搜不到部分Todo条目,Cursor对搜索功能进行了优化,输入关键词即可在全部Todo内搜索,快速定位到搜索结果,但是有一个问题:在搜索到不在General分组内的Todo时,会同时显示搜索结果和“No Results”的提示,继续让Cursor优化,解决了这个小问题
15、之后让Cursor修改创建分组和Todo界面的英文,改成中文,Cursor还自动同步检查了编辑Todo界面,之后再让Cursor把设置界面的一些英文改成中文,模拟器测试OK,然后让Cursor结合当前应用的功能刷新了一下README
16、检查一下目前的文件中有没有深色模式相关的代码,Cursor检查后发现的确存在深色模式相关代码,但设置界面中没有对应的选项,于是开始修复,涉及了主应用入口、设置、SplashView、RecycleBinView等文件,并且发现存在两个设置文件SettingsView和SettingView,检查后删掉了SettingsView,测试深色模式可正常启用
17、DoitWith先到这里,回到NoteWith,在Xcode模拟器中运行时出现三处被弃用的语法警告,先让Cursor处理一下,之后对NoteWith的功能进行测试
18、首先是备忘录相关功能,点击创建备忘录按钮或右上角加号后,添加内容并保存,并没有出现在备忘录列表里,需要检查一下原因,多次修改后仍然无果,决定先让Cursor把数据存储方式从Core Data改回UserDefaults,这样可以简化数据管理,避免Core Data的复杂性
19、Cursor删除了8个涉及Core Data的文件,并清理其它文件中对Core Data的引用,创建了一个新的简化项目文件,移除所有Core Data相关的引用(已经自动备份了当前的项目文件),之后果然能够正常保存备忘录了,Cursor还是厉害,Core Data等以后比较熟悉了再切换吧,现在先用着UserDefaults
20、目前格式设置按钮在备忘录详情页标题下方,但选中文字时弹出的剪切、复制等按钮就会把格式设置按钮挡住,继续让Cursor修改:需要把格式设置按钮全都挪到备忘录详情页底部、字数统计栏上方,并且增加删除线、设置文字颜色按钮;删掉右侧的“清空内容”按钮;目前工具栏中的“A”图标对应的是什么功能?点击之后会卡死
21、Cursor在修改之后,格式设置功能还是有问题,决定让Cursor修改这些:备忘录详情的格式设置还是有问题,选中文字后,可以设置格式,但再次点击格式按钮后不会取消格式;另外在备忘录列表页,在某条备忘录的空白位置点击就会被标记星号,我的需求是只有点击到星号时才会被标记星号;还有,移除备忘录详情页标题旁边的分享和删除按钮,我暂时不需要;在设置中添加一个回收站功能,管理我删除的备忘录,可以在回收站中恢复已删除的备忘录,这些需求均被Cursor快速完成
22、继续测试并让Cursor优化AI对话页,测试发现在AI对话页面点击创建AI对话按钮和右上角的加号之后,都只会创建新对话,但不直接打开新对话,点击对话列表中的条目也无法打开;另外在设置中填上API密钥、API地址、模型名称后点击右上角保存,不会提示已保存,也不会返回到其它界面,让Cursor一并检查、修复完成,创建新对话后对以弹窗形式打开对话,且对话内容互相独立,设置模型信息之后点击保存会提示已保存,至此NoteWith的基本功能已经OK
23、然后让Cursor删掉了设置页的版本号、项目主页等不重要的信息,以后再继续测试、优化,包括AI对话和备忘录TAB调换顺序,增加深色模式,优化设置界面的交互逻辑(把AI模型相关的设置改成弹窗),“设置”改成“我的”等等
DevLog:2025年7月28日
1、上周经历了Trae、Lingma和Cursor的多轮修改之后,DoitWith原本已经具备的删除Todo和回收站功能暂时消失了,但RecycleBinView文件还在,决定让Cursor试一下恢复这个功能
2、但在模拟器中测试目前的DoitWith时,发现无法创建Todo,创建时Debug信息会提示:
UIKeyboardLayoutStar implements focusItemsInRect: – caching for linear focus movement is limited as long as this view is on screen.
Error: this application, or a library it uses, has passed an invalid numeric value (NaN, or not-a-number) to CoreGraphics API and this value is being ignored. Please fix this problem.
If you want to see the backtrace, please set CG_NUMERICS_SHOW_BACKTRACE environmental variable.
且应用会卡死,直接把这些错误信息给到Cursor,Cursor在修改TodoData.swfit、TodayView.swift、AddTodoView.swift之后,虽然可以构建成功,但又卡在了启动界面,不进入TodayView界面
3、在排查问题的过程中,Cursor在多个文件里添加了调试信息,以便于定位问题,后续可以把这些DEBUG信息给到Cursor,更有针对性的解决问题
4、多次修改之后仍然会卡在启动界面,决定暂时让Cursor简化当前的应用:“不需要Today界面了,进入应用后直接显示Todo界面,底部也不需要在Today和Todo之间切换,先看下都有哪些文件和代码可以简化”,Cursor征求我的同意后删除了TodayView.swift、MainTabView.swift,并对多个文件进行简化,在我的要求下保留了SplashView启动界面和RecycleBinView回收站,Cursor还顺便在设置中添加了回收站功能,简化之后的应用经Xcode模拟器测试,可以正常启动,且可以正常创建Todo
5、但是相比之前我的需求,缺少了长按菜单(删除Todo、修改截止日期、修改分组等)、Todo页面视图也过于简单,甚至看不到Todo条目的截止时间,但是相比之前多了左上角的“Edit”按钮,点击后可以对Todo条目进行拖动排序,后续调整和增加功能时,还是要遵循“小步快跑”的原则,不要一次调整或增加太多功能,这样出现问题后也比较容易排查
6、询问Cursor当前的文件中是否有长按Todo弹出的菜单相关代码、给Todo条目分组的代码,前者已经没有了,后者还存在,但功能未启用,决定先让Cursor完善一下Todo条目的显示:目前Todo列表中仅显示Todo标题,还需要显示描述(Description)、截止日期(Due Date)、重复频率(Repeat)信息,并且适当拉高Todo条目的显示高度,以容纳这些信息,Cursor很快修改完成,并且优化了显示效果
7、重复频率目前有Daily、Weekly、Monthly,分别对应日、周、月,需要增加一个Yearly,即每年重复提醒一次,继续让Cursor添加此功能,很快添加完成
8、感觉现在每一条Todo显示的高度有些太高了,需要稍微减小一些条目高度,可以适当缩短每个Todo的三行内容之间、每两条Todo之间的垂直间距,Cursor给出了修改前后的对比:
调整前:条目间垂直间距:8pt、内容间垂直间距:6pt、图标顶部间距:2pt
调整后:条目间垂直间距:5pt、内容间垂直间距:3pt、图标顶部间距:1pt
9、接下来修正一个问题:点击右上角“+”时,每条Todo的右侧会出现删除按钮,需要调整成点击左上角的”Edit”时,每条Todo的右侧会出现拖动调整顺序按钮(已有,且功能正常)和删除按钮,点击删除按钮可删除本条Todo,点击右上角“+”时,每条Todo的右侧不要再出现删除按钮
10、在修正这些问题之后,继续让Cursor修正删除Todo时卡死、删除的Todo不显示在回收站里,回收站里的Todo点“恢复”之后,不会显示在 Todo界面等问题,顺便解决数据结构冗余的问题(同时存在Todo和TodoItem两个结构体),Cursor在代码中添加了很多调试信息,方便定位问题,结合调试信息和Xcode代码窗口的错误提示,Cursor修正了这一问题,今天就到这儿了
DevLog:2025年7月25日
1、Trae今天早上竟然修正了昨天的无限循环的错误问题,可以构建,并在Trae的模拟器中打开应用了,但经测试发现,Today页面的头部缺失,只显示了截止日期为当天的Todo,而且也缺失右上方的添加和设置按钮,继续让Trae修正
2、不知道为啥用Trae修改应用时,既会修改我要求的地方,又会自己改一些我没有要求的地方,比如DoitWith中条目的样式、底部Tab的底色、底部两个Tab的名字(之前是英文Today和Todo,现在被改成了今天、待办),难道是我中途切换了模型导致的?
3、这两天Trae还出现了一个问题,就是会判定某个文件存在重复(但实际上并没有重复文件),然后删掉这个文件,再创建一个新的文件,但命名变成了全小写,比如maintabview.swift,之后再表示之前判断错了,并没有重复文件,这是在折腾啥?
3、AI IDE貌似存在一个通用的问题:初期能够很快实现简单的需求,随着后续功能增加,出问题的概率就会越来越大,近期从UserDefaults切换至Core Data时必出问题
4、下载了一个新的AI IDE,阿里的通义灵码,反正DoitWith也已经被Trae中的多个模型(Doubao-Seed-1.6、Kimi-K2、Claude Sonnet 4、Qwen-3-Coder)修改的面目全非了,准备试试,内置了Qwen-3-Coder、Qwen-3-Thinking、Qwen-2.5-max,可以使用Auto模式,也可以手动切换
5、先询问了Lingma对当前DoitWith的体验和优化和功能增强的建议,决定先让Lingma为当前应用增加Trae没能完成的重复任务功能:
我需要增加这个功能:支持为每个Todo设置“重复”,在创建Todo/修改Todo截止时间时,可以设置/修改重复频率,可选“每天、每周、每月、每三个月、每年”五种重复频率
6、Lingma添加了这个功能,涉及TodoData、TodoView、TodayView三个文件,并且要求它检查了,不存在语法错误,但是Lingma表示它无法直接构建项目,建议我在X中进行构建,甚至智能问答模式下不会主动修改文件,只会给出“应该改成什么样”的建议,要求它修改文件之后才直接对这三个文件做了修改
7、在处理一些警告时,再次出现了只给建议和示例,不直接修改文件的问题,再次要求后,在Xcode中构建仍然提示同样的问题,试试看将“智能问答”模式切换为“文件编辑”模式,但是使用过程中Lingma变得非常卡,点击“停止”后甚至卡住不动了,不完全退出后重新打开项目,历史记录显示已完成修改,Lingma IDE技术人员建议我用智能体模式,可以给出建议并修改文件,但是智能体模式同样无法直接构建项目
8、再次切换回Cursor,希望能够解决Trae和Lingma一直没能解决的频繁出现的编译错误,但提示免费额度已经用完了,充了一个月的Pro,支付宝付款144.11,之后Cursor开始修复问题并进行构建测试,很快就修复完成,构建成功,过程中提示解决了MainTabView的问题、数据结构不一致的问题、缺失的属性和方法问题、枚举类型问题、类型不匹配问题、组件引用问题、语法错误,问题着实有点多,可能都是之前频繁切换IDE和模型的后遗症,现在已经可以构建成功,然后又遇到了之前一直没能解决的卡在启动界面的问题
9、在“移除Today界面长按Todo弹出菜单,只可以点击Todo条目前的圆形按钮以完成Todo”之后,终于解决了应用卡在启动界面的问题,看来可能是Today界面的功能太过复杂导致启动时被卡住
10、今天的最后一步操作是:把界面右下角的设置按钮移动到Todo界面右上角,并且在设置中增加Todo条目统计功能,分为“待完成Todo”和“已完成Todo”两条显示,每次换用不用的IDE或模型,都会导致需求之外的改动,以后尽量只用一个Cursor,少用Trae和Lingma
DevLog:2025年7月24日
1、暂时没能找到Trae的官方交流群,官网引导到了稀土掘金的Trae用户交流圈,已注册稀土掘金并加入了交流圈,并且发帖询问Xcode模拟器测试时卡在启动页的问题
2、继续让Trae提供功能增强和优化的建议,基于Kimi-K2模型的分析,Trae给出了划分优先级的功能增强和用户优化建议,我只选了这两项:
1.重复任务:支持设置每周、每月、每三个月、每年重复任务,可以在创建Todo/修改Todo截止时间时进行设置/修改
2.Todo界面右上角添加多选按钮(图形按钮),点击可以多选Todo,并进行批量完成/删除操作
3.截止日期中的月份现在显示为英文,需要改成数字+中文,如“July”需改成“7月”
3、发现在切换模型为Kimi-K2之后,Trae不会自动检查语法错误了,也不会自动进行构建测试了,将模型切换为自动后,思考和修改过程又开始出现英文,明确要求了下以后不要用英文输出,但之后还是有出现用英文回答的时候,特别是复制Xcode的报错信息给Trae之后
4、不知道是不是Trae将我上面的第二条需求理解错了,修改了AppIcon,导致后续频繁出现编译错误,而且Trae在运行一段时间之后会提示“模型思考次数已达上线,请输入继续后获得更多结果”,这时如果使用的是带有深度思考能力的模型(比如Doubao-Seed-1.6),可能操作就会被打断,忘记了前面已经检查/修改到了哪个文件的哪一部分,手动选择其它不带有深度思考能力的模型就不会有这种“因中断而忘记进度”的问题出现
5、在使用AI编程的过程中还是尽量不切换模型比较好,切换模型之后Trae需要一些时间来熟悉整个项目,对之前出现的错误的理解可能也会有问题,而且使用Kimi-K2模型时,无法自动进行构建测试,切换到Qwen-3-Coder模型之后就可以自动进行构建测试了
6、貌似在今天的修改过程中,卡在了“重复任务”这条需求上,然后尝试让Trae去掉这个功能及相关代码,还在不断修复编译错误等问题
DevLog:2025年7月23日
1、今天没有让Cursor或者Trae优化应用,询问AI了解了Cursor和Trae的区别,这样看来可能Trae更适合我,免费,模型随意切换,开发流程自动化,对新手更友好
Trae与Cursor作为AI编程工具的代表,在定位、功能及用户体验等方面各有优劣,以下从多维度对比分析二者的优势与不足:
一、Trae的优势
本土化体验突出:专为中文开发者设计,提供全中文界面、中文代码注释及语义优化,支持直接通过中文自然语言描述需求(如“实现带登录功能的网页”)生成完整代码框架,更符合国内开发习惯。
免费策略与企业支持:完全免费使用,集成Claude 3.5、GPT-4o等模型(国际版)或Doubao-1.5-pro、DeepSeek系列模型(国内版),且支持私有化部署及企业级数据隔离,降低个人及企业使用成本。
开发流程自动化:通过Builder模式实现“对话式开发”,简化项目设置、文件创建及初始代码编写,支持实时预览开发成果;同时自动修复环境错误(如缺失依赖),对新手更友好,降低编程门槛。
二、Trae的不足
模型能力与多样性受限:国内版主要依赖Doubao-1.5-pro、DeepSeek系列模型,在复杂业务逻辑推理、代码生成质量及准确性上弱于Cursor的Claude、GPT系列模型;模型数量较少(国际版受政策限制不可用)。
复杂任务处理能力较弱:在复杂代码生成(如数字时钟、俄罗斯方块)、需求理解及优化上表现不足,生成代码可能存在功能缺失或运行稳定性问题(如闪退、报错)。
三、Cursor的优势
模型能力与多样性领先:支持Claude 3.5/3.7、GPT-4/4.5等国际顶尖模型,代码生成质量、逻辑推理及复杂任务(如跨文件开发、复杂项目上下文感知)处理能力更优。
生态与兼容性强:基于VS Code重构,保留其插件生态及跨平台能力,支持多语言(Python、Go等)和复杂项目开发,适合成熟开发者。
功能全面性与准确性:在代码完成质量(如环形进度条、数字时钟)、逻辑完整性及纠错优化(如修复猜拳游戏代码并优化)上表现更优,agent模式下对项目整体把控更精准。
四、Cursor的不足
使用门槛高:国内访问需技术手段(如网络工具),Pro版需付费(40美元/月),增加个人及企业使用成本。
中文支持不足:界面以英文为主,中文理解偶发歧义,本土化体验弱于TRAE。
新手友好度低:错误提示需手动排查,依赖插件组合完成开发流程,对零基础用户不够友好。
总结:Trae以本土化、免费及自动化开发为核心优势,适合快速迭代的中文项目及新手开发者;Cursor凭借顶尖模型与生态能力在复杂工程中更具优势,但存在访问及成本门槛。两者可根据开发者需求(如语言偏好、项目复杂度、成本限制)选择使用。
2、了解到阿里和腾讯也有类似产品,阿里通义灵码,腾讯CodeBuddy
DevLog:2025年7月22日
1、继续修改DoitWith,尝试让Trae完成编辑截止日期的功能:
完善添加和编辑截止日期的功能,在创建Todo时默认以当天为截止日期,也可自行选择截止日期,精确到天,长按每一条Todo可编辑截止日期,同样精确到天
2、Trae在修改过程中会反复验证语法是否正确,这一步应该可以提升在Xcode中构建成功的概率,减少因语法错误导致构建失败,Trae已经按上述要求添加了设置和编辑截止日期的功能,Xcode模拟器测试也已成功
3、接下来完善分组相关功能,比如点Todo界面右上角加号可以添加分组(目前已支持),在添加Todo时可以选择分组,默认放到用户创建的第一个分组里,长按每条Todo可编辑所属分组
4、Trae完成了上述需求,但应用存在一个问题,目前在创建Todo时,如果没有分组,应用中会提示请先创建分组,但点击无法创建分组,需要修改成这样:应用内预置“工作”和“生活”两个分组,在创建Todo时默认位于“工作”分组,且可以点击切换到其它分组(包含用户自行创建的分组)
5、同时给Trae提了另一个要求:以后除非我另做要求,都统一用iPhone 16模拟器来构建,但不在模拟器中进行测试,我自己会去Xcode中测试,但Trae貌似没有理会这个要求,也可能理解成了这是仅对上一条需求提的要求
6、发现Trae在构建成功后不会进行下一步,好像会卡在构建这步,即使底部的“终端”中已提示BUILD SUCCEEDED,当然可以选择“跳过”,没有任何影响
7、接下来完善TodayView,需在该界面显示截止日期为当天的Todo,可勾选完成,不需要其它长按菜单,如果没有符合要求的Todo,则该界面显示“今天没有待办事项 享受轻松的一天吧!”多次修改后未能完成,后来回想起之前Cursor在修改Today界面时,在 MainTabView.swift中,Today标签页显示的不是TodayView.swift组件,而是一个静态的“Today”文本,让Trae修改之后已经基本满足需求
8、下一步,让Trae添加Todo的删除和恢复机制,删除后进入回收站,可在设置界面进入回收站并恢复已删除的Todo,结合应用当前的功能写一个README文件
9、在Xcode中测试应用时再次出现了卡在启动界面,不进入Today界面的情况,但在Trae中进行测试时就正常,按指导清理了Xcode和模拟器缓存,但无效,之后暂时先在Trae的模拟器中进行测试
10、用Trae修正了在Today界面和Todo界面创建Todo和分组时,两个界面的数据同步问题,在其中任何一个界面创建Todo和分组时,都会同步显示在另一个界面
11、到现在已经把我在OpenRouter平台充的钱用完了,基本都是这两天在Trae中使用Claude Sonnet 4消耗的,这消耗的也太快了,当然Claude Sonnet 4的API价格比较贵也是原因之一,OpenRouter上的Claude Sonnet 4的价格是百万输入3美元,百万输出15美元,作为对比,DeepSeek-R1 0528的价格是百万输入和输出均为0.272美元
12、切换Trae的模型为Kimi-K2,先让它给应用增加回收站功能,可以集中查看已经删除的Todo条目,并且在右侧设置恢复按钮,可以恢复到这条Todo被删除时所在的分组中,Kimi-K2的表现好像还可以
13、决定让Kimi-K2来检查一下当前应用是否会在启动时卡在启动页,不进入Today界面,在对代码进行多次优化,比如优化数据加载逻辑,改进数据更新机制等等之后,在Xcode模拟器里测试应用仍然会卡在启动界面,但在Trae中测试时就可以正常使用,很奇怪
14、让Trae结合应用现有的功能,创建了一个README.md文件,放在应用文件的根目录里,今天到此结束