Skip to content

CherryStudio客户端出现markdown混合渲染问题:部分内容错误显示为代码块 #32

@luoshui-coder

Description

@luoshui-coder

问题描述

在使用CherryStudio作为客户端调用claude2api时,AI回复的内容出现混合渲染问题:

  • 预期行为:所有内容都应该以markdown格式正常渲染
  • 实际问题:部分内容正确显示为markdown,但另一部分内容被错误地包装在代码块中显示
Image Image

问题复现

  1. 使用CherryStudio连接claude2api
  2. 发送任意对话消息
  3. 观察AI回复内容的渲染效果

根本原因分析(AI 分析,不知道对不对)

经过代码审查,问题出现在 core/api.goHandleResponse 函数中:

核心问题:第377-380行的代码逻辑错误地将所有 input_json_delta 类型的响应都包装在代码块中:

if !partial_json_shown {
    res_text = "\n```" + languageStr + "\n" + res_text
    partial_json_shown = true
}

这导致普通的文本回复被错误地当作工具输出处理,强制添加了代码块标记。

影响范围

  • 影响所有使用CherryStudio的用户
  • 降低了内容可读性
  • 破坏了markdown格式的完整性

建议解决方案

需要修改 HandleResponse 函数中的事件类型判断逻辑:

  1. 区分普通文本(text_delta)和工具输出(input_json_delta)
  2. 只对真正的工具输出内容添加代码块包装
  3. 简化字符转义处理逻辑

预期修复效果

修复后,所有内容将按照正确的格式渲染:

  • 普通对话内容:正常的markdown格式
  • 工具调用结果:适当的代码块格式
  • 保持与其他客户端的兼容性

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions