Hermes Feishu Table Renderer
让 Hermes Agent 在飞书(Feishu/Lark)中把 Markdown 表格渲染成真正的 CardKit v2 表格组件,而不是丑陋的代码块。
问题
Hermes 默认发送 Markdown 表格时,飞书不支持markdown表格,表格直接被吞掉不显示。
解决
修改 feishu.py,在消息发送前检测 Markdown 表格,自动转成飞书 CardKit v2 的 table 组件。
改动点
_parse_markdown_table— 解析 Markdown 文本,提取表格段和非表格文本段_build_table_card— 把表格数据转成 CardKit v2table组件(columns+rows对象数组格式),自动处理表头加粗样式_build_interactive_card_with_tables— 组装完整的schema: 2.0卡片_build_outbound_payload— 发送前检测表格,有则发interactive卡片,无则走原逻辑_convert_markdown_tables_to_code— 新增标记为 DEPRECATED 的兼容函数,保留旧调用接口,直接透传原文
表头加粗处理
Markdown 表格的表头通常带 **粗体** 标记,但飞书 CardKit v2 的 text 数据类型不支持 markdown 语法。解决方案:
- 去掉单元格内容里的
**和__标记,避免显示 raw markdown - 使用
header_style: {bold: true}让表头统一加粗显示
{
"tag": "table",
"columns": [...],
"rows": [...],
"header_style": {
"bold": true,
"text_align": "left",
"text_size": "normal",
"background_style": "none",
"text_color": "default",
"lines": 1
}
}CardKit v2 Table 格式
{
"schema": "2.0",
"config": {"wide_screen_mode": true},
"body": {
"elements": [
{
"tag": "table",
"columns": [
{"name": "col_0", "display_name": "姓名", "data_type": "text", "width": "auto"},
{"name": "col_1", "display_name": "年龄", "data_type": "text", "width": "auto"}
],
"rows": [
{"col_0": "张三", "col_1": "25"},
{"col_0": "李四", "col_1": "30"}
]
}
]
}
}升级方法
直接替换掉 Hermes 项目里的 feishu.py 文件即可:
# 1. 备份原文件(可选)
cp ~/.hermes/hermes-agent/gateway/platforms/feishu.py ~/.hermes/hermes-agent/gateway/platforms/feishu.py.bak
# 2. 替换文件
cp ./feishu.py ~/.hermes/hermes-agent/gateway/platforms/feishu.py
# 3. 重启 gateway 生效
hermes gateway restart替换路径根据实际 Hermes 安装位置调整,关键是放到 gateway/platforms/feishu.py 这个位置。


Comments | NOTHING
该文章已经关闭评论