From fd5150ffad9f5f7c75c097028cf22bdb916a8fb4 Mon Sep 17 00:00:00 2001 From: Liang Jiaqing Date: Sun, 22 Mar 2026 20:45:40 +0800 Subject: [PATCH] feat: strip markdown formatting in wechat output --- frontends/wechatapp.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/frontends/wechatapp.py b/frontends/wechatapp.py index 60d98f5..10d7407 100644 --- a/frontends/wechatapp.py +++ b/frontends/wechatapp.py @@ -123,10 +123,23 @@ agent.verbose = False _TAG_PATS = [r'<' + t + r'>.*?' for t in ('thinking', 'summary', 'tool_use')] _TAG_PATS.append(r'.*?') +def _strip_md(t): + t = re.sub(r'```[\s\S]*?```', lambda m: m.group().strip('`').split('\n',1)[-1] if '\n' in m.group() else m.group().strip('`'), t) + t = re.sub(r'`([^`]+)`', r'\1', t) + t = re.sub(r'!\[.*?\]\(.*?\)', '', t) + t = re.sub(r'\[([^\]]+)\]\([^\)]+\)', r'\1', t) + t = re.sub(r'^#{1,6}\s+', '', t, flags=re.M) + t = re.sub(r'(\*{1,3}|_{1,3})(.*?)\1', r'\2', t) + t = re.sub(r'^\s*[-*+]\s+', '• ', t, flags=re.M) + t = re.sub(r'^\s*\d+\.\s+', '', t, flags=re.M) + t = re.sub(r'^\s*>\s?', '', t, flags=re.M) + t = re.sub(r'^---+$', '', t, flags=re.M) + return re.sub(r'\n{3,}', '\n\n', t).strip() + def _clean(t): for p in _TAG_PATS: t = re.sub(p, '', t, flags=re.DOTALL) - return re.sub(r'\n{3,}', '\n\n', t).strip() or '...' + return re.sub(r'\n{3,}', '\n\n', _strip_md(t)).strip() or '...' def _split(text, limit=1800): """Split text into chunks respecting line boundaries."""