APM

>Agent Skill

@muzhicaomingwang/zhimeng-agent

skilldevelopment

> 个人自动化任务集合,通过 macOS launchd 定时调度,自动执行日常任务并同步到多个平台。

pythongit
apm::install
$apm install @muzhicaomingwang/zhimeng-agent
apm::skill.md
# zhimeng-agent 自动化任务技能

> 个人自动化任务集合,通过 macOS launchd 定时调度,自动执行日常任务并同步到多个平台。

## 概览

```
zhimeng-agent/
├── tasks/
│   ├── config.py              # 统一配置
│   ├── sync_utils.py          # 多平台同步工具
│   ├── daily_report/          # 日报生成(0:00)
│   ├── email_organizer/       # 邮箱整理(2:00)
│   ├── desktop_organizer/     # 桌面整理(4:00)
│   ├── tech_news/             # 科技新闻(7:00)
│   └── launchd/               # macOS 定时任务配置
├── logs/                      # 运行日志
└── SKILL.md                   # 本文档
```

## 任务列表

| 任务 | 调度时间 | 功能 | 输出目标 |
|------|----------|------|----------|
| daily-report | 每天 00:00 | 生成每日工作报告 | Git, Notion, Feishu, Obsidian |
| email-organizer | 每天 02:00 | 自动归档邮件 | Obsidian |
| desktop-organizer | 每天 04:00 | 整理桌面和下载目录 | Obsidian |
| tech-news | 每天 07:00 | 聚合科技新闻 | Obsidian, Feishu |

---

## 1. 日报生成 (daily-report)

### 功能
- 从 Git 仓库提取当日提交记录
- 整合 Claude Code 会话摘要
- 生成结构化的工作日报

### 数据源
- Git commits(指定仓库目录)
- Claude Code sessions(`~/.claude/projects/`

### 输出
```markdown
# 2026-01-07 工作日报

## 代码提交
- feat(plan): 实现方案生成核心流程

## Claude Code 会话
- 4 个会话,总交互 23 轮

## 统计
- 提交数: 5
- 会话数: 4
```

### 手动运行
```bash
cd /Users/qitmac001395/workspace/QAL/ideas/apps/zhimeng-agent
poetry run python -m tasks.daily_report.main --dry-run  # 仅生成不同步
poetry run python -m tasks.daily_report.main            # 生成并同步
```

---

## 2. 邮箱整理 (email-organizer)

### 功能
- 使用 himalaya CLI 连接 Gmail
- 自动归档通知类邮件
- 按发件人分类统计

### 归档规则
优先归档以下类型:
- 社交平台通知(LinkedIn, Twitter, Reddit 等)
- 技术平台通知(GitHub, Stack Overflow 等)
- 新闻简报(newsletter, digest 等)
- 自动邮件(noreply, mailer 等)

### 前置条件
1. 安装 himalaya CLI:`brew install himalaya`
2. 配置 Gmail App Password
3. 创建配置文件 `~/.himalaya-config/himalaya/config.toml`

### 手动运行
```bash
poetry run python -m tasks.email_organizer.main --dry-run  # 仅分析
poetry run python -m tasks.email_organizer.main            # 执行归档
```

---

## 3. 桌面整理 (desktop-organizer)

### 功能
- 扫描桌面和下载目录
- 按文件类型分类移动
- 清理超过30天的旧文件

### 整理规则

| 文件类型 | 目标目录 |
|----------|----------|
| 图片 (.png, .jpg, .gif) | ~/Pictures/Desktop-Archive/ |
| 文档 (.pdf, .doc, .md) | ~/Documents/Desktop-Archive/ |
| 压缩包 (.zip, .tar) | ~/Downloads/Archives/ |
| 代码 (.py, .js, .java) | ~/Documents/Code-Archive/ |
| 其他 | ~/Documents/Desktop-Other/ |

### 安全特性
- 不删除任何文件,仅移动
- 保留最近7天的文件在原位
- 生成详细的移动日志

### 手动运行
```bash
poetry run python -m tasks.desktop_organizer.main --dry-run  # 仅预览
poetry run python -m tasks.desktop_organizer.main            # 执行整理
```

---

## 4. 科技新闻 (tech-news)

### 功能
- 抓取 Hacker News 热门文章
- 获取 GitHub 24小时热门仓库
- 生成每日科技早报

### 数据源
- Hacker News Top Stories(默认15条)
- GitHub Trending(默认10个仓库)

### 输出格式
```markdown
# 2026-01-07 (周二) 科技早报

## Hacker News 热门
1. [Article Title](url) (320分, 45评论)

## GitHub 热门仓库
- **[owner/repo](url)** ⭐ 1234 `Python` `AI`
  > Repository description
```

### 手动运行
```bash
poetry run python -m tasks.tech_news.main --dry-run           # 仅生成
poetry run python -m tasks.tech_news.main --hn-count 20       # 自定义数量
poetry run python -m tasks.tech_news.main                     # 生成并同步
```

---

## 安装与管理

### 安装定时任务
```bash
cd /Users/qitmac001395/workspace/QAL/ideas/apps/zhimeng-agent/tasks/launchd
./install.sh install
```

### 查看任务状态
```bash
./install.sh status
```

### 立即执行任务
```bash
./install.sh run daily-report
./install.sh run tech-news
```

### 卸载定时任务
```bash
./install.sh uninstall
```

### 查看运行日志
```bash
# 标准输出
tail -f logs/daily-report.log
tail -f logs/tech-news.log

# 错误日志
tail -f logs/daily-report.error.log
```

---

## 配置

### 环境变量

`.env` 文件中配置:

```bash
# 飞书配置
FEISHU_APP_ID=your_app_id
FEISHU_APP_SECRET=your_app_secret

# OpenAI(用于摘要生成,可选)
OPENAI_API_KEY=your_api_key

# Notion(可选)
NOTION_TOKEN=your_token
```

### 核心配置文件

`tasks/config.py` 包含所有可调整参数:

```python
@dataclass
class TaskConfig:
    # 调度时间(小时)
    DAILY_REPORT_HOUR: int = 0
    EMAIL_ORGANIZE_HOUR: int = 2
    DESKTOP_ORGANIZE_HOUR: int = 4
    TECH_NEWS_HOUR: int = 7

    # 路径配置
    IDEAS_ROOT: Path = Path("/Users/qitmac001395/workspace/QAL/ideas")
    OBSIDIAN_VAULT: Path = Path("/Users/qitmac001395/Documents/Obsidian Vault")

    # 飞书接收者
    FEISHU_RECIPIENT_OPEN_ID: str = "ou_18b8063b232cbdec73ea1541dfb74890"
```

---

## 同步平台

### Obsidian
- 直接写入 Markdown 文件到 Obsidian Vault
- 按任务类型分目录:`Journal/`, `News/`, `Reports/`

### 飞书
- 通过飞书 API 发送消息
- 支持富文本和 Markdown 格式

### Notion
- 通过 Notion API 创建页面
- 支持父页面指定

### Git
- 自动提交日报到指定仓库
- Commit message 包含日期和摘要

---

## 故障排查

### 任务未执行
```bash
# 检查任务是否加载
launchctl list | grep zhimeng

# 手动触发测试
launchctl start com.zhimeng.tech-news

# 查看系统日志
log show --predicate 'subsystem == "com.apple.launchd"' --last 1h | grep zhimeng
```

### Python 环境问题
```bash
# 确认 Poetry virtualenv 路径正确
poetry env info --path

# 测试模块导入
poetry run python -c "from tasks.config import config; print(config)"
```

### 权限问题
```bash
# 确保脚本可执行
chmod +x tasks/launchd/install.sh

# 确保 Python 可执行
ls -la /Users/qitmac001395/Library/Caches/pypoetry/virtualenvs/zhimeng-agent-ORFMGT-6-py3.12/bin/python
```

---

## 开发指南

### 添加新任务

1. 创建任务目录:
```bash
mkdir -p tasks/new_task
touch tasks/new_task/__init__.py
touch tasks/new_task/main.py
```

2. 实现主逻辑(参考现有任务结构):
```python
# tasks/new_task/main.py
from tasks.config import config
from tasks.sync_utils import create_syncer

class NewTaskRunner:
    def run(self):
        # 执行任务逻辑
        content = self.generate_content()

        # 同步到平台
        syncer = create_syncer()
        syncer.sync_content(
            title="report-title",
            content=content,
            targets=["obsidian", "feishu"],
        )

def main():
    runner = NewTaskRunner()
    runner.run()

if __name__ == "__main__":
    main()
```

3. 创建 launchd plist 文件并安装

### 测试同步
```python
from tasks.sync_utils import create_syncer

syncer = create_syncer()
syncer.sync_content(
    title="test-sync",
    content="# Test\nThis is a test.",
    targets=["obsidian"],
    obsidian_folder="Test",
)
```

---

## 版本历史

- **v1.0.0** (2026-01-07): 初始版本
  - 4个定时任务:日报、邮箱、桌面、新闻
  - 多平台同步支持
  - macOS launchd 调度