Skip to content

yohi/justice

Repository files navigation

Justice Plugin

Superpowers と oh-my-openagent を繋ぐ神経系プラグイン。

Tests TypeScript Bun

これは何?

Justice は、以下の2つの間のギャップを埋める OpenCode プラグイン です。

  • Superpowers — Markdownのプランファイルを通じた宣言的なAIプロジェクト管理
  • oh-my-openagenttask() ツールを備えたイベント駆動型のAI実行エンジン

Justice がない環境では、plan.md のチェックボックスリストと task() への委譲呼び出しの間に自動的な連携はありません。Justice は「神経系」として機能することでこのギャップを埋めます。具体的には、委譲の意図を検出し、プランを解析し、コンテキストをパッケージ化し、結果を処理し、さらに得られた学習内容を今後のタスクにフィードバックします。

アーキテクチャ

Superpowers (頭脳)               Justice Plugin (神経系)                 oh-my-openagent (手足)
─────────────────────       ────────────────────────────────────    ────────────────────────
plan.md                 →   フック層 (Hook Layer):                →   task()
design.md               →     plan-bridge (Message/PreToolUse)  →   background_output()
role-prompt.md          →     task-feedback (PostToolUse)        ←   compaction イベント
                        →     compaction-protector (Event)        ←   loop-detector イベント
                        →     loop-handler (Event)
                             ↕
                             コアロジック層 (純粋関数、I/Oなし):
                               PlanParser · TaskPackager · ErrorClassifier
                               DependencyAnalyzer · CategoryClassifier
                               WisdomStore · LearningExtractor · ...

主な設計原則

  • フックファースト (Hook-First): 全ての機能は OmO のライフサイクルフックとして実装されます。
  • 純粋なコア (Pure Core): ビジネスロジックは OmO に一切依存しておらず、完全にユニットテスト可能です。
  • フェイルオープン (Fail-Open): I/O エラーによって実行がクラッシュすることはありません。プラグインはグレースフルに縮退します。
  • 不変型の利用 (Immutable Types): 予期せぬ状態変更を防ぐため、すべてのインターフェースで readonly を使用します。

クイックスタート

# 依存関係のインストール
bun install

# 全テストの実行 (201 テスト)
bun run test

# 型チェック
bun run typecheck

# 静的解析 (Lint)
bun run lint

インストール (OmO への統合)

bun add justice-plugin

oh-my-opencode.jsonc に以下を追加してください:

{
  "hooks": {
    "custom": [
      {
        "name": "justice-plan-bridge",
        "event": ["Message", "PreToolUse"],
        "source": "./node_modules/justice-plugin/dist/hooks/plan-bridge.js"
      },
      {
        "name": "justice-task-feedback",
        "event": ["PostToolUse"],
        "source": "./node_modules/justice-plugin/dist/hooks/task-feedback.js"
      },
      {
        "name": "justice-compaction-protector",
        "event": ["Event"],
        "source": "./node_modules/justice-plugin/dist/hooks/compaction-protector.js"
      },
      {
        "name": "justice-loop-handler",
        "event": ["Event"],
        "source": "./node_modules/justice-plugin/dist/hooks/loop-handler.js"
      }
    ]
  }
}

使い方

インストール後、AI エージェントがメッセージ内でプランファイルを参照し、かつ委譲を表すキーワード(例: "plan.md から次のタスクを委譲して")を含めた場合に、Justice は自動的にアクティブになります。

委譲のキーワード (英語/日本語): delegate, next task, execute task, 次のタスク, タスクを委譲, タスクを実行, タスクを開始

コアコンポーネント

コンポーネント レイヤー 目的
PlanParser Core plan.md を解析して PlanTask[] を生成、チェックボックスの更新
TaskPackager Core PlanTask から構造化された DelegationRequest に変換
TriggerDetector Core プランの参照と委譲の意図を検出
ErrorClassifier Core エラーを分類し、リトライの可否を判定
FeedbackFormatter Core task() の生の出力を解析して TaskFeedback に変換
DependencyAnalyzer Core (depends: task-N) マーカーの解析、トポロジカルソート
CategoryClassifier Core キーワードに基づいて OmO のタスクカテゴリを自動選択
ProgressReporter Core タスクリストから進捗レポートを生成
SmartRetryPolicy Core 指数バックオフとコンテキスト削減を実施
TaskSplitter Core 失敗時にサブタスクへの分割提案を生成
WisdomStore Core LRU キャッシュ削除機構付きのインメモリ学習ストア
LearningExtractor Core TaskFeedback から学習内容を抽出
WisdomPersistence Core WisdomStore.justice/wisdom.json 間の永続化・復元
StatusCommand Core プログラムから利用可能なプランステータス API
JusticePlugin Core オーケストレーター — イベントをルーティングし、WisdomStore を共有
PlanBridge Hook Message/PreToolUse 時の委譲ブリッジ
TaskFeedbackHandler Hook PostToolUse 時のフィードバックループ
CompactionProtector Hook コンパクション発生時にプランの状態をスナップショット化
LoopDetectionHandler Hook ループ検出時に強制中断し、分割を提案
NodeFileSystem Runtime Bun.file を基盤とした FileReader/FileWriter 実装

エラーハンドリング

Justice は 2 層レイヤーのエラー戦略を実装しています:

レイヤー 対象エラー アクション
第1レイヤー (自動修正) syntax_error, type_error (最大 3 リトライ) エージェントに通知せず進行(OmO が自動修正を実施)
第2レイヤー (エスカレーション) test_failure, design_error plan.md にエラーの注記を追記; systematic-debugging のガイダンスをコンテキストに注入
中断 (Abort) timeout, loop_detected タスク分割の指示をコンテキストに注入

開発用コマンド

bun run test            # 全テストの実行
bun run test:watch      # 監視モード
bun run test:coverage   # カバレッジ・レポートの出力
bun run typecheck       # tsc --noEmit
bun run lint            # ESLint
bun run format          # Prettier によるフォーマット
bun run build           # dist/ ディレクトリへのコンパイル

開発環境

完全に独立し、再現性のある開発環境として Devcontainer の設定が含まれています。 VS Code の Remote Containers 拡張機能を使用してリポジトリを開いてください。

プロジェクト・ステータス

フェーズ 説明 状態
1 基盤の構築 (型、パーサー、足場作り) ✅ 完了
2 タスク委譲ブリッジ (Task Delegation Bridge) ✅ 完了
3 フィードバックループ (Feedback Loop) ✅ 完了
4 高度なエラーハンドリング (Advanced Error Handling) ✅ 完了
5 学習の統合 (Wisdom Integration) ✅ 完了
6 マルチエージェント協調 (Multi-Agent Coordination) ✅ 完了
7 プラグインオーケストレーターとランタイム ✅ 完了

ドキュメント

  • SPEC.md — 完全な仕様書 (アーキテクチャ、データモデル、コンポーネント仕様、API)
  • AGENTS.md — このプロジェクト向けの AI エージェントのコーディングガイドライン

About

Superpowers と oh-my-openagent を繋ぐ神経系プラグイン。

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages