Skip to content

Commit 67a4d24

Browse files
fatbobmanclaude
andcommitted
refactor: split attachment-analyzer into 3 specialized commands/skills
Architectural Changes: - Split single attachment-analyzer into modular components: - analyze-email: Quick single email overview - analyze-thread: Full conversation analysis with truncation handling - analyze-attachments: Deep file extraction with importance classification - Each command/skill has focused purpose and appropriate MCP tool usage Environment Variables (synced to mcp.json): - MAIL_THREAD_MAX_BODY_LENGTH: 1200 (reduce token usage for large threads) - MAIL_SINGLE_MAX_BODY_LENGTH: 10000 (preserve full content for single emails) - MAIL_KEEP_QUOTE_LINES: 10 (preserve context when stripping quotes) - MAIL_ATTACHMENT_PATH: /tmp (attachment extraction directory) Features: - Smart quote stripping reduces thread size by ~80% while preserving context - Truncation detection and classification for large threads - Three analysis modes (Quick/Interactive/Auto) based on context - Keyboard shortcut guidance (⌘⇧C via Automator Quick Actions) - Thread-specific email selection via "Show → Expand All Conversations" Documentation: - README_zh.md: Comprehensive usage examples with 3 invocation methods - TOOLS.md: Updated tool parameters (max_body_length for read_email/read_thread) - Skills documentation: English prompts with truncation handling logic 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent a15c161 commit 67a4d24

File tree

14 files changed

+1621
-613
lines changed

14 files changed

+1621
-613
lines changed

README_zh.md

Lines changed: 255 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ pip3 install mcp
7373

7474
2. **编辑配置** (如果不存在则创建):
7575

76+
**基础配置**:
77+
7678
```json
7779
{
7880
"mcpServers": {
@@ -86,6 +88,35 @@ pip3 install mcp
8688
}
8789
```
8890

91+
**高级配置(含环境变量)**:
92+
93+
```json
94+
{
95+
"mcpServers": {
96+
"mail": {
97+
"command": "python3",
98+
"args": [
99+
"/path/to/mail-mcp-bridge/src/mail_mcp_server.py"
100+
],
101+
"env": {
102+
"MAIL_SINGLE_MAX_BODY_LENGTH": "10000",
103+
"MAIL_THREAD_MAX_BODY_LENGTH": "1200",
104+
"MAIL_KEEP_QUOTE_LINES": "10",
105+
"MAIL_ATTACHMENT_PATH": "/tmp"
106+
}
107+
}
108+
}
109+
}
110+
```
111+
112+
**环境变量说明**:
113+
- `MAIL_SINGLE_MAX_BODY_LENGTH`: 单封邮件最大正文长度(字符数),默认 10000,0 表示不限制
114+
- `MAIL_THREAD_MAX_BODY_LENGTH`: 线索邮件最大正文长度(字符数),默认 1200,0 表示不限制
115+
- `MAIL_KEEP_QUOTE_LINES`: 每个引用块保留的行数(保留上下文),默认 10
116+
- `MAIL_ATTACHMENT_PATH`: 附件提取目录,默认 `/tmp`
117+
118+
**智能去引用**: `read_thread` 自动启用智能引用检测,保留新内容和引用头部,删除冗余的大段引用,可节省 80% 的 token
119+
89120
**重要**: 将 `/path/to/mail-mcp-bridge` 替换为实际的项目路径。
90121

91122
3. **重启 Claude Desktop** (完全退出后重新打开)
@@ -117,18 +148,72 @@ Mail MCP 包含开箱即用的 **Claude Code 插件**,提供智能邮件分析
117148

118149
**使用方式**
119150

120-
安装后,插件会自动工作:
151+
安装后,插件会自动工作。有三种使用方式
121152

122-
```
153+
#### 方式 1:自然语言调用(推荐)
154+
155+
```bash
123156
你: 分析这封邮件 <message-id@example.com>
124-
AI: [自动检测附件并智能分析]
157+
AI: [自动检测并智能分析]
125158
```
126159

127-
或使用手动命令:
160+
#### 方式 2:使用 Slash Commands
128161

162+
在 CLI 中使用 `/` 命令快速调用:
163+
164+
```bash
165+
# 分析单封邮件(快速查看)
166+
你: /analyze-email
167+
AI: Please provide the email Message-ID
168+
💡 Quick method (recommended):
169+
In Mail.app: Select email → Press shortcut (⌘⇧C) → Message-ID copied
170+
你: <message-id@example.com>
171+
AI: [快速显示邮件内容摘要和附件列表]
129172
```
130-
/mail-mcp:analyze-attachment
131-
```
173+
174+
**特点**
175+
176+
- ✅ 每次都是全新开始,不会使用之前的 message-id
177+
- ✅ 适合分析不同的邮件
178+
- ⚠️ 需要每次提供 message-id
179+
180+
#### 方式 3:在 VSCode Extension 中点击 Skill
181+
182+
在 Claude Code Extension 中直接点击 Skills:
183+
184+
- `analyze-email`
185+
- `analyze-thread`
186+
- `analyze-attachments`
187+
188+
**特点**
189+
190+
- ✅ AI 会记住对话历史中的 message-id
191+
- ✅ 如果之前分析过,可能直接使用之前的 ID
192+
- ✅ 适合对同一邮件进行深入分析
193+
- ⚠️ 如果想分析新邮件,明确说明:"分析新的邮件"
194+
195+
**使用建议**
196+
197+
| 场景 | 推荐方式 | 原因 |
198+
|------|---------|------|
199+
| 首次分析邮件 | Slash Commands | 确保提供正确的 message-id |
200+
| 深入分析同一邮件 | Extension Skills | 利用对话上下文,减少重复输入 |
201+
| 分析多个不同邮件 | Slash Commands | 每次都会询问,避免混淆 |
202+
| 快速查看邮件内容 | 自然语言 | 最直接,无需切换模式 |
203+
204+
**命令对比**
205+
206+
| 命令 | 用途 | MCP 调用 | 适用场景 |
207+
|------|------|----------|----------|
208+
| `/analyze-email` | 快速查看单封邮件 | read_email | 了解邮件内容 |
209+
| `/analyze-thread` | 分析完整对话线索 | read_thread | 梳理多方沟通 |
210+
| `/analyze-attachments` | 深度分析附件 | read_email + extract | 处理文档合同 |
211+
212+
> 💡 **提示**
213+
>
214+
> - 自然语言方式更直接(推荐日常使用)
215+
> - Slash Commands 更快速(适合频繁使用)
216+
> - 选择命令 = 明确表达意图,减少交互步骤
132217
133218
📖 **[→ 插件文档](plugins/README.md)**
134219

@@ -181,45 +266,109 @@ AI: [自动检测附件并智能分析]
181266

182267
### 基本工作流
183268

184-
```
269+
```bash
185270
1. 在 Mail 中选择邮件
186271
2. 按下快捷键 (如 ⌘⇧C)
187272
3. 粘贴 Message-ID 给 AI
188273
```
189274

190-
### 对话示例
275+
### 💡 选择线索中的特定邮件
276+
277+
当需要分析邮件线索中的某封特定邮件时:
278+
279+
**方法 1:展开对话视图**
280+
1. 在 Mail 应用中选择邮件
281+
2. 菜单栏:**显示****展开所有对话** (Show → Expand All Conversations)
282+
3. 左侧会显示完整的对话树形结构
283+
4. 点击选择你想要分析的那封邮件
284+
5. 按下快捷键复制其 Message-ID
285+
6. 使用 `/analyze-email` 分析这特定邮件
286+
287+
**方法 2:使用线索命令**
288+
如果不确定要分析哪一封邮件,可以先:
289+
1. 使用 `/analyze-thread` 分析整个线索
290+
2. 查看对话时间线和摘要
291+
3. 根据摘要,选择需要深入分析的特定邮件
292+
4. 在 VSCode Extension 中点击 Skill(会使用之前的 message-id)
191293

192-
**读取单封邮件**:
294+
**使用场景示例**
193295

296+
```bash
297+
# 场景:只想看线索中某封重要邮件的详细内容
298+
你: /analyze-thread
299+
AI: [显示线索概览,发现第 5 封邮件有重要决策]
300+
301+
你: 我想深入看一下第 5 封邮件
302+
AI: [从线索摘要中获取第 5 封的 message-id]
303+
AI: [使用 /analyze-email 分析该邮件]
194304
```
305+
306+
**小贴士**
307+
- `/analyze-thread` 给全局视图,了解整体脉络
308+
- `/analyze-email` 深入分析单封邮件的详细内容
309+
- 结合使用可以获得最佳效果
310+
311+
### 对话示例
312+
313+
#### 读取单封邮件
314+
315+
```bash
195316
你: 请分析这封邮件: <message-id@example.com>
196317

197318
AI: 我来读取这封邮件...
198319
[AI 读取并分析邮件内容]
199320
```
200321

201-
**读取邮件线索**:
322+
#### 读取邮件线索
202323

203-
```
324+
```bash
204325
你: <message-id@example.com> 的完整对话是什么?
205326

206327
AI: 我来检索整个线索...
207328
[AI 显示对话中的所有邮件]
208329
```
209330

210-
**实际使用场景**:
331+
#### 分析邮件线索(自动触发 Skill)
332+
333+
```bash
334+
你: 帮我看看这个邮件线索: <E42FF77C-C563-466D-8544-3E0C16EA24EC@taler.net>
335+
336+
AI: 我来分析这个邮件线索...
337+
338+
📧 邮件线索分析
339+
- 邮件数量: 37封
340+
- 时间跨度: 2025-07-02 至 2025-12-10
341+
- 参与者: Marc Stibane (GNU Taler) ↔ 你
211342

343+
💼 商业合作
344+
- 项目: SwiftUI Layout 自适应问题咨询
345+
- 费用: 150€
346+
- 许可证: MIT
347+
348+
📋 附件清单
349+
- AdaptiveAmountRow.swift (核心解决方案)
350+
- TruncationDetectingText.swift (检测组件)
351+
- Invoice - SwiftUI Consultation.pdf (咨询发票)
352+
- 多张截图和演示视频
353+
354+
⚠️ 待处理问题
355+
- 特定设备上的布局闪烁问题
356+
- 需要进一步调试和优化
212357
```
358+
359+
#### 实际使用场景
360+
361+
```bash
213362
你: 请总结我们与商业伙伴的所有沟通,
214363
包括他们的需求、承诺的时间表和行动项。
215364

216365
AI: 我来阅读相关的邮件线索并提取关键信息...
217366
[AI 分析邮件内容,整理项目进展、承诺和行动项]
218367
```
219368

220-
**分析邮件附件**:
369+
#### 分析邮件附件
221370

222-
```
371+
```bash
223372
你: 这封邮件有附件吗?
224373

225374
AI: 这封邮件有 2 个附件:
@@ -232,6 +381,98 @@ AI: [提取附件到临时目录]
232381
[AI 读取并分析 PDF 内容]
233382
```
234383

384+
#### 使用 Attachment Analyzer Skill
385+
386+
```bash
387+
你: /attachment-analyzer
388+
389+
AI: 请提供要分析的邮件 Message-ID
390+
391+
你: <E42FF77C-C563-466D-8544-3E0C16EA24EC@taler.net>
392+
393+
AI: 正在分析邮件及附件...
394+
395+
📧 基本信息
396+
- 发件人: Marc Stibane <marc@taler.net>
397+
- 主题: Layout problem - can I hire you for that?
398+
- 日期: 2025年7月2日
399+
- 线索: 是 (37封邮件)
400+
401+
📎 附件清单 (共9个文件)
402+
403+
🚨 高重要性:
404+
- Invoice - SwiftUI Consultation.pdf
405+
咨询发票,可用于税务抵扣
406+
407+
⚠️ 中重要性:
408+
- AdaptiveAmountRow.swift
409+
核心解决方案代码
410+
- TruncationDetectingText.swift.zip
411+
文本截断检测组件
412+
413+
💡 低重要性:
414+
- Screenshot 2025-12-08 at 10.36.30.png 等13张截图
415+
调试截图
416+
417+
💡 关键发现
418+
- 这是一个 SwiftUI 布局自适应的技术咨询项目
419+
- 问题已基本解决,但存在特定设备的闪烁问题
420+
- 咨询费 150€ 已支付
421+
422+
⚠️ 需要行动
423+
- 考虑解决 iPhone XS 上的布局闪烁问题
424+
- 文件已清理
425+
426+
✅ 分析完成,临时文件已删除
427+
```
428+
429+
#### 自然语言触发 Skill
430+
431+
以下表述都会自动触发邮件分析:
432+
433+
```bash
434+
# 中文示例
435+
"分析这封邮件 <message-id>"
436+
"看看这个邮件有什么附件"
437+
"帮我整理一下这个线索的内容"
438+
"这封邮件重要吗"
439+
"提取邮件中的附件"
440+
441+
# 英文示例
442+
"Analyze this email <message-id>"
443+
"What attachments are in this email"
444+
"Help me understand this thread"
445+
"Is this email important"
446+
"Extract email attachments"
447+
```
448+
449+
#### 批量处理多个邮件
450+
451+
```bash
452+
你: 我有几封邮件需要分析:
453+
454+
1. <msg1@example.com> - 税务通知
455+
2. <msg2@example.com> - 合同草案
456+
3. <msg3@example.com> - 项目讨论
457+
458+
AI: 我来依次分析这些邮件...
459+
460+
[处理邮件 1/3]
461+
📧 税务通知 - HMRC
462+
🚨 高重要性: tax_notice_2025.pdf
463+
⚠️ 行动: 1月31日前提交申报
464+
465+
[处理邮件 2/3]
466+
📧 合同草案
467+
⚠️ 中重要性: service_agreement.docx
468+
💡 待审核条款和付款条件
469+
470+
[处理邮件 3/3]
471+
📧 项目讨论线索
472+
🧵 15封邮件,2个附件
473+
💡 主要讨论: Q1 发布计划
474+
```
475+
235476
## 🛠️ MCP 工具
236477

237478
| 工具 | 描述 |

0 commit comments

Comments
 (0)