# Dingtalk Workflow Meeting Todo

> 会议待办追踪 — 从钉钉日程中 AI 提取待办事项，通过群聊/DING确认后自动创建待办，定期检查完成情况

- Skill: `liangdabiao/dingtalk-workflow-meeting-todo` (Agent Skill)
- Install (CLI): `npx skillmds@latest add liangdabiao/dingtalk-workflow-meeting-todo`
- Raw SKILL.md: https://api.skillmd.com/api/skills/liangdabiao/dingtalk-workflow-meeting-todo/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: liangdabiao (https://skillmd.com/u/liangdabiao)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/liangdabiao/dingtalk-workflow-meeting-todo

---


# 会议待办追踪 (dingtalk-workflow-meeting-todo)

> 从钉钉日程的描述信息中 AI 提取待办事项（我答应做的 + 对方答应做的）。
> 通过钉钉消息确认后自动创建钉钉待办，定期检查完成情况。
> 相比飞书版本，钉钉无妙记（自动会议纪要），改为从日程描述中 AI 提取。

## 触发方式

用户对话中包含以下关键词时自动触发：

```
"会议待办"  "会后的待办"  "追踪待办"  "提取行动项"  "整理会议纪要待办"  "会议行动项"
```

## 工作模式

### 模式 1: 批量提取（指定时间范围）

**触发：** "帮我整理最近一周会议的待办事项" / "提取本周会议行动项"

**工作流：**

```
Step 1: 获取时间范围内的日程列表
└── dws calendar event list --start "2026-04-01T00:00:00+08:00" --end "2026-04-06T23:59:59+08:00" --yes -f json → 按日期范围获取日程

Step 2: 逐个获取日程详情（含描述）
└── dws calendar event get --id "eventId" --yes -f json → 获取日程描述和参与者

Step 3: AI 分析日程描述，提取待办事项
├── 识别承诺性语句（"我会..."、"你帮我..."、"下周前..."）
├── 区分我方待办和对方待办
├── 推断建议截止日（根据上下文关键词：今天/明天/下周/周五等）
└── 去重（与已有待办记录比对）

Step 4: 用户确认后，批量创建钉钉待办（含错误处理）
├── 对每个确认的待办执行 dws todo task create
├── 如果创建失败（errorCode 999 等），立即重试一次
├── 如果重试仍然失败：
│   ├── 将该待办写入 aitable 追踪表（状态标记为"创建失败"）
│   └── 通过 DING 通知用户："待办「XXX」创建失败，已记录到追踪表，请手动创建"
└── 汇总创建结果报告
```

**输出格式：**

```markdown
## 日程待办提取报告

找到 N 场日程，其中 M 场有可提取的待办事项。

### 日程：XXX会议（日期）
#### 我方待办
| # | 待办内容 | 建议截止日 |
|---|---------|-----------|
| 1 | 待办描述 | 周五 |
#### 对方待办
| # | 待办内容 | 承诺人 |
|---|---------|--------|
| 1 | 待办描述 | 张三 |

请确认需要创建钉钉待办的条目（回复编号，如 "1 3 5"）。
```

### 模式 2: 单日程提取

**触发：** "提取今天产品评审会的行动项" / "XXX会议有什么待办"

**工作流：**

```
Step 1: 搜索匹配的日程
└── dws calendar event list --start "..." --end "..." --yes -f json → 按日期范围过滤匹配的日程

Step 2: 获取日程详情
└── dws calendar event get --id "eventId" --yes -f json

Step 3: AI 提取待办 → 用户确认 → 创建待办
```

### 模式 3: 完成检查

**触发：** "会议待办都完成了吗" / "检查待办完成情况"

**工作流：**

```
Step 1: 查询所有待办
└── dws todo task list --yes -f json

Step 2: 查询会议待办追踪表
└── dws aitable record query --base-id <base-id> --table-id <table-id> --yes -f json

Step 3: 对比待办状态，生成报告
```

**输出格式：**

```markdown
## 会议待办完成情况

| 待办 | 来源日程 | 负责人 | 状态 |
|------|---------|--------|------|
| 待办内容1 | Q2规划会 | 我 | 已完成 ✓ |
| 待办内容2 | Q2规划会 | 我 | 进行中 |
| 待办内容3 | UI评审会 | 李四 | 已过期 ⚠️ |

总计：N 项待办，已完成 M 项，过期 K 项
```

### 模式 4: 自动归档

**触发：** 自动执行（超过 14 天未完成的待办）

**工作流：**

```
Step 1: 查询所有"已确认"但未完成的待办
Step 2: 筛选出创建时间超过 14 天的
Step 3: 更新状态为"已归档"
└── dws aitable record update --base-id <base-id> --table-id <table-id> --records '[{"recordId":"...","cells":{"确认状态":"已归档"}}]' --yes
```

## 数据初始化

首次使用时，自动创建 aitable 数据表：

```bash
# 创建 Base
dws aitable base create --name "会议待办追踪" --yes -f json
# 返回 baseId，记为 <mt-base-id>

# 创建数据表
dws aitable table create --base-id <mt-base-id> --name "会议待办" --yes -f json
# 返回 tableId，记为 <mt-table-id>

# 添加业务字段（表创建后自动带一个"标题"primaryDoc字段，需额外添加业务字段）
dws aitable field create --base-id <mt-base-id> --table-id <mt-table-id> --fields '[{"fieldName":"会议主题","type":"text"},{"fieldName":"会议日期","type":"date"},{"fieldName":"日程ID","type":"text"},{"fieldName":"待办内容","type":"text"},{"fieldName":"待办类型","type":"text"},{"fieldName":"负责人","type":"text"},{"fieldName":"建议截止日","type":"date"},{"fieldName":"确认状态","type":"text"},{"fieldName":"关联任务ID","type":"text"}]' --yes -f json
```

**表结构：会议待办 (meeting_todos)**

| 字段名 | 类型 | 说明 |
|--------|------|------|
| 会议主题 | 文本 | 来源日程标题 |
| 会议日期 | 日期 | 日程时间 |
| 日程ID | 文本 | 钉钉日程 eventId |
| 待办内容 | 文本 | 提取的待办描述 |
| 待办类型 | 文本 | 我方待办 / 对方待办 |
| 负责人 | 文本 | 谁来做 |
| 建议截止日 | 日期 | 根据上下文推断 |
| 确认状态 | 文本 | 待确认/已确认/已跳过/已完成/已归档 |
| 关联任务ID | 文本 | 钉钉待办 taskId |

## dws CLI 命令参考

### 获取日程列表

```bash
dws calendar event list --start "2026-04-01T00:00:00+08:00" --end "2026-04-06T23:59:59+08:00" --yes -f json
```

### 获取日程详情

```bash
dws calendar event get --id "eventId" --yes -f json
```

### 创建钉钉待办

```bash
dws todo task create --title "待办内容" --priority "20" --due "2026-04-10T18:00:00+08:00" --yes -f json
```

> **注意：** `dws todo task create` 服务端偶发 NullPointerException，返回 errorCode 999。建议：先使用 `--dry-run` 验证参数格式，失败时重试一次。测试时可加 `--mock` 标志跳过实际创建。

### 查看待办列表

```bash
dws todo task list --page 1 --size 20 --status false --yes -f json
```

### 更新待办状态

```bash
dws todo task done --task-id "taskId" --yes -f json
```

### 写入追踪记录

```bash
dws aitable record create --base-id <mt-base-id> --table-id <mt-table-id> --records '[{"cells":{"标题":"Q2规划会-发送产品路线图","会议主题":"Q2规划会","会议日期":"2026-04-06","待办内容":"发送产品路线图","待办类型":"我方待办","确认状态":"已确认","关联任务ID":"todo_xxx"}}]' --yes -f json
```

### 查询追踪记录

```bash
dws aitable record query --base-id <mt-base-id> --table-id <mt-table-id> --limit 50 --yes -f json
```

### 发送 DING 提醒

```bash
dws ding message send --robot-code "bot_code" --users "manager6950" --content "你有 N 个会议待办即将到期" --type "1" --yes
```

## 学习模式

- 如果用户多次拒绝某类待办（如"这种事不用记"），AI 记录拒绝原因
- 下次提取时自动跳过类似内容
- 拒绝记录存储在 aitable 追踪表的备注字段中

## 联动 Skill

| 联动 Skill | 数据交互 | 说明 |
|-----------|---------|------|
| personal-crm | 读取联系人数据 | 标识参会人身份 |
| morning-brief | 提供待办数据 | 晨间简报中展示会议待办 |

## 注意事项

1. 钉钉无妙记（自动会议纪要），待办提取依赖日程描述的质量。建议用户在创建日程时详细记录讨论内容和行动项
2. 所有 `dws` 命令必须加 `--yes` 标志
3. `dws calendar event list` 支持 `--start` 和 `--end` 日期过滤参数（ISO 8601 格式），建议指定范围以提高查询效率
4. 待办的 `--due` 参数格式为 ISO 8601
5. DING 消息发送需要先配置 robot-code

## 已知问题

1. **`dws todo task create` 服务端偶发 NullPointerException，返回 errorCode 999。** 建议操作：先使用 `--dry-run` 验证参数格式是否正确，失败时重试一次。此为钉钉服务端问题，不影响 `dws todo task list`、`dws todo task done` 等其他待办命令的正常使用。

