| name | meeting-management |
| description | AI Agent Skill for meeting management. Audio transcription and structured storage with entity linking. |
Meeting Management - AI Agent Skill
角色定位:这是 AI 智能体 的 Skill,供 AI 调用以完成会议管理任务。
使用模式:用户 → AI 智能体 → 本 Skill
设计原则:
- Skill 层(本模块):转写、数据模型、存储、实体关联
- AI 层(调用方):语义理解、议题提取、行动项抽取、实体识别
架构定位
┌───────────────┐
│ AI 调用方 │ ← 语义理解、议题提取、行动项识别
│ (你在这里) │
└───────┬───────┘
│ 调用
▼
┌───────────────┐
│ Meeting Skill │ ← 转写、数据模型、存储、导出
│ (本模块) │
└───────────────┘
核心接口
1. 音频转写(Skill 负责)
from meeting_skill import transcribe
result = transcribe("meeting.mp3", model="small")
{
"segments": [
{"timestamp": "00:00:01", "speaker": "张三", "text": "我们开始开会吧"}
],
"full_text": "[00:00:01] 张三: 我们开始开会吧...",
"participants": ["张三", "李四"],
"duration": 1800,
"model_used": "small"
}
2. 数据结构(AI 负责填充)
from meeting_skill import Meeting, Topic, ActionItem
from datetime import datetime
meeting = Meeting(
title="产品评审会",
date="2026-02-25",
participants=["张三", "李四"],
topics=[
Topic(
title="技术方案讨论",
discussion_points=[
"对比了方案A和B",
"方案B成本更低"
],
conclusion="决定采用方案B",
uncertain=[
"具体实施时间待定"
],
action_items=[
ActionItem(
action="整理技术文档",
owner="张三",
deadline="2026-03-01",
deliverable="文档"
)
]
)
],
risks=["工期可能紧张"],
pending_confirmations=["预算待确认"],
id="M20260225_143012_a1b2c3",
time_range="14:30-15:30",
location="会议室A",
recorder="",
audio_path="meeting.mp3",
version=1
)
3. 保存输出(Skill 负责)
from meeting_skill import save_meeting
files = save_meeting(meeting, output_dir="./output")
{
"json": "./output/meetings/2026/02/M20260225_143012_a1b2c3/minutes_v1.json",
"docx": "./output/meetings/2026/02/M20260225_143012_a1b2c3/minutes_v1.docx",
"meeting_dir": "./output/meetings/2026/02/M20260225_143012_a1b2c3"
}
4. 其他工具方法
from meeting_skill import query_meetings
results = query_meetings(
date_range=("2026-02-01", "2026-02-28"),
keywords=["技术方案"]
)
from meeting_skill import update_meeting
meeting_v2 = update_meeting(
meeting_id="M20260225_143012_a1b2c3",
title="产品评审会(更新版)"
)
完整使用示例
from meeting_skill import transcribe, Meeting, Topic, ActionItem, save_meeting
result = transcribe("meeting.mp3")
meeting = Meeting(
title="AI 识别的会议标题",
date="2026-02-25",
participants=result["participants"],
topics=[
Topic(
title="议题1",
discussion_points=["要点1", "要点2"],
conclusion="结论",
action_items=[
ActionItem(action="任务", owner="负责人", deadline="2026-03-01")
]
)
],
risks=[],
pending_confirmations=[]
)
files = save_meeting(meeting)
print(f"已保存到: {files['docx']}")
数据模型
核心实体
@dataclass
class Meeting:
id: str
title: str
date: str
time_range: str
location: str
participants: List[str]
recorder: str
topics: List[Topic]
risks: List[str]
pending_confirmations: List[str]
audio_path: Optional[str]
version: int = 1
status: str = "draft"
policy_refs: List[PolicyRef]
enterprise_refs: List[EnterpriseRef]
project_refs: List[ProjectRef]
@dataclass
class Topic:
title: str
discussion_points: List[str]
conclusion: str = ""
uncertain: List[str] = []
action_items: List[ActionItem] = []
@dataclass
class ActionItem:
action: str
owner: str
deadline: str
deliverable: str = ""
status: str = "待处理"
related_policy: Optional[PolicyRef]
related_enterprise: Optional[EnterpriseRef]
related_project: Optional[ProjectRef]
关联实体(设计预留)
@dataclass
class PolicyRef:
"""政策引用 - AI 从会议内容识别"""
policy_id: str = ""
clause_ref: str = ""
check_required: bool = False
@dataclass
class EnterpriseRef:
"""企业关联 - AI 从会议内容识别"""
enterprise_id: str = ""
cooperation_item: str = ""
contact_person: str = ""
contact_permission: str = ""
@dataclass
class ProjectRef:
"""项目关联 - AI 从会议内容识别"""
project_id: str = ""
milestone: str = ""
change_point: str = ""
输出格式
JSON 结构
{
"id": "M20260225_143012_a1b2c3",
"title": "产品评审会",
"date": "2026-02-25",
"participants": ["张三", "李四"],
"topics": [
{
"title": "技术方案讨论",
"discussion_points": ["对比方案A和B", "成本分析"],
"conclusion": "决定采用方案B",
"action_items": [
{"action": "整理文档", "owner": "张三", "deadline": "2026-03-01"}
]
}
],
"risks": ["工期紧张"],
"pending_confirmations": ["预算待确认"],
"version": 1
}
Word 文档结构
会议纪要:{标题}
一、会议基本信息
- 主题/时间/地点/参会人/记录人
二、议题与讨论
议题1:{标题}
(一)讨论要点
- xxx
(二)结论
- xxx
(三)行动项
| 行动事项 | 负责人 | 完成期限 | 交付物 | 状态 |
三、待确认事项
四、风险点
五、附件(录音文件)
Prerequisites
pip install faster-whisper python-docx websockets
首次运行自动下载 Whisper small 模型 (~244MB)。
责任边界总结
| 功能 | 负责方 | 说明 |
|---|
| 音频转写 | Skill | Whisper 本地转写 |
| 文本分段 | Skill | 时间戳/发言人解析 |
| 议题提取 | AI | 语义理解 |
| 结论识别 | AI | 语义理解 |
| 行动项抽取 | AI | 语义理解 |
| 数据存储 | Skill | JSON/DOCX 导出 |
| 格式排版 | Skill | Word 文档生成 |
附录:本地测试指南
合并自 README_TEST.md
快速开始(5分钟跑通)
1. 安装依赖
pip install faster-whisper python-docx pyaudio websockets
注意:pyaudio 安装可能遇到问题
- Windows:
pip install pipwin && pipwin install pyaudio
- Mac:
brew install portaudio && pip install pyaudio
2. 测试转写功能(无需录音)
from meeting_skill import transcribe, create_meeting_skeleton, save_meeting
result = transcribe("meeting.mp3")
meeting = create_meeting_skeleton(result["full_text"], title="测试会议")
files = save_meeting(meeting)
print(f"已保存: {files['docx']}")
3. 测试录音功能(需要麦克风)
python scripts/recorder.py
测试检查清单