算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
choose-loop-wakeup-interval【设计与创意】Select a `delaySeconds` value when scheduling a loop wakeup via the `ScheduleWakeup` tool or the `/loop` slash command. Covers the three-tier cache-aware decision (cache-warm under 5 minutes, cache-miss 5 minutes to 1 hour, idle default 20 to 30 minutes), the 300-second anti-pattern, the [60, 3600] runtime clamp, the minute-boundary rounding quirk, a…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
delaySeconds value when scheduling a loop wakeup via the
ScheduleWakeup tool or the /loop slash command. Covers the three-tier
cache-aware decision (cache-warm under 5 minutes, cache-miss 5 minutes to
1 hour, idle default 20 to 30 minutes), the 300-second anti-pattern, the
[60, 3600] runtime clamp, the minute-boundary rounding quirk, and writing
a telemetry-worthy reason field. Use when designing an autonomous loop,
when a heartbeat cadence is being planned, when polling cadence is being
tuned, or when post-hoc review of loop costs reveals interval mis-sizing.
license: MIT
allowed-tools: ""
metadata:
author: Philipp Thoss
version: "1.0"
domain: general
complexity: intermediate
language: multi
tags: loop, wakeup, cache, scheduling, delay, general
locale: ja
source_locale: en
source_commit: 9c546edf
fence_basis_commit: 9c546edf
translator: "Claude + human review"
translation_date: "2026-05-03"ScheduleWakeup の delaySeconds 値を、プロンプトキャッシュの 5 分 TTL、スケジューラの分単位の粒度、[60, 3600] のランタイムクランプを尊重して選ぶ。決定は構造的に自明ではない: 「だいたい5分待とう」という共通の直感は最悪の領域に落ちる — キャッシュミスのコストを払いながら待ちを償却できない。
その推論は ScheduleWakeup ツールの説明と共にツール呼び出し時に運ばれるが、その時点ではループはすでにスケジュールされている。本スキルはその推論を、それが属する計画時間へと引き上げる。
/loop または ScheduleWakeup 駆動の継続を設計し、ティックあたりの遅延を選ぶときdelaySeconds の選択を含むガイド、ランブック、実例を執筆するとき待機がどの階層に属するかを決める:
期待結果: 明確な分類: active-watch、cache-miss、idle のいずれか。
失敗時: 待機が分類できない場合 — 「私は何を待っているのか?」に正直な答えがない場合 — そのループはおそらく存在すべきではない。ステップ5へ飛び、wakeup を全くスケジュールしないことを検討する。
分類に基づいて delaySeconds を選ぶ:
| Tier | Range | Cache behaviour | Use when |
|---|---|---|---|
| Cache-warm | 60 – 270 s | Cache stays warm (under 5-minute TTL) | Active watch — the next tick needs fast, cheap re-entry |
| Cache-miss | 1200 – 3600 s | Cache goes cold; one miss buys a long wait | Genuinely idle, or the awaited event cannot happen sooner |
| Idle default | 1200 – 1800 s (20–30 min) | Cache goes cold | No specific signal; periodic check with user able to interrupt |
300 s を選ばない。 これは最悪の間隔: キャッシュはミスし、しかも待機がミスを償却するには短すぎる。「だいたい5分」を取りたくなったら、270 s に下げる(warm のまま)か、1200 s+ にコミットする(ミスを償却する)。
期待結果: 三層のいずれかから選ばれた具体的な delaySeconds 値、習慣的に選ばれた切りのよい分単位値ではないもの。
失敗時: 選択がいつも 300 s に落ちるなら、根底の問いは普通「このループはこの周期で存在すべきか?」である — ステップ1を再検討する。
スケジューラは整数分の境界で発火する。delaySeconds が N だと実際の遅延は分のどの秒に呼んだかに依って N から N + 60 秒となる。
実例:
HH:MM:40でScheduleWakeup({delaySeconds: 90})を呼ぶと、ターゲットはHH:(MM+2):00— つまり実際の待機は 90 s ではなく 140 s。
帰結: 分未満の意図は無意味。渡す値は精密スケジュールではなく 最小値 として扱う。1分のずれが問題になるなら、ループ周期はこの機構には厳しすぎる。
期待結果: 実際の待機が要求した delaySeconds より最大 60 秒長くなることを受け入れている。cache-warm ティックではこれは重要 — 270 s が実際には ~330 s になり cache-miss 領域に転がりうる。
失敗時: 上限近くの値(例: cache-warm を狙って 265 s)が一般的なら、下方にパディングする — 最悪ケースの分境界ずれの下でも cache-warm 保証を維持するため、270 s ではなく 240 s を使う。
ランタイムは delaySeconds を [60, 3600] にクランプする — 範囲外の値は静かに調整される。テレメトリはモデルが要求したもの(chosen_delay_seconds)と実際にスケジュールされたもの(clamped_delay_seconds)を区別し、不一致時は was_clamped: true をセットする。
要求値ではなくクランプ値に対して計画する:
期待結果: 選んだ値が [60, 3600] の中にあるか、もしくはクランプ挙動を意図的に受け入れている。
失敗時: 真に数時間(例: 「4時間後に起こせ」)が必要なら、wakeup を連鎖させる — 自身を再スケジュールする 3600 s ティック — か、cron ベースのループ(CronCreate with kind: "loop")を代わりに使う。
reason を書くreason フィールドはテレメトリ、ユーザー可視ステータス、プロンプトキャッシュ温度推論を一行に兼ねる。200 文字に切られる。具体的にする。
checking long bun build、polling for EC2 instance running-state、idle heartbeat — watching the feedwaiting、loop、next tick、continuingこのフィールドの読み手は、あなたの周期を事前に予測することなくループが何をしているかを理解しようとするユーザー。彼らに向けて書く。
期待結果: ステータスをちらと見るユーザーに意味の通る、具体的な一句の理由。
失敗時: 具体的な理由を述べられないなら、ループが存在すべきかを再検討する(ステップ1とステップ6)。
すべての「後で戻ってこよう」という衝動がスケジュール wakeup に値するわけではない。次の場合はティックをスケジュール しない:
期待結果: wakeup をスケジュールするか全くループしないかの意識的な選択。「できるから」はループする理由ではない。
失敗時: 発火前にユーザーが割り込む wakeup を繰り返しスケジュールしているなら、間隔ではなくパターンが間違っている。
delaySeconds が三層範囲のいずれか(60–270、1200–3600、idle なら 1200–1800)に入る[60, 3600] の中、もしくはクランプ挙動が明示的に受け入れられているreason が具体的で 200 文字未満reason フィールド: "waiting" はユーザーに何も伝えず、テレメトリの有用性も下げる。理由はステータスラインで読まれるかのように書く。bun build がキックオフされ、エージェントは結果到着時にキャッシュがまだ warm なように素早く確認したい。
checking long bun build自律エージェントが、行動に値するものを求めて低ボリュームのフィードを 1 時間に 1 回監視する。
idle heartbeat — watching the feedエージェントがリモート API のリトライ中に「5分待ち」たい。要求は 300 s。
manage-token-budget — 長期エージェントループのコスト天井; キャッシュ意識サイジングは一つのレバーdu-dum — 観察/行為の分離パターン; 本スキルはループが cron なしのときの観察クロック間隔をサイジングするread-continue-here — セッション越しの引き継ぎ; 本スキルはセッション内の wakeup を扱うwrite-continue-here — read-continue-here の補完