# スケジューラーガイド

## 概要

スケジューラーは、AIの自律的な動作を実現するための中核機能です。定期的なタスクを設定し、バックグラウンドで実行できます。

## タスクタイプ

### transmission_check
関係性が閾値を超えたユーザーへの自動送信をチェックします。

```bash
# 30分ごとにチェック
ai-gpt schedule add transmission_check "30m" --provider ollama --model qwen2.5
```

### maintenance
日次メンテナンスを実行します:
- 記憶の忘却処理
- コア記憶の判定
- 関係性パラメータの整理

```bash
# 毎日午前3時に実行
ai-gpt schedule add maintenance "0 3 * * *"
```

### fortune_update
AI運勢を更新します(通常は自動的に更新されます)。

```bash
# 毎日午前0時に強制更新
ai-gpt schedule add fortune_update "0 0 * * *"
```

### relationship_decay
時間経過による関係性の自然減衰を適用します。

```bash
# 1時間ごとに減衰処理
ai-gpt schedule add relationship_decay "1h"
```

### memory_summary
蓄積された記憶から要約を作成します。

```bash
# 週に1回、日曜日に実行
ai-gpt schedule add memory_summary "0 0 * * SUN"
```

## スケジュール形式

### Cron形式

標準的なcron式を使用できます:

```
┌───────────── 分 (0 - 59)
│ ┌───────────── 時 (0 - 23)
│ │ ┌───────────── 日 (1 - 31)
│ │ │ ┌───────────── 月 (1 - 12)
│ │ │ │ ┌───────────── 曜日 (0 - 6) (日曜日 = 0)
│ │ │ │ │
* * * * *
```

例:
- `"0 */6 * * *"` - 6時間ごと
- `"0 9 * * MON-FRI"` - 平日の午前9時
- `"*/15 * * * *"` - 15分ごと

### インターバル形式

シンプルな間隔指定:
- `"30s"` - 30秒ごと
- `"5m"` - 5分ごと
- `"2h"` - 2時間ごと
- `"1d"` - 1日ごと

## 実践例

### 基本的な自律AI設定

```bash
# 1. 30分ごとに送信チェック
ai-gpt schedule add transmission_check "30m"

# 2. 1日1回メンテナンス
ai-gpt schedule add maintenance "0 3 * * *"

# 3. 2時間ごとに関係性減衰
ai-gpt schedule add relationship_decay "2h"

# 4. 週1回記憶要約
ai-gpt schedule add memory_summary "0 0 * * MON"

# スケジューラーを起動
ai-gpt schedule run
```

### タスク管理

```bash
# タスク一覧を確認
ai-gpt schedule list

# タスクを一時停止
ai-gpt schedule disable --task-id transmission_check_1234567890

# タスクを再開
ai-gpt schedule enable --task-id transmission_check_1234567890

# 不要なタスクを削除
ai-gpt schedule remove --task-id old_task_123
```

## デーモン化

### systemdサービスとして実行

`/etc/systemd/system/ai-gpt-scheduler.service`:

```ini
[Unit]
Description=ai.gpt Scheduler
After=network.target

[Service]
Type=simple
User=youruser
WorkingDirectory=/home/youruser
ExecStart=/usr/local/bin/ai-gpt schedule run
Restart=always

[Install]
WantedBy=multi-user.target
```

```bash
# サービスを有効化
sudo systemctl enable ai-gpt-scheduler
sudo systemctl start ai-gpt-scheduler
```

### tmux/screenでバックグラウンド実行

```bash
# tmuxセッションを作成
tmux new -s ai-gpt-scheduler

# スケジューラーを起動
ai-gpt schedule run

# セッションから離脱 (Ctrl+B, D)
```

## トラブルシューティング

### タスクが実行されない

1. スケジューラーが起動しているか確認
2. タスクが有効になっているか確認:`ai-gpt schedule list`
3. ログを確認(将来実装予定)

### 重複実行を防ぐ

同じタスクタイプを複数回追加しないよう注意してください。必要に応じて古いタスクを削除してから新しいタスクを追加します。