学習済み設定
GET / POST /v1/preferences:ユーザーの会話から抽出した設定を一覧、確認、承認、却下、非推奨化します。
設定進化システムは、会話から永続的なユーザー設定(例:「ミームコインは絶対に取引しない」、「簡潔に返答する」、「ローソク足よりオンチェーンデータを優先する」)を抽出し、有効になる前に状態機械を通します。
M1 は読み取り専用エンドポイントを提供しました。M2 では approve / reject / deprecate の変更操作と、一覧エンドポイントの total フィールドを追加しました。M3 では undo エンドポイントと hard_constraint 行のツールレベル強制を追加しました。
M4 ではブリッジを追加しました。active への遷移は設定を関連する下流ストアへ書き込みます。有効な 11 次元タグを指定するハード制約には user_tags、各 personal_style 行には memories ミラー(スタイルヒントを FTS インデックス化)、シナリオ対象 behavioral_preference 行には scenario-classifier ブースト、methodology ID 対象の行には方法論優先度の乗数を書き込みます。active からの遷移(deprecate / reject)は各書き込みを元に戻します。ブリッジ書き込みはベストエフォートで、状態遷移を妨げません。失敗は learning/preference-bridge を含むログに出力されます。完全な書き込みパス図は自己改善システムを参照してください。
各設定には 3 つの分類軸があります。
kind:personal_style、behavioral_preference、hard_constraintのいずれか。dimension:risk、chain、asset_class、timing、methodology、style、constraintのいずれか。state:proposed、active、deprecated、rejectedのいずれか。
完全なライフサイクルは ~/.claude/plans/autoclaw-agent-agent-lazy-lollipop.md のプロジェクト計画を参照してください。
GET /v1/preferences
任意のフィルターで設定を一覧します。
| メソッド | GET |
| パス | /v1/preferences |
| 認証 | GATEWAY_AUTH_TOKEN 設定時は Authorization: Bearer <token> が必要 |
| クエリ | state、dimension、kind、limit(既定 100、最大 500) |
| カテゴリ | learning |
レスポンス 200:
{
"ok": true,
"data": {
"items": [
{
"id": "pref_a1b2c3d4e5f6",
"user_id": "default",
"dimension": "asset_class",
"kind": "hard_constraint",
"statement": "Never trade meme coins",
"structured": { "operator": "exclude", "subjects": ["meme_coin"], "scope": ["buy", "swap"] },
"evidence": null,
"source": "manual",
"state": "active",
"confidence": 0.65,
"times_observed": 4,
"times_violated": 0,
"dedup_key": "asset_class:hard_constraint:never trade meme coins",
"bridges_user_tag": null,
"approved_at": "2026-04-15T08:00:00Z",
"last_ask_at": null,
"created_at": "2026-04-13T10:00:00Z",
"updated_at": "2026-04-15T08:00:00Z"
}
],
"count": 1,
"total": 1
}
}count はこのページの行数(≤ limit)、total はテーブル全体でフィルターに一致する行数です。count == limit && total > limit の場合は、フィルターを絞るか、より小さな limit でページングして残りを確認してください。
state、dimension、kind、limit が無効な場合は レスポンス 422 を返します。
GET /v1/preferences/:id
ID で単一の設定を取得します。
| メソッド | GET |
| パス | /v1/preferences/:id |
| 認証 | GATEWAY_AUTH_TOKEN 設定時は Authorization: Bearer <token> が必要 |
| カテゴリ | learning |
レスポンス 200:上記の items[] 要素と同じ行形式です。
ID が存在しない場合は レスポンス 404 を返します。
POST /v1/preferences/:id/approve
proposed 行を active に昇格します。未設定なら approved_at を設定します。REPL の /preferences approve コマンドおよび minara preferences approve <id> と同等です。
| メソッド | POST |
| パス | /v1/preferences/:id/approve |
| 認証 | GATEWAY_AUTH_TOKEN 設定時は Authorization: Bearer <token> が必要 |
| 本文 | 任意の { "reason": "..." }(監査証跡、≤ 500 文字) |
| カテゴリ | learning |
レスポンス 200:標準エンベロープ内の更新済み設定行。
ID が見つからない場合は レスポンス 404。
レスポンス 409:無効な遷移(例:行がすでに rejected)または別の書き込み側が先行した場合(CAS lost。現在の状態を見るには再度 GET)。
POST /v1/preferences/:id/reject
proposed(既存設定を廃止する場合は active)を rejected に昇格します。形式は上記 approve と同じです。rejected は終端状態で、行は監査証跡として保持されますが再表示されません。
| メソッド | POST |
| パス | /v1/preferences/:id/reject |
| 認証 | GATEWAY_AUTH_TOKEN 設定時は Authorization: Bearer <token> が必要 |
| 本文 | 任意の { "reason": "..." } |
| カテゴリ | learning |
POST /v1/preferences/:id/deprecate
active を deprecated に昇格します。設定はシステムプロンプトへ注入されなくなりますが、行は保持されます。そのため類似性ゲートは再提案を重複として検出し、再質問を省略できます。類似ステートメントの一致として二度と戻さない場合は reject を使用してください。
| メソッド | POST |
| パス | /v1/preferences/:id/deprecate |
| 認証 | GATEWAY_AUTH_TOKEN 設定時は Authorization: Bearer <token> が必要 |
| 本文 | 任意の { "reason": "..." } |
| カテゴリ | learning |
POST /v1/preferences/:id/undo
設定済みの取り消し期間内で、強いシグナルにより自動有効化された hard_constraint を取り消します(既定 24 時間。PREFERENCE_HARD_UNDO_WINDOW_HOURS を参照)。行は deprecated に遷移し、ツールレベルの強制はただちに停止します。監査証跡(auto_activated_at タイムスタンプ、元のステートメント)は保持されます。M3 で導入されました。
次の場合は deprecate を使用してください。(a) 設定が手動承認されている(auto_activated_at が null)、または (b) 期間が失効している場合です。
| メソッド | POST |
| パス | /v1/preferences/:id/undo |
| 認証 | GATEWAY_AUTH_TOKEN 設定時は Authorization: Bearer <token> が必要 |
| 本文 | 任意の { "reason": "..." }(≤ 500 文字) |
| カテゴリ | learning |
レスポンス 200:行は非推奨になりました。
レスポンス 404:ID が見つかりません。
レスポンス 410 Gone:行は自動有効化されていますが、取り消し期間が失効しています。deprecate を使用してください。
レスポンス 413:本文が 4 KB を超えています。
レスポンス 422:行は手動承認済み(auto_activated_at なし)です。deprecate を使用してください。
レスポンス 409:CAS lost(別の書き込み側が先に行を変更)または無効な構造遷移。