DevLog:2025年10月11日

1、节前发现的遗留问题如下,今天开始逐步修改:

1.当前搜索页面缺少返回按钮,实际上搜索功能目前还不全,搜完能看到关键词所在的对话/收藏,但点击不会跳转到对应条目,还得再完善下

2.联网搜索的触发词有点少,比如“今年”就无法触发搜索,需要进一步扩充,或者增加一个联网搜索按钮,点亮后开启联网搜索,或者改一下逻辑,在添加模型时只要填了Tavily Key,就开启联网搜索,并且在选择模型界面显示是否填写了Tavily Key,如果填写了就显示“联网搜索已开启”

3.问题太长时,对话界面上方的标题可能会断行,需要限制一下字数

2、首先修改上面的问题2,决定先用第三种方案,来解决部分AI模型因为训练数据比较老导致回答内容易出现错误的问题,要求Cursor修改一下联网搜索功能的逻辑,不再通过关键词判定是否开启联网搜索,而是在添加模型时只要填了Tavily Key,就会一直开启联网搜索,并且在选择AI模型界面显示“联网搜索已开启”,未填写Tavily Key的AI模型,则显示“联网搜索未开启”

3、但在这次修改后只要点击发送问题应用就会卡死,结合DEBUG信息,Cursor认为这是因为每次发送消息都会进行联网搜索会阻塞主线程,导致应用卡主,并且会消耗大量API配额、增加不必要的延迟,于是又给我改回了之前的方案1

4、可能方案2会比较合适?尝试让Cursor在发送按钮旁边增加一个“联网搜索已开启/已关闭” 的按钮,需要用户手动开启/关闭,默认是关闭状态,不用关键词来判定是否开启联网搜索,但在发送问题后仍然会让应用卡住,Cursor分析表示虽然代码本身是异步的,但可能存在网络请求没有超时控制(Tavily搜索请求可能长时间等待)、缺少用户反馈(用户不知道搜索正在进行)等问题,于是给TavilySearchService添加了超时控制、给AIService添加了搜索状态反馈,改进了AIViewModel和AIChatView的UI状态显示,但依然没有解决问题,甚至现在即使不打开联网搜索开关,点击发送按钮时应用也会卡死,而且也没有看到Cursor给AIService添加的调试信息

5、近期Cursor频繁更新,先更新一下再重新开启对话来修正这个问题,另外在将电脑系统更新到最新的macOS  Tahoe 26之后,由于整个系统的界面都有变化,ChatWith的一些UI也发生了变化,比如对话界面有些消息的边框看不到了,输入框的边框也看不到了,后面也需要调整下

DevLog:2025年9月30日

1、首先跟Cursor明确了模型切换界面AIModelSelectorView底部的确认和取消按钮的功能,切换模型时,点“确认”确认我对模型的切换,点“取消”则不切换模型,仍然保持打开模型切换界面前的选择,为实现这一功能,Cursor在这个文件里增加了临时选择机制,界面会高亮显示临时选择的模型,只有点确认时才会更新模型选择并关闭界面,在打开界面时,临时选择状态会设置为当前已选择的模型

2、昨天发现Xcode更新了,并且支持了Coding Intelligence功能,可以使用内建的Claude in Xcode(需要登录Claude账号),也可以自己添加模型或调用本地模型,还没有测试,感觉这个功能可能会和Cursor之类的AI IDE比较像,当然了更专注于苹果的应用

3、接下来可以试试用Icon Composer或者Asset Catalog给ChatWith for Mac创建一套图标

4、遗留问题如下,节后再修改:

1.当前搜索页面缺少返回按钮,实际上搜索功能目前还不全,搜完能看到关键词所在的对话/收藏,但点击不会跳转到对应条目,还得再完善下

2.联网搜索的触发词有点少,比如“今年”就无法触发搜索,需要进一步扩充,或者增加一个联网搜索按钮,点亮后开启联网搜索,或者改一下逻辑,在添加模型时只要填了Tavily Key,就开启联网搜索,并且在选择模型界面显示是否填写了Tavily Key,如果填写了就显示“联网搜索已开启”

3.问题太长时,对话界面上方的标题可能会断行,需要限制一下字数

DevLog:2025年9月27日

1、结合用户反馈对当前应用进行一些调整,首先优化模型选择界面AIModelSelectorView,在模型列表下方增加一个“添加更多模型”按钮,点击可以直达设置-模型管理界面,然后在模型选择界面底部增加确认、取消按钮,现在需要用ESC键返回至对话界面,不太符合电脑端的操作习惯

2、修改过程中,虽然我指定了文件AIModelSelectorView,但Cursor还是把确认和取消按钮放到了设置-模型管理界面下方,纠正后解决了,后续需测试点击取消,撤销对模型的切换操作,点击确认,确认对模型的切换操作

3、用户反馈当前搜索页面也缺少返回按钮,实际上搜索功能目前还不全,搜完能看到关键词所在的对话/收藏,但点击不会跳转到对应条目,还得再完善下

DevLog:2025年8月22日

1、从7月23日首次付费到昨天,已使用Cursor编辑了90511行代码,马上突破10万行
2、我发现在修改待办事项和编辑AI模型时有一个共性的问题:选一条AI模型或待办事项,点编辑时,会出现一个小的空白弹窗,选另一条AI模型或待办事项点击“编辑”时才会出现编辑窗口,之后就能正常编辑所有的AI模型和待办事项了,看看是不是AIModelSettingsView、AIModelManangementView、TodoDetailView这几个文件的问题,另外AIModelSettingsView里面为何还有针对gpt-4、gpt-3.5-turbo、deepseek-r1、claude-3的图标和颜色设置?我不需要这些预置的设置,模型由用户自行添加就可以了
3、Cursor表示根本原因在于Sheet逻辑显示不正确,可能是这三个文件使用了isPresented和if let的组合,当第一次点击编辑时,状态变量可能还没有正确设置,导致显示空白弹窗,同时也删除了预置的模型设置,问题顺利解决
4、从代码来看,AIModelSettingsView、AIModelManangementView,这两个文件的功能好像有些重合,询问Cursor后发现前者未被使用,且是一个独立的弹窗界面(可能是在AI对话界面选择模型-管理模型时的弹窗,但之前已经去掉了这里的“管理”按钮),后者正在SettingsDetailView中被调用,即设置-模型管理,于是让Cursor删除了冗余的AIModelSettingsAView文件
5、接下来让Cursor给AI模型管理界面添加一个测试功能,点击测试按钮可以测试能否正常响应,这样可以避免信息填错但一时未发现影响使用的情况,Cursor直接在AI模型管理界面每个模型的右侧增加了测试按钮,并且用颜色来区分测试状态,橙色为测试中,绿色为连接成功,并且显示响应时间,红色为失败,测试了下目前我添加的四个模型,deepseek V3响应时间最长,1373ms,火山方舟平台的deepseek r1响应时间最短,244ms,来自OpenRouter的claude 3.7 sonnet响应时间竟然仅有253ms,还是很让我惊讶的
6、改完上面的几个小问题之后,继续测试和完善待办事项相关功能,我发现“编辑待办事项”界面的优先级设置有八个按钮(包含文字和图标),但是不是只有四个分级?比如我点击文字“普通”,对应的优先级是紧急,我点击文字“低”,对应的优先级是普通,另外,我需要去掉“事项标题”、第二行“优先级”、“选择分组”这些文字,有点多余了,Cursor表示之前使用的是segmented样式的Picker,可能导致显示8个按钮且对应关系混乱,改成了自定义按钮样式,确保只有四个优先级,并且简化了界面上的说明文字,这样界面就更简洁了
7、接下来是截止日期设置的优化、添加重复频率功能,目前截止日期并非强制要求填写,但我需要必须填写截止日期,并且需要重复频率功能,也添加到这个页面,和选择日期的功能放在同一行,重复频率包含每天、每周、每月、每年,只要选择了重复频率,就要在待办事项列表中体现重复频率
8、发现新建待办事项和编辑待办事项两个视图好像界面不一样,但功能是一样的,实际上新建待办事项对应的文件是AddTodoView,编辑待办事项对应的文件是TodoDetailView,于是要求Cursor也修改了另一个文件的优先级选择按钮样式,并打开两个文件,手动对齐了下界面上的文字显示效果,但感觉还是略显杂乱
9、还有一个问题,即使只有一条截止日期是今天的Todo条目,也会在待办事项页面右上角显示1逾期、1今日,我需要的是真正过期的Todo条目,比如截止日期是昨天的Todo条目,才被判定为逾期条目,Cursor表示问题在于overdueItems的计算逻辑,同时还修正了overdueTodoCount的计算逻辑、isOverdue方法
10、然后调整分组相关逻辑,要求每次创建新的待办事项时,都默认选择“默认”分组,编辑待办事项时,显示当前这条待办所在的分组
11、剩余其它功能规划:1.可以选择AI对话内容中的部分文字并进行复制等操作 2.完善设置中的导入/导出功能,支持将外部内容导入到备忘录,支持将备忘录导出成txt或md,下周再说

DevLog:2025年8月19日

1、今天还是修正BUG的一天,先处理昨天的遗留问题:1.AI回答内容里的“.”都显示成了“。”,网址和代码都受此影响;2.思考内容虽然支持流式输出,但始终只能看到两行,看不到全部思考内容;3.提出问题后,只有主动滑动一下才能看到底部的“AI正在思考中”的提示
2、开启了一个新对话,先修正英文句号都被替换成中文句号的问题,Cursor添加了一些调试信息来帮助定位问题,在开启新对话并测试的过程中发现这个问题竟然已经被解决了,我一直在看之前存在错误的对话内容,竟然没有变成正常的渲染结果?先保留调试信息,便于以后再测试其它
3、接下来修正第二个问题,在和支持深度思考的模型对话时,思考内容虽然支持流式输出,但始终只能看到两行,看不到全部思考内容,在修正这个问题之后,我添加了火山方舟的bot,填写了完整的Base URL(https://ark.cn-beijing.volces.com/api/v3/bots/),但对话时收到404错误信息,看来是之前的URL处理逻辑存在问题,Cursor修改了判断逻辑,如果是完整路径就直接使用,如果只有部分路径就自动添加前缀,如果包含api、bots、v3、v2,就直接使用,不添加额外路径,如果是基础路径就自动补全,再多次测试后发现火山方舟的bot路径依然需要应用自动补全后面的/chat/completions,这下常用的模型路径基本都OK了
4、接下来是昨天遗留的第三个问题:提出问题后,只有主动滑动一下才能看到底部的“AI正在思考中”的提示,Cursor改进滚动目标判断、优化滚动时机、增强加载状态处理、改进滚动锚点之后,在发送消息后界面即可自动滚动到底部,显示“AI正在思考中”的提示,搞定
5、继续,这次设置一下打开新对话时的默认模型,直接用模型列表里的第一个模型,“选择AI模型”界面,去掉右上方的“管理模型”按钮,在未打开任何AI对话时,界面右上角不显示“选择模型”
6、接下来修改一下AI对话列表和备忘录列表,两个列表中的条目点击区域都需要加大,整个横条都可以点击;两个列表都需要增加右键菜单,AI对话列表的右键菜单包含置顶/取消置顶(底色有所区别,带pin.fill图标)、修改(弹出对话框修改标题)、删除,备忘录列表的右键菜单包含置顶/取消置顶(置顶后底色有所区别,带pin.fill图标)、删除,Cursor在修改过程中先实现了AI列表页的邮件菜单,但备忘录列表页不支持,提示Cursor对比两个列表的右键菜单实现方式,并去掉了多余的NoteRowView定义,到这里右键菜单和点击区域都搞定了
7、发现刚刚删除的AI对话内容没有出现在设置-回收站里,让Cursor修复回收站相关功能,需求是:目前设置中已有回收站管理入口,但我删除的内容没有出现在回收站里,需要修复一下回收站功能,将回收站分为备忘录回收站和AI对话回收站两部分,可分别管理被删除的备忘录和AI对话,可清空回收站、永久删除、还原到对应的列表中
8、修改过程中虽然Cursor添加了多处调试信息,但测试时我点击设置-回收站,都没有出现调试信息,后来发现其实有两处回收站管理入口,一处是设置-回收站,一处是设置-快速操作-管理回收站,上一步Cursor添加的回收站管理功能都对应第二个入口,但我需要的是第一个入口,于是让Cursor进行了修改,Cursor同时去掉了原有的RecycleBinManagementView(简单界面且功能不完整)
9、Cursor在修改过程中机械地将RecycleBinView嵌入到了SettingsView里,就像把一个弹窗直接放进了界面里一样,不仅丑而且还有单独的标题和关闭按钮,于是让Cursor对回收站界面稍作优化,这次移除了冗余的标题栏,优化了标签页设计,改进了空状态提示,并且优化了列表项设计,风格与应用整体保持统一
10、其它功能规划:1.给AI模型添加界面增加一个测试按钮,添加新模型时先试一下能不能正常响应 2.可以选择AI对话内容中的部分文字并进行复制等操作 3.设置界面已经有数据管理功能,就不需要“设置概览”这个界面了 4.在设置中增加导入/导出功能,支持将外部内容导入到备忘录,支持将备忘录导出成txt或md,当然这些都是小改动,后面还想把Todo功能加进来,让应用功能更丰富一些
11、之前iOS版的DoitWith已经具备了一些核心功能,我询问Cursor能否将这一应用的功能整合进来,并且复用已有的文件和代码,Cursor回复可以,需要提供核心视图文件、数据名、关键功能和其它特殊需求,但由于DoitWith使用的是UserDefaults而非Core Data,Curs建议迁移到Core Data,与备忘录和AI对话使用统一的数据层,并给出了“基础功能整合(创建Todo数据类型、实现基本的GRUD操作、添加导航入口)-功能完善(添加优先级、分类、截止日期、实现搜索和筛选、添加回收站支持)-高级功能(AI助手集成、提醒功能、数据导入导出)”的分阶段实施步骤
12、虽然Cursor觉得可以这样操作,但我还是决定重新创建Todo功能,后续再详细规划需求,分布执行,这样应用就变成了NoteWith-Note/Chat/Doit, all in One