Bug Description
When a GFM markdown table with a row-label column is rendered for Telegram, the row-label column header (e.g., "維度") is incorrectly included as a duplicate bullet item in the output.
Expected Behavior
Given a markdown table:
維度
• 核心賣點: 核心賣點
• MiniMax M2.7: 自我進化能力、Agent 協作
• Qwen3.5: 多模態原生統一架構
維度
• 核心賣點: 強項場景
• MiniMax M2.7: 編程 Agent、長時任務自主迭代
• Qwen3.5: 視覺理解、工具調用、多模態
The Telegram output should be:
核心賣點
• MiniMax M2.7: 自我進化能力、Agent 協作
• Qwen3.5: 多模態原生統一架構
強項場景
• MiniMax M2.7: 編程 Agent、長時任務自主迭代
• Qwen3.5: 視覺理解、工具調用、多模態
Actual Behavior
The row-label column header ("維度") is included as a spurious bullet:
核心賣點
• 維度: 核心賣點
• MiniMax M2.7: 自我進化能力、Agent 協作
• Qwen3.5: 多模態原生統一架構
Environment
- Hermes Agent version: latest (NousResearch/hermes-agent)
- Platform: Telegram
- File:
gateway/platforms/telegram.py, function _render_table_block_for_telegram, lines ~174-205
Root Cause
The table has 4 columns: row-label + 3 data columns.
headers = ['核心賣點', 'MiniMax M2.7', 'Qwen3.5'] (3 items — the row-label column has no header)
- First data row cells =
['維度', '核心賣點', 'MiniMax M2.7', '多模態原生統一架構'] (4 items)
Line 191 sets heading = '維度' from the first cell. Then the condition at line 196 evaluates len(headers) == len(cells) and headers[0] → 3 == 4 and True → False, so the else branch at line 201 executes zip(headers[1:], cells[1:]). This still pairs headers incorrectly because the first cell of cells[1:] ('核心賣點') gets paired with 'MiniMax M2.7'.
The core issue: the first cell (the row-label column containing "維度") is prepended as a bold heading AND its value is also included in the bullet zip. The row-label column is never correctly excluded from the bullet generation.
Bug Description
When a GFM markdown table with a row-label column is rendered for Telegram, the row-label column header (e.g., "維度") is incorrectly included as a duplicate bullet item in the output.
Expected Behavior
Given a markdown table:
The Telegram output should be:
Actual Behavior
The row-label column header ("維度") is included as a spurious bullet:
Environment
gateway/platforms/telegram.py, function_render_table_block_for_telegram, lines ~174-205Root Cause
The table has 4 columns: row-label + 3 data columns.
headers = ['核心賣點', 'MiniMax M2.7', 'Qwen3.5'](3 items — the row-label column has no header)['維度', '核心賣點', 'MiniMax M2.7', '多模態原生統一架構'](4 items)Line 191 sets
heading = '維度'from the first cell. Then the condition at line 196 evaluateslen(headers) == len(cells) and headers[0]→3 == 4 and True→ False, so theelsebranch at line 201 executeszip(headers[1:], cells[1:]). This still pairs headers incorrectly because the first cell ofcells[1:]('核心賣點') gets paired with 'MiniMax M2.7'.The core issue: the first cell (the row-label column containing "維度") is prepended as a bold heading AND its value is also included in the bullet zip. The row-label column is never correctly excluded from the bullet generation.