diff --git a/app/src/main/java/com/nova/brain/glass/model/ChatModel.kt b/app/src/main/java/com/nova/brain/glass/model/ChatModel.kt index e190871..40d7fce 100644 --- a/app/src/main/java/com/nova/brain/glass/model/ChatModel.kt +++ b/app/src/main/java/com/nova/brain/glass/model/ChatModel.kt @@ -7,11 +7,21 @@ data class ChatModel( val msg: String?, ) -// {"id":74316,"role":"assistant","createTime":"2026-04-16T08:28:06.428Z","type":"string","data":"建议使用","metadata":{}} +// {"id":74316,"role":"assistant","createTime":"...","type":"string","data":"建议使用","metadata":{}} data class ChatModel1( val id: Int, val role: String, val createTime: String, val type: String, val data: String, +) + +// {"id":74418,"role":"assistant","createTime":"...","type":"reason","data":{"content":"-v2","duration":0.0},"metadata":{}} +data class ChatModel2Data(val content: String) +data class ChatModel2( + val id: Int, + val role: String, + val createTime: String, + val type: String, + val data: ChatModel2Data, ) \ No newline at end of file diff --git a/app/src/main/java/com/nova/brain/glass/viewmodel/ChatVM.kt b/app/src/main/java/com/nova/brain/glass/viewmodel/ChatVM.kt index 71b2528..483ecb0 100644 --- a/app/src/main/java/com/nova/brain/glass/viewmodel/ChatVM.kt +++ b/app/src/main/java/com/nova/brain/glass/viewmodel/ChatVM.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.MutableLiveData import com.nova.brain.glass.model.ChatItem import com.nova.brain.glass.model.ChatModel import com.nova.brain.glass.model.ChatModel1 +import com.nova.brain.glass.model.ChatModel2 import com.nova.brain.glass.model.data.ChatData import com.nova.brain.glass.repository.Service import com.xuqm.base.common.GsonImplHelp @@ -50,6 +51,7 @@ class ChatVM : BaseListViewModel() { .subscribeOn(Schedulers.io()) .subscribe({ body -> var content = "" + var currentType = "" // 追踪当前阶段:reason / string body.charStream().buffered().use { reader -> try { var line: String? @@ -80,9 +82,24 @@ class ChatVM : BaseListViewModel() { result.postValue(msg) return@use } - if (model.role != "assistant" || model.type != "string") continue - val model1 = GsonImplHelp.get().toObject(json, ChatModel1::class.java) - content += model1.data + if (model.role != "assistant") continue + when (model.type) { + "reason" -> { + val m = GsonImplHelp.get().toObject(json, ChatModel2::class.java) + content += m.data.content + currentType = "reason" + } + "string" -> { + if (currentType != "string") { + // 第一条 string:清除 reason 阶段的内容,重新开始 + content = "" + currentType = "string" + } + val m = GsonImplHelp.get().toObject(json, ChatModel1::class.java) + content += m.data + } + else -> continue + } val lastIndex = chatItems.size - 1 if (lastIndex >= 0) { chatItems[lastIndex].content = content