【Skill 创作】我做了一个从会议逐字稿自动提取待办任务的 Skill
1、Skill 简介
meeting-task-extractor(会议任务提取器)
这是一个帮助团队快速从会议逐字稿中提取待办任务并生成 Excel 表格的 Skill,适合需要频繁开会、会后要整理任务清单的同学使用。
输入一段会议逐字稿(含姓名+时间戳的对话格式),Agent 会自动识别任务描述、负责人、截止日期、优先级,直接输出一张结构化的 Excel 任务表。全程本地运行,无需云端 API。
2、使用场景
为什么想做它?
团队每天开各种会——站会、需求评审、技术讨论,会后经常要手动整理待办。领导问"这个会结论是什么",翻聊天记录翻半天。
之前遇到的麻烦:
- 逐字稿写了没人看,白录了
- 口语化对话太难提取——"你这边帮我们搞一下后台"这种话,正则根本抓不住
- 手动整理效率低,还容易漏任务
做出来之后能省掉哪些动作:
省掉"会后翻记录 + 手动抄任务 + 发通知"这三步。直接把逐字稿丢给 Agent,几秒钟出 Excel,转发给团队就行。
3、创作过程
整个 Skill 的开发经历了从"复杂方案"到"精简架构"的演进,踩了不少坑,分享给大家。
第一版:错误的架构
最初设计是在 Python 脚本里调一个本地模型来提取任务:
Agent → Skill → Python脚本 → 调用本地模型(未实现) → 失败 ❌
问题很明显:
- 脚本里的
_call_model()是空壳,OpenVINO 和 Ollama 实现都是 TODO - 架构混乱,Skill 里又调模型,职责不清
第二版:正确的架构
重新思考后,明确了职责分离:
Agent 分析语义 → 输出 JSON → Python 脚本生成 Excel → Excel 文件 ✅
核心思路:Agent 负责思考(理解口语化对话),Python 脚本只负责执行(JSON→Excel)。
关键 Prompt 设计
36B 小模型对纯描述性指令遵循度有限,必须用「规则 + 示例」的 Prompt 结构:
角色设定 → 提取规则表格 → JSON schema → 完整输入输出示例 → 待处理文本
关键点:
- few-shot 示例必加:没有示例,小模型输出不稳定,经常字段缺失或格式错乱
- temperature 调到 0.1:结构化输出任务,减少随机性比什么都重要
- 5 级 JSON 容错解析:小模型输出可能带 markdown 代码块、尾部逗号、单引号,不能假设完美 JSON
5 级容错策略:
| 优先级 | 策略 | 处理场景 |
|---|---|---|
| 1 | 直接解析 | 模型输出纯 JSON |
| 2 | 提取代码块 | 输出含 ```json``` |
| 3 | 括号匹配 | JSON 前后有解释文字 |
| 4 | 格式修复 | 尾部逗号、单引号 |
| 5 | 逐行扫描 | JSON 被文字打断 |
输入格式自动检测
通过正则检测前 20 行,如果匹配 姓名(时间戳): 格式的行数 ≥ 30%,判定为逐字稿,走 Agent 语义提取路径;否则走结构化纪要的规则提取路径。
4、使用步骤
前提条件
- opencode 平台已配置好
- 安装了 Python 3.8+
步骤
Step 1:加载 Skill
在 opencode 中输入或调用 meeting-task-extractor Skill,系统会自动加载。
Step 2:提供会议文件
直接告诉 Agent 你的会议文件路径:
请提取这个会议的待办任务:/path/to/会议逐字稿.txt
Step 3:Agent 分析并生成任务列表
Agent 会自动读取文件、识别逐字稿格式、提取任务,输出 JSON 格式的任务列表。
Step 4:生成 Excel
Agent 自动调用 Python 脚本,一行命令生成 Excel:
python3 scripts/main.py --tasks-file tasks.json --title "项目评审会" --participants "张三,李四"
不指定 --output 时,默认生成到当前工作目录(./会议任务.xlsx)。
5、效果展示
输入(逐字稿片段)
aa(00:18:34): 你这边可能是帮我们去攻克一下后台那些难题,然后前端可能是bb带着dd一起搞一下。
cc(00:18:42): 那还好,因为我确实前端不大行,我后端可以配合一下。
dd(00:19:36): 那行,我到时候去细化一下,至少中午之前出版结构。
Agent 提取结果(JSON)
[
{
"id": "T001",
"description": "攻克后台技术难题",
"assignee": "cc",
"deadline": null,
"priority": "medium",
"status": "pending",
"notes": "cc确认后端配合"
},
{
"id": "T002",
"description": "前端功能开发",
"assignee": "cc、dd",
"deadline": null,
"priority": "medium",
"status": "pending",
"notes": "cc带领dd一起完成"
},
{
"id": "T003",
"description": "细化平台功能结构并发布",
"assignee": "bb",
"deadline": "2024-01-15",
"priority": "high",
"status": "pending",
"notes": "领导看得急,中午前出版本结构"
}
]
输出 Excel
生成的 Excel 包含完整的任务表,带负责人、截止日期、优先级等字段,直接可以发团队使用。
6、Skill 链接
- 魔搭 Skills 中心:ModelScope - Skills 技能中心(搜索
meeting-task-extractor或标签AIPC) - Skill 详情:meeting-task-extractor
- 适配过程文档:详细记录了 10 个问题及解决方案,适合想学习 Skill 开发的同学参考
7、总结与思考
收获
- 小模型不是能力不足,是引导不够:36B 模型的推理质量完全够用,关键在于 Prompt 结构要清晰——规则 + 示例 + 格式三段式,比纯描述性指令效果好太多。
- 架构比代码重要:第一版把 AI 调用塞进 Python 脚本,直接跑不通。第二版明确了"Agent 思考,工具执行"的职责分离,代码量反而少了,效果反而好了。
- JSON 解析必须有容错:小模型输出格式不稳定是常态,不能假设返回完美 JSON。5 级容错策略基本覆盖了所有情况。
目前最满意的地方
自动识别输入格式:逐字稿和结构化纪要走不同路径,用户不需要告诉 Agent "这是什么格式",Agent 自己判断。
后续优化方向
- 支持更多输入格式:比如 Word、PDF 文档,直接提取文本内容
- 任务去重和合并:同一任务在会议中被多次提及,需要智能去重
- 输出 Markdown 格式:除了 Excel,还可以直接输出 Markdown 任务清单,方便粘贴到飞书/钉钉
希望得到的建议
- 你在处理会议记录时有什么痛点?
- 你希望这个 Skill 还能提取什么信息?(比如决策事项、风险点?)
欢迎在评论区交流,也欢迎试用后反馈问题!