【Skill 创作】我做了一个从会议逐字稿自动提取待办任务的 Skill

【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 → 完整输入输出示例 → 待处理文本

关键点:

  1. few-shot 示例必加:没有示例,小模型输出不稳定,经常字段缺失或格式错乱
  2. temperature 调到 0.1:结构化输出任务,减少随机性比什么都重要
  3. 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 链接


7、总结与思考

收获

  1. 小模型不是能力不足,是引导不够:36B 模型的推理质量完全够用,关键在于 Prompt 结构要清晰——规则 + 示例 + 格式三段式,比纯描述性指令效果好太多。
  2. 架构比代码重要:第一版把 AI 调用塞进 Python 脚本,直接跑不通。第二版明确了"Agent 思考,工具执行"的职责分离,代码量反而少了,效果反而好了。
  3. JSON 解析必须有容错:小模型输出格式不稳定是常态,不能假设返回完美 JSON。5 级容错策略基本覆盖了所有情况。

目前最满意的地方

自动识别输入格式:逐字稿和结构化纪要走不同路径,用户不需要告诉 Agent "这是什么格式",Agent 自己判断。

后续优化方向

  1. 支持更多输入格式:比如 Word、PDF 文档,直接提取文本内容
  2. 任务去重和合并:同一任务在会议中被多次提及,需要智能去重
  3. 输出 Markdown 格式:除了 Excel,还可以直接输出 Markdown 任务清单,方便粘贴到飞书/钉钉

希望得到的建议

  • 你在处理会议记录时有什么痛点?
  • 你希望这个 Skill 还能提取什么信息?(比如决策事项、风险点?)

欢迎在评论区交流,也欢迎试用后反馈问题!