DevLog:2025年8月8日

1、NoteWith默认模型的切换还是存在问题,正确的逻辑应该是:我将模型B设置为默认模型时,模型A自动取消默认模型状态,反之亦然,但现在我将模型B设置为默认模型时,模型A仍然还是默认模型;并且我将模型B设置为默认模型时,新建AI对话后自动使用模型B,多次修改后无果,决定先简化一下模型的选择和切换逻辑
2、简化内容包括:去掉“默认模型”和“当前模型”相关设置,在模型设置中不需要这两个功能,也不需要设置这两种状态,在创建新对话时,直接用AI模型列表里的第一个就行
3、测试发现Cursor直接把AI对话界面右上角的模型切换功能也给去掉了,还得加回来,在加回这个功能的过程中,我询问Cursor“你看下是否需要单独的视图文件来管理这个功能”,Cursor的确创建了一个单独的ModelSelectorView文件,但在将这个文件添加到项目文件的过程中,Cursor又突然说项目文件被损坏了,并且决定不创建单独文件,改为在AIChatView中直接内联定义ModelSelectorView,并且又恢复了昨天备份的一版项目文件,再次更新引用,感觉有点绕圈了,为什么之前可以直接修改项目文件,现在不行了呢?而且它这样恢复备份之后,我还得关掉Xcode,重新打开项目所在文件夹,好在测试后实现了我的需求
4、模型管理相关功能已经基本OK了,接下来就是思考内容的流式输出,在ChatWith上花了很多时间想完善这个功能,但一直没能达成,先跟Cursor明确下需求,针对支持深度思考的大模型,目前的应用是否会对思考内容进行流式输出?我需要看到支持深度思考的模型的思考过程,先流式输出思考内容,再流式输出回答内容,且思考内容和回答内容在样式上要有所区别,思考内容要支持折叠和展开
5、Cursor表示目前已经有部分功能支持了 ,但需要完善流式输出逻辑,更好地处理思考内容和回答内容的分离,并且优化UI交互(思考内容的折叠和展开),修改完成后测试,发现即使用的是DeepSeek-R1(深度求索官方的API)也不会出现思考过程,另外还有两个影响使用的问题1.在同一个对话里多次对话后,AI的输出就会变得特别卡,我再提出新问题时也会变卡 2.目前的markdown渲染也不是很完善,比如回答内容里有python代码时就无法正常渲染,可以看下截图,是不是还要再完善下MarkdownRenderer
6、Cursor认为可能是历史消息过多导致内存占用过大、每次发送消息时都加载全部历史记录、流式输出时的状态更新过于频繁,优化了AIViewModel、AIService中的历史消息处理,之后完善MarkdownRenderer,以支持代码块、语法高亮和图表,修改完成后连续回答多个问题之后应用还是会卡顿,对代码块的渲染效果也不是很好,另外还发现,在切换一个对话的模型之后,其它对话的模型也都会随之切换,我需要在每个对话中保存对模型的选择,比如在对话1中选择模型A,对话2中可以选择模型B,对话3中选择模型C,应该互不影响
7、Cursor认为卡顿是因为每次流式更新时都在主线程更新UI,并且频繁的状态更新导致界面卡顿,继续优化了AIViewModel中的流式更新逻辑,关于模型的选择,需要在每个对话中独立保存模型选择,修改之后前者略有改善,后者已经搞定
8、继续优化一下模型选择器的触控区域:点击AI对话界面右上角选择模型时,选择模型时,需要加大触控选取的范围,我需要点击整行时都可以选择对应的模型,现在只有点击文字区域时才会选择对应的模型,Cursor修改成了整个模型行都是可点击区域,并且认为这更符合iOS用户习惯
9、昨晚GPT-5刚发布,今天早上打开Cursor就提示已支持,并且可以免费使用,但我没有试用
10、突发奇想,问Cursor能否通过Tavily实现联网搜索,竟然可以,快速创建了一个Tavily搜索服务TavilySearchService,并且在AIConfig中添加Tavily API密钥配置,修改AIService集成Tavily搜索功能,Cursor表示需要在对话过程中输入搜索、查找、最新、新闻、今天、现在、实时、当前、最新消息、最近、近期等关键词才能触发联网搜索,并且会将搜索结果作为上下文提供给AI,但目前会自动获取前3个最相关结果
11、以后再测试集成Tavily搜索的效果如何,再看看要不要增加搜索结果数量,要不要调整填写Tavily API的位置等等
12、发现这两天Cursor明显变慢了,经常在修改过程中等待很长时间

DevLog:2025年8月6日

1、目前在对话界面提交问题后应用还是会卡死,也没有“AI正在思考中”的状态提示,先让Cursor继续拆分ChatView,检查有无功能重复,如果与现有的单独文件有重复就保留单独文件,并且拆分ChatView中的部分功能为单独文件
2、Cursor拆分出了MessagefViews、ChatInputViews、ModelSelectorView、MessageDetailView四个文件,总计约200行,移除了所有重复的组件定义,提取的组件可以在其它地方复用,更易维护,ChatView现在是一个结构良好的主视图文件,进一步的拆分可能会增加不必要的复杂性
3、接下来继续测试功能,好像在和支持深度思考的模型对话时应用会卡死,且不输出回答内容,和不支持深度思考的模型对话时就能正常输出,但我现在不需要展示思考过程,直接给我展示AI的回答内容就行;另外,AI对话界面不能随着流式输出向下滚动;收藏时没有收藏成功的提示;收藏后的内容没有出现在收藏列表里,让Cursor检查下这几个问题
4、在让Cursor解决上述问题的同时,进一步优化MarkdownRenderer,以实现对表格的正确渲染,昨天测试了一个问题发现AI的回答中有表格,没能正确渲染,还是显示了大量的Markdown语法
5、发现在收藏列表页,点击收藏条目时不会打开,无法查看详情,而是会直接复制收藏的条目,看来可能在拆分文件后有部分功能失效了,继续修复
6、Cursor单个对话的Context Usage,难道是每天有限额,第二天自动重置?
7、再优化一些细节:去掉收藏列表长按菜单中的“查看详情”,直接点击就可以查看详情了, 不需要额外的按钮;现在AI回答内容和收藏内容都不能选取文字并复制,需要添加这个功能;还有对话列表向上滑动时底部会出现大片空白,我需要像收藏列表那样向上滑动时到最后一条就停止,不要出现大片空白;收藏夹列表右上角也添加设置图标,点击可打开设置界面
7、多次修改对话列表页底部的大片空白问题,在让Cursor添加调试信息后,发现可能存在重复计数的情况,将DEBUG信息截图发给Cursor并修复后解决了问题,并且还找回了之前不知道什么原因被删除的历史对话,没想到竟有意外收获
8、之后去掉了Cursor为了便于调试给对话列表和收藏列表添加的底色,并且在设置里添加了数据统计功能,可以查看对话数量和收藏数量,然后再优化三个细节:AI对话界面右上角显示的模型名称字体有点小,可以和左上角的“返回”字号保持一致;另外每次打开新对话时都使用默认模型,不用在设置中对模型进行选择了
9、接下来解决查看收藏相关的问题,比如:每次打开应用后,第一次打开一条我想要看的收藏时,弹窗是空白的,再打开另一条就可以正常看到内容;收藏列表貌似不是按收藏时间倒序;新收藏的内容不会立刻出现在收藏列表里;在对话中点击已收藏的内容并“取消收藏”时,不会取消收藏,多次修改后收藏和取消收藏功能均已正常
10、还有一个问题:目前的ChatWith用StoryBoard作为启动页面,NoteWith和DoitWith则是用SplashView作为启动页,这两种形式有啥区别?Cursor表示使用前者的场景有:简单的品牌展示、快速启动需求、不需要复杂动画、团队习惯Interface Builder;使用后者的场景有:需要启动动画、需要初始化逻辑(网络检查、数据加载等)、需要用户交互、需要动态内容、偏好代码管理,于是果断选择切换成SplashView,并且要求了ChatWith用40号加粗白色、副标题用title3、颜色用.white.opacity(0.8),和NoteWith、DoitWith保持一致
11、测试发现虽然可以正常启动,但我不清楚目前用的是SplashView.swift还是LaunchScreen.storyboard,Cursor检查时发现之前的LaunchScreen.storyboard还是没有删干净,除了文件本身外,还涉及了Info.plist、project.pbxproj中这个文件的引用,虽然这些地方都被Cursor修改了,但应用出现了不全屏显示的问题,清理Build Folder、重置模拟器之后,应用依然不能全屏显示,可能还是受到了早期代码的影响?
12、这次Cursor甚至创建了一个单独的全屏管理器FullScreenManager.swift,在多个生命周期点设置全屏,并在ChatWithApp、ContentView、SplashView、Info.plist中采用了多层全屏配置
UIScreen.main.bounds显示的是(0.0, 0.0, 320.0, 480.0),貌似是iPhone4的尺寸,后来还采用了硬编码的iPhone 16尺寸,依然没有解决问题,但我觉得应该没有这么复杂
13、之后把DoitWith的SplashView文件发给Cursor,对比了下有没有影响是否全屏的东西,也让Cursor重点检查下创建比较早的文件,看看有没有影响是否全屏的东西,毕竟这款应用刚由Trae创建时也存在不能全屏的问题,但还是没有解决问题
14、先让Cursor清理了多余的强制全屏的文件和代码,包括刚刚创建的FullScreenManager,之后在Cursor中开启新对话,决定让claude-4-sonnet来检查下为何应用不能全屏,并且要求只解决不能全屏显示的问题,不要修改其它功能,但这个模型在国内无法正常使用,即使架了梯子也不行
15、继续用Auto模式在新对话中检查不能全屏的问题,按照建议修改了下也没能全屏,然后在Trae中切换到Claude-4-Sonnet模型,继续检查不能全屏的问题,虽然没有直接解决问题,但它帮我发现了目前项目文件夹里有两个SplashView.swift,于是询问Cursor哪个是多余的,Cursor建议删除根目录中的SplashView.swift,保留Views文件夹中的同名文件,并修改项目配置,确保正确引用,但即使删除了根目录中的文件,并修改了引用,应用依然不能全屏

DevLog:2025年8月5日

1、今天先处理一下ChatWith在使用深度思考模型时的显示效果问题,目标是如果模型支持深度思考,那就在对话过程中先展现思考过程,思考过程结束后折叠思考内容,继续展现回答内容,整个过程都需要流式输出,且能随着输出过程自动向下滚动
2、Cursor在修改过程中,根据我提供的调试信息再次添加了更详细的调试信息,再次测试时发现1.虽然可以看到思考过程,但却是在回答结束后才发现在回答内容上方有思考过程,应该先让我看到思考过程,思考结束后再呈现回答内容 2.思考过程显示不全,只能看到一部分 3.一旦折叠或展开思考过程,就会自动跳到对话界面的底部,体验也不是很好,最好是我在折叠或展开思考过程时,仍然停留在当前位置
3、这三个问题还没有解决,又发现在AI输出过程中,CPU占用率可以飙升到100%,且回答内容越长应用就会越卡顿,一旦回答完成或点击返回到对话列表后CPU占用率立即下降到0%,Cursor认为这种性能问题是由于存在多个重复的滚动监听器,并且每次流式输出都会触发频繁的UI更新,优化后性能有了明显的改善
4、多次修改后仍然不能完美解决思考过程的展现,决定暂时简化掉这一功能,去掉对深度思考过程的展现,直接流式输出回答内容,已实现
5、然后测试时发现MarkdownRenderer需要再完善一下,比如AI回答的内容里如果有链接,还会显示成带有Markdown语法的形式,不会直接显示成链接,另外还需要优化一下对话界面,在发送问题之后,发送按钮变为停止按钮,点击可以打断AI的回答,已实现
6、目前的对话列表中,长按对话可在菜单中选择置顶,但置顶后的对话和其它对话在样式上没有区别,让Cursor优化一下显示效果,Cursor优化的效果还不错,比如加上了与启动界面颜色一致的细边框、PIN图标、置顶标识、渐变背景等等,之后又边测试边让Cursor处理了无法取消置顶、对话列表不按最后对话时间排序、对话时间只显示小时和分钟等问题,并且去掉了多余的置顶和模型图标
7、出于好奇,询问了Cursor有没有必要将对话列表和收藏列表拆分成单独的视图,Cursor表示强烈建议拆分,目前这两个列表均在ChatView内,而ChatView已经有1300多行代码,包含了太多不同的功能模块,违反了单一职责原则,且代码组织混乱、状态管理复杂,建议拆分除单独的ConversationListView、FavoritesView、SearchView,并创建一个ConversationManager数据管理器来处理共享状态
8、Cursor还给出了分步骤的实施建议,先创建新文件结构,拆分独立文件,再优化数据管理,创建ConversationManager,减少重复代码,之后再组件化,提取可复用组件并创建Components目录,以提高代码复用性
9、虽然现在应用功能并不多,但拆分过程中也容易出现各种错误,比如已经拆分为单独文件的视图和原有的代码并存导致冲突,需要边修改边构建,之后再详细测试每一个功能确保应用功能正常,Cursor在拆分完成后表示,现在应用有了更好的架构基础,便于未来的功能扩展和维护
10、在Xcode模拟器中测试调整架构后的应用,发现如下问题,可能是拆分单独的视图之后导致的功能丢失:对话内容无法通过长按复制/收藏;发送问题之后会出现错误提示“请先配置API密钥”,但我已经配置了模型信息;“设置”界面左上角需要添加“返回”按钮;收藏列表需要以对话列表的样式显示,每条收藏在列表中仅显示两行文字即可
11、在修复上述问题的过程中遇到了对话长度超限的问题,不得已开启了新对话,在修复几处错误之后,Cursor试图开启模拟器帮我测试应用,我更习惯自己在模拟器中测试,回复“以后我自己”(其实还没有打完就点了发送),Cursor竟然理解了我的意思,回复说“好的,我理解您想要自己处理后续的操作”
12、再次测试,发现这些问题:新收藏的对话内容没有出现在收藏列表里;发送问题之后没有“AI正在思考中”的提示;回答过程中会同时出现两条一样的回答内容,回答结束后仅显示一条
13、Cursor没能一次解决上述问题,测试发现还有新问题:发送问题之后仍然没有“AI正在思考中”的提示;我需要以流式输出显示回答内容,不要一次跳出全部回复内容;对话界面需要跟随流式输出向下滚动,始终显示最新的回答内容;收藏列表需要按收藏时间倒序排列
14、在修改过程中,Cursor建议将ChatView的body结构拆分为更小的组件,比如消息列表、输入框、头部等分别提取为独立组件,以减少嵌套和条件判断,但多次修改后仍然频繁出现错误,比如问题提交之后应用就会卡死、新建对话后原有的对话会消失、同时输出两条一样的回答内容、对话中只能看到最早的一个问题,其它的内容都不显示 等等问题,猜测可能是在将ChatView拆分成多个文件之后,在拆分组件时,出现了功能上的重复和冲突,于是让Cursor继续检查ChatView和Views目录下的文件有没有功能重复的情况
15、目前在对话界面提交问题后应用还是会卡死,也没有了“AI正在思考中”的状态提示,明天让Cursor继续拆分ChatView,检查有无功能重复,并添加调试信息定位问题,还有另一个问题也明天处理:目前的ChatWith用StoryBoard作为启动页面,NoteWith和DoitWith则是用SplashView作为启动页,这两种形式有啥区别?
16、最近Cursor在更新之后添加了一个Context Usage的提示,以后注意时刻关注这个用量提示,如果要对应用做比较大的改动,但用量快到顶了,就开启一个新对话,虽然可以选择参考上次的对话内容,但好像参考的效果不太行

DevLog:2025年8月4日

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: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修改

Mac常用App推荐:印象笔记、OneNote、熊掌记 哪个笔记App更适合文字工作者?

出于工作原因,从2014年开始从事文字工作至今,笔者每天都在跟文字打交道,每天都是在写稿、审稿、翻译、分发。并且是以纯文字形式的笔记为主。办公设备陆续换了好几次,笔记App也陆续尝试了多款,比如印象笔记、有道云笔记、OneNote、熊掌记、讯飞语记等等。

在本文中,笔者将从自身工作角度,重点来对比一下用户群体较大且评价较好的印象笔记、OneNote、熊掌记这三款笔记App。只是给大家一个参考,建议大家也多尝试一些,说不定会发现更适合你的笔记工具和方式。

顺便说一下,如果你更习惯使用iPad等平板电脑,以手写的形式来记笔记,喜欢勾勾画画,或者经常要查看和整理各种PDF资料,那这篇文章可能不适合你。建议试试Notability、Squid、GoodNotes之类的App。

首先来说说印象笔记。

笔者从2014年开始使用印象笔记,一直用到现在,中间也用过一段时间的有道云笔记(两者无论是外观布局还是功能都比较像)。但感觉不如印象笔记好用,甚至在使用有道云笔记时遇到过丢失笔记的情况。

2018年6月,印象笔记宣布脱离Evernote,成为独立公司。并逐渐开始针对国内用户的使用习惯进行一些更本地化的优化,在功能越来越丰富的同时,也显得有些臃肿。

如今的印象笔记,不仅可以用来记录文字内容,还可以创建思维导图、桌面便签、Markdown笔记、音频笔记等多种形式的笔记。也可以在笔记中添加录音、图片、附件和素材库中的内容(素材库可以统一管理图片、文档、音频等文件)。

印象笔记吸引笔者的功能在于如下几点:

1、桌面便签功能很实用,可以停留在桌面的任何位置,点击可以继续输入或修改内容,不仅可以输入文字,还可以快速截屏、添加录音,或者设置待办事项复选框,用作待办事项管理工具。

2、能以单独的窗口打开某篇笔记(在某篇笔记上右击,以新窗口打开笔记),这样就可以只显示这篇笔记,不会显示窗口左侧的内容,在写作过程中可以避免分心。

3、笔记的分类管理简单便捷,只有笔记本-笔记两级,虽然层级比较少,但个人认为这种类似文件夹结构的分类方式很简洁明了。如果需要更多层级,可以用标签功能,在标签下继续创建下一级标签,理论上是没有层级数量限制的。

4、可以一键简化格式,或者一键设置为纯文本。我们在网上搜集的资料大多带有格式或图片,简化格式之后,原本复杂的排版瞬间就清楚了。能让你更加专注于内容本身,也有利于整合不同来源的内容。

5、可以在笔记中添加链接,选中文字,链接到另一篇笔记,就可以在相关的笔记之间快速跳转。

6、配合浏览器扩展“印象笔记·剪藏”,可以快捷地收藏网上的文章,可以选择保存网页正文、整个页面、网址、页面截屏等等,无需担心来不及看的文章被平台删除。目前在Safari、Chrome和Edge浏览器中均可安装此扩展(名为印象笔记·剪藏或Evernote Web Clipper)。而在移动端,也可以在微信和微博中实现类似的操作。

7、印象笔记覆盖了全平台,无论是安卓、iOS、macOS、Windows都能通吃,还有可以直接在浏览器中运行的网页版。且同步速度很快,使用这么长时间还没有遇到过同步失败或需要手动同步的时候。

需要注意的是,印象笔记免费账户只能支持2台设备同步,对于很多用户来说可能还是不够用。可以选择订阅标准账户、高级账户和专业账户。标准账户对只需要处理文字的用户来说也够用了,当然如果还有其他需求的话,那就升级高级账户或专业账户。

高级账户和专业账户相比标准账户,增加了更多的OCR、PDF文件的搜索和标记、节点更多的思维导图等功能。还能查看笔记历史,查看和导出笔记的历史版本,查看推荐的相关内容,找到曾经写过的有关的笔记。 具体选哪种账户,这要看大家的使用需求了。

接下来说说OneNote。

OneNote是微软推出的笔记工具,与印象笔记相比,OneNote在记笔记时更加灵活一些,更像是传统的纸质笔记本,可以在任意区域直接输入文字,查看时就是一块一块的内容。不仅如此,OneNote还可以设置纸张颜色、纸张样式,就像纸质笔记本一样,很适合在平板电脑上配合手写笔来写写画画。

目前OneNote的版本有些混乱。在Windows平台,有OneNote 2016、UWP版本(Windows 10系统自带)和订阅Office 365之后才能获得的OneNote三个版本。从2020年3月开始,安装Office 365或Office 2019时,OneNote桌面应用将与Word、PowerPoint和Excel桌面应用一起安装。

如果你使用的是macOS,可以直接从App Store中下载OneNote。如果没有下载的话,在安装Office 365时,会自动安装OneNote。移动版覆盖了安卓和iOS平台,同时还有网页版,但可能是网络原因吧,笔者一直都没能尝试成功。

OneNote相比印象笔记的优点在于分级更明确、更丰富。可以创建多个笔记本,每个笔记本下可以创建分区组、分区,分区下可以创建页面,页面下还可以创建子页面。如果你需要更细致的分类,OneNote是个不错的选择。

为了便于收集资料,OneNote也可以在浏览器中安装类似印象笔记·剪藏的浏览器扩展,名为OneNote Web Clipper。是的,名字也很像,使用体验也基本一致。可以帮你把想要收藏的内容保存到笔记本中,无需担心被删除。

使用一段时间之后,有一个小问题让笔者感觉很别扭,如果想把OneNote笔记中的内容复制粘贴到微信里,就会变成一张图片。但粘贴到Word文档里是正常的,写完的文章想要分发到头条号等平台,也是可以直接粘贴为文本的。所以,这是微信的原因吗?

OneNote广受诟病的不足之处在于同步功能不够给力。笔者最近就经常遇到各种同步错误。比如在电脑端修改之后经常只是本地保存,或者提示已离线保存、已脱机保存,不能同步到云端,切换网络也同样如此,很是麻烦。笔者最近一次从印象笔记导入OneNote的部分内容,在手机端查看总会与电脑端不同步。 不知道是不是笔者的网络环境问题。

印象笔记和OneNote二者相比,各有各的优势和不足。如果你的日常工作以文字内容(比如写文章)为主,那印象笔记更加适合你。 如果你需要使用平板电脑来记笔记,并且经常使用手写笔,那OneNote更为合适。

小结一下,印象笔记和OneNote虽然功能丰富,能满足多样化的使用需求,但总给人以臃肿的感觉。虽然并没有影响运行速度,但就像我们P图一样,有时候用美图秀秀能搞定的事,就没必要打开Photoshop了。

接下来笔者就来说说这款足够简洁,但却并不简单的笔记工具:熊掌记(Bear)。

首先在界面上,熊掌记相比另外两款要简洁得多。分为标签、笔记、编辑器三栏,如果你还想要更简洁的话,可以选择只显示笔记和编辑器,甚至只显示编辑器。

熊掌记无法设置笔记本或者分区,而是用标签来分类的。只需笔记中有用两个#括起来的汉字,这些字就可以成为标签,自动在窗口左侧显示。点击标签可以查看使用这一标签的所有笔记。一篇笔记中可以有多个标签,还可以创建子标签来丰富层级。

除了这些之外,可以以新窗口打开笔记,只显示这篇笔记的内容,让原本就很简洁的页面更加简洁纯粹,便于专注书写 。

但是熊掌记也存在一些不足,比如,如果不付费的话,是不能跨设备同步的。即使是登陆了同一Apple ID的笔记本和手机,也不能同步。也就是说,如果不付费,只能当做纯本地的笔记App来使用(还不如macOS自带的备忘录)。

而且,熊掌记并没有覆盖全平台,目前还没有安卓版和Windows版,只能在Mac、iPhone、iPad等苹果设备上使用。如果脱离了苹果设备就无法使用了。希望开发团队能够考虑下广大安卓和Windows用户,或者推出一个网页版也行啊。

综合上文,对于笔者这种频繁使用纯文本形式来撰写内容的文字工作者来说,印象笔记和熊掌记更加合适。大家也可以多尝试几款笔记App,短时间的使用可能无法发现其优势,使用一段时间之后,你就会发现哪款更适合你。

如果你还在纠结从哪款App开始,不妨尝试下印象笔记,印象笔记中记录的内容可以导出为.enex格式,并导入到OneNote和熊掌记中,如果你用了一段时间之后发现印象笔记并不适合你,想转投另外两家阵营也是很简单的。

个人认为比较好的组合是,用印象笔记或OneNote(二选一),配合浏览器扩展,来帮助收集和整理资料,建立自己的知识库;用熊掌记来专注写作。 如果看到这篇文章的你有啥更好的推荐,欢迎留言、讨论。

最初发布于2020年4月13日