# TaskPing 邮件回复功能使用指南 ## 概述 TaskPing 的邮件回复功能允许您通过回复邮件的方式向 Claude Code CLI 发送命令。当您在移动设备或其他电脑上收到 TaskPing 的任务提醒邮件时,可以直接回复邮件来控制 Claude Code 继续执行任务。 ## 工作原理 1. **发送提醒**: Claude Code 在任务暂停时发送包含会话 Token 的提醒邮件 2. **邮件监听**: PTY Relay 服务持续监听您的收件箱 3. **命令提取**: 从回复邮件中提取命令内容 4. **命令注入**: 通过 node-pty 将命令注入到对应的 Claude Code 会话 ## 快速开始 ### 1. 配置邮件账号 复制环境配置文件: ```bash cp .env.example .env ``` 编辑 `.env` 文件,填入您的邮件配置: ```env # Gmail 示例 IMAP_HOST=imap.gmail.com IMAP_PORT=993 IMAP_SECURE=true IMAP_USER=your-email@gmail.com IMAP_PASS=your-app-password # 使用应用专用密码 # 安全设置 ALLOWED_SENDERS=your-email@gmail.com,trusted@company.com ``` ### 2. 启动 PTY Relay 服务 ```bash npm run relay:pty # 或者 ./start-relay-pty.js ``` ### 3. 测试邮件解析 运行测试工具验证配置: ```bash npm run relay:test ``` ## 使用方法 ### 邮件格式要求 #### 主题格式 邮件主题必须包含 TaskPing Token,支持以下格式: - `[TaskPing #TOKEN]` - 推荐格式 - `[TaskPing TOKEN]` - `TaskPing: TOKEN` 例如: - `Re: [TaskPing #ABC123] 任务等待您的指示` - `回复: TaskPing: XYZ789` #### 命令格式 支持三种命令输入方式: 1. **直接输入**(最简单) ``` 继续执行 ``` 2. **CMD 前缀**(明确标识) ``` CMD: npm run build ``` 3. **代码块**(复杂命令) ```` ``` git add . git commit -m "Update features" git push ``` ```` ### 示例场景 #### 场景 1: 简单确认 收到邮件: ``` 主题: [TaskPing #TASK001] 是否继续部署到生产环境? ``` 回复: ``` yes ``` #### 场景 2: 执行具体命令 收到邮件: ``` 主题: [TaskPing #BUILD123] 构建失败,请输入修复命令 ``` 回复: ``` CMD: npm install missing-package ``` #### 场景 3: 多行命令 收到邮件: ``` 主题: [TaskPing #DEPLOY456] 准备部署,请确认步骤 ``` 回复: ```` 执行以下命令: ``` npm run test npm run build npm run deploy ``` ```` ## 高级配置 ### 会话管理 会话映射文件 `session-map.json` 结构: ```json { "TOKEN123": { "type": "pty", "createdAt": 1234567890, "expiresAt": 1234654290, "cwd": "/path/to/project", "description": "构建项目 X" } } ``` ### 环境变量说明 | 变量名 | 说明 | 默认值 | |--------|------|--------| | `IMAP_HOST` | IMAP 服务器地址 | 必需 | | `IMAP_PORT` | IMAP 端口 | 993 | | `IMAP_SECURE` | 使用 SSL/TLS | true | | `IMAP_USER` | 邮箱账号 | 必需 | | `IMAP_PASS` | 邮箱密码 | 必需 | | `ALLOWED_SENDERS` | 允许的发件人列表 | 空(接受所有) | | `SESSION_MAP_PATH` | 会话映射文件路径 | ./src/data/session-map.json | | `CLAUDE_CLI_PATH` | Claude CLI 路径 | claude | | `LOG_LEVEL` | 日志级别 | info | | `PTY_OUTPUT_LOG` | 记录 PTY 输出 | false | ### 邮件服务器配置示例 #### Gmail 1. 启用 IMAP: 设置 → 转发和 POP/IMAP → 启用 IMAP 2. 生成应用专用密码: 账号设置 → 安全 → 应用专用密码 ```env IMAP_HOST=imap.gmail.com IMAP_PORT=993 IMAP_SECURE=true ``` #### Outlook/Office 365 ```env IMAP_HOST=outlook.office365.com IMAP_PORT=993 IMAP_SECURE=true ``` #### QQ 邮箱 ```env IMAP_HOST=imap.qq.com IMAP_PORT=993 IMAP_SECURE=true ``` ## 安全注意事项 1. **发件人验证**: 始终配置 `ALLOWED_SENDERS` 以限制谁可以发送命令 2. **命令过滤**: 系统会自动过滤危险命令(如 `rm -rf`) 3. **会话过期**: 会话有过期时间,过期后无法接受命令 4. **邮件加密**: 使用 SSL/TLS 加密的 IMAP 连接 5. **密码安全**: 使用应用专用密码而非主密码 ## 故障排查 ### 常见问题 1. **无法连接到邮件服务器** - 检查 IMAP 是否已启用 - 验证服务器地址和端口 - 确认防火墙设置 2. **邮件未被处理** - 检查发件人是否在白名单中 - 验证邮件主题格式 - 查看日志中的错误信息 3. **命令未执行** - 确认 Claude Code 进程正在运行 - 检查会话是否已过期 - 验证命令格式是否正确 ### 查看日志 ```bash # 启动时查看详细日志 LOG_LEVEL=debug npm run relay:pty # 查看 PTY 输出 PTY_OUTPUT_LOG=true npm run relay:pty ``` ### 测试命令 ```bash # 测试邮件解析 npm run relay:test # 手动启动(调试模式) INJECTION_MODE=pty LOG_LEVEL=debug node src/relay/relay-pty.js ``` ## 最佳实践 1. **使用专用邮箱**: 为 TaskPing 创建专用邮箱账号 2. **定期清理**: 定期清理过期会话和已处理邮件 3. **命令简洁**: 保持命令简短明确 4. **及时回复**: 在会话过期前回复邮件 5. **安全优先**: 不要在邮件中包含敏感信息 ## 集成到现有项目 如果您想将邮件回复功能集成到现有的 Claude Code 工作流: 1. 在发送提醒时创建会话: ```javascript const token = generateToken(); const session = { type: 'pty', createdAt: Math.floor(Date.now() / 1000), expiresAt: Math.floor((Date.now() + 3600000) / 1000), cwd: process.cwd() }; saveSession(token, session); ``` 2. 在邮件主题中包含 Token: ```javascript const subject = `[TaskPing #${token}] ${taskDescription}`; ``` 3. 启动 PTY Relay 服务监听回复 ## 相关文档 - [邮件配置指南](./EMAIL_GUIDE.md) - [快速邮件设置](./QUICK_EMAIL_SETUP.md) - [系统架构说明](./EMAIL_ARCHITECTURE.md) ## 支持 如有问题,请查看: - 项目 Issue: https://github.com/JessyTsui/TaskPing/issues - 详细日志: `LOG_LEVEL=debug npm run relay:pty`