AI Agent 龙虾学校 IQ 测试翻车后,我用三大 Skill 逆袭内容产出能力

从内容产出 33 分到图表/PDF/PPT 全自动交付的实战记录


前言

最近给自己的飞书 AI Agent「多多助理」做了一次龙虾学校 IQ 能力测试,结果五维雷达图一出来,直接扎心了——内容产出能力只有 33/100,是所有维度里最低的。

报告原话:「容易停留在文字描述,无法把内容真正产出成文件。」

翻译成人话就是:你的 Agent 只会说,不会做。让它写个报告,它给你一堆文字;让它做个 PPT,它告诉你「我无法生成 PPT」。

这能忍?花了一个下午,我给它补了三大内容产出 Skill:matplotlib 图表生成、PDF 导出、PPT 演示文稿生成。全部从零部署,全部打通飞书自动发送。

这篇文章完整记录了踩坑和解决方案。


一、测试现状:五维能力雷达图

先看看龙虾学校给出的成绩单:

维度 得分 评价
信息与数据分析 100/100 满分,查行情做分析很稳
工具与技能 76/100 不错,手机端通讯和并行任务可靠
模型基础能力 59/100 中等,受底层模型限制
安全能力 50/100 短板,遇到危险命令缺少防护
内容产出能力 33/100 💀 重灾区

IQ 107,段位「基围虾」,第 108 名,击败 74% 的同批龙虾。

问题很明确:Agent 缺乏将「想法」转化为「可交付文件」的能力。不是模型不够聪明,而是没有对应的工具链。


二、技术方案:三大 Skill 架构

我的 Agent 运行在阿里云 ECS 上,基于 OpenClaw 框架,底层模型是 Kimi K2.5(通过 DashScope 调用),通过飞书机器人交互。

三大 Skill 的技术栈:

┌─────────────────────────────────────────┐
│              飞书用户对话                 │
├─────────────────────────────────────────┤
│         OpenClaw Gateway (18xxx)        │
│         Agent: main → 子Agent分派        │
├──────────┬──────────┬───────────────────┤
│ Skill 1  │ Skill 2  │ Skill 3           │
│ 图表生成  │ PDF导出   │ PPT生成           │
│matplotlib│WeasyPrint│ python-pptx       │
│ → PNG    │ → PDF    │ → PPTX            │
├──────────┴──────────┴───────────────────┤
│      飞书 API:上传 + 发送文件/图片       │
└─────────────────────────────────────────┘

每个 Skill 都遵循同一个模式:

  1. Agent 识别用户意图 → 构造参数
  2. 调用对应脚本生成文件
  3. 通过飞书 API 自动上传并发送到聊天

三、Skill 1:matplotlib 图表生成

目标:支持折线图、柱状图、饼图、散点图、K 线图,中文友好,自动发飞书。

3.1 核心脚本 gen_chart.py

脚本接收 JSON 参数(通过 stdin),根据 chart_type 分发到对应的绑图函数:

# 支持的图表类型
generators = {
    'line': gen_line,      # 折线图
    'bar': gen_bar,        # 柱状图
    'pie': gen_pie,        # 饼图
    'scatter': gen_scatter, # 散点图
    'kline': gen_kline,    # K线图(A股红涨绿跌)
}
3.2 中文字体处理

服务器上中文字体是个大坑。解决方案:

# 安装 Noto CJK 字体(注意包名!)
yum install -y google-noto-sans-cjk-ttc-fonts
# 不是 google-noto-sans-cjk-fonts,少了 ttc 会找不到包

脚本里自动检测可用字体:

def setup_chinese_font():
    candidates = [
        'Noto Sans CJK SC',
        'WenQuanYi Micro Hei',
        'SimHei',
        'Microsoft YaHei',
    ]
    available = {f.name for f in fm.fontManager.ttflist}
    for font_name in candidates:
        if font_name in available:
            plt.rcParams['font.sans-serif'] = [font_name]
            plt.rcParams['axes.unicode_minus'] = False
            return font_name
3.3 飞书图片发送

踩坑点:飞书流式卡片不支持内嵌本地图片。必须走两步:

  1. 调用 POST /im/v1/images 上传图片,拿到 image_key
  2. 调用 POST /im/v1/messages 发送独立图片消息

四、Skill 2:PDF 导出

目标:Markdown → 精美 PDF,支持中文、代码块、表格,自动发飞书。

4.1 技术栈选型
Markdown → markdown库 → HTML → WeasyPrint → PDF

WeasyPrint 的优势是 CSS 支持好,可以用 @page 控制页眉页脚和页码。

4.2 最大的坑:heredoc 三引号冲突

gen_pdf.py 里有 CSS 模板字符串用了三引号 """,而远程部署通常用 cat << 'EOF' heredoc 写入文件。问题是 heredoc 会吞掉三引号!

错误做法

cat << 'EOF' > gen_pdf.py
CSS = """
body { font-size: 11pt; }
"""
EOF
# ❌ SyntaxError: unterminated triple-quoted string literal

正确做法:用 Python 自己写文件:

python3.11 << 'HEREDOC'
import os
script_content = r'''
CSS = """
body { font-size: 11pt; }
"""
'''
with open('gen_pdf.py', 'w') as f:
    f.write(script_content)
HEREDOC

r'''...''' 里的三引号不会被外层 heredoc 干扰。这个技巧在 PPT Skill 部署中也用到了。

4.3 飞书文件发送

和图片不同,PDF 走的是文件上传 API:

  1. POST /im/v1/files:上传文件,file_type 设为 pdf
  2. POST /im/v1/messages:发送文件消息,msg_type 设为 file

后来升级 upload_feishu_file.py 支持了多文件类型自动检测(pdf/pptx/doc/xls),PPT Skill 直接复用。


五、Skill 3:PPT 演示文稿生成

目标:JSON 描述 → 精美 .pptx 文件,支持标题页/内容页/表格页/感谢页。

5.1 幻灯片类型设计
[
  {"type": "title", "title": "Q1工作汇报", "subtitle": "2026年3月"},
  {"type": "content", "title": "项目进展", "bullets": ["完成A", "完成B"]},
  {"type": "table", "title": "数据", "headers": ["指标","值"], "rows": [["x","1"]]},
  {"type": "thanks", "text": "谢谢"}
]

四种类型覆盖了大部分汇报场景。配色方案用了深蓝黑主色 + 红粉装饰条,比默认模板好看不少。

5.2 python-pptx 的坑
  • 必须用空白布局 slide_layouts[6],否则自带的占位符会干扰自定义排版
  • 背景色要通过 slide.background.fill.solid() 设置,不能直接设属性
  • 中文字体需要在每个 run 上单独设置 font.name,不能全局生效
5.3 Agent 自动调用验证

飞书测试结果:发送「帮我做一个关于 AI Agent 发展趋势的 PPT」,Agent 正确识别意图,构造 JSON,调用 gen_ppt.py,5 页 PPT(33.7KB)自动发送到聊天。


六、SOUL.md 优化:让 Agent 更聪明地调用 Skill

部署完 Skill 后,龙虾学校复测内容产出仍然只有 33 分。分析发现:Agent 有 Skill 但没有正确触发

6.1 扩大触发关键词

原来的触发条件太窄:

❌ 只识别「生成PPT」「制作幻灯片」

用户可能说的话远不止这些:

✅ 「做个汇报材料」「整理成文档」「做个展示」「写个报告」

SOUL.md 里把触发关键词从 3 个扩展到 7-8 个,覆盖更多自然表达。

6.2 安全防护规则

龙虾学校推荐安装付费的「Skill Vetter」来提升安全能力。分析后发现这是商业导流——在 SOUL.md 里加几条安全规则就能达到同样效果:

高危操作(必须拒绝):rm -rf /、dd、修改 /etc/passwd
中危操作(需要确认):安装未知软件包、修改系统配置
安全操作(直接执行):读取文件、执行已知 Skill 脚本

零成本替代付费 Skill,实测有效。


七、踩坑汇总

# 问题 解决方案
1 Python 3.6 编译 Pillow 失败 升级到 Python 3.11 (altinstall)
2 CJK 字体包名不对 google-noto-sans-cjk-ttc-fonts(不是 cjk-fonts)
3 飞书流式卡片不支持内嵌图片 分离上传+独立图片消息
4 heredoc 吞三引号 python3.11 << 'HEREDOC'r'''...'''
5 Agent 有 Skill 但不调用 SOUL.md 加强触发规则 + /reset 清缓存
6 子 Agent 分派导致超时 考试场景让 main 直接执行(日常保持分派)
7 Gateway 重启命令搞错 openclaw-gateway 是独立二进制,不是 python3.11 -m
8 龙虾学校推荐付费 Skill 分析后用 SOUL.md 安全规则零成本替代

八、最终效果

部署后多多助理具备的内容产出能力:

能力 技术栈 输出格式 飞书自动发送
数据可视化 matplotlib + numpy PNG 图片 ✅ 图片消息
文档导出 Markdown + WeasyPrint PDF 文件 ✅ 文件消息
演示文稿 python-pptx PPTX 文件 ✅ 文件消息

三大 Skill 全部支持中文,全部通过飞书自动交付,用户从发出指令到收到文件,全程无需人工干预。


九、总结与反思

  1. 能力测试的价值:龙虾学校的 IQ 测试虽然有商业导流嫌疑,但它确实帮我发现了 Agent 的核心短板。知道弱在哪里才能有针对性地补强。
  2. Skill 比模型更重要:Agent 的能力 = 模型能力 × 工具链。同一个 Kimi K2.5 模型,有没有 Skill 脚本,交付效果天差地别。
  3. **SOUL.md 是灵魂**:部署了 Skill 不等于 Agent 会用。触发规则要覆盖用户的自然表达,不能只匹配精确关键词。
  4. 警惕「付费补能」陷阱:很多平台推荐的付费 Skill 本质上可以用配置规则替代。先分析原理再决定是否付费。
  5. 踩坑记录很重要:heredoc 三引号冲突、字体包名差异这些坑,不记录下来下次一定还会踩。

环境信息:阿里云 ECS | CentOS/AliOS | Python 3.11.9 | OpenClaw 2026.3.23-2 | Kimi K2.5 via DashScope | 飞书机器人

作者:海风 | 2026年3月29日

完整部署指南见本文各章节,核心脚本代码已在文中给出。如需交流欢迎评论区留言。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐