Side-by-Side 모델 믹싱 (per-role provider mix)
Side-by-Side 모델 믹싱 (per-role provider mix)
Section titled “Side-by-Side 모델 믹싱 (per-role provider mix)”하나의 AgentSquad 런에서 역할별로 다른 에이전트 프로바이더를 쓰는 방법입니다. 예: backend=codex, frontend=antigravity, 나머지=claude-code. 같은 프로젝트/골에서 여러 모델을 나란히(side-by-side) 돌려 비교하기 위한 것입니다.
- 프로바이더:
claude-code/codex/antigravity - 모델:
claude-opus-4-8/fractalops-codex/fractalops-antigravity
해석 체인 (resolution chain)
Section titled “해석 체인 (resolution chain)”--agent-process-assignment <target>:<provider>:<model>이 세션 프로바이더까지 어떻게 흐르는가:
CLI: projects agents ensure --agent-process-assignment <role>:<provider>:<model> → StudioRunIn.agent_process_provider (run 기본값, `default:` 셀렉터에서) → StudioRunIn.agent_parameters (per-role 배정) → run_creation: run.metadata_json 에 agent_process_provider(+alias) 와 agent_parameters 저장 → desired_agent_squad_spec( run_agent_process_profile=<run 기본값>, # 전체 스쿼드를 한 프로바이더로 flip run_role_process_profiles=run_role_process_profiles_from_parameters(agent_parameters), # role별 override ) → _loadout_for_role → agent_process_profile_for_role(...) → 세션 metadata_json['agent_provider']우선순위(낮음→높음): 템플릿 기본값 < 템플릿 role < 로스터 source < run 기본값(default:) < per-role(backend: 등).
--agent-process-assignment default:claude-code= 전체 스쿼드를 claude-code로 flip.--agent-process-assignment backend:codex= backend 역할만 codex로 override. 역할 키로 바인딩합니다(런타임에 생성되는 nickname이 아님 — nickname은 create 시점에 존재하지 않으므로 per-agent 파라미터로는 절대 매칭되지 않습니다).
역할별 믹스로 side-by-side 런 생성:
fractalops projects agents ensure \ --project-slug side-by-side --yolo --session-policy fresh \ --agent-process-assignment default:claude-code:claude-opus-4-8 \ --agent-process-assignment backend:codex:fractalops-codex \ --agent-process-assignment frontend:antigravity:fractalops-antigravity \ --agent-process-assignment tester:antigravity:fractalops-antigravity \ --goal "..." --via-api--via-api 경로의 create가 HTTP 타임아웃(대형 스쿼드는 create가 느립니다)으로 readback을 반환하면, readback이 반환한 run_id는 옛 런일 수 있습니다 — 방금 만든 run을 확인하려면 in-pod에서 만든 run을 직접 조회하세요.
세션이 역할별로 기대한 프로바이더를 받았는지 (in-pod, FRACTALOPS_DATABASE_URL):
select se.metadata_json->>'role_key' as role, se.metadata_json->>'agent_provider' as providerfrom agent_sessions sewhere se.run_id = '<run_id>'order by se.created_at;기대값 예: backend=codex, frontend=antigravity, tester=antigravity, 나머지=claude-code.
프로바이더별 armory-MCP 툴 사용(에이전트가 실제로 어떤 툴을 썼는지):
select s.metadata_json->>'agent_provider' as provider, ev.tool_name, count(*) nfrom agent_session_events evjoin agent_sessions s on s.id = ev.session_idwhere ev.tool_name is not null and ev.tool_name <> ''group by 1, 2order by n desc;샌드박스 디스패치가 안 떠서 세션이 ready / acquire_execution_slot에 머무는 경우의 진단은 AgentSquad Operations의 “트러블슈팅: 런은 뜨는데 샌드박스가 안 뜰 때”를 보세요.