1、用Cursor将AINOTE应用的名字修改成NoteWith,并且在启动页的NoteWith下面增加一行小字“any AI LLM you like.”,将项目文件中出现的AINOTE字样也全部修改为NoteWith
2、Cursor快速修改了应用名称,甚至还同步修改了README文件中的描述,之后添加启动页面视图,用于显示应用名称和副标题,并测试编译是否正常,提示构建成功
3、继续修改部分文件夹和文件名字,并修正项目结构和路径引用等错误,Cursor总结如下:
1.主目录、工程文件夹、所有子目录、Xcode工程target、分组、路径、README、脚本等全部已改为NoteWith。
2.Xcode工程文件(project.pbxproj)所有引用、分组、target、产物名、路径等全部同步为NoteWith。
4、之后前往Xcode用模拟器测试该项目,模拟器运行成功,在GitHub里创建了一个本地库并且把项目文件都挪进去,这下ChatWith和NoteWith两个项目都放到GitHub本地库了,后面再尝试使用GitHub管理项目
5、模拟器测试NoteWith,发现有几个可以优化的细节:
1.备忘录页面,去掉顶部的“仅显示收藏”和“清空搜索”功能,不需要记录搜索历史
2.AI对话界面,去掉底部的清空对话、设置按钮,像备忘录页面那样在右上角增加一个加号,用于开启新对话
3.设置页面,去掉设置AI回复的最大长度(最大令牌数)功能和底部的预设配置选项,设置页面底部增加一个“关于NoteWith”,链接到README文件
让Cursor对这些细节进行调整和优化
6、Cursor今天好像不是很勤快,处理速度有些慢,说完“请稍等,我马上开始”之后就没动静了,再催一次之后才会继续,你不催,它就等,你一催它也能立刻开始
7、处理过程中,会话页面添加加号后Cursor告知目前的设计是点击后清空当前对话,开启新对话,但我的设想不是这样,我进一步明确需求:对话界面右上角的加号,点击后不要清空当前对话,可以直接弹出新对话窗口,并保留之前的对话,在新对话窗口左上角设置返回按钮,返回后可以查看之前的对话记录,Cursor进一步跟我明确了一些细节,比如返回后看到一个会话列表,需要为每个会话命名,以会话的第一个问题作为标题,且在会话列表中显示最后一次对话的时间,这次的改动貌似有点大,需要新增会话数据结构、支持多会话管理、新增会话列表视图、支持会话切换和新建等等,继续让Cursor修改
8、修改完之后询问Cursor目前的代码有没有什么问题和可以优化的地方,Cursor给出7条建议,包含AIService依然依赖旧的aiMessages、AIChatView新建会话按钮不会自动跳转到新会话、会话标题与时间显示优化等等,让Cursor对上述问题全部进行依次优化,之后进行构建测试提示构建成功
9、但用Xcode模拟器测试时发现存在两个错误:
Command SwiftCompile failed with a nonzero exit code
/Users/jinlei.wu/Documents/GitHub/NoteWith/NoteWith/ContentView.swift:41:21 Cannot find ‘AIChatSessionListView’ in scope
反馈给Cursor进行排查和修改,Cursor在修改后,告知如果还有类似“找不到类型/视图的报错,可以尝试清理构建缓存(Product>Clean Build Folder),然后重新编译”
但仍然存在错误,这次是3个:
Command SwiftCompile failed with a nonzero exit code
/Users/jinlei.wu/Documents/GitHub/NoteWith/NoteWith/ContentView.swift:2:8 File ‘ContentView.swift’ is part of module ‘NoteWith’; ignoring import
/Users/jinlei.wu/Documents/GitHub/NoteWith/NoteWith/ContentView.swift:3:8 No such module ‘NoteWith.Views.AIChatSessionListView’
10、原因在于AIChatSessionListView.swift文件确实存在在NoteWith/Views/目录下,但在Xcode中看不到这个文件,需要手动把这个文件添加到Xcode工程,找到这个文件并且拖拽到Xcode左侧栏的对应文件夹下,之后再构建就正常了
11、Cursor向我解释:Xcode工程的文件结构和磁盘物理文件夹是两套系统,在Finder里新建/复制的文件,不会自动出现在Xcode工程中,必须手动添加,只有Xcode工程中出现的文件,才会被编译、识别和引用
12、接下来继续优化应用,Cursor给目前应用的设置界面添加了数据管理功能,包括“清空所有备忘录”、“清空AI对话历史”、“重置所有设置”三个功能,但实际使用时基本不会用到,我都让Cursor给去掉了,另外在AI对话列表界面,最后一次对话的时间改为具体的日期和时间,而不是几分几秒前,Cursor按需求快速进行修正,Xcode模拟器测试成功
13、然后统一了备忘录列表页和AI对话列表页的显示样式,比如在AI对话列表页顶部添加搜索栏,AI对话列表的样式与备忘录列表样式保持一致等,直接开启Xcode模拟器进行测试发现会报错,Cursor分析问题在于:
你在 AIChatSessionListView.swift 里,把 .navigationTitle(“会话列表”) 用在了 VStack 或 if 语句后面,而不是直接用在 NavigationView 或 List 上。
.navigationTitle 只能用于 NavigationView 里的直接内容(如 List、ScrollView、VStack),不能用在条件语句或嵌套结构的外层。
并且给出了推荐写法,我还是让Cursor直接帮我修复了,测试构建成功,只有一处不影响功能的警告,当然也是继续让Cursor给修正,然后Xcode模拟器测试也已正常
14、回想起前几天ChatApp(现已更名ChatWith)在Xcode中测试时提示缺少Content和Preview文件夹,在指定路径手动创建文件夹后就可以正常构建,想让Cursor解决这个问题,但多次测试、修改之后,仍然需要这两个空文件夹存在于指定路径,但Xcode里好像看不到这俩文件夹,不知道怎么回事,Cursor表示:这两个文件夹如果Xcode项目结构里有引用,建议保留(哪怕是空的),如果确定用不到,可以在Xcode中移除引用后再删除
15、给ChatWith的启动界面添加了一个橙色背景,Cursor一开始给我改成了偏土色,后来在Color Hex网站试了一个稍微满意些的橙色(NoteWith的启动界面背景是稍浅的蓝色,且启动界面的文字、样式基本一致,这样会有种系列感)
16、今后任何修改都先在Cursor中进行构建测试,没有问题了再去Xcode中用模拟器测试
17、今后每周在功能补充和优化结束之后,都让Cursor基于应用现有功能更新一下README文件
18、本周对ChatWith和NoteWith的改动很大,涉及应用名称修改、功能增补、界面优化等等
19、为了完成今天这些需求,和Cursor说了十多次“好的继续”,基本上每完成一步就要说一次,还出现了两次可能存在网络问题的提示,是因为这个时间很多人都在用Cursor吗?还是因为公司网络状况不好?
20、猜测前几天在Trae中使用Claude Sonnet 4时多次出现文件被截断的问题,可能是由于触发了Claude Sonnet 4的输出字数限制?
标签: Trae
DevLog:2025年7月7日
1、开始测试Cursor,虽然是全英文界面,但在对话时完全可以直接使用中文,内置了一些模型,也可以自行添加兼容OpenAI的模型,创建文件夹test_c
2、提出需求“创建一个名为AINOTE的备忘录应用,内置富文本编辑器和AI对话功能,AI对话功能可使用兼容OpenAI的自定义大模型,可以将AI生成的内容收藏到备忘录中,该应用支持iOS设备”,Cursor会提示进一步明确、补充需求细项,让需求更具体,并且给出建议的技术栈、数据存储和同步方案等,之后给出项目结构、主要功能模块、关键技术点和开发计划,下一步即将生成项目初始化代码和主要模块的SwiftUI代码骨架
3、确认之后开始编写:按以下结构组织项目、创建主要的应用文件结构、创建数据模型、创建服务层、创建视图模型、创建主要的视图文件、创建备忘录列表视图、创建备忘录编辑视图、创建AI对话视图、创建设置视图、创建资源文件、创建README文件,之后开始修复代码中的问题、创建启动脚本帮助用户快速开始,chmod +x setup.sh 赋予可执行权限,之后便提示创建完成,到目前大概二十多分钟时间,并且支持iOS 17及以上
4、使用Xcode打开该项目时会提示
The project ‘AINOTE’ is damaged and cannot be opened. Examine the project file for invalid edits or unresolved source control conflicts.
Path: /Users/jinlei.wu/Desktop/test_c/AINOTE.xcodeproj
Exception: -[PBXGroup buildPhase]: unrecognized selector sent to instance 0x600003245ad0
Cursor猜测项目文件有问题,确认之后Cursor开始重新创建项目文件,配置Swift文件引用关系,之后提示可以正常使用
5、再次使用Xcode打开,Xcode提示存在3个小问题,但已经可以正常运行,且界面精致程度(再次吐槽Trae写的App竟然不会全屏)、功能丰富程度(仅对比AI对话界面)要优于Trae编的App
6、Xcode提示的三个小问题,交给Cursor修复:
Xcode提示这三个小问题,帮我修复一下
Desktop/test_c/AINOTE/Models/Note.swift:5:9 Immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
Desktop/test_c/AINOTE/Models/AIMessage.swift:4:9 Immutable property will not be decoded because it is declared with an initial value which cannot be overwritten
Desktop/test_c/AINOTE/Views/AIChatView.swift:60:26 ‘onChange(of:perform:)’ was deprecated in iOS 17.0: Use ‘onChange’ with a two or zero parameter action closure instead.
Cursor会快速修复并验证,提示成功,代码符合最新的Swift和iOS开发标准
7、再次使用Xcode打开,已经没有任何错误提示,就目前这种简单的应用编写和测试结果来看,Cursor的确要比Trae更胜一筹,Cursor会进一步明确需求、快速修复问题,且修复成功率更高,不清楚是否是因为我在Trae中主要使用的是Claude Sonnet 4,后续再对比测试
DevLog:2025年7月4日
1、得知在开发和测试阶段完全不需要交688
2、继续让Trae解决前一天的问题,猜测可能需求有些复杂了,于是简化需求:简化一下这个App,只允许用户添加一个大模型的API,无需添加多个模型并在不同模型间切换
3、Trae快速对前一天的代码和文件进行删减,并进行构建,提示构建成功,放到Xcode中会提示Build Failed,再次在Trae测试后仍然提示构建成功,已经解决了之前的构建错误
4、于是用Xcode打开当前项目,提示构建失败,但看了下错误提示,是缺少了两个文件夹,在项目文件夹的指定位置创建文件夹后再试,构建成功!模拟器启动,已经可以打开App、打开设置界面了,但未测试能否添加模型、能否与AI对话
5、发现这个App在模拟器上不能全屏运行,界面上面和下面都有大黑边,复制一份项目文件夹(命名test_2),让Trae尝试修正不能全屏的问题,Trae经过调整后表示已经修正,且构建成功
6、使用Xcode打开之后,提示构建成功,但还是不能全屏,继续让Trae修正,Trae修正后构建成功,再次打开Xcode打开test_2,已经可以全屏显示,并且避开了顶部的灵动岛,但输入框和发送按钮太靠近底部边缘,继续让Trae修正,添加了底部边距之后界面基本OK了,不是很理解,明明Trae在编写App时iOS系统版本是18.5以上,为什么还会有这种应用不全屏的问题
7、另外使用Xcode打开时还出现了如下错误提示:
/Users/jinlei.wu/Desktop/test/ChatApp/ChatView.swift:38:22 ‘onChange(of:perform:)’ was deprecated in iOS 17.0: Use ‘onChange’ with a two or zero parameter action closure instead.
询问豆包后得知,这是 Xcode 针对 iOS 17 及以上版本的 SwiftUI 代码给出的警告,表明Trae使用的onChange(of:perform:)方法已经被弃用,需要改用新的语法,参考豆包的答复稍作修改,错误提示消失
8、注册并下载了另一个AI编程工具Cursor,以后再试,先继续用Trae调整test_2
DevLog:2025年7月3日
1、首次测试AI编程工具Trae,接入了OpenRouter平台的Claude Sonnet 4
2、在Trae中输入应用需求后,创建项目文件夹(命名test),AI快速编写了iOS App,但我并没有进行构建测试,也不清楚是否有问题,需求:生成一个使用SwiftUI编写的对话App,可以通过该App与OpenAI兼容格式的大模型对话
3、进一步丰富了应用需求:继续完善这个App,需要允许用户添加多个大模型,并且在聊天过程中可以随时切换大模型
4、但Trae貌似陷入了死循环,不停地出现构建失败、检查问题、修复问题、再构建失败的情况,将模型切换成DeepSeek-R1之后不能直接帮我修改问题,只会分析问题可能出现在哪儿
5、用Xcode打开当前项目,提示构建失败,没注意看错误提示是啥
6、使用Trae的过程中多次收到提示“模型思考次数已达上限,请输入“继续”后获得更多结果”,且多次出现文件被截断的问题
7、注册了Apple开发者账号并且交了688