Revert "feat(tg): 思考块改为可折叠引用块(与工具调用区分)"

This reverts commit 6d00225cc4.
This commit is contained in:
RRRosmontis
2026-09-17 11:39:18 +08:00
parent 6d00225cc4
commit 566932e0ae
4 changed files with 16 additions and 94 deletions
+3 -11
View File
@@ -210,10 +210,8 @@ const REASONING_QUOTE_MAX_CHARS = 800
/**
* Assistant message → markdown for delivery. Reasoning (thinking) blocks are
* kept as EXPANDABLE quotes (`**>`…`||` per Telegram's native markdown spec,
* `<blockquote expandable>` in HTML mode) so they stay collapsed on the phone
* and visually distinct from tool-call quotes; ordinary quotes in assistant
* text remain plain blockquotes.
* kept, one `> ` quote line each — Telegram renders them as the accent-bar
* quote style the phone user expects for bash/thinking-style chatter.
*/
function contentToText(content: readonly ContentBlock[]): string {
const parts: string[] = []
@@ -225,13 +223,7 @@ function contentToText(content: readonly ContentBlock[]): string {
if (!thinking) continue
if (thinking.length > REASONING_QUOTE_MAX_CHARS)
thinking = `${thinking.slice(0, REASONING_QUOTE_MAX_CHARS)}…`
// `||` would open/close spoiler entities in native markdown — neutralize.
const lines = thinking.replace(/\|\|/g, '||').split('\n')
const last = lines.length - 1
parts.push([
'**>💭 思考过程',
...lines.map((line, i) => `> ${line}${i === last ? '||' : ''}`),
].join('\n'))
parts.push(thinking.split('\n').map((line) => `> ${line}`).join('\n'))
}
}
return parts.join('\n\n')
+5 -35
View File
@@ -14,50 +14,20 @@ function inlineToHtml(text: string): string {
return html
}
/**
* Convert `> …` line groups into `<blockquote>` (Telegram renders it with the
* accent-colored left bar). The native-markdown expandable-quote form
* (`**>first line` … `last line||`) becomes `<blockquote expandable>` — used
* for thinking blocks so they stay collapsed and distinct from tool-call
* quotes (Telegram has no per-message quote color).
*/
const EXPANDABLE_OPEN = '**>'
/** Convert `> …` line groups into `<blockquote>` (Telegram renders it with the accent-colored left bar). */
function blocksToHtml(text: string): string {
const lines = text.split('\n')
const out: string[] = []
let quote: string[] = []
let expandable = false
const flush = (): void => {
if (quote.length === 0) return
const open = expandable ? '<blockquote expandable>' : '<blockquote>'
out.push(`${open}${inlineToHtml(quote.join('\n'))}</blockquote>`)
out.push(`<blockquote>${inlineToHtml(quote.join('\n'))}</blockquote>`)
quote = []
expandable = false
}
for (const line of lines) {
if (line.startsWith(EXPANDABLE_OPEN)) {
flush()
expandable = true
let content = line.slice(EXPANDABLE_OPEN.length)
if (content.endsWith('||')) {
quote.push(content.slice(0, -2))
flush()
} else {
quote.push(content)
}
} else if (line.startsWith('> ')) {
let content = line.slice(2)
let closed = false
if (expandable && content.endsWith('||')) {
content = content.slice(0, -2)
closed = true
}
quote.push(content)
if (closed) flush()
} else if (line === '>') {
quote.push('')
} else {
if (line.startsWith('> ')) quote.push(line.slice(2))
else if (line === '>') quote.push('')
else {
flush()
out.push(inlineToHtml(line))
}