ClawSkills logoClawSkills

MS Outlook + Teams Assistant

在 Windows 机器上跟踪并提醒 Microsoft Outlook 电子邮件和(可选)Microsoft Teams 消息,而不依赖网页版。当用户时使用

介绍

# MS Outlook + Teams Assistant (Desktop-first)

## 此技能的功能

- **收件箱提醒(Outlook 桌面版)**:查找过去 7 天内可能需要回复的邮件,然后发送提醒直到被忽略。 - **邮件回复草稿**:生成符合用户语气规则(对话式、极简、礼貌;简单英语;简短;减少冗余;避免破折号)的简洁草稿。 - **Teams 追踪(可选)**:如果配置了 Microsoft Graph 且租户策略允许,追踪最近可能需要回复的 Teams 聊天消息并进行类似的提醒。

## 安全默认设置

- **不要**自动发送电子邮件或 Teams 消息。 - 在 Outlook 中创建**草稿**,或将草稿粘贴到 Telegram 以供审批。 - 对于提醒:默认发送到 **Telegram**;仅在明确启用时才发送到 Teams。

## 设置(一次性)

### A) Outlook 桌面自动化(推荐)

1. 确保已安装 Outlook 桌面版并已登录。 2. 安装 Python 依赖项(在机器上执行操作前请先询问): - `pip install pywin32` 3. 创建配置文件: - 复制 `references/config.example.json` → `references/config.json` 并填写。 - 重要:如果 `references/config.json` 包含个人 ID,请勿提交。

### B) 通过 Graph 连接 Teams(可选)

仅当您可以创建 Entra ID 应用注册并授予权限时。

- 复制 `references/config.example.json` → `references/config.json` 并填写 `teams.tenantId`、`teams.clientId` 和 `teams.scopes`。 - 然后运行一次 `scripts/teams_scan.py` 以完成设备代码登录。

请参阅 `references/teams-graph-setup.md`。

## 核心工作流

### 1) 扫描并提醒(Outlook)

使用 `scripts/scan_outlook.py`。

### 1b) 扫描 Teams(Graph)

使用 `scripts/teams_scan.py`。

参数: - `--days 7`(默认)

首次运行将打印一条**设备代码**登录消息(仅需操作一次)。

参数: - `--days 7`(默认) - `--mode report|telegram`(默认:report) - `--max-items 200`

启发式规则(可在配置中编辑): - 在过去 N 天内 - 非来自明显的广播来源 - 优先考虑用户在**“收件人”**(不仅仅是抄送)中的线程,或者主题/正文中包含直接请求 - 优先考虑用户尚未回复的消息(尽力而为)

输出: - 包含主题、发件人、接收时间、标记原因的可操作项目列表。

然后: - 如果使用 `--mode telegram`,则发送一条包含项目符号的单个简洁提醒消息。

### 2) 忽略 / 暂缓项目

此技能使用本地状态文件来避免提醒循环。

- 忽略:将消息的 `internetMessageId`(或主题+时间戳后备)添加到忽略列表中。 - 暂缓:存储 `snoozeUntil` 时间戳。

使用 `scripts/state.py` 助手(如需要,可直接编辑 JSON)。

### 3) 起草邮件回复(Outlook)

使用 `scripts/draft_reply.py`。

### 4) 生成提醒(不发送)

使用 `scripts/scan_all.py` 更新缓存的扫描结果,然后使用 `scripts/remind.py` 生成适合 Telegram 的提醒消息(不发送)。 它应用: - 1:1 Teams → 当 `needsReply=true` 时提醒 - 群组 Teams → 当 `mentionedMe=true` 且 `needsReply=true` 时提醒 - Outlook → 对标记的项目进行提醒

如果输出非空,Agent 应将其发送到 Telegram。

输入: - 消息的 `EntryID`(首选)或按主题 + 最近时间窗口搜索。

行为: - 提取线程(尽力而为)+ 关键元数据。 - 生成 2 个草稿: - **简短版**(2-5 句) - **普通版**(5-10 句) - 应用 `references/writing-style.md` 中的语气规则。

输出: - 将草稿打印到 stdout。 - 如果设置了 `--create-draft`,则可选地创建 Outlook **回复草稿**(不发送)。

## 当您需要用户的更多上下文时

仅询问您无法推断的内容: - 回复哪封邮件(主题 / 发件人 / 时间) - 用户的意图(同意/拒绝/询问信息/确认时间表) - 任何约束(截止日期、附件、名称)

保持问题最少(一次最多 3 个)。

更多产品