最近、OpenClawが個人開発者の間でかなりバズっていて、僕も Raspberry Pi 5 に入れて遊んでいます。 (このへんは前に書いた記事: Raspberry Pi 5 × OpenClaw:最強の自律型AIエージェント拠点を構築する)
触っていて思ったのが、 「これ、業務の中でも常駐bot(cron)があれば、日常のルーチンタスクや退勤後タスクを回せるのでは?」 ということでした。
そこで作ったのが kage です。
特に OpenClaw で一番優れていると感じたのは HEARTBEAT.md。
30分おきに、メモした内容やチャットで「あとでやる」となったタスクを拾って実行してくれる体験は、単なる定期実行以上に価値がありました。
定型タスクはcronでも十分です。 でも「あとでやる系」を日本語だけで気軽に投げられる手軽さは、HEARTBEAT型の強みです。 kageはこの体験を、開発現場で扱いやすい形に寄せるために作っています。
なお、チーム開発向けという意味では、ちょうど7日前に出た GitHub Blog の Automate repository tasks with GitHub Agentic Workflows の方向性もかなり良いです。
使い分けとしては、
- GitHub Agentic Workflows: チーム開発・リポジトリ運用の自動化
- kage: 個人環境での常駐タスク実行(「あとでやる系」を含む)
という整理がしっくりきています。
具体的な用途例
実際に回しやすいのは、次のようなタスクです。
- マージ済みで不要になった worktree / branch の削除
- 就業時の「日報」「今日やったこと」「明日やること」の整理
- 夜間の技術調査(候補ライブラリの情報収集)
- 候補ライブラリを実際に動かして、出力品質や速度差を比較したレポート作成
例えば、夜中に比較レポートまで作らせておけば、始業時にその結果を見てすぐ実装判断に入れます。 この「寝てる間に調査と下準備を進める」だけでも、日中の開発効率はかなり上がります。
業務で使うなら、まずは「1つの地味タスク」をkageに移してみるのがおすすめです。 それだけでも、退勤後に終わっていてほしい作業が静かに前進します。🌿
インストール
GitHub の README ベースで、導入方法は次の3パターンです。
1) かんたんインストーラ
curl -sSL https://raw.githubusercontent.com/igtm/kage/main/install.sh | bash
2) PyPI からインストール
pip install kage-ai
3) uv でインストール
uv tool install git+https://github.com/igtm/kage.git
kage onboard
最小セットアップ
# 初回セットアップ(~/.kage, DB, crontabなど)
kage onboard
# プロジェクト初期化(.kage/tasks/sample.toml を作成)
kage init
必要なら ~/.kage/config.toml で既定エンジンを指定します。
default_ai_engine = "codex"
使い方(引数・タスク定義)
kage は .kage/tasks/*.toml にタスクを書いて運用します。
# AIプロンプト実行
[task_refactor]
name = "Daily Refactor"
cron = "0 3 * * *"
prompt = "Please clean up the code in src/"
provider = "claude"
# 出力をjqでパース
[task_labels]
name = "Ticket Labeling"
cron = "*/30 * * * *"
prompt = "Classify this issue as JSON '{\"label\":\"...\"}': 'Cannot login'"
provider = "codex_json"
parser_args = ".label"
# シェルコマンド実行
[task_cleanup]
name = "Log Cleanup"
cron = "0 0 * * 0"
command = "rm -rf ./logs/*.log"
shell = "bash"
よく使うコマンド:
kage task list: タスク一覧kage task show <name>: タスク詳細kage task run <name>: 単発実行kage run: 全タスク即時実行kage logs: 実行履歴kage ui: Web UI(デフォルトhttp://localhost:8484)