AI 会议与日程助手
AI 可以自动生成会议纪要、提取行动项、智能安排日程,让会议管理从手动变自动。
会议自动化全景
graph TB
A[会议生命周期] --> B[会前准备]
A --> C[会中记录]
A --> D[会后跟进]
B --> B1[自动发邀请]
B --> B2[议程生成]
B --> B3[材料汇总]
C --> C1[实时转录]
C --> C2[要点提取]
C --> C3[行动项识别]
D --> D1[纪要分发]
D --> D2[任务创建]
D --> D3[进度追踪]
style A fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
style C fill:#fff9c4,stroke:#f9a825,stroke-width:2px
style D fill:#c8e6c9,stroke:#43a047,stroke-width:2px
会议纪要生成器
from dataclasses import dataclass, field
from datetime import datetime
import re
@dataclass
class ActionItem:
description: str
assignee: str
deadline: str
priority: str = "中"
@dataclass
class MeetingMinutes:
title: str
date: str
attendees: list[str]
key_decisions: list[str]
action_items: list[ActionItem]
summary: str
next_meeting: str = ""
class MeetingAssistant:
"""AI 会议助手"""
# 行动项关键词模式
ACTION_PATTERNS = [
r"(.*?)(?:负责|来做|去处理|跟进)(.*?)(?:,|。|$)",
r"(?:TODO|待办|行动项)[::]\s*(.*?)(?:,|。|$)",
r"(.*?)(?:在|before|之前).+?(?:完成|交付|提交)(.*?)(?:,|。|$)",
]
# 决策关键词
DECISION_KEYWORDS = [
"决定", "确认", "同意", "通过", "采用", "选择",
"agreed", "decided", "approved"
]
def extract_action_items(
self, transcript: str, attendees: list[str]
) -> list[ActionItem]:
"""从会议记录中提取行动项"""
items = []
lines = transcript.split("\n")
for line in lines:
for pattern in self.ACTION_PATTERNS:
match = re.search(pattern, line)
if match:
# 尝试识别负责人
assignee = "待定"
for person in attendees:
if person in line:
assignee = person
break
items.append(ActionItem(
description=line.strip(),
assignee=assignee,
deadline="待确认",
))
break
return items
def extract_decisions(self, transcript: str) -> list[str]:
"""提取关键决策"""
decisions = []
for line in transcript.split("\n"):
if any(kw in line for kw in self.DECISION_KEYWORDS):
decisions.append(line.strip())
return decisions
def generate_minutes(
self,
title: str,
transcript: str,
attendees: list[str],
) -> MeetingMinutes:
"""生成完整会议纪要"""
decisions = self.extract_decisions(transcript)
actions = self.extract_action_items(transcript, attendees)
# 生成摘要(简化版:取前3个决策)
summary_parts = decisions[:3] if decisions else ["暂无关键决策"]
summary = ";".join(summary_parts)
return MeetingMinutes(
title=title,
date=datetime.now().strftime("%Y-%m-%d"),
attendees=attendees,
key_decisions=decisions,
action_items=actions,
summary=summary,
)
def format_markdown(self, minutes: MeetingMinutes) -> str:
"""输出为 Markdown 格式"""
lines = [
f"# {minutes.title}",
f"**日期**: {minutes.date}",
f"**参会人**: {', '.join(minutes.attendees)}",
"",
"## 摘要",
minutes.summary,
"",
"## 关键决策",
]
for d in minutes.key_decisions:
lines.append(f"- {d}")
lines.append("")
lines.append("## 行动项")
lines.append("| 事项 | 负责人 | 截止日期 | 优先级 |")
lines.append("|------|--------|---------|--------|")
for a in minutes.action_items:
lines.append(
f"| {a.description[:40]} | {a.assignee} "
f"| {a.deadline} | {a.priority} |"
)
return "\n".join(lines)
# 使用示例
assistant = MeetingAssistant()
transcript = """
张三:这个方案我觉得可以,我们决定采用方案B。
李四:好的,我来负责前端开发部分,下周五前完成。
王五:数据库设计我来做,周三前提交设计文档。
张三:确认预算为50万,分两期执行。
"""
minutes = assistant.generate_minutes(
"项目启动会",
transcript,
["张三", "李四", "王五"]
)
print(assistant.format_markdown(minutes))
智能日程优化
from dataclasses import dataclass
@dataclass
class TimeBlock:
"""时间段分析"""
start_hour: int
end_hour: int
energy_level: str # high | medium | low
best_for: str
class SmartScheduler:
"""智能日程安排——基于精力曲线"""
DEFAULT_ENERGY_MAP = [
TimeBlock(9, 11, "high", "深度工作/创造性任务"),
TimeBlock(11, 12, "medium", "会议/协作"),
TimeBlock(13, 14, "low", "行政/邮件"),
TimeBlock(14, 16, "medium", "会议/review"),
TimeBlock(16, 18, "medium", "规划/轻量任务"),
]
def suggest_time(self, task_type: str) -> list[TimeBlock]:
"""根据任务类型推荐时间段"""
mapping = {
"深度工作": "high",
"会议": "medium",
"邮件": "low",
"规划": "medium",
}
target_energy = mapping.get(task_type, "medium")
return [
b for b in self.DEFAULT_ENERGY_MAP
if b.energy_level == target_energy
]
def detect_meeting_overload(
self, meetings_per_day: list[int]
) -> dict:
"""检测会议过载"""
avg = sum(meetings_per_day) / len(meetings_per_day) if meetings_per_day else 0
overloaded_days = sum(1 for m in meetings_per_day if m > 4)
return {
"日均会议": f"{avg:.1f}",
"过载天数(>4场/天)": overloaded_days,
"建议": "需要减少会议" if avg > 3 else "会议负载正常",
"推荐上限": "每天不超过4场,每场不超过1小时",
}
会议工具对比
| 工具 | 转录 | 纪要 | 行动项 | 集成 | 价格 |
|---|---|---|---|---|---|
| Otter.ai | ✅ | ✅ | ✅ | Zoom/Teams | $8.33/月 |
| Fireflies.ai | ✅ | ✅ | ✅ | 多平台 | $10/月 |
| tl;dv | ✅ | ✅ | ✅ | Zoom/Meet | 免费起步 |
| Notion AI | ❌ | ✅ | ✅ | Notion | $8/月 |
| 飞书妙记 | ✅ | ✅ | ❌ | 飞书 | 随飞书套件 |
本章小结
- 行动项自动提取——从转录文本中识别"谁做什么"
- 决策关键词匹配——"决定/确认/同意" 自动标记为决策
- Markdown 格式化——纪要可直接粘贴到 Wiki 或文档
- 精力曲线调度——高精力时段做深度工作,低精力时段处理邮件
- 会议过载检测——日均超过 3 场建议优化
下一章:Copilot 与 GPT 集成