Skip to content

DeepSeek thinking mode full support & book generation UX improvements #430

@Starfie1d1272

Description

@Starfie1d1272

背景

PR #428 修复了 DeepSeek v4-flash/v4-pro 在思考模式开启时的崩溃问题(空响应、JSON 解析失败),但这只是防崩溃的 bug fix,不是完整方案。当前仍需通过 LLM_REASONING_EFFORT=minimal 关闭思考才能稳定生成内容。

当前现状

1. 思考模式未完整支持

  • reasoning_content 目前只能作为 content 的回退值,无法真正利用推理过程提升输出质量
  • 开启思考后 token 预算不足时,全部 token 被推理消耗,content 仍为空
  • 动画管线(MathAnimatorPipeline)处理思考内容的能力有限

2. 生成失败的 UX 不足

  • 页面部分 block 生成失败后,没有明确的一键重试/强制重新生成按钮(UI 只有 recompile,没有 force 选项)
  • 失败时只显示 "partial (x/y blocks ready)",不展示具体哪些 block 失败及原因
  • 用户不知道是网络问题、模型问题还是 prompt 问题

3. 提示词泄漏

  • 思考模式下,推理过程可能残留在最终 block 内容中
  • 代码 block 里出现过模型推理文本混入输出

4. 前端汉化不完整

  • 书籍页面部分 UI 文本仍未汉化

5. 书籍重建不便

  • 无法保留已配置的章节结构重新生成全书
  • 删除重建需要重新确认 proposal 和 spine

期望改进

  • 完整支持 DeepSeek thinking mode(prompt 适配、token 预算分配、动画管线适配)
  • 书籍页面添加"强制重新生成"按钮及失败原因展示
  • 提示词泄漏检测和过滤
  • 前端汉化完善
  • 支持保留配置重建书籍

相关

6. CodeGenerator / block generators 未处理 JSON 数组响应

  • PR fix: fallback content to reasoning_content when DeepSeek returns empty content field #428json.loads() 替换为 parse_json_response() 后,LLM 返回 JSON 数组(如 [{...}])时不再静默失败,而是成功解析为 list → 下游 .get() 调用报 'list' object has no attribute 'get'
  • 影响的 block generator:CodeGenerator, FlashCardsGenerator, TimelineGenerator, DeepDiveGenerator
  • 需要增加 list → dict 的归一化逻辑(类似 idea_agent 的修复)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions