Skip to main content

ハーネスプロファイルと評価システム

更新 2026-07-13 3分で読めます GitHub で編集 ↗

すべての変更に同じ深さの検証を適用するとトークンが浪費され、検証を浅く統一すると品質が漏れます。MoAI-ADK の答えは 適応型検証 — SPEC の複雑度に合わせて検証の深さを自動調整し、評価は作った側ではなく独立した評価者に任せることです。

概要

MoAI-ADK のハーネス(Harness)は 3 階層の適応型品質検証システム です。SPEC の複雑度に応じて検証の深さを自動調整し、sync-auditor エージェントが 4 次元スコアリングで独立かつ懐疑的な品質評価を行います。「できた気がする」ではなく、スコアと根拠で完了を判定する構造です。

3 階層ハーネスレベル

レベル説明適用タイミングsync-auditor
minimal高速検証単純な変更 (typo、設定修正)省略可能
standard基本品質検証ほとんどの作業選択的
thorough全体検証 + TRUST 5複雑な SPEC、大規模変更必須

ハーネスレベルは SPEC scope に基づき 複雑度推定器 (Complexity Estimator) が自動的に決定します。typo 修正に thorough 検証を回さないこと — それ自体がトークノミクスです。

4 次元スコアリング

sync-auditor は 4 つの次元でスコアを付けます。

次元説明デフォルト Must-Pass
Functionality機能完成度 — 意図した目的を達成したかはい
Securityセキュリティ — OWASP、認証、権限、入力検証はい
Craftコード品質 — 可読性、構造、テストカバレッジいいえ
Consistency一貫性 — プロジェクトルール、コードスタイル準拠いいえ

スコア範囲

各次元は 0.0 〜 1.0 のスコアを受け取ります。

ルーブリックアンカー

スコアが評価者の気分で揺れないよう、すべての評価基準は 4 段階のルーブリックアンカーを持ちます。

スコア水準意味
0.25未達基本要求事項を未充足
0.50部分一部充足、改善が必要
0.75充足大部分を充足、小規模な改善
1.00優秀すべての基準を完全に充足

評価プロファイル

.moai/config/evaluator-profiles/ に 4 つのプロファイルが提供されます。作業の性格に応じて評価基準の厳格度を変えられます。

プロファイル説明適した場面
default.mdバランスの取れた基本プロファイルほとんどの作業
strict.md厳格な基準セキュリティ重視の作業
lenient.md寛容な基準プロトタイピング
frontend.mdフロントエンド特化UI/UX 作業

評価者バイアス防止 (5 つのメカニズム)

LLM 評価者は放置すると寛大になりがちです。これを構造的に抑制するため、5 つのメカニズムが連動して働きます。

#メカニズム説明
1ルーブリックアンカリングスコアにルーブリックによる正当化が必須
2回帰ベースライン過去プロジェクト比の過度なスコア上昇を検出
3Must-Pass ファイアウォール必須基準は他領域のスコアで補償不可
4独立再評価5 回ごとに独立再評価 (偏差 > 0.10 で再調整)
5アンチパターン交差検査既知のアンチパターン発見時、該当次元のスコアを 0.50 に制限

Evaluator Memory Scope

評価者の判断記憶は イテレーションごとに一時的 です。GAN Loop の各イテレーションで sync-auditor は新しいコンテキストで再起動され、前回イテレーションの判断根拠は新しいプロンプトに含まれません。Sprint Contract の状態だけがイテレーション間で維持されます。評価者が自分の以前の判断にアンカリングされ、惰性でスコアを付けるのを防ぐ設計です。

設定

.moai/config/sections/harness.yaml で設定します。

yaml
harness:
  level: auto              # auto | minimal | standard | thorough
  evaluator:
    memory_scope: per_iteration   # FROZEN — 変更不可
    profiles:
      default: .moai/config/evaluator-profiles/default.md
      strict: .moai/config/evaluator-profiles/strict.md
    aggregation: min              # min | mean
    must_pass_dimensions:
      - Functionality
      - Security

関連ドキュメント