<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>开源工作系列 on 学习笔记</title>
    <link>https://wyxbupt.me/posts/%E5%BC%80%E6%BA%90%E5%B7%A5%E4%BD%9C%E7%B3%BB%E5%88%97/</link>
    <description>Recent content in 开源工作系列 on 学习笔记</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sun, 24 May 2026 00:00:00 +0800</lastBuildDate>
    <atom:link href="https://wyxbupt.me/posts/%E5%BC%80%E6%BA%90%E5%B7%A5%E4%BD%9C%E7%B3%BB%E5%88%97/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Deepseek-TUI Markdown格式修复</title>
      <link>https://wyxbupt.me/posts/%E5%BC%80%E6%BA%90%E5%B7%A5%E4%BD%9C%E7%B3%BB%E5%88%97/deepseek-tui-markdown%E6%A0%BC%E5%BC%8F%E4%BF%AE%E5%A4%8D/</link>
      <pubDate>Sun, 24 May 2026 00:00:00 +0800</pubDate>
      <guid>https://wyxbupt.me/posts/%E5%BC%80%E6%BA%90%E5%B7%A5%E4%BD%9C%E7%B3%BB%E5%88%97/deepseek-tui-markdown%E6%A0%BC%E5%BC%8F%E4%BF%AE%E5%A4%8D/</guid>
      <description>&lt;h1 id=&#34;我的第一个开源贡献修复-deepseek-tui-的-markdown-渲染问题&#34;&gt;我的第一个开源贡献：修复 DeepSeek-TUI 的 Markdown 渲染问题&lt;/h1&gt;
&lt;h2 id=&#34;背景&#34;&gt;背景&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/Hmbown/DeepSeek-TUI&#34;&gt;DeepSeek-TUI&lt;/a&gt; 是一个用 Rust 编写的终端 AI 助手，基于 DeepSeek V4 模型，支持 1M token 上下文。我在日常使用中发现 AI 的回复里 Markdown 格式完全没有被渲染，严重影响阅读体验。这是我第一次接触 Rust，也是我第一次向开源项目提交 PR。&lt;/p&gt;
&lt;h2 id=&#34;问题现象&#34;&gt;问题现象&lt;/h2&gt;
&lt;p&gt;使用时发现三类渲染问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 表格原样输出&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;| 名称 | 版本 | 状态 |
|----------|------|------|
| React | 18.x | 稳定 |
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;分隔行 &lt;code&gt;|---|&lt;/code&gt; 也直接显示出来，没有任何格式化。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 粗体/斜体标记符没有被剥掉&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;**粗体文本** 和 *斜体文本*
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;星号原样显示，没有加粗或斜体效果。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 水平线没有渲染&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;---
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;直接显示成三个横杠，没有渲染成分隔线。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;代码分析&#34;&gt;代码分析&lt;/h2&gt;
&lt;p&gt;项目的渲染逻辑在 &lt;code&gt;crates/tui/src/tui/markdown_render.rs&lt;/code&gt;。读完代码后理解了它的设计：&lt;/p&gt;
&lt;h3 id=&#34;两阶段渲染架构&#34;&gt;两阶段渲染架构&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;源文本 → parse() → ParsedMarkdown (AST) → render_parsed(width) → Vec&amp;lt;Line&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;parse 阶段&lt;/strong&gt;：与终端宽度无关，把源文本分类成 &lt;code&gt;Block&lt;/code&gt; 枚举的各种变体&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;render 阶段&lt;/strong&gt;：依赖宽度，做折行和样式渲染&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个设计的好处是终端 resize 时只需重新 render，不需要重新 parse，性能更好。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
