Tetora v2.4 — 自己学習するAgent、動的ルール注入、スロット対応リトライ
v2.3からv2.4にかけてのリリース群は、一つの統合されたアップグレードを形成しています。Agentが経験を蓄積し、必要なものだけをロードし、障害が発生しても手動介入なしに回復できるシステムへ。
TL;DR: Lessonプロモーションパイプラインで学習ループが完結——Agentが繰り返し発生するパターンをルール候補として提案できるようになりました。ルール注入はキーワードマッチング方式に移行し、50KBのハードカット問題を解消。スロット対応リトライがper-taskポリシーとstall検知を提供。セッションのcompact summaryを永続化しDiscordの健忘症を修正。War Roomは全面リニューアルし、/wrのDiscordコマンドを追加。
War Room v2(v2.3.0)
War Roomダッシュボードをゼロから再構築しました。新しいv2グリッドレイアウトは、鮮度インジケーター・手動オーバーライドバッジ・依存チェーンを含む全frontsを一画面に表示します。画面遷移が不要になりました。
/wr Discordコマンド
すべてのダッシュボード操作がDiscordのスラッシュコマンドで利用可能になりました:
/wr list — 全frontsと現在のステータスを一覧表示
/wr status <front> <status> — チャットからステータスを切り替え
/wr intel <front> <note> — frontのintelサイドバーにメモを追加
/wr export — 全frontsのmarkdownサマリーをコピー
セッション中にWeb UIを開けない場合でも、/wrで完全な操作が可能です。
自動アップデーター
card_type: autoのfrontsにはバックグラウンドcronが追加され、設定したスケジュールで自動更新されます。ダッシュボード上部の「⚡ 今すぐ実行」ボタンで、次のスケジュールを待たずにアドホック更新を起動できます。ダッシュボードのヘッダーに前回・次回の更新時刻が表示されます。
UI CRUD
WebインターフェースからfrontsをCreate・アーカイブ・削除できるようになりました——status.jsonを手動編集する必要はもうありません。「Depends On」フィールドは各モーダル内で依存チェーンのchipとして描画され、クリックすると依存先frontsにジャンプします。
セッション継続性:Discordの健忘症を修正(v2.4.1)
セッションcompaction後、Agentがたった今あったやり取りを忘れてしまうことが頻繁に発生していました——ユーザーに情報の繰り返しを求め、タスクの状態を失い、まるでセッションが始まったばかりのように振る舞っていました。
根本原因は3つの問題の重複でした:
- サマリーが短すぎる。 Compactionのターゲットは300〜500語で、具体的な詳細が大量に失われていた。
- 注入後即削除。 サマリーは初回注入後すぐにメモリから削除され、書き込みに失敗すると永久に失われた。
- Per-messageキャップが厳しすぎる。 800文字の制限がsummarizerの入力品質を低下させていた。
v2.4.1はこれら3点をまとめて修正します:
- サマリーターゲットを1500〜2000語に引き上げ、逐語識別子・具体的な数値・未完了アクションを保持するよう明示。
- サマリーは注入後も永続化するよう変更。次のcompactionが同じキーを上書きするため、古い記録が蓄積されることなく、失敗しても履歴が消えない。
- Per-messageキャップを1600文字に引き上げ。Summarizerのタイムアウトを90sから180sに延長。
Compact summaryの注入ブロックには、ユーザーに繰り返しを求める前にサマリーを参照するよう指示する明示的なヘッダーが付くようになりました。
スロット対応リトライ(v2.4.1、P0)
Taskboardのリトライループには3つのバグが蓄積しており、実際のワークロードで信頼性を損なっていました:
- 全Agentスロットが満杯でも、タスクがリトライキューに入り続け、実行パスがない状態になっていた。
- Stall検知がなく——Agentがタスク実行中にクラッシュすると、タスクが永遠に「running」のままになることがあった。
require_human_confirmが設定されている場合、人間が応答するまで毎分新しいコメントが追加され、コメントストームが発生していた。
v2.4.1はこれら3点を修正し、per-taskリトライポリシーを導入します:
{
"max": 1,
"require_human_confirm": true
}
サイレントな自動リトライを許可すべきでないタスクに設定できます:
tetora task create \
--title "リスクの高いmigration" \
--retry-policy '{"max":1,"require_human_confirm":true}'
maxに達すると、タスクは停止し、人間の明示的な確認を待ってから継続します。スロットガードにより、リトライは実際にスロットが空いている場合のみ発火します。Stall検知は、割り当てられたAgentが進捗報告を停止したときにタスクを失敗扱いにします。
動的ルール注入(v2.4.2)
ルールは以前、すべてのタスクに対して静的にブロック全体を注入していました——関連性に関わらず、rules/ディレクトリ全体が対象でした。成熟したワークスペースでは58KBものコンテンツがシステムプロンプトを膨らませ、Agentが実際に必要とするシグナルを希薄化していました。
さらに悪いことに、50KBを超えるとルールブロック全体が静かにスキップされていました。新しいルールを追加すると、意図せず全ルールが消えることがあったのです。
v2.4.2は静的注入をキーワードマッチング注入に置き換えます:
# rules/INDEX.md(一度作成するだけでOK)
- file: dispatch-workflow.md
keywords: [dispatch, agent, task, assign]
always: false
- file: git-safety.md
keywords: [git, commit, push, branch, merge]
always: false
- file: language-compliance.md
keywords: []
always: true # 全タスクに注入
インジェクターはMaxRulesPerTask(デフォルト3)とRulesMax(8000文字)でキャップされた「Active Rules」ブロックを構築します。タスクの説明やタイトルにキーワードが含まれるルールのみが対象となり、always: trueのルールは無条件で注入されます。
50KBのハードカットはなくなりました。200KBのソフト警告がそれに替わり、コンテンツをサイレントに削除するのではなく、グレースフルに劣化します。
Agentの振り返りから自動抽出されるlessonは、rules/(検証済みのガバナンスルール)ではなくmemory/auto-lessons.md(プロモーション待ちキュー)に書き込まれるようになりました。これにより未レビューのlessonがルール注入バジェットを消費するのを防ぎます。
Lessonプロモーションパイプライン(v2.4.2)
Agentは各タスク後にlessonを抽出しますが、それらのlessonはmarkdownファイルに留まったまま、実行可能なルールになる経路がありませんでした。44件のlessonが蓄積されてもレビューの仕組みがなく、このパターンは明らかに機能不全でした。
v2.4.2はCLI駆動・人間承認型のプロモーションパイプラインでこのループを完成させます:
# どのlessonがルール化に値するほど異なるタスクで繰り返されているかを確認
tetora lessons scan --threshold 3
# 候補をrules/auto-promoted-YYYYMMDD.mdに生成(デフォルトはdry-run)
tetora lessons promote --dry-run
# 90日以上更新されていないルールを監査
tetora lessons audit --age 90
パイプラインは新しいlesson_events DBテーブルにすべてのExtractAutoLessonトリガーをmarkdownキーとは独立して記録するため、ファイルが編集されても出現回数のカウントは正確です。
Agent向け振り返り履歴クエリ
AgentがCLIを叩くことなく、会話内で自分の履歴を検索できるようになりました:
reflection_search — キーワード・Agent・タスク・スコアで振り返りを検索
reflection_get — task IDで単一の振り返りを取得
lesson_history — 特定のlessonキーのすべての出現履歴を追跡
lesson_candidates — プロモーション待ちキューをプレビュー
これまで繰り返されるミスはAgentにとって不可視でした——「これは以前にも起きたか?」という問いかけができなかったからです。今ではできるようになりました。そして答えはコンテキスト内に現れます。
その他の変更
- Discordセッションrefの更新 — 各
runSingleTask完了後、TetorはDiscordのセッション参照を更新するようになりました。以前は実行中にセッションがアーカイブされると、その後の出力がアーカイブ済みセッションに送られてサイレントに失われていました。 - Taskboard
next_retry_atループ修正 — リトライスケジューラーの3つのエッジケースにより、タスクが前進しないままループしたり、過去の時刻にリトライをスケジュールしたりする問題がありました。v2.4.2でこれらをすべて修正(#90)。 - Docsビューワー — War Roomダッシュボードにインラインのドキュメントビューワーが追加されました。アーキテクチャノートを読むためにダッシュボードを離れる必要はなくなりました。
アップグレード
tetora upgrade
単一バイナリ。外部依存なし。macOS / Linux / Windows 対応。