Replies: 1 comment
|
I turned this into an English operator runbook with a narrow control matrix: single Independent SandBase handbook: https://github.com/sandbaseai/deepseek-harness-handbook/blob/main/docs/en/troubleshooting/markdown-single-tilde.md |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
现象
助手消息里单个
~被当作删除线渲染,违反 GFM 规范——GFM 要求~~双波浪号才是 strikethrough。例如
哈~哈~啊渲染成哈(单哈啊~也划线),而 GFM 规范下应保留为字面~。根因
packages/client/ui-primitives/src/markdown/parse.ts中parseGfm和parseGfmWithMath调用gfm()未传singleTilde: false:micromark-extension-gfm的 strikethrough 扩展默认singleTilde: true(单~即触发删除线),这是上游默认值,但不符合 GFM 规范(GFM spec 要求~~)。影响范围
三处复用这两个 parser,均受影响:
parseGfm)parseGfmWithMath)plain-text.ts第 9、111 行 import 并复用parseGfm)受影响版本
@deepseek-ai/dsh0.1.1-rc.2(已确认)cd5ef81(2026-08-27)仍存在——仓库内singleTilde零命中,从未传过该选项建议修复
源码
packages/client/ui-primitives/src/markdown/parse.ts两处:附:已发布的 0.1.1-rc.2 本地 patch
≥0.1.1-rc.x 起,
dsh-client-ui-primitives不再作为独立 npm 包安装,markdown 解析逻辑被打包内联进dsh-web-frontend/dist/assets/vendor-*.js(minified)。minifier 因gfm()/s4()总是无参调用,做了死代码折叠——strikethrough 工厂内部e.singleTilde被折叠成字面量{}.singleTilde(恒undefined→ 走默认true),所以传参修复在 dist 产物上无效,只能直接改默认值:(函数名
s4随构建变化,定位:grep -oE "function [a-z0-9]+\(e\)\{let n=\{\}\.singleTilde" vendor-*.js)已验证:patch 后单
~保留为字面,~~正常触发删除线,符合 GFM 规范。All reactions