添加-会议纪要skill-v0.5,索引版本
This commit is contained in:
495
.claude/skills/meeting-minutes-generator-v1/架构设计精要.md
Normal file
495
.claude/skills/meeting-minutes-generator-v1/架构设计精要.md
Normal file
@ -0,0 +1,495 @@
|
||||
# 工程类会议纪要生成系统 - 架构设计精要
|
||||
|
||||
## 一、核心设计原则
|
||||
|
||||
### 分阶段生成策略 ⭐⭐⭐
|
||||
|
||||
**核心思想**:按照会议纪要的章节顺序,分阶段提取信息并生成,而不是一次性提取所有信息。
|
||||
|
||||
**优势**:
|
||||
1. 每阶段任务量适中,Agent负载可控
|
||||
2. 可逐步验证结果质量
|
||||
3. 出现问题可重新搜索单个阶段
|
||||
4. 符合人类编写纪要的思维习惯
|
||||
|
||||
---
|
||||
|
||||
## 二、整体架构概览
|
||||
|
||||
```
|
||||
主窗口 (SKILL.md)
|
||||
职责:流程编排 + 分阶段调度 + 逐章节生成
|
||||
|
||||
Phase 1: 准备阶段
|
||||
├── 读取周报(主窗口)
|
||||
├── 读取上周纪要(主窗口)
|
||||
└── 构建索引(Agent: transcript_indexer)
|
||||
输出:temp/transcript_index.json
|
||||
|
||||
Phase 2: 分章节提取与生成(主窗口调度 + Agent执行)
|
||||
├── 2.1 生成"一、会议信息"(主窗口,无需会议转写)
|
||||
├── 2.2 生成"二-1. 重点项目进展情况汇总"(主窗口,主要用周报)
|
||||
├── 2.3 生成"二-2. 重点项目问题及解决方案"
|
||||
│ ├── 调用Agent提取问题讨论
|
||||
│ └── 主窗口合并周报问题
|
||||
├── 2.4 生成"二-3. 下周工作安排"
|
||||
│ ├── 调用Agent提取任务安排
|
||||
│ └── 主窗口合并周报计划
|
||||
├── 2.5 生成"二-4. 组内成员工作进展"
|
||||
│ ├── 并行调用多个Agent提取成员反馈
|
||||
│ └── 主窗口整合周报+反馈+任务
|
||||
└── 2.6 生成"三、会议总结"
|
||||
├── 调用Agent提取决策
|
||||
└── 主窗口从已生成内容归纳总结
|
||||
|
||||
Phase 3: 最终输出
|
||||
└── 主窗口组装完整Markdown并输出文件
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、职责分配
|
||||
|
||||
### 主窗口 (SKILL.md)
|
||||
|
||||
**负责**:
|
||||
- 流程编排(按章节顺序调度)
|
||||
- 读取小文件(周报、上周纪要)
|
||||
- 跨源数据合并(会议 + 周报 + 上周纪要)
|
||||
- 逐章节生成Markdown
|
||||
- 最终文件组装输出
|
||||
|
||||
**不负责**:
|
||||
- 读取大文件(会议转写)
|
||||
- 分块处理逻辑
|
||||
- 复杂语义分析
|
||||
|
||||
### Agent 1: transcript_indexer
|
||||
|
||||
**输入**:无(路径固化)
|
||||
**职责**:分块读取会议转写,构建语义索引
|
||||
**输出**:
|
||||
- 文件:`temp/transcript_index.json`
|
||||
- 返回:摘要文字
|
||||
|
||||
### Agent 2: transcript_searcher
|
||||
|
||||
**输入**:搜索意图(自然语言)
|
||||
**职责**:基于索引提取特定信息
|
||||
**输出**:JSON字符串(直接返回)
|
||||
**特点**:轻量级,可多次调用
|
||||
|
||||
---
|
||||
|
||||
## 四、分阶段执行详细设计
|
||||
|
||||
### Phase 1: 准备阶段
|
||||
|
||||
#### 步骤 1.1: 读取周报和上周纪要(主窗口)
|
||||
|
||||
```markdown
|
||||
**执行**:
|
||||
1. Glob: `input/成员本周周报/*.md`
|
||||
2. 提取每个周报:姓名、P0任务、问题、下周计划
|
||||
3. Glob: `input/上周会议纪要/*.md`
|
||||
4. 提取"下周工作安排"表格的P0任务
|
||||
|
||||
**输出数据结构**:
|
||||
members_data = {
|
||||
"闫旭隆": {
|
||||
"p0_tasks": [...],
|
||||
"problems": [...],
|
||||
"next_plan": [...]
|
||||
},
|
||||
...
|
||||
}
|
||||
last_week_p0_tasks = [...]
|
||||
```
|
||||
|
||||
#### 步骤 1.2: 构建会议转写索引(Agent)
|
||||
|
||||
```markdown
|
||||
**调用**:
|
||||
Task(
|
||||
subagent_type="transcript_indexer",
|
||||
description="构建会议转写索引",
|
||||
prompt="构建会议转写索引"
|
||||
)
|
||||
|
||||
**Agent处理**:
|
||||
- 分块读取会议转写(2000行/块,overlap 100)
|
||||
- 为每块打语义标签
|
||||
- 输出索引到 temp/transcript_index.json
|
||||
|
||||
**返回**:
|
||||
"✅ 索引构建完成,共8块,识别10个主题"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Phase 2: 分章节提取与生成
|
||||
|
||||
#### 步骤 2.1: 生成"一、会议信息"(主窗口)
|
||||
|
||||
```markdown
|
||||
**数据来源**:
|
||||
- 会议时间:从会议转写文件名提取
|
||||
- 参会人员:从周报文件名提取
|
||||
- 记录人:固定"Claude"
|
||||
|
||||
**处理**:主窗口直接生成,无需Agent
|
||||
|
||||
**输出**:
|
||||
section_1 = """
|
||||
一、会议信息
|
||||
- 会议时间:2025-11-18
|
||||
- 参会人员:闫旭隆、江争达、...
|
||||
- 记录整理人:Claude
|
||||
"""
|
||||
```
|
||||
|
||||
#### 步骤 2.2: 生成"二-1. 重点项目进展情况汇总"(主窗口)
|
||||
|
||||
```markdown
|
||||
**数据来源**:
|
||||
- 上周P0任务:last_week_p0_tasks
|
||||
- 本周P0任务:members_data[*].p0_tasks
|
||||
|
||||
**处理**:主窗口直接处理
|
||||
1. 取并集(上周P0 ∪ 本周P0)
|
||||
2. 对每个P0任务:
|
||||
- 从周报提取进展情况
|
||||
- 如果周报无记录 → 标记"未完成"
|
||||
|
||||
**输出**:
|
||||
section_2_1 = """
|
||||
### 1. 重点项目进展情况汇总
|
||||
| 项目名称 | 负责人 | 截止时间 | 项目进展情况 |
|
||||
|---------|--------|----------|-------------|
|
||||
| ... | ... | ... | ... |
|
||||
"""
|
||||
|
||||
**注意**:此章节不需要会议转写(仅展示P0追踪)
|
||||
```
|
||||
|
||||
#### 步骤 2.3: 生成"二-2. 重点项目问题及解决方案"(Agent + 主窗口)
|
||||
|
||||
```markdown
|
||||
**步骤 2.3.1: 提取会议问题讨论(Agent)**
|
||||
|
||||
调用:
|
||||
Task(
|
||||
subagent_type="transcript_searcher",
|
||||
description="提取问题讨论",
|
||||
prompt=f"""
|
||||
提取会议中讨论的所有问题及解决方案。
|
||||
|
||||
已知问题(来自周报):{members_data[*].problems}
|
||||
|
||||
需提取字段:
|
||||
- 问题标题
|
||||
- 问题描述
|
||||
- 解决方案(列表)
|
||||
- 责任人
|
||||
- 截止时间
|
||||
|
||||
返回JSON格式。
|
||||
"""
|
||||
)
|
||||
|
||||
**步骤 2.3.2: 合并数据(主窗口)**
|
||||
|
||||
1. 接收Agent返回的problem_results
|
||||
2. 与周报problems对比去重
|
||||
3. 互补合并:周报简述 + 会议详细方案
|
||||
|
||||
**输出**:
|
||||
section_2_2 = """
|
||||
### 2. 重点项目问题及解决方案
|
||||
|
||||
#### 问题1: ...
|
||||
**问题描述**: ...
|
||||
**解决方案**:
|
||||
1. ...
|
||||
**责任人**: ...
|
||||
**截止时间**: ...
|
||||
"""
|
||||
```
|
||||
|
||||
#### 步骤 2.4: 生成"二-3. 下周工作安排"(Agent + 主窗口)
|
||||
|
||||
```markdown
|
||||
**步骤 2.4.1: 提取会议任务安排(Agent)**
|
||||
|
||||
调用:
|
||||
Task(
|
||||
subagent_type="transcript_searcher",
|
||||
description="提取任务安排",
|
||||
prompt=f"""
|
||||
提取会议中讨论的下周工作安排。
|
||||
|
||||
已知P0任务:{last_week_p0_tasks}
|
||||
|
||||
需提取字段:
|
||||
- 任务名称
|
||||
- 负责人
|
||||
- 任务描述
|
||||
- 优先级(从讨论语气判断P0/P1/P2)
|
||||
- 截止时间
|
||||
|
||||
返回JSON格式。
|
||||
"""
|
||||
)
|
||||
|
||||
**步骤 2.4.2: 合并数据(主窗口)**
|
||||
|
||||
1. 接收task_results
|
||||
2. 与周报next_plan合并去重
|
||||
3. 冲突时会议优先
|
||||
4. 排序:P0 → P1 → P2
|
||||
|
||||
**输出**:
|
||||
section_2_3 = """
|
||||
### 3. 下周工作安排
|
||||
| 项目名称 | 负责人 | 下周会前目标 | 优先级 | 截止时间 |
|
||||
|---------|--------|------------|--------|----------|
|
||||
| 🔴 ... | ... | ... | P0 | ... |
|
||||
| ... | ... | ... | P1 | ... |
|
||||
"""
|
||||
|
||||
**保存**:next_week_tasks(供后续章节使用)
|
||||
```
|
||||
|
||||
#### 步骤 2.5: 生成"二-4. 组内成员工作进展"(并行Agent + 主窗口)⭐
|
||||
|
||||
```markdown
|
||||
**步骤 2.5.1: 并行提取成员反馈(多个Agent)**
|
||||
|
||||
一次性并行调用:
|
||||
for member in members:
|
||||
Task(
|
||||
subagent_type="transcript_searcher",
|
||||
description=f"提取{member}反馈",
|
||||
prompt=f"""
|
||||
提取会议中对 {member} 的反馈(表扬/批评/建议)。
|
||||
|
||||
{member}的周报内容:{members_data[member]}
|
||||
|
||||
需提取字段:
|
||||
- 反馈类型(表扬/批评/建议)
|
||||
- 反馈内容
|
||||
|
||||
返回JSON格式。
|
||||
"""
|
||||
)
|
||||
|
||||
**步骤 2.5.2: 整合数据(主窗口)**
|
||||
|
||||
对每个成员:
|
||||
1. 上周完成:从周报提取
|
||||
2. 进行中:从周报提取
|
||||
3. 收到反馈:从Agent返回提取
|
||||
4. 下周任务:从next_week_tasks筛选该成员 + 周报计划去重
|
||||
|
||||
**输出**:
|
||||
section_2_4 = """
|
||||
### 4. 组内成员工作进展
|
||||
|
||||
#### 闫旭隆
|
||||
**上周完成**:
|
||||
- ✅ ...
|
||||
|
||||
**收到的反馈/学习建议**:
|
||||
- ...
|
||||
|
||||
**下周任务**:
|
||||
- [ ] 🔴 P0|...
|
||||
- [ ] P1|...
|
||||
"""
|
||||
|
||||
**并行优势**:成员反馈提取互不依赖,可同时执行(4-5个Agent并行)
|
||||
```
|
||||
|
||||
#### 步骤 2.6: 生成"三、会议总结"(Agent + 主窗口)
|
||||
|
||||
```markdown
|
||||
**步骤 2.6.1: 提取决策(Agent)**
|
||||
|
||||
调用:
|
||||
Task(
|
||||
subagent_type="transcript_searcher",
|
||||
description="提取决策事项",
|
||||
prompt="""
|
||||
提取会议中的所有关键决策。
|
||||
|
||||
特征词:"决定"、"确定"、"采用"、"要求"
|
||||
|
||||
需提取字段:
|
||||
- 决策内容
|
||||
- 决策上下文
|
||||
|
||||
返回JSON格式。
|
||||
"""
|
||||
)
|
||||
|
||||
**步骤 2.6.2: 归纳总结(主窗口)**
|
||||
|
||||
1. 核心议题:从decision_results + next_week_tasks提取高频项目
|
||||
2. 关键决策:从decision_results提取
|
||||
3. 下周重点:从next_week_tasks提取P0任务
|
||||
|
||||
**输出**:
|
||||
section_3 = """
|
||||
三、会议总结
|
||||
|
||||
**核心议题**: ...
|
||||
**关键决策**:
|
||||
1. ...
|
||||
|
||||
**下周工作重点**:
|
||||
1. ...
|
||||
"""
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: 最终输出
|
||||
|
||||
```markdown
|
||||
**执行**:主窗口
|
||||
|
||||
**操作**:
|
||||
1. 组装所有章节:
|
||||
final_content = section_1 + section_2_1 + section_2_2 + ...
|
||||
2. 格式化检查
|
||||
3. 写入文件:`output/工程类会议纪要_{date}_第X次周会.md`
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 五、关键设计决策
|
||||
|
||||
### 1. 为什么分阶段而不是一次性提取?
|
||||
|
||||
❌ **一次性提取(原方案)**:
|
||||
- 同时发起7-8个Agent(任务、问题、决策、4-5个成员反馈)
|
||||
- 任务量大,Agent负载重
|
||||
- 难以验证中间结果
|
||||
- 出错需全部重来
|
||||
|
||||
✅ **分阶段提取(新方案)**:
|
||||
- 每阶段1-2个Agent任务(成员反馈可并行)
|
||||
- 任务量适中
|
||||
- 可逐步验证
|
||||
- 符合章节生成顺序
|
||||
|
||||
### 2. 哪些阶段可以并行?
|
||||
|
||||
**可并行**(步骤2.5):
|
||||
- 成员反馈提取(4-5个Agent同时执行)
|
||||
- 原因:每个成员独立,互不依赖
|
||||
|
||||
**必须串行**:
|
||||
- 其他章节(有数据依赖)
|
||||
- 例如:section 2.4生成的next_week_tasks被section 2.5使用
|
||||
|
||||
### 3. 数据传递策略
|
||||
|
||||
**Agent → 主窗口**:
|
||||
- ✅ 直接返回JSON字符串
|
||||
- ❌ 不写temp文件(除了索引)
|
||||
- 原因:单次提取结果<10k tokens,直接传递高效
|
||||
|
||||
**主窗口内部**:
|
||||
- 使用变量传递中间结果
|
||||
- 例如:next_week_tasks在步骤2.4生成,步骤2.5使用
|
||||
|
||||
### 4. 主窗口 vs Agent 决策原则 ⭐本项目专用
|
||||
|
||||
```
|
||||
任务是否需要读取会议转写?
|
||||
├── 否 → 主窗口直接处理
|
||||
│ ├── 会议信息(从文件名提取)
|
||||
│ └── 项目进展(仅用周报,不参考会议转写)
|
||||
│
|
||||
└── 是 → **必须调用 transcript_searcher Agent**
|
||||
├── Agent读取语义索引(temp/transcript_index.json)
|
||||
├── 定位相关块(基于has_*字段和语义匹配)
|
||||
├── 精确读取会议转写片段(基于行号范围)
|
||||
└── 语义提取信息并返回JSON
|
||||
|
||||
⚠️ 重要:
|
||||
- 本项目所有会议转写信息提取都需要语义理解
|
||||
- 不存在简单关键词搜索场景
|
||||
- 不使用Grep工具(会议转写72k tokens,需深度语义分析)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、完整执行流程总结
|
||||
|
||||
```
|
||||
Phase 1: 准备
|
||||
├── 主窗口读周报、上周纪要
|
||||
└── Agent构建索引 → temp/transcript_index.json
|
||||
|
||||
Phase 2: 逐章节生成
|
||||
├── 2.1 会议信息(主窗口直接生成)
|
||||
├── 2.2 项目进展(主窗口用周报生成)
|
||||
├── 2.3 问题方案
|
||||
│ ├── Agent提取会议问题
|
||||
│ └── 主窗口合并周报问题
|
||||
├── 2.4 下周安排
|
||||
│ ├── Agent提取会议任务
|
||||
│ └── 主窗口合并周报计划
|
||||
├── 2.5 成员进展
|
||||
│ ├── 并行Agent提取反馈(4-5个)⭐
|
||||
│ └── 主窗口整合周报+反馈+任务
|
||||
└── 2.6 会议总结
|
||||
├── Agent提取决策
|
||||
└── 主窗口归纳总结
|
||||
|
||||
Phase 3: 输出
|
||||
└── 主窗口组装Markdown并写文件
|
||||
```
|
||||
|
||||
**关键特点**:
|
||||
- ✅ 分阶段执行,任务量可控
|
||||
- ✅ 仅成员反馈提取并行(4-5个Agent)
|
||||
- ✅ 其他阶段串行,确保数据依赖
|
||||
- ✅ 主窗口负责跨源合并与生成
|
||||
- ✅ Agent专注会议转写信息提取
|
||||
|
||||
---
|
||||
|
||||
## 七、预估Token消耗
|
||||
|
||||
```
|
||||
Phase 1:
|
||||
- 读周报(4个×3k): 12k
|
||||
- 读上周纪要: 5k
|
||||
- Agent构建索引: 72k(读会议转写)
|
||||
小计: ~89k
|
||||
|
||||
Phase 2:
|
||||
- Agent提取问题: 5k(读索引)
|
||||
- Agent提取任务: 5k
|
||||
- Agent提取决策: 5k
|
||||
- Agent提取反馈×4: 20k(并行)
|
||||
- 主窗口处理: 10k
|
||||
小计: ~45k
|
||||
|
||||
Phase 3:
|
||||
- 主窗口生成输出: 5k
|
||||
|
||||
总计: ~140k tokens(远低于200k限制)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 八、后续优化方向
|
||||
|
||||
1. **动态调整**:如果某章节提取不理想,可重新搜索
|
||||
2. **增量生成**:边提取边展示部分结果给用户
|
||||
3. **质量检查**:主窗口可验证Agent返回的JSON完整性
|
||||
4. **错误恢复**:某Agent失败不影响其他章节生成
|
||||
Reference in New Issue
Block a user