Skill Candidates ガイド¶
Skill Candidates は、失敗した agent セッションから自動的に抽出される改善提案です。エラーから学習することで、AI アシスタントの能力を継続的に改善できます。
什么是 Skill Candidates?¶
Agent セッションが quality-gate チェックに失敗すると、AIOS は自動的に: 1. 失敗パターンを分析 2. 根本原因を特定(例:エラーハンドリングの欠落、エッジケース) 3. スキルパッチ草案を生成 4. スキル候補としてレビュー用に提示
フロー例¶
セッション失敗 → Learn-eval が分析 → スキル候補が生成 → レビュー → パッチ適用 → スキル改善
Skill Candidate 構造¶
各スキル候補には以下が含まれます:
| フィールド | 説明 |
|---|---|
skillId |
パッチ対象スキル |
scope |
機能エリア(例:「authentication」「file-ops」) |
failureClass |
遭遇した失敗タイプ |
lessonKind |
改善タイプ(例:「error-handling」「edge-case」) |
lessonCount |
学んだ教訓の数 |
patchHint |
提案されたコード/テキスト変更 |
sourceDraftTargetId |
元の draft ID |
reviewStatus |
Pending/Approved/Rejected |
Skill Candidates の表示¶
HUD から¶
# セッション状態とインラインで候補を表示
aios hud --show-skill-candidates
# 詳細ビュー(候補のみ、HUD なし)
aios hud --show-skill-candidates --skill-candidate-view detail
# 結果の制限
aios hud --show-skill-candidates --skill-candidate-limit 5
Team Status から¶
# すべての最近の候補を表示
aios team status --show-skill-candidates
# セッションでフィルター
aios team status --session <session-id> --show-skill-candidates
# アーティファクトファイルにエクスポート
aios team status --export-skill-candidate-patch-template
list コマンド¶
# 現在のセッションの候補をリスト
aios team skill-candidates list
# 特定のセッションのリスト
aios team skill-candidates list --session-id <session-id>
# JSON 出力
aios team skill-candidates list --json
Draft ID でフィルター¶
# 特定の draft からの候補のみ表示
aios team skill-candidates list --draft-id <draft-id>
# フィルター済み候補をエクスポート
aios team skill-candidates export --draft-id <draft-id>
パッチのエクスポート¶
アーティファクトファイルにエクスポート¶
# デフォルトの場所(セッションアーティファクトフォルダー)
aios team skill-candidates export
# カスタム出力パス
aios team skill-candidates export --output-path ./patches/my-fix.md
# draft フィルター付き
aios team skill-candidates export --draft-id <draft-id> --output-path ./draft-patch.md
エクスポート形式¶
エクスポートされたパッチテンプレートには以下が含まれます: - 候補メタデータ(スキル ID、scope、failure class) - 教訓の説明 - 提案されたパッチ内容 - 適用手順
パッチの適用¶
レビュープロセス¶
任意のパッチを適用する前に: 1. failure class を読む — 何が問題だったか理解 2. 教訓をレビュー — 何を得たか 3. patch hint を調べる — 提案された変更 4. パッチがスキルバージョンに適用可能か確認
apply コマンド¶
# 特定の候補を適用
aios skill-candidate apply <candidate-id>
# レビューモードで適用
aios skill-candidate apply <candidate-id> --review
# dry-run(変更のプレビュー)
aios skill-candidate apply <candidate-id> --dry-run
一括適用¶
# スキルのすべての保留中候補を適用
aios skill-candidate apply-all --skill <skill-id>
# 承認付きで適用
aios skill-candidate apply-all --skill <skill-id> --approve
Skill Candidate ワークフロー¶
ステップ 1: 候補を発見¶
# 失敗したセッションの後、候補を確認
aios hud --session <failed-session-id> --show-skill-candidates
ステップ 2: 候補をレビュー¶
# 詳細なレビュー用に詳細ビュー
aios hud --session <session-id> --show-skill-candidates --skill-candidate-view detail
# オフラインレビュー用にエクスポート
aios team skill-candidates export --session-id <session-id>
ステップ 3: パッチをローカルでテスト¶
# テストブランチを作成(git を使用する場合)
git checkout -b skill-patch-<skill-id>
# 手動でパッチを適用するか apply コマンドを使用
aios skill-candidate apply <candidate-id>
# テストを実行して確認
npm test
ステップ 4: 承認または却下¶
# パッチが動作する場合 — 承認
aios skill-candidate review <candidate-id> --approve
# パッチに問題がある場合 — フィードバックで却下
aios skill-candidate review <candidate-id> --reject --comment "エッジケース X を処理しない"
ベストプラクティス¶
優先順位付け¶
この順序で候補を適用: 1. 高頻度の失敗(同じ failure class が複数回出現) 2. 重要パスのスキル(認証、セキュリティ、データの整合性) 3. 簡単な成果(単一行の修正、明確な改善)
レビュ_guideline¶
- レビューなしでは自動適用しない — 各パッチは人間の検証が必要
- 分離してテスト — パッチが既存の機能を壊さないか確認
- 競合を確認 — 複数パッチが同じコードを変更している可能性
- 決定を文書化 — 承認/却下の理由を記録
過学習の回避¶
- 1 回限りのエッジケースのパッチは適用しない
- 複数のセッション間でパターンを見つける
- 具体的な回避策より一般的な解決策を優先
Learn-Eval との統合¶
Learn-eval はスキル候補を生成するシステムです:
# 最近のセッションを分析するために learn-eval を実行
aios learn-eval --limit 10
# スキル候補を含む draft 推奨事項を表示
Learn-Eval 出力¶
Dispatch Hindsight Analysis:
- 分析されたペア: 15
- 繰り返されたブロックターン: 3
- 回帰: 1
- 上位 failure class: token-validation-edge-case
Draft 推奨事項:
[fix] skill-candidate-001
スキル: authentication-handler
Scope: token-validation
Failure: edge-case-expired-token
Lessons: 2
Patch: 期限切れトークンの再試行ロジックを追加...
Quality-Gate 接続¶
スキル候補は quality-gate が失敗したときに生成されます:
Quality-Gate 結果¶
| 結果 | 説明 |
|---|---|
ok |
セッション合格 — 候補は生成されない |
failed |
セッション失敗 — 候補が生成された可能性 |
retry-needed |
リトライ必要 — 候補が生成される可能性 |
失敗カテゴリ¶
候補をトリガーする一般的な quality-gate 失敗カテゴリ:
- clarity-needs-input — Agent が更なるユーザー入力を必要とする
- sample.latency-watch — パフォーマンス問題
- dispatch.blocked — ジョブ実行がブロックされた
- evidence.missing — 検証証拠の欠落
トラブルシューティング¶
失敗セッション後に候補がない¶
考えられる理由: - learn-eval がまだ実行されていない - 失敗がスキル改善機会として分類されなかった - セッションが quality-gate チェック閾値に合格しなかった
# 手動で learn-eval をトリガー
aios learn-eval --session <session-id>
# quality-gate 状態を確認
aios hud --json | jq '.selection.qualityGate'
候補パッチが適用できない¶
理由: - ターゲットスキルが候補生成後に変更された - パッチ形式が現在のスキル構造と互換性がない - 競合する変更
# 候補ソースバージョンを確認
aios team skill-candidates list --json | jq '.[0].sourceArtifactPath'
# 現在のスキルと比較
diff <(cat <source-artifact>) <(cat <current-skill-file>)
競合する複数の候補¶
複数の候補が同じスキルを変更する場合: 1. まずすべての候補をレビュー 2. 優先順位順(頻度、重大度)に適用 3. 各適用後にテスト 4. 競合する重複を却下
# スキルのすべての候補をリスト
aios team skill-candidates list --json | \
jq '[.[] | select(.skillId == "target-skill-id")]'
高度な使用法¶
プログラムによるアクセス¶
# 候補を JSON で取得
aios team skill-candidates list --json > candidates.json
# failure class でフィルター
cat candidates.json | \
jq '[.[] | select(.failureClass == "token-validation-edge-case")]'
# スキルごとにカウント
cat candidates.json | \
jq 'group_by(.skillId) | map({skill: .[0].skillId, count: length})'
カスタム分析¶
# 時間経過、失敗パターンを分析
aios team history --quality-failed-only --json | \
jq '[.[] | .skillCandidate] | group_by(.skillId)'
# 最も一般的な failure class を検索
aios team history --json | \
jq '[.[] | .skillCandidate.failureClass] | unique'