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年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日