DevLog:2026年1月26日

1、截至目前,四款应用问题如下,加粗内容暂未修复:

1.DoitWith

-在添加Todo和编辑Todo的界面中增加“优先级”选项,包括“高”和“低”两个选项,放在“下一步”和“分组”之间

-在“待办”和“已完成”中间加一个“四象限”,共有四个大卡片,在卡片中罗列符合条件的Todo条目

-当天到期且优先级为高的在右上,当天到期且优先级为低的在右下,非当天到期且优先级为高的在左上,非当天到期且优先级为低的在左下,四个卡片的颜色略有区别,右上为浅红色,右下和左上为浅黄色,左下为浅绿色

-在这四个大卡片中,有“下一步”的Todo位置靠上,没有“下一步”的Todo位置靠下

-卡片上,每条Todo只显示标题和下一步,没有下一步的Todo就只显示标题

-四象限界面的Todo条目显示效果还有待优化,现在有些简单

-当天到期的Todo,早上九点推送通知

-添加小组件,小组件上显示当天到期的Todo,信息包括所在分组、标题、下一步

2.DoitWith for Mac

-简化优先级设置,只留“低”和“高”两个选项

-在全部Todo和已完成Todo之间增加“四象限”Tab,和手机端的四象限划分逻辑、Todo显示逻辑保持一致,但这个Tab可能不需要像另外两个Tab那样分为三栏,样式上要有区别

-调整新建分组、添加和编辑Todo窗口的视觉效果,部分图标和文字太小

-设置-关于页面下方增加“近期更新”区域,由Cursor总结近期更新了哪些功能

3.ChatWith

-首次启动时启动速度超级慢,大概要20秒左右

-清除后台后,再打开应用秒闪退,无法使用

-发送消息后立刻显示在对话界面内,现在好像是在AI有响应后才会显示

4.ChatWith for Mac

-在AI对话中是否可以调用笔记内容作为参考

-火山引擎的Bot无法显示思考过程,即使其使用的是支持深度思考的DeepSeek

-OpenRouter提供的Claude API无法正常使用,测试返回403错误

-界面上有些文字需要改小一点,比如设置列表中的文字、对话列表和对话详情页上的“对话”、笔记列表和笔记详情页上的“笔记”、搜索页面顶部的“搜索”

-笔记详情页,未打开笔记时会显示“还没有笔记 从AI对话中保存内容到这里”,改成“请选择一个笔记或创建新笔记”,跟对话详情页的空状态提示字体大小一致

-在笔记界面,笔记列表中标题下的小字仅显示纯文本,不要显示富文本符号或Markdown语法标记

-笔记编辑视图的工具栏现在是居中对齐,需要改成靠左对齐

-关于页面的“初始版本发布”放到最上边

-优化上传附件和图片后的显示效果,比如取消附件和图标的红叉需要改小一些

2、这两天先修改DoitWith和DoitWith for Mac,增加四象限功能板块,先是DoitWith移动版,需求包括:

1.在添加Todo和编辑Todo的界面中增加“优先级”选项,包括“高”和“低”两个选项,放在“下一步”和“分组”之间

2.在“待办”Tab和“已完成”Tab中间加一个“四象限”Tab,该Tab内共有四个大卡片,在卡片中罗列符合条件的Todo条目

3.当天到期且优先级为高的在右上,当天到期且优先级为低的在右下,非当天到期且优先级为高的在左上,非当天到期且优先级为低的在左下,四个卡片的颜色略有区别,右上为浅红色,右下和左上为浅黄色,左下为浅绿色

4.在这四个大卡片中,有“下一步”的Todo位置靠上,没有“下一步”的Todo位置靠下

5.卡片上,每条Todo只显示标题和下一步,没有下一步的Todo就只显示标题

3、针对这5条需求,修改点包括在结构体中添加优先级字段、添加优先级选择器、添加四象限Tab、创建QuadrantView视图以实现四象限布局和逻辑等等,首次构建即成功,但四象限页面的显示效果还需要优化,比如四个卡片可以都用长方形,让四个卡片占满整个界面,现在底部有大片空白,“重要不紧急”、“重要紧急”、“不重要不紧急”、“不重要紧急”放到四个卡片顶部居中,另外,已过期且优先级为高的Todo也显示在“重要紧急”卡片里,已过期且优先级为低的Todo显示在“不重要紧急”卡片里,最后把“重要紧急”改成“重要且紧急”

4、修改后再次构建测试,发现这次四象限占满了整个屏幕,Cursor使用的GeometryReader可能不合适,反馈后,添加了边框和内边距,并且移除了全屏布局,让内容在安全区域内显示,再次测试,效果基本符合预期,但首次遇到了紫色的警告信息,原因在于当可用空间不足时,计算可能为负,需要改用更安全的方式来计算卡片尺寸,包括移除手动尺寸计算、使用自适应布局、添加ScrollView等,调整后四个卡片又变成了正方形,在将卡片的最小高度调整至320之后,基本达成需求

5、DoitWith移动版修改告一段落,接下来继续优化ChatWith for Mac,目前界面上比较明显的问题在于略显粗糙,而且有大量的依赖版本比较旧,也需要更新,昨天在用ChatWith for Mac的源文件开发iOS版之后,今天构建测试Mac版,又需要运行一次pod install,然后成功构建,继续检查并修复问题

6、首先是设置-关于页面,把初始版本发布挪到近期更新的最前边,然后修复该页面的底部溢出问题(内容太多时底部会出现BOTTOM OVERFLOWED BY XX PIXELS的提示),解决方法是用SingleChildScrollView包裹整个内容,窗口较小时可滚动查看,构建测试,问题已修复

7、上传附件和图片后,附件图标/缩略图右上方的红叉现在太大了,需要改小一点,另外附件图标/缩略图的圆角边框也显示不全,针对这一需求,Cursor将红叉图标从16缩小至12,并调整了位置,同时优化了圆角边框显示,上传附件预览区域和消息中的附件显示做了同步调整,构建测试,需求已达成

8、在设置-AI模型管理中添加了火山引擎的Bot,提供商选自定义,高级设置中填写完整URL(包含/chat/completions),测试通过,但对话时收到了“错误:未收到任何响应内容”的提示,Cursor添加了更详细的诊断信息,经过多次修改,并修复构建问题(又出现了反复创建脚本修改、反复运行脚本失败的循环),之后打断,要求直接检查有没有语法错误,修复之后成功构建,已经可以和火山引擎的Bot对话,但看不到思考过程,后面还需要再让Cursor检查并增加

9、然后是在与支持文档/图片的claude 3.7对话时,出现了“错误:访问被拒绝,请检查API Key权限”的提示,在测试模型时出现了403错误(为啥之前好好的,现在又不行了?),Cursor添加了OpenRouter推荐请求头,改进了错误处理,并统一了请求头格式,再次构建测试,依然403,并且提示“this model is not available in your region”,这种像是被墙了的提示,可是这个API我在Chatbox中使用时是完全正常的,多次修改后依然未能解决,而且好像越改越复杂了,之前没有这么复杂时也可以正常使用

10、发现在笔记界面,笔记列表中标题下的小字显示了富文本符号或Markdown语法标记,而不是纯文本,观感上有些不好,Cursor同时在笔记列表视图、搜索视图、回收站视图、回收站设置视图中添加了_stripMarkdownAndRichText函数,用于清理富文本符号和Markdown标记,测试发现已经去掉了Markdown标记,但富文本符号依然存在,再次修改(添加dart:convert导入,用于解析JSON格式的Quill Delta数据,并增强上述函数)之后,需求达成

11、然后改一下笔记编辑视图的工具栏,现在是居中对齐,需要改成靠左对齐,Cursor用Row包装了QuillSimpleToolbar的工具栏,并设置了左对齐,但如果缩小编辑窗口,导致一行无法显示所有的工具按钮时,会出现“RIGHT OVERFLOWED BY XX PIXELS”的提示(溢出了),再次反馈修改,这次又给工具栏包装了一层SingleChildScrollView,并且启动了水平滚动,在保持左对齐、避免溢出的同时,当窗口宽度不足时,工具栏可水平滚动查看所有按钮,需求达成

12、界面上有些文字需要改小一点,现在有些突兀,比如设置列表中的文字、对话列表和对话详情页上的“对话”、笔记列表和笔记详情页上的“笔记”、搜索页面顶部的“搜索”等等, 反馈给Cursor后,发现它将多处20号字改成了16号字,于是再次要求它直接将其它20号字也改成16号字,再把设置详情等界面里超过16号的文字都统一成16号字(除了关于ChatWith界面的ChatWith标题保持在32号不变),这下整体看起来协调多了

13、然后优化笔记详情页的空状态提示,现在未打开笔记时会显示“还没有笔记 从AI对话中保存内容到这里”,改成“请选择一个笔记或创建新笔记”,跟对话详情页的空状态提示字体大小一致

14、经过这一下午对ChatWith for Mac的修改,发现它的细节问题还是挺多的,还是需要在后续使用中陆续发现、修改

15、DevLog已记录100天,明天起仅记录当天修复、调整、新增的功能和重要心得,不记录完整的修改过程

DevLog:2026年1月11日

1、继续修复发送图片给Claude API时的问题,包括图片缩略图无法正常显示、发送图片给Claude API后返回HTTP 400错误,针对缩略图问题,添加了文件存在性检查、优化错误处理、添加调试日志,针对HTTP 400错误,调整了系统消息处理、历史消息格式和消息构建顺序,但测试发现问题依然存在,缩略图依然不能正常显示

2、结合调试信息,Cursor认为问题在于应用无法访问用户选择的图片文件(如桌面上的文件),因为macOS沙盒限制,解决方案是在用户选择图片后,将文件复制到应用沙盒目录(文档目录),并保存复制后的路径,但依然没有解决问题

3、针对这一问题进行了多次修改,中途Cursor还认为可能是因为OpenRouter提供的Claude API和Anthropic官方的Claude API在图片代码格式上的区别导致的,在与Chatbox对话,确认OpenRouter提供的Claude Sonnet 4 API支持读取图片之后,再次让Cursor检查并修复问题

4、后来发现在一个对话中,如果默认模型不是Claude Sonnet 4,即使在对话中切换模型为Claude Sonnet 4,发送图片后也会回答“我目前无法直接查看和分析您上传的图片”之类的话,但在设置中将Claude Sonnet 4设为默认模型后,就可以读取图片了,但是返回的回答内容显示不完整,并且在调试信息中会有大量的“解析JSON错误”

5、Cursor认为这是流式响应解析问题,SSE流式响应中的JSON数据可能是分块的,导致JSON不完整,需要在解析前检查JSON是否完整,修复过程包括添加缓冲区、检查JSON完整性,同时移除了错误日志,再次测试后读取和输出正常

6、发现一个新问题,在对话界面右上角切换模型后,显示为新的模型,但仍然在跟切换前的模型对话,原因在于切换模型时,代码只更新了数据库和父组件的session,但ViewModel的_currentSession没有被更新,sendMessage方法中使用的是_currentSession,所以即使切换了模型,实际使用的仍是旧的session配置

7、Cursor修改之后,再次测试发现模型仍然不能正确切换,从支持深度思考的模型A切换至不支持深度思考的模型B后再提问,仍然是模型A在回答我,只是不显示思考过程,并不是由模型B来回答我,这是不对的,这次修改包括添加updateCurrentSession方法、修改sendMessage方法,这样在切换模型后,ViewModel的_currentSession会被正确更新,再次测试后模型切换正常,并且会结合上文内容回答我

DevLog:2025年11月4日

补充一条,时间线有点乱了,但还是要记录一下。

1、继续试用ChatWith,发现目前的应用在使用支持深度思考的模型时,思考内容好像限制了显示高度,一旦达到高度限制,就不会随着思考的内容继续自动滚动,Cursor表示思考内容的显示高度的确固定在了400点,且超出之后会出现滚动条,但超过400点后就不会再自动滚动,在修改过程中发现了另一个问题,好像在对话中切换了另一个模型,再提出新问题时应用就会卡死

2、Cursor分析了可能导致应用卡死的几个问题:Core Data并发冲突、通知监听器生命周期、状态读取时序、缺少状态同步,特别是Core Data并发冲突,由于直接在主线程修改Core Data managedobject,如果此时用户立即发送消息,可能造成并发访问冲突,updateAISession可能触发Core Data save操作,与其他操作冲突,明天继续修改这个问题

3、添加其他模型来测试Base URL的填写方法,之前已经要求Cursor将其改为用户手动填写AI服务的跟地址,应用会自动补全路径,比如api.openai.com、openrouter.ai/api,然后针对火山引擎的“应用”(bots)做了特别优化,需要填写完整地址https://ark.cn-beijing.volces.com/api/v3/bots/,测试发现百度云千帆的Base URL填写仍然有问题,比如我填写官网提供的https://qianfan.baidubce.com/v2/chat/completions就会连接失败,删掉v2往后的内容也不行,只填写https://qianfan.baidubce.com也不行,与其设定各种复杂的自动补全规则,倒不如直接要求用户填写完整的Base URL,或者应用内置一些常用的Base URL来的简单

附上常用的几个AI的Base URL:

OpenAI

https://api.openai.com/v1/chat/completions

DeepSeek

https://api.deepseek.com/v1/chat/completions

OpenRouter

https://openrouter.ai/api/v1/chat/completions

硅基流动

https://api.siliconflow.cn/v1/chat/completions

火山方舟

https://ark.cn-beijing.volces.com/api/v3/chat/completions

或

https://ark.cn-beijing.volces.com/api/v3/bots/chat/completions

百度云千帆

https://qianfan.baidubce.com/v2/chat/completions

阿里云百炼

https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions

4、询问Cursor目前应用在Base URL补全方面的规则是怎样的,根据回答内容,规则包括:

1.如果没有http://或https://,就自动添加https://

2.如果URL末尾有斜杠,就自动移除

3.如果已经包含完整路径,就不做任何修改

4.如果包含部分路径,就自动补全,比如补全v1,补全/chat/completions

5.如果只有基础URL,就自动补全/v1/chat/completions

按照这套规则,我填写了完整的百度云千帆的Base URL,应该能正常使用才对,但填写完整地址之后测试仍然提示404

5、问题可能出现在自动补全v1上,也就是在“包含/chat/completions但不包含v1时,会自动添加v1前缀,包含/api/、/bots/、/v3/、/v2/,且不含/chat/时,则添加chat/completions”这里,根据Cursor给出的示例,可能会出现/v1出现在/chat/completions之后的情况

6、目前的规则的确有些复杂,可能用户在填写过程中也会不知道该填写完整的地址还是部分地址,倒不如直接在应用里内置几个常用的、完整的Base URL,由用户自行选择,要求:目前的规则有些复杂,我希望能在添加和编辑AI模型界面,预置几个常用的API平台的完整Base URL,用户只需要填写备注、模型名称、选择模型提供商、填写API Key、填写Tavily API Key即可使用模型

7、Cursor在修改过程中创建了APIProvider枚举,包含10个常用平台(OpenAI、DeepSeek、Anthropic Claude、OpenRouter、Google Gemini、智谱GLM、月之暗面Kimi、百度文心一言、阿里通义千问、腾讯混元、自定义),这样就不再需要配置路径补全规则,用起来也更方便了,先添加几个模型试试,再决定要不要增加或删减APIProvider

8、在修正因为使用中文引号导致构建失败的错误之后,百度云千帆和火山方舟的API都可成功连接,当API提供商选择自定义时,需在“高级设置”的Base URL中填写完整地址,即带有/chat/completions的地址

9、APIProvider需要增加硅基流动、火山方舟、百度云千帆、阿里云百炼,这四个都放在“自定义”前面,另外我发现在选择某个APIProvider之后,模型名称部分也会出现预置的模型名称,但我不需要,改成由用户手动填写模型名称,修改之后测试了几个不同的模型,都可以成功连接了

DevLog:2025年12月12日

1、昨天给使用Flutter重构的ChatWith增加了多模型管理和切换、联网搜索、回收站、深度思考等等,添加OpenRouter的Claude 3.7 Sonnet和硅基流动的DeepSeek-R1试试看,首轮测试问题如下:

1.在添加/编辑模型页,目前“模型名称”和“模型”两个字段都是必填,如果作用一样的话,可以去掉“模型”字段

2.模型管理页,不需要显示太多内容,可以去掉这里的Base URL,只保留“模型名称”和“备注”字段

3.模型管理页,每个模型前边都有星号,但点击星号无法设置为默认模型,而是进入了模型编辑页,我需要在点击星号时将其设为默认模型,再次点击取消默认

4.点击对话界面上方的按钮,可以切换模型,想再次切换时就会显示“加载中”,看不到我添加的其它模型

5.对话时,AI返回的内容是乱码

6.创建新对话后,仍然使用了我在上次对话时切换的模型,想切换其他模型就会显示“加载中”,看不到我添加的其它模型

2、全部反馈给Cursor进行修改,去掉了“模型”字段,包括“模型名称”会作为model字段的值保留,模型管理页简化显示,点击星号设置默认模型,并且可切换实心空心,修复模型选择器加载问题,使用watch正确监听模型列表变化,使用utf8.decode()正确解码响应流,新对话使用默认模型,再次测试,上面提到的问题1、2、3、5均已修复,但在对话中切换模型时依然会显示“加载中”,看不到我添加的其它模型

3、决定简化对话页的逻辑,并做更多修改如下:

1.创建新对话时即使用默认模型,仅在对话窗口上方显示当前的默认模型,不需要在这里切换模型

2.去掉对话列表和收藏列表右上方的“设置”按钮,将“设置”改成应用底部的第三个Tab

3.设置页顶部的“设置”二字居左显示,和对话列表页顶部的“全部对话”保持一致

4.收藏页顶部的“收藏夹”三个字居左显示,和对话列表页顶部的“全部对话”样式一致

5.与支持深度思考的模型(如DeepSeek R1)对话时,看不到思考过程,是否需要增加一个判断模型是否支持深度思考的功能?如果支持就展示思考过程

6.AI对话内容的字号调小一点,现在有点大

4、Cursor陆续实现上述需求,创建了ModelDisplay组件,在对话窗口只显示当前的默认模型名称,移除了模型切换功能,在AIModel中添加了supportsThinkinggetter,通过模型名称判断是否支持深度思考,目前的判定逻辑是包含r1、o1、deepseek、thinking等关键词,但我觉得可能不是很合适,后面还得再优化,然后把Markdown样式中段落字号从16调整为14,再次测试,果然在与DeepSeek R1对话时仍未显示思考过程,且对话页、收藏页、设置页三个页面的标题目前均为居中,继续反馈问题并增加更多需求:

1.在与DeepSeek R1对话时仍然未能显示思考过程,可能通过模型名称来判断是否支持深度思考并不是很合适,有没有其它更好的判定方法?或者在添加/编辑模型页增加一个是否支持深度思考的选项?如果选择了支持,就在对话时展示思考过程,如果选择了不支持,就不展示思考内容,这两种方式你更推荐哪一种?(先回答我这个问题,不要直接修改,后面问题2到问题6请直接修改)

2.对话页、收藏页、设置页三个页面的标题(全部对话、收藏夹、设置)目前均为居中,我需要统一成居左显示

3.对话列表里的标题显示用户提出的最后一个问题,下面的小字显示AI最后一次回答的内容,都只显示一行

4.对话详情页,用户和AI都需要有一个头像,并且在消息下方显示消息时间

5.调整一下设置页的“数据管理”,点击“数据统计”,打开新页面,可在新页面里查看AI对话、收藏内容的数量,并且也在“数据统计”前增加一个图标,和“回收站”入口的样式一致

6.在设置页,把外观设置挪到最下方,设置页共三个模块:模型管理、数据管理、外观

5、关于上面的第一个问题,Cursor更推荐在添加/编辑模型页增加“是否支持深度思考”选项,这种方式不依赖模型名称的命名规则,用户可手动控制,模型名称变化不影响判断,用户明确知道哪些模型支持,决定采纳建议,并进一步明确如下:

在添加/编辑模型页增加“是否支持深度思考”选项,默认选中“不支持”,用户可自行选择,同时在模型管理页,每个模型的信息中增加一行,根据用户的选择情况显示“支持深度思考”或“不支持深度思考”

6、让Cursor实现上述需求,修改过程中重写了chat_message_item.dart文件,可能是多次修改导致结构出现了问题?完成之后再次测试,对话详情页已支持对话双方的头像,设置页已基本符合需求,回答内容的流式输出正常,Markdown渲染正常

7、但是,对话页、收藏页、设置页三个页面的标题仍然是居中显示(第二次修改仍然无效),对话列表里每个对话只能看到最后一个问题,看不到最后一次回答,即使我给硅基流动的DeepSeek R1打开了支持深度思考,好像仍然不显示思考过程,需要再用其它问题试一下

8、另外还需要补充的功能包括触发联网搜索、显示联网搜索的参考链接、测试模型是否可用、对话的置顶/修改/删除功能(已有按钮,需测试是否可用)

9、使用Flutter创建的应用,在界面上整体明显更偏向原生安卓的风格,毕竟谷歌出品

DevLog:2025年12月1日

1、目前ChatWith for Mac的主要问题在于偶发应用卡死问题,之前已经多次修复但一直未能解决,先暂停

2、先把手机端的NoteWith搞一个版本到手机上进行实测,目前的NoteWith还有很多地方需要完善下才能通过TestFlight发布测试版,比如还没有应用图标(需要让ChatGPT给做一套),上次将对话和备忘录改用Core Data存储之后未做实际测试,且还需要引入三方库MarkdownUI和RichTextKit,完善AI问答和备忘录的渲染效果和编辑体验

3、先让ChatGPT给设计图标,这次以蓝色为底色,并且“也需要一些设计感,像上面那套图标那样简洁就可以”,但这次ChatGPT也把“NoteWith”给套到了对话消息的图标里,要求“不要把NoteWith放在对话消息图标里,没有体现出Note的含义”,然后要求ChatGPT基于这张图生成一套用于iOS App的图标文件,可以直接放到项目文件里使用,很快就生成了,图标搞定

3、时隔半个月再打开Cursor,发现它推出了自己的模型Composer 1,据称生成速度相比同类模型快四倍,且目前可以免费使用,决定使用它来为应用引入三方库MarkdownUI和RichTextKit

4、先引入MarkdownUI,指令“我需要为当前的应用引入三方库MarkdownUI,用于AI问答内容的显示效果渲染”,Cursor指出需要先添加Swift Package Manager依赖,再更新代码以使用MarkdownUI渲染AI回答内容,在引入MarkdownUI之后更新了AIChatView,以使用MarkdownUI来渲染AI回答内容,并且相比之前自定义的MarkdownRenderer增加了代码块、行内代码等样式,接下来需要在Xcode中打开项目,MarkdownUI会自动下载并集成,AI问答内容将使用MarkdownUI进行渲染

5、Composer在执行这次修改时速度的确很快,但在修改结束后未能进行构建测试,要求构建之后仍然不行,说是“命令行构建因模拟器配置问题无法完成,但依赖已成功解析,代码语法检查通过,项目配置正确,建议在Xcode中直接构建和运行,Xcode会自动处理模拟器配置”

6、然后打开Xcode,发现模拟器又要更新版本至iOS 26.1,需要下载8.32GB,看来我的确是有阵子没有用Xcode运行iOS应用了,而且貌似在新的系统版本下载完之前无法进行构建测试,只能等了,看今晚能不能把模拟器下载完,明天再构建测试

7、想尝试添加一个自定义的模型,在Cursor的设置中,目前预置的模型包括Composer 1、Grok Code、Kimi K2,并且可以通过填写API Key等信息快速添加OpenAI、Anthropic、Google、Azure、AWS Bedrock的模型,有一点之前没有注意,就是如果要使用其他兼容OpenAI的模型的话,可以开启“OpenAI API Key”,填写Key,并打开Override OpenAI  Base URL修改API地址,然后在上方找到Add Custom Model填写模型名称,我试一下OpenRouter的Claude Sonnet 4,不知道为啥加不上,感觉添加模型不是很方便

8、上周看Trae.ai官方公众号推送了文章说TRAE SOLO已经登陆中国版,并且可以免费使用,今天更新了下Trae,据介绍,SOLO 模式集成包括 IDE 在内的多种工具。你只需表达需求,它就会基于目标主动推进完整开发流程。

-SOLO=The Responsive Coding Agent,可以让你直观了解智能体正在处理的内容——从文件、工具到完整的工作上下文,它会随你的操作和变化即时响应,始终与你的工作流保持同步。

-从清晰的规划开始,与子智能体协作,将复杂问题拆解为更为聚焦的任务。借助完整代码上下文进行迭代、重构与优化,实现高精度的工程化执行。

-自动将长对话整理为结构化的任务流,清晰呈现执行路径。所有改动统一汇总在代码变更视图,配合上下文状态统一展示,方便回溯与协作。

介绍了这么多,也没有看出来它到底和之前、和Cursor有什么不同,后面再实际测试看看吧

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文件,放在应用文件的根目录里,今天到此结束

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

稳定使用Claude 3.7 Sonnet的方法(不免费)

Claude官方网站是出了名的难注册+易封号,我之前好不容易注册的账号第二天就被封了,即使写了申诉邮件也没有任何回应,导致我从Claude 3发布到现在一直没能用上。

但办法总比困难多,最近我综合网上的一些教程,找到了可以稳定使用Claude 3.7 Sonnet等大模型API的方法。

首先去OpenRouter网站注册账号,申请API并充值,可以用国内的信用卡充值(但是需要架梯子才能打开OpenRouter网站)。注册、登录、充值、申请API Key之后,再去AI对话客户端中添加大模型。

关于AI对话客户端,个人比较推荐在电脑端用Cherry Studio,在手机端用Chatbox,但Chatbox其实不是很好用,特别是最近还偶尔会出现不明详情的网络错误,即使更新了几个版本这种问题仍然存在。期待Cherry Studio能尽快推出手机版。

接下来说说设置方法:

Cherry Studio
设置-模型服务-OpenRouter
启动OpenRouter服务
填上API Key
API地址(默认的,不用改):https://openrouter.ai/api/v1/
模型:拉到最底下,管理,找到“Anthropic: Claude 3.7 Sonnet”并添加

Chatbox
API模式:OpenAI API兼容
名称:随便填
API域名:https://openrouter.ai/api/v1
API路径:默认的,不用改
填上API Key
模型:anthropic/claude-3.7-sonnet

建议大家在使用时打开Cherry Studio或Chatbox的联网搜索功能,Claude 3.7 Sonnet的训练数据截止到2023年年底,不知道啥时候能更新一下,如果不打开联网搜索功能,给到的结果会比较陈旧。

价格方面,OpenRouter网站上有标示,Claude 3.7 Sonnet的API价格为:
$3/M input tokens、$15/M output tokens
的确比国内常见AI的API要贵很多。

关于Claude 3.7 Sonnet、Claude 3.7 Sonnet (thinking)、Claude 3.7 Sonnet (self-moderated)三个模型的区别,我也问了下Claude 3.7 Sonnet,答曰:需要直接答案选标准版,需要了解思维过程选thinking版,需要更保守、更安全的回答选self-moderated版。

OpenRouter提供了大量的国外大模型API,比如Gemma/Gemini、Grok、Llama、Phi、GPT、Cohere、Mistral、Perplexity等等,也有来自国内的Qwen和DeepSeek,实测Gemma、Gemini、Perplexity的API都可以直接使用,但Grok、GPT无法直接使用,如果不架梯子,会报错This service is not available in your region或unsupported_country_region_territory,其它的我还没试过,有兴趣的朋友们可以试试。

最初发布于2025年3月26日