1、上周在修改NoteWith时,通过调试信息发现目前AI对话并不是真正的流式输出,而是在完整回答后模拟流式输出,Cursor建议使用真正的流式API,实现增量渲染(只渲染新增部分),并且缓存已渲染的组件,避免重复解析,今天先修改这个问题
2、在修改过程中,遇到了AI回答内容不完整显示(但调试信息里是完整的)、问题只有一行时下方有一行空白、流式输出内容的汉字显示为乱码等问题,最终实现了真正的流式API调用,通过修改AIService,新增streamAIModel方法,实现了流式响应和实时解析数据,AI一开始生成内容就立即显示,用户能更快看到回答开始,使用起来更流畅了,并且测试发现思考过程也可流式输出
3、至于汉字显示为乱码,是因为之前的逐字节处理流式数据,但UTF-8编码的中文字符,一个字符能占用2-4个字节,这就会导致中文字符被截断,从而显示为乱码
4、有意思的是Cursor竟然从我发送的全是乱码的AI回答内容中看出了我真实的问题,并在修改代码后问我“关于您提到的OpenRouter vs Anthropic官方API的对比,这是一个很好的技术选择问题。如果您需要进一步的建议或想要实现特定的API集成,请告诉我!”
5、用百度云千帆的DeepSeek-R1-250528写了一个斜体字Markdown语法正则表达式,试试看能否解决备忘录预览界面斜体字无法正常渲染的问题,测试发现没能解决,斜体字依然无法显示为斜体
6、AI回答内容中的表格一直无法正常渲染,特别像是仅仅把表格中的文字复制出来,根本不像个表格,于是询问Cursor能否用类似CodeBlocksView的形式,创建一个单独的文件来渲染AI回答内容中的表格?Cursor创建表格渲染组件,包含表格解析器TableParser、表格视图TableView、表格渲染视图MarkdownWithTablesView
7、创建新文件之后,经历了多次测试和修改,仍然无法正常渲染,包括看不见我提出的问题,看不见AI回答中的文本内容(基本上除了表格之外,其它的对话内容都看不到,但深度思考内容和参考链接区域没有受影响)等等,多次添加调试信息、反馈调试信息后仍然无果,决定发起一个新的Cursor对话再试试
8、看了一眼Cursor网站的DashBoard,出现了“Analytics are currently degraded and showing incomplete data. We’re working on resolving this issue. You can subscribe to updates here.”这样的提示,看来Cursor终于发现了数据统计功能的问题
9、询问Cursor发现当前AI问答内容全都是在使用新创建的MarkdownWithTablesView来渲染,和我理解的不一样,我希望的是在AI回答中有表格时使用MarkdownWithTablesView来渲染表格,在AI回答中有代码块时,使用MarkdownWithCodeBlocksView来渲染代码块,于是让Cursor创建了一个新的组件UnifiedMarkdownView来统一处理文本内容,并修改MessageView来使用分离的渲染逻辑,这样避免了功能冲突,可以看到AI问答中表格以外的其它内容了
10、但UnifiedMarkdownView对普通文本的渲染使用了简单的Text组件,丢失了Markdown渲染效果,后续还是要换成NSTextView,以实现良好的Markdown渲染效果、文字选择、右键菜单等功能,明天再完善UnifiedMarkdownView