feat(org): integrate role-based model pool into unified v0.2 config

This commit is contained in:
Chen Gu
2026-08-13 17:00:21 +08:00
parent e2ed120a52
commit c25288b0a1
+171 -24
View File
@@ -6,27 +6,61 @@
"max_concurrency": 3, "max_concurrency": 3,
"queue_limit": 20, "queue_limit": 20,
"failure_streak_degrade_to": 1, "failure_streak_degrade_to": 1,
"priority_order": ["urgent", "high", "normal", "low"] "priority_order": [
"urgent",
"high",
"normal",
"low"
]
}, },
"oracle": { "oracle": {
"classification": { "classification": {
"simple": { "simple": {
"signals": ["single_step", "low_risk", "no_external_send", "no_irreversible_action", "known_tool_path"], "signals": [
"route": ["val", "helix"], "single_step",
"low_risk",
"no_external_send",
"no_irreversible_action",
"known_tool_path"
],
"route": [
"val",
"helix"
],
"audit_mode": "sentinel_fast_optional", "audit_mode": "sentinel_fast_optional",
"budget_tier": "low", "budget_tier": "low",
"max_concurrency": 3 "max_concurrency": 3
}, },
"medium": { "medium": {
"signals": ["multi_step", "moderate_risk", "workspace_changes", "clear_acceptance_criteria"], "signals": [
"route": ["helix", "sentinel", "anvil"], "multi_step",
"moderate_risk",
"workspace_changes",
"clear_acceptance_criteria"
],
"route": [
"helix",
"sentinel",
"anvil"
],
"audit_mode": "sentinel_required", "audit_mode": "sentinel_required",
"budget_tier": "medium", "budget_tier": "medium",
"max_concurrency": 2 "max_concurrency": 2
}, },
"complex": { "complex": {
"signals": ["cross_system_or_channel", "privacy_or_permission_boundary", "irreversible_or_high_impact", "high_uncertainty", "long_horizon_dependency_graph"], "signals": [
"route": ["helix", "sentinel", "anvil", "prism"], "cross_system_or_channel",
"privacy_or_permission_boundary",
"irreversible_or_high_impact",
"high_uncertainty",
"long_horizon_dependency_graph"
],
"route": [
"helix",
"sentinel",
"anvil",
"prism"
],
"audit_mode": "sentinel_strict", "audit_mode": "sentinel_strict",
"budget_tier": "high", "budget_tier": "high",
"max_concurrency": 1, "max_concurrency": 1,
@@ -34,53 +68,166 @@
} }
}, },
"overrides": { "overrides": {
"force_complex_if": ["external_send", "irreversible_action", "privacy_boundary_crossing", "budget_threshold_exceeded"], "force_complex_if": [
"force_medium_if": ["code_or_config_change", "requires_exec_or_edit"] "external_send",
"irreversible_action",
"privacy_boundary_crossing",
"budget_threshold_exceeded"
],
"force_medium_if": [
"code_or_config_change",
"requires_exec_or_edit"
]
} }
}, },
"roles": { "roles": {
"helix": { "helix": {
"stage": "draft", "stage": "draft",
"max_concurrency": 2, "max_concurrency": 2,
"allowed_tools": ["read", "web_search", "web_fetch", "memory_search", "sessions_spawn", "sessions_send"], "allowed_tools": [
"forbidden_actions": ["external_send", "irreversible_change"] "read",
"web_search",
"web_fetch",
"memory_search",
"sessions_spawn",
"sessions_send"
],
"forbidden_actions": [
"external_send",
"irreversible_change"
]
}, },
"sentinel": { "sentinel": {
"stage": "audit", "stage": "audit",
"max_concurrency": 2, "max_concurrency": 2,
"allowed_tools": ["read", "memory_search", "session_status"], "allowed_tools": [
"audit_decisions": ["PASS", "SOFT_BLOCK", "HARD_BLOCK"] "read",
"memory_search",
"session_status"
],
"audit_decisions": [
"PASS",
"SOFT_BLOCK",
"HARD_BLOCK"
]
}, },
"anvil": { "anvil": {
"stage": "execute", "stage": "execute",
"max_concurrency": 2, "max_concurrency": 2,
"allowed_tools": ["read", "write", "edit", "exec", "process"], "allowed_tools": [
"read",
"write",
"edit",
"exec",
"process"
],
"requires_audit": "PASS" "requires_audit": "PASS"
}, },
"prism": { "prism": {
"stage": "reliability", "stage": "reliability",
"enabled": "phase1_upgrade", "enabled": "phase1_upgrade",
"responsibility": ["failure_diagnosis", "retry_strategy", "rollback_plan", "self_healing_suggestion"] "responsibility": [
"failure_diagnosis",
"retry_strategy",
"rollback_plan",
"self_healing_suggestion"
]
} }
}, },
"routing": [ "routing": [
{ "when": "new_task", "to": "oracle" }, {
{ "when": "oracle.simple", "to": ["val", "helix"] }, "when": "new_task",
{ "when": "oracle.medium", "to": ["helix", "sentinel", "anvil"] }, "to": "oracle"
{ "when": "oracle.complex", "to": ["helix", "sentinel", "anvil", "prism"] }, },
{ "when": "sentinel.SOFT_BLOCK", "to": "helix" }, {
{ "when": "sentinel.HARD_BLOCK", "to": "val.report" } "when": "oracle.simple",
"to": [
"val",
"helix"
]
},
{
"when": "oracle.medium",
"to": [
"helix",
"sentinel",
"anvil"
]
},
{
"when": "oracle.complex",
"to": [
"helix",
"sentinel",
"anvil",
"prism"
]
},
{
"when": "sentinel.SOFT_BLOCK",
"to": "helix"
},
{
"when": "sentinel.HARD_BLOCK",
"to": "val.report"
}
], ],
"escalation": { "escalation": {
"must_escalate_if": ["external_send", "irreversible_action", "privacy_boundary_crossing", "budget_threshold_exceeded", "audit_uncertainty_high"], "must_escalate_if": [
"external_send",
"irreversible_action",
"privacy_boundary_crossing",
"budget_threshold_exceeded",
"audit_uncertainty_high"
],
"double_sign_rule": { "double_sign_rule": {
"required": ["sentinel", "bastion"], "required": [
"sentinel",
"bastion"
],
"proxy_if_bastion_missing": "val" "proxy_if_bastion_missing": "val"
} }
}, },
"atlas": { "atlas": {
"base_path": "org/knowledge/atlas", "base_path": "org/knowledge/atlas",
"write_targets": ["task_history", "decision_log", "failure_patterns", "user_prefs"], "write_targets": [
"task_history",
"decision_log",
"failure_patterns",
"user_prefs"
],
"policy": "structured_records_only" "policy": "structured_records_only"
},
"model_pool": {
"global": {
"default_primary": "sub2api/gpt-5.3-codex",
"fallback": "lkeap/minimax-m2.5",
"strategy": "balanced"
},
"roles": {
"val": {
"primary": "sub2api/gpt-5.3-codex",
"thinking": "low"
},
"helix": {
"primary": "lkeap/kimi-k2.5",
"secondary": "sub2api/gpt-5.3-codex",
"thinking": "medium"
},
"sentinel": {
"primary": "lkeap/glm-5",
"secondary": "sub2api/gpt-5.3-codex",
"thinking": "medium"
},
"anvil": {
"primary": "lkeap/minimax-m2.5",
"secondary": "sub2api/gpt-5.3-codex",
"thinking": "low"
}
},
"manual_switch": {
"enabled": true,
"note": "User explicit instruction overrides role mapping immediately."
}
} }
} }