Communitygithub.com

raichominev/concilium

교차 모델 적대적 검토 스킬: Fable(Claude Code)이 오케스트레이션하고, GPT(sol/terra/5.5, codex CLI)가 탐색하며, 평결이 비준됩니다. ChatGPT 구독 인증 필요, API 키 불필요.

concilium란 무엇인가요?

Concilium은 Claude Code 에코시스템 내에서 실행되는 교차 모델 적대적 검토 스킬입니다. 서로 다른 모델 계열(Fable(Claude)과 GPT(codex CLI))이 독립적으로 사용자 주장을 검토하여 단일 모델이 놓칠 수 있는 맹점을 보완합니다. GPT 측(sol/terra/5.5)은 독립적인 탐색과 기계적 실행을 담당하고, Claude(Fable/Opus)는 평결을 비준합니다. ChatGPT 구독 OAuth 인증이 필요하며 API 키는 필요하지 않습니다. 이 스킬은 bash 및 PowerShell 스크립트를 통해 Linux/macOS 및 Windows에서 작동하며, 단일 검토 또는 반복 라운드(concilium 루프)를 지원하고, Moonshot(Kimi)을 실험적 제3 패밀리로 선택적으로 추가할 수 있습니다.

지원 대상✓Claude Code✓Codex CLI~Cursor
npx skills add raichominev/concilium

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Concilium — 교차 모델 적대적 검토

두 번째, 다른 모델이 사용자(또는 당신)의 주장을 적대적으로 검토합니다. 서로 다른 모델 계통은 서로 다른 맹점을 의미합니다 — 그것이 가치입니다. 검토자가 제안하고(PROPOSES); 호출 세션이 비준합니다(RATIFIES). 어느 쪽의 확신도 증거를 대체하지 못하게 하십시오.

Claude Code에서 오케스트레이션되도록 설계되었습니다 — Opus 5와 Fable 5 모두 일급 비준석입니다 (블라인드 결과 예측 벤치마크에서 의장 패리티로 측정됨; 모든 Claude 모델이 루프를 구동할 수 있지만, 비준자는 둘 중 하나여야 합니다). GPT 측(sol/terra/5.5, codex)은 독립적인 탐색과 기계적 실행을 담당합니다 — 그리고 이 교차 패밀리 좌석은 하중을 견딥니다: 동일 계열 의장이 공동으로 놓치는 것을 측정 가능하게 포착합니다.

전제 조건 (환경당 한 번 확인)

  1. codex login status → "Logged in using ChatGPT"라고 표시되어야 함 (구독 OAuth — API 키는 필요하지 않으며 구독을 API 키로 사용할 수 없습니다; 프록시/라우터 브리지를 시도하지 마십시오).

  2. 사용 가능한 모델 찾기: codex debug models 또는 ~/.codex/models_cache.json. 모델이 "requires a newer version of Codex" 오류를 발생시키면 codex update를 실행하고 다시 시도하십시오.

  3. 새 환경에서 처음 사용할 때는 평결을 신뢰하기 전에 교정 부트스트랩(references/setup.md)을 실행하십시오: 알려진 진실 추론 테스트, 그 다음 하나의 간단한 실제 작업, 그 다음 (선택 사항) 티어 모델을 선택하기 위한 일대일 대결.

  4. Kimi 좌석 — 실험적이며 옵트인(opt-in)이며 기본 라운드의 일부가 아닙니다. 사용자가 명시적으로 제3 패밀리를 요청할 때만 추가하십시오. 각각 자체 래퍼가 있는 두 가지 전송 방식:

    • Kimi Desktop (Windows). scripts/concilium-review-kimi.ps1은 앱에 번들된 daimon 러너를 자체 Electron 아래에서 구동합니다. 데스크톱 앱이 설치되고 로그인되어 있어야 합니다.
    • Kimi Code CLI (Linux/macOS/Windows). scripts/concilium-review-kimi.sh는 크로스 플랫폼, MIT 라이선스 CLI를 구동합니다 — 헤드리스 kimi -p 및 디바이스 코드 OAuth를 사용하므로 컨테이너나 일회용 VM에 적합합니다 (작동 예: references/isolated-guest-vmware.md). ⚠ 프린트 모드는 모든 도구 호출을 자동 승인하므로, 격리는 예방 조치가 아닌 전제 조건입니다. ⚠ 항상 --model을 전달하십시오: CLI의 내장 기본값은 플래그십보다 오래된 세대이며 출력에 이름이 표시되지 않습니다.

    코드스보다 교정되었지만 불안정하며, 격리 측면에서 약합니다: 경로, 모델, 샌드박싱 및 주의 사항은 references/setup.md와 함정 #18–21에 있습니다.

티어 매트릭스 (기본값은 현재 시대 모델 — 설치별로 재정의 가능)

티어기본값노력용도
연구플래그십 (예: gpt-5.6-sol)max공개 검토 라운드, 적대적 검증
기계적이전 플래그십 (예: gpt-5.5)medium알려진 주장을 하나의 프로브로 검증
러너저렴한 티어 (예: gpt-5.6-terra)low실행 및 보고: 스크립트 실행, 가져오기 모니터링

연구 티어 래퍼는 모든 좌석에서 기본값으로 max를 사용합니다. 노력 어휘는 서로 다르며 정확히 아는 것이 가치 있습니다: codex는 none · minimal · low · medium · high · xhigh · max를 허용합니다 (측정됨 — API는 다른 것을 거부하고 열거형 이름을 지정함), kimi 좌석은 low · high · max를 허용합니다.

노력은 두 번째 패밀리의 대체재가 아닙니다 — 통제된 실험으로 측정됨. 동일한 14개 항목 예측 패킷에 대해 하나의 좌석(gpt-5.6-sol)을 6회 실행하고, low/medium/high/xhigh/max 및 동일 노력 복제본: 동일한 노력으로 두 번 실행하면 10/14를 커버한 반면, 교차 노력 쌍은 평균 8.9를 기록했으며 결코 이를 넘지 못했습니다. 6회 실행 앙상블도 10/14에 도달했으며, 이는 2회 실행 잡음 수준과 같고 하나의 codex+kimi 쌍과 동일했습니다. 정확도는 노력에 따라 단조롭지 않았습니다(high 9, max 9, xhigh 7, medium 7, low 7) 반면 벽시계 시간은 8배 증가했습니다(21초 → 166초). 모든 실행, 모든 노력에서 4개 항목을 놓쳤으며 — 교차 패밀리 좌석은 그중 2개를 얻었습니다. 노력을 다양화하면 동일한 맹점을 재표본추출할 뿐입니다. 다른 계통이 그것을 움직입니다. 적용 범위를 원한다면 계산을 추가하지 말고 패밀리를 추가하십시오. -Mechanical은 의도적인 다운그레이드이며 medium으로 유지됩니다.

러너 작업은 검토가 아닙니다 — 래퍼를 건너뛰고 codex를 직접 호출하십시오: codex exec -m <cheap-model> -c model_reasoning_effort=low [-s read-only unless it writes] "<task>" < /dev/null 직접 비대화형 호출 시 항상 stdin을 닫으십시오 (bash < /dev/null; PowerShell $null | codex …) — 열려 있는 비-TTY stdin은 "Reading additional input from stdin..."에서 codex를 영원히 차단하며, 고아 프로세스는 부모 셸의 타임아웃을 넘어 생존합니다 (함정 #10; 래퍼는 면역입니다 — stdin을 통해 파이프합니다).

검토 실행

번들 래퍼를 사용하십시오. 래퍼는 공유 검토 계약을 references/contract.md에서 로드합니다 (단일 진실 공급원 — 반증 프로브, 대안 설명, 주의 사항, 평결 제안, 스키마/인코딩 규칙; 계약은 거기서 편집하십시오, 스크립트에서 절대 편집하지 마십시오)와 출처 스탬프를 추가합니다. 두 래퍼 모두 기능적으로 동일합니다. 플랫폼에 따라 선택하십시오:

Linux / macOS (bash):

  • 주장: scripts/concilium-review.sh claim "<claim>"
  • 차이: scripts/concilium-review.sh diff [base-branch]
  • 환경 변수를 통한 설정: MODEL, EFFORT, MECHANICAL=1 (기계적 티어), REPO_DIR, PROJECT_RULES (규칙 파일 경로).
  • 복제 후 첫 사용: chmod +x scripts/concilium-review.sh.

Windows (PowerShell 5.1+):

  • 주장: powershell -ExecutionPolicy Bypass -File scripts/concilium-review.ps1 -Claim "<claim>" [-Mechanical] [-RepoDir <path>] [-ProjectRules <file>]
  • 차이: ... -Diff [-Base <branch>] — -RepoDir의 작업 트리 차이를 검토합니다.

Kimi 제3 패밀리 좌석 — 실험적, 옵트인. 기본 라운드의 일부가 아닙니다. 사용자가 제3 패밀리를 요청할 때만 추가하십시오. 두 개의 래퍼, 동일한 계약 및 동일한 다섯 블록: concilium-review-kimi.sh (크로스 플랫폼 CLI, 환경 변수 기반 — MODEL은 필수) 및 concilium-review-kimi.ps1 (Windows 데스크톱 러너).

데스크톱 래퍼는 동일한 -Claim/-Diff/-RepoDir/-ProjectRules/-PriorRounds 인터페이스를 가지며, -Model (기본값 k3-agent), -Effort (low|high|max) 및 -RawPrompt (계약 없음, 교정 프로브용)이 추가됩니다. 두 가지 좌석별 차이점, 둘 다 측정됨: CLAUDE.md 자동 브리징은 기본적으로 여기서 꺼져 있습니다 — 주입은 Connection error.로 실행을 확실히 죽이므로 -AutoRules를 통해 옵트인됩니다. 대신 -ProjectRules <file>을 사용하여 검토자에게 컨텍스트를 제공하십시오. 그리고 종료 코드를 절대 신뢰하지 마십시오 — 실패 시에도 0으로 종료하므로 다섯 블록을 확인하십시오. 여러 줄 프롬프트는 이 래퍼를 통해야 합니다. bash에서 직접 kimi-daimon --prompt를 호출하면 argv가 손상됩니다 (함정 #18–19).

이 좌석에는 샌드박스가 없습니다 — 일회용 복사본을 제공하십시오. -SandboxFrom <dir>는 트리( .git, 가상 환경 및 비밀 형태 파일 제외)를 임시 디렉토리에 복사하고, 거기서 에이전트를 실행하고, 생성/수정/삭제한 내용을 정확히 출력하고, -KeepSandbox가 없으면 복사본을 삭제합니다. 기본적으로 사용하십시오. 이것이 무엇을 제공하는지 명확히 하십시오: workDir은 경계가 아닙니다 — 외부에 있는 카나리아가 절대 경로로 읽혀져 그대로 반환되었습니다 (함정 #20) — 따라서 이것은 폭발 반경 제어 및 감사 추적일 뿐, 격리가 아닙니다. 머신의 자료가 공급자에게 도달해서는 안 되는 경우 OS 수준에서 격리하십시오 (ACL이 있는 별도 계정 또는 VM).

블라인드 라운드의 경우, 동일한 다공성으로 인한 위험은 손상보다는 오염입니다: 실제 트리로 들어가는 에이전트는 답을 찾을 수 있으며 라운드는 조용히 블라인드를 멈춥니다. -WatchPaths <a,b,c>를 추가하십시오 — 읽히지 않아야 하는 모든 것(실제 저장소, 결과 로그, 답안 키)에 대해 NTFS 마지막 액세스 시간을 스냅샷하고 실행 중 읽힌 내용을 보고합니다. 양방향으로 알려진 탈출에 대해 검증됨; 신뢰하기 전에 함정 #21을 읽으십시오. 동일한 검사의 열거 기반 버전이 탈출이 입증된 실행에서 "깨끗함"을 보고한 이유를 포함하여.

운영 규칙 (각각은 측정된 실패입니다 — 이유는 references/pitfalls.md에 있습니다):

  • 첫 번째 호출부터 전체 ~10분 타임아웃으로 백그라운드에서 실행하십시오. 실제 검토는 높은 노력에서 5–15분 이상 소요됩니다. 포그라운드 타임아웃은 중간에 프로브를 죽입니다.
  • 시간 초과된 세션을 재개하는 것보다 새 세션을 선호하십시오. 긴 재개 체인은 컨텍스트 압축을 만납니다 — 검토자의 초기 신중한 읽기는 최종적이고 중요한 단계 전에 손실 압축 요약됩니다.
  • 절대 bare-resume하지 마십시오. codex exec resume는 모델과 샌드박스를 사용자의 config.toml 기본값으로 조용히 재설정합니다. 재개해야 한다면(또는 세션 중간에 모델을 전환하려면) 모든 것을 다시 고정하십시오: codex exec resume -m <model> -c sandbox_mode="read-only" -c model_reasoning_effort=<tier> <session-id> - 플래그는 위치 인수 세션 ID 앞에 옵니다. 핵심은 sandbox_mode입니다 — -c sandbox=...는 조용히 무시되며, resume에는 -s 플래그가 없습니다. 교차 모델 재개는 컨텍스트를 유지합니다.
  • 검토자는 챗봇이 아닌 전체 에이전트입니다 — 읽기 전용 샌드박스는 파일 쓰기를 차단할 뿐, 읽기 명령이나 DB SELECT를 차단하지 않습니다. 검토하는 모든 것은 두 번째 모델의 공급자에게 전송됩니다.
  • 맹목적으로 기다리지 말고 진행 상황을 실시간으로 모니터링하십시오 — 그리고 올바른 스트림을 모니터링하십시오. 계약(규칙 9)은 검토자가 작업 중 STATUS: 한 줄 메시지를 방출하도록 하고, codex는 점진적으로 작성합니다 — 그러나 스트림은 분할됩니다 (라이브로 확인됨): 1> out 2> err 사용 시, 최종 다섯 블록은 stdout에 도착하고 스트리밍 트랜스크립트(배너, STATUS 라인, 도구 호출)는 stderr로 이동합니다. 진행 + 실패 신호를 위해 stderr에 tail/monitor를 지정하고; 평결을 위해 stdout을 읽으십시오. 주의: PowerShell 1>/2> 리디렉션은 UTF-16을 작성합니다 — grep하기 전에 그에 따라 디코딩하십시오 (또는 UTF-8 강제 단계를 통해 리디렉션).
  • 블라인드 라운드는 명령이 아닌 구조적 격리가 필요합니다. 라운드가 준비되지 않아야 하는 경우(블라인드 평가, 요청 템플릿당 프레이밍에 중요한 블라인드 우선 패스), 자동 규칙 브리징을 OFF(-NoAutoRules / NO_AUTO_RULES=1)로 설정하여 깨끗한 디렉토리에서 검토자를 실행하십시오: 프로젝트 컨텍스트를 가지고 "패킷에서만 답변"하도록 지시받은 모델은 측정 가능하게 여전히 해당 컨텍스트를 사용합니다 (함정 #16–17).

비준 프로토콜 (호출 세션의 작업)

검토자는 다섯 블록을 반환합니다: PROBE / ALT / CAVEAT / VERDICT-PROPOSAL / PHASE-LOG. 중계하거나 행동하기 전에:

  1. 실제 프로브(쿼리/명령)를 읽으십시오, 산문 요약이 아닙니다.
  2. 극단적인 결과는 경보입니다: 첫 번째 시도에서 0% 또는 100%는 일반적으로 잘못된 조인 키, 잘못된 범위 또는 잘못된 테이블을 의미합니다 — 발견이 아닙니다. 수락하기 전에 프로브의 하중 지지 단계를 직접 확인하십시오.
  3. 범위 확인 불일치: 두 프로브는 서로 다른 범위에서 사실적으로 모두 옳을 수 있습니다 (하나의 테이블 대 DB 전체, 하나의 소스 대 모든 소스). 숫자를 비교하기 전에 범위를 명명하십시오.
  4. 반박됨 / 오래됨 / 불완전함을 구별하십시오. "오늘 숫자가 다릅니다"는 주장이 작성되었을 때 잘못되었다는 것을 의미하지 않습니다 — "반박됨"이라고 말하기 전에 히스토리/타임스탬프를 확인하십시오.
  5. 최종 평결 태그를 직접 할당하십시오: [V-code] (소스 대비 검증됨, file:line 인용) / [V-db] (읽기 전용 쿼리, 인용) / [V-probe] (재실행 가능한 스크립트) / [C] (미검증) / [X] (반박됨 — 대체하는 것을 명명). 제안은 입력일 뿐, 답이 아닙니다.
  6. 계통별 동의를 평가하십시오. 동일 패밀리 확인(Claude 의장이 Claude 오케스트레이터와 동의)은 약한 증거입니다 — 동일 계통 의장은 측정 가능하게 잘못된 답변을 공유하며, 독립적으로 동일한 잘못된 추론을 생성하기까지 합니다. 교차 패밀리 확인 또는 반박은 동일 계통 투표 수보다 중요합니다. 동일 계통을 공유하는 의장들 간의 다수결로 분쟁을 해결하지 마십시오. 제3 패밀리(Moonshot)는 실험적 옵트인 좌석으로 사용 가능합니다. 세 번째 좌석은 독립적이지 않으면 아무것도 사지 않습니다 — 따라서 인원수가 아닌 패밀리로 평가하십시오. 만장일치 패널은 단순히 항목이 쉬웠다는 것을 의미할 수 있습니다 (setup.md).

concilium 루프 (반복 라운드)

단일 검토 패스만으로 충분한 경우가 많습니다. 그러나 검토자의 프로브에 간격이 있거나, 방어 가능한 근거로 제안에 동의하지 않는 경우(오케스트레이터로서) 한 번의 교환은 concilium이 아닙니다 — 평의회는 숙의합니다. 루프는 평결이 수렴되거나 분쟁이 진정한 것으로 입증될 때까지 검토 라운드를 실행합니다. 이 루프는 호출하는 Claude 세션인 당신이 오케스트레이션합니다 — 프로토콜이지 스크립트가 아닙니다 (비준 단계는 당신의 판단입니다; 아무것도 자동화할 수 없습니다).

각 라운드:

  1. 검토 실행(래퍼) → 다섯 블록 획득 → 위 프로토콜에 따라 비준
  2. 라운드 결과 결정 및 행동:
결과조건조치
수렴프로브의 하중 지지 단계를 확인했고 유효함중지 — 최종 태그를 방출합니다.
분쟁프로브에 간격, 잘못된 범위 또는 구체적이고 증거 기반 이의 제기가 있음이 라운드의 PROBE + 이의 제기를 라운드 파일에 작성하고, 다음 라운드를 -PriorRounds/PRIOR_ROUNDS로 실행하여 이를 가리킵니다.
건조라운드가 새로운 확인 가능한 증거를 추가하지 않음 — 검토자가 재주장하거나 CAVEAT에서 새 경로가 없다고 말함중지 — 열린 질문과 함께 [C]/[POLICY]로 소유자에게 에스컬레이션합니다. 이것은 발진 방지 가드입니다.
한계라운드 한계 도달(기본 3) 수렴 없음중지 — 상태를 제시하고 에스컬레이션합니다. 진정한 분쟁은 발견이지 실패가 아닙니다.

설계 규칙 (함정에서 직접 이어짐):

  • 라운드당 새 세션 — 절대 재개 체인을 사용하지 마십시오. 루프는 정확히 함정 #3이 경고하는 "긴 체인"입니다. -PriorRounds 파일을 통해 컨텍스트를 전달하고, codex exec resume를 사용하지 마십시오. 각 라운드는 깨끗하게 시작하고 이미 시도된 내용의 간결한 요약만 봅니다.
  • 모든 라운드는 새로운 증거 경로를 추가해야 합니다. 계약(규칙 8)은 검토자 측에서 이를 강제합니다; 당신은 당신 측에서 이를 강제합니다 — 이의 제기는 증거로 뒷받침되거나 구체적이고 확인 가능한 간격을 가리키는 경우에만 라운드 가치가 있습니다. "확신이 서지 않습니다"는 라운드가 아닙니다.
  • 비준자는 고정됩니다 (당신 / Fable); 검토자는 분쟁이 좁혀짐에 따라 티어를 낮출 수 있습니다. 라운드 1은 연구 티어에서; 기계적 확인으로 좁혀지면...

…(생략)

관련 스킬