Skip to content

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

--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 런 생성:

Terminal window
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 provider
from agent_sessions se
where 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(*) n
from agent_session_events ev
join agent_sessions s on s.id = ev.session_id
where ev.tool_name is not null and ev.tool_name <> ''
group by 1, 2
order by n desc;

샌드박스 디스패치가 안 떠서 세션이 ready / acquire_execution_slot에 머무는 경우의 진단은 AgentSquad Operations의 “트러블슈팅: 런은 뜨는데 샌드박스가 안 뜰 때”를 보세요.