claude-code-remote-remake/README.md

214 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TaskPing - 智能邮件自动化 Claude Code 助手
TaskPing 是一个智能的邮件自动化工具,实现了 Claude Code 与邮件系统的深度集成。通过监听邮件回复,自动将回复内容输入到对应的 Claude Code 会话中执行,让你可以在任何地方通过邮件远程控制 Claude Code。
## 🚀 核心功能
### 📧 智能邮件通知
- **自动检测**: 基于 Claude Code 官方 hooks 机制,自动识别任务完成和等待输入状态
- **实时通知**: 任务完成时自动发送邮件,包含完整的用户问题和 Claude 回复内容
- **会话绑定**: 邮件与特定的 tmux 会话绑定,确保回复到正确的 Claude Code 窗口
### 🔄 邮件回复自动执行
- **远程控制**: 直接回复邮件,内容自动输入到对应的 Claude Code 会话中
- **智能注入**: 自动检测 tmux 会话状态,将命令精确注入到正确的窗口
- **防重复处理**: 实现邮件去重机制,避免重复处理同一封邮件
### 🛡️ 稳定性保障
- **单实例运行**: 确保只有一个邮件监听进程运行,避免重复处理
- **状态管理**: 完善的会话状态跟踪和错误恢复机制
- **安全验证**: 邮件来源验证,确保只处理授权用户的回复
## 📦 快速安装
### 1. 克隆项目
```bash
git clone https://github.com/your-username/TaskPing.git
cd TaskPing
npm install
```
### 2. 配置邮箱
```bash
npm run config
```
按照提示配置你的邮箱信息SMTP 和 IMAP
### 3. 配置 Claude Code 钩子
将以下内容添加到 `~/.claude/settings.json``hooks` 部分:
```json
{
"hooks": {
"Stop": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "node /path/to/TaskPing/taskping.js notify --type completed",
"timeout": 5
}]
}],
"SubagentStop": [{
"matcher": "*",
"hooks": [{
"type": "command",
"command": "node /path/to/TaskPing/taskping.js notify --type waiting",
"timeout": 5
}]
}]
}
}
```
### 4. 全局安装 claude-control 命令
```bash
node install-global.js
```
### 5. 启动邮件监听服务
```bash
npm run relay:pty
```
## 🎮 使用方法
### 1. 创建 Claude Code 会话
```bash
# 在任何目录下都可以运行
claude-control --session project-name
```
### 2. 正常使用 Claude Code
在 tmux 会话中正常与 Claude 对话:
```
> 请帮我分析这个项目的代码结构
Claude 回复...
```
### 3. 自动邮件通知
当 Claude 完成任务时,你会收到包含完整对话内容的邮件通知。
### 4. 邮件回复控制
直接回复邮件,输入下一个指令:
```
请继续优化代码性能
```
### 5. 自动执行
你的回复会自动注入到对应的 Claude Code 会话中并执行。
## 🔧 项目架构
```
TaskPing/
├── src/
│ ├── channels/email/
│ │ └── smtp.js # SMTP 邮件发送
│ ├── core/
│ │ ├── config.js # 配置管理
│ │ ├── logger.js # 日志系统
│ │ └── notifier.js # 通知协调器
│ ├── data/
│ │ ├── session-map.json # 会话映射表
│ │ └── processed-messages.json # 已处理邮件记录
│ ├── relay/
│ │ └── relay-pty.js # 邮件监听和 PTY 注入服务
│ └── utils/
│ └── tmux-monitor.js # Tmux 会话监控
├── taskping.js # 主入口文件
├── claude-control.js # Claude Code 会话管理
├── start-relay-pty.js # 邮件监听服务启动器
└── install-global.js # 全局安装脚本
```
## 🛠️ 核心技术实现
### 邮件监听与处理
- 使用 `node-imap` 监听 IMAP 邮箱新邮件
- 实现邮件去重机制(基于 UID、messageId 和内容哈希)
- 异步事件处理,避免竞态条件
### 会话管理
- Tmux 会话自动检测和命令注入
- 会话状态持久化存储
- 支持多会话并发处理
### 通知系统
- 自动捕获当前 tmux 会话的用户问题和 Claude 回复
- 生成包含完整对话内容的邮件通知
- 支持多种通知渠道(桌面通知、邮件等)
## 🔍 故障排除
### 邮件重复处理问题
确保只运行一个邮件监听进程:
```bash
# 检查运行状态
ps aux | grep relay-pty
# 停止所有进程
pkill -f relay-pty
# 重新启动
npm run relay:pty
```
### 命令注入失败
检查 tmux 会话状态:
```bash
# 查看所有会话
tmux list-sessions
# 检查会话内容
tmux capture-pane -t session-name -p
```
### 邮件配置问题
测试邮件连接:
```bash
# 测试 SMTP
node -e "
const config = require('./config/user.json');
console.log('SMTP Config:', config.email.config.smtp);
"
# 测试 IMAP
node -e "
const config = require('./config/user.json');
console.log('IMAP Config:', config.email.config.imap);
"
```
## 🎯 使用场景
### 远程编程工作流
1. 在办公室启动一个 Claude Code 代码审查任务
2. 下班回家,收到邮件"代码审查完成发现3个问题"
3. 回复邮件"请修复第一个问题"
4. Claude 自动开始修复,完成后再次发送邮件通知
5. 继续回复邮件进行下一步操作
### 长时间任务监控
1. 启动大型项目重构任务
2. Claude 分步骤完成各个模块
3. 每个阶段完成都发送邮件通知进度
4. 通过邮件回复指导下一步方向
## 🤝 贡献指南
1. Fork 本项目
2. 创建功能分支:`git checkout -b feature/new-feature`
3. 提交更改:`git commit -am 'Add new feature'`
4. 推送分支:`git push origin feature/new-feature`
5. 提交 Pull Request
## 📄 许可证
本项目采用 MIT License 开源协议。
---
**让 Claude Code 工作流程更加智能高效!**
如果这个项目对你有帮助,请给我们一个 ⭐!