问题描述
在使用CherryStudio作为客户端调用claude2api时,AI回复的内容出现混合渲染问题:
- 预期行为:所有内容都应该以markdown格式正常渲染
- 实际问题:部分内容正确显示为markdown,但另一部分内容被错误地包装在代码块中显示
问题复现
- 使用CherryStudio连接claude2api
- 发送任意对话消息
- 观察AI回复内容的渲染效果
根本原因分析(AI 分析,不知道对不对)
经过代码审查,问题出现在 core/api.go 的 HandleResponse 函数中:
核心问题:第377-380行的代码逻辑错误地将所有 input_json_delta 类型的响应都包装在代码块中:
if !partial_json_shown {
res_text = "\n```" + languageStr + "\n" + res_text
partial_json_shown = true
}
这导致普通的文本回复被错误地当作工具输出处理,强制添加了代码块标记。
影响范围
- 影响所有使用CherryStudio的用户
- 降低了内容可读性
- 破坏了markdown格式的完整性
建议解决方案
需要修改 HandleResponse 函数中的事件类型判断逻辑:
- 区分普通文本(
text_delta)和工具输出(input_json_delta)
- 只对真正的工具输出内容添加代码块包装
- 简化字符转义处理逻辑
预期修复效果
修复后,所有内容将按照正确的格式渲染:
- 普通对话内容:正常的markdown格式
- 工具调用结果:适当的代码块格式
- 保持与其他客户端的兼容性
问题描述
在使用CherryStudio作为客户端调用claude2api时,AI回复的内容出现混合渲染问题:
问题复现
根本原因分析(AI 分析,不知道对不对)
经过代码审查,问题出现在
core/api.go的HandleResponse函数中:核心问题:第377-380行的代码逻辑错误地将所有
input_json_delta类型的响应都包装在代码块中:这导致普通的文本回复被错误地当作工具输出处理,强制添加了代码块标记。
影响范围
建议解决方案
需要修改
HandleResponse函数中的事件类型判断逻辑:text_delta)和工具输出(input_json_delta)预期修复效果
修复后,所有内容将按照正确的格式渲染: