島までは遠い 〜サークルアラウンド株式会社代表佐藤のブログ〜

佐藤正志@サークルアラウンド株式会社のことが少しわかる場所。プログラマーを育てるトレーナーとして、現役のソフトウェア技術者として、経営者の端くれとして、想うことをつづる。

AIにとって必要な道具を揃える

github.com

最近実装した機能でタイマー機能がある。というのは、AIエージェントは非同期なタイマー機能は持っていないようなので、何かを待たなければいけない時に難儀していたようだからだ。そこで AgentConsoleに、提示タイマーを仕掛けられるようにした。

たとえばCIのグリーン待ちをさせている時に、勝手に仕掛けて待ってくれる。

⏺ PR https://github.com/ms2sato/agent-console/pull/448
  を作成しました。CI完了後にマージします。

⏺ agent-console - create_timer (MCP)(sessionId: "b83707dc-0e79-408a-9892-c48d1cd3a45f",
                                     workerId: "43adf357-c6a8-45d6-89cd-77ed6278bbc5",
                                    intervalSeconds: 180, action: "Check CI on PR #448.
                                     Merge if green, then ExitWorktree.")

⏺ CI待ちです。

✻ Cogitated for 49s

❯                                                                                      
[internal:timer] timestamp=2026-04-01T22:33:02.558Z                                    
timerId=a17b441b-e147-4c0b-b89a-dcc57c75a3a1 action="Check CI on PR #448. Merge if     
green, then ExitWorktree." fireCount=1 intent=inform                                   

⏺ Bash(gh pr view 448 --json statusCheckRollup --jq '.statusCheckRollup[] | "\(.name):
      \(.status) \(.conclusion // "")"' 2>/dev/null)
  ⎿  test: COMPLETED SUCCESS
     null: null

⏺ agent-console - delete_timer (MCP)(timerId: "a17b441b-e147-4c0b-b89a-dcc57c75a3a1")

⏺ Bash(gh pr merge 448 --merge 2>/dev/null && echo "MERGED")
  ⎿  MERGED

この状態で私から割り込みがかかったら即時処理してくれる。また、定時なので、何回もタイマーはコールされる。定期的な見守り系はこれで対応可能。CTO エージェントが、担当者に作業を振った後、15分おきタイマーを仕掛けて定時チェックしてくれる(報告せずにidleになっていたら状況確認したり)。