triflux 8.5.0 → 8.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,184 +1,184 @@
1
- ---
2
- name: tfx-autoroute
3
- description: "작업 유형에 따라 최적 모델을 자동 선택하여 실행해야 할 때 사용한다. 'sisyphus', '시지프스', 'auto-route', '알아서 라우팅', '최적 모델로' 같은 요청에 사용. 어떤 CLI를 쓸지 모르겠을 때, 또는 실패 시 자동 모델 승격이 필요할 때 적극 활용."
4
- triggers:
5
- - sisyphus
6
- - 끝없이
7
- - never stop
8
- - 시지프스
9
- - auto-route
10
- argument-hint: "<작업 설명>"
11
- ---
12
-
13
- # tfx-autoroute — Auto-Routing Autonomous Executor
14
-
15
- > oh-my-openagent Sisyphus agent 오마주. 바위는 멈추지 않는다 — 그리고 올바른 산을 고른다.
16
- > "실패하면 더 강한 모델로. 성공할 때까지."
17
-
18
- ## 용도
19
-
20
- - 작업 유형을 모르겠을 때 자동으로 최적 CLI 선택
21
- - 실패 허용 없이 끝까지 완수해야 할 때
22
- - Haiku로 충분한 작업에 Opus를 낭비하지 않을 때
23
- - 비용 최적화 + 완수율 극대화
24
-
25
- ## 핵심 원리
26
-
27
- ```
28
- 1. IntentGate로 작업 유형 분류
29
- 2. 유형에 맞는 최적 CLI/모델에 라우팅
30
- 3. 실패 시 자동 승격 (Haiku → Sonnet → Opus, Codex normal → xhigh)
31
- 4. 최종 실패 시에만 사용자에게 보고
32
- ```
33
-
34
- ## 워크플로우
35
-
36
- ### Step 0: 라우팅 전략 선택
37
-
38
- 실행 전에 AskUserQuestion으로 모델 라우팅 전략을 선택받는다:
39
-
40
- ```
41
- AskUserQuestion:
42
- "기본 라우팅 전략을 선택하세요:"
43
- 1. 자동 (IntentGate 판단) [기본]
44
- 2. 성능 우선 (Codex 위주)
45
- 3. 비용 절약 (Haiku 위주)
46
- 4. 정확도 우선 (Opus 위주)
47
- ```
48
-
49
- - 1번 선택 → Step 1의 IntentGate 분류를 정상 수행
50
- - 2번 선택 → primary_cli를 Codex(xhigh)로 고정, 실패 시에만 Opus fallback
51
- - 3번 선택 → primary_cli를 Claude Haiku로 고정, 실패 시 Sonnet → Codex 순 승격
52
- - 4번 선택 → primary_cli를 Claude Opus로 고정, fallback 없음
53
-
54
- 사용자가 빈 응답을 보내면 기본값 1번(자동)을 적용한다.
55
-
56
- ### Step 1: IntentGate 분류
57
-
58
- 사용자 입력을 분석하여 작업 카테고리와 복잡도를 판단한다:
59
-
60
- ```
61
- 분류 결과:
62
- {
63
- "category": "visual | deep | quick | code | research | review",
64
- "complexity": "trivial | simple | moderate | complex | extreme",
65
- "estimated_tokens": N,
66
- "routing": {
67
- "primary_cli": "gemini | codex | claude",
68
- "primary_model": "flash | normal | haiku",
69
- "fallback_chain": ["sonnet", "opus"]
70
- }
71
- }
72
- ```
73
-
74
- ### Step 2: 카테고리 라우팅
75
-
76
- | 카테고리 | Primary CLI | Primary 모델 | 이유 |
77
- |----------|-------------|-------------|------|
78
- | visual (UI/디자인/멀티모달) | Gemini | flash | 시각적 처리 최적 |
79
- | deep (아키텍처/설계/분석) | Codex | xhigh | 깊은 추론 필요 |
80
- | quick (간단한 수정/질문) | Claude | haiku | 최소 비용 |
81
- | code (구현/디버깅/리팩터링) | Codex | normal | 코드 작성 최적 |
82
- | research (검색/문서/조사) | Codex | normal | MCP 접근 |
83
- | review (리뷰/검증/QA) | Codex | thorough | 꼼꼼한 검토 |
84
-
85
- ### Step 3: 실행
86
-
87
- 라우팅 결과에 따라 실행한다:
88
-
89
- ```
90
- if primary_cli == "codex":
91
- Bash("codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check '{prompt}'")
92
-
93
- elif primary_cli == "gemini":
94
- Bash("gemini -y -p '{prompt}'")
95
-
96
- elif primary_cli == "claude":
97
- if primary_model == "haiku":
98
- Agent(model="haiku", prompt="{prompt}")
99
- else:
100
- Agent(model="sonnet", prompt="{prompt}")
101
- ```
102
-
103
- ### Step 4: 실패 감지 및 자동 승격
104
-
105
- 실행 결과를 평가하고, 실패 시 fallback chain을 따라 승격한다:
106
-
107
- ```
108
- 실패 판단 기준:
109
- - exit_code != 0
110
- - 출력에 "error", "failed", "unable to" 포함
111
- - 출력이 비어 있음
112
- - 출력이 프롬프트를 반복하기만 함 (hallucination)
113
-
114
- 승격 체인:
115
- Level 0: primary (최소 비용)
116
- ↓ 실패
117
- Level 1: 동일 CLI, 모델 한 단계 승격
118
- 예: haiku → sonnet, codex normal → codex xhigh
119
- ↓ 실패
120
- Level 2: CLI 전환 + 강한 모델
121
- 예: gemini → codex xhigh, codex → claude opus
122
- ↓ 실패
123
- Level 3: Claude Opus 직접 실행 (최후 수단)
124
- ↓ 실패
125
- Level 4: 사용자에게 보고 + 도움 요청 (AskUserQuestion)
126
- ```
127
-
128
- ### Step 5: 결과 보고
129
-
130
- ```markdown
131
- ## Sisyphus 완료
132
-
133
- **작업**: {task_description}
134
- **분류**: {category} / {complexity}
135
- **라우팅**: {primary_cli} ({primary_model})
136
- **승격 횟수**: {escalation_count}
137
- **최종 실행**: {final_cli} ({final_model})
138
-
139
- ### 실행 경로
140
- | 시도 | CLI | 모델 | 결과 | 토큰 |
141
- |------|-----|------|------|------|
142
- | 1 | Haiku | haiku | 실패 (불완전) | ~1K |
143
- | 2 | Codex | normal | 성공 | ~3K |
144
-
145
- ### 결과
146
- {output}
147
-
148
- ### 비용 절감
149
- Primary Opus였다면: ~{opus_cost}K tokens
150
- 실제 사용: ~{actual_cost}K tokens
151
- 절감: {savings}%
152
- ```
153
-
154
- ## Anti-Stuck 메커니즘
155
-
156
- ```
157
- 같은 에러로 2회 연속 실패 시:
158
- → 에러 메시지를 다음 프롬프트에 포함하여 우회 시도
159
-
160
- 승격 체인 전체 소진 시 (Level 4):
161
- → AskUserQuestion: "다음 작업이 모든 모델에서 실패했습니다.
162
- 에러: {error}. 접근 방식을 변경하시겠습니까?"
163
- ```
164
-
165
- ## 토큰 예산
166
-
167
- 가변. 최소 비용 라우팅이 핵심이므로 고정 예산 없음.
168
-
169
- | 시나리오 | 예상 토큰 |
170
- |----------|----------|
171
- | 1회 성공 (haiku) | ~2K |
172
- | 1회 성공 (codex) | ~5K |
173
- | 1회 승격 후 성공 | ~8K |
174
- | 2회 승격 후 성공 | ~15K |
175
- | 전체 체인 소진 | ~25K |
176
-
177
- ## 사용 예
178
-
179
- ```
180
- /tfx-autoroute "이 함수의 타입 에러 수정해"
181
- /tfx-autoroute "프로젝트 구조 분석해서 아키텍처 다이어그램 만들어"
182
- /tfx-autoroute "README.md 한국어로 번역"
183
- /시지프스 "테스트 커버리지 80%까지 올려"
184
- ```
1
+ ---
2
+ name: tfx-autoroute
3
+ description: "작업 유형에 따라 최적 모델을 자동 선택하여 실행해야 할 때 사용한다. 'sisyphus', '시지프스', 'auto-route', '알아서 라우팅', '최적 모델로' 같은 요청에 사용. 어떤 CLI를 쓸지 모르겠을 때, 또는 실패 시 자동 모델 승격이 필요할 때 적극 활용."
4
+ triggers:
5
+ - sisyphus
6
+ - 끝없이
7
+ - never stop
8
+ - 시지프스
9
+ - auto-route
10
+ argument-hint: "<작업 설명>"
11
+ ---
12
+
13
+ # tfx-autoroute — Auto-Routing Autonomous Executor
14
+
15
+ > oh-my-openagent Sisyphus agent 오마주. 바위는 멈추지 않는다 — 그리고 올바른 산을 고른다.
16
+ > "실패하면 더 강한 모델로. 성공할 때까지."
17
+
18
+ ## 용도
19
+
20
+ - 작업 유형을 모르겠을 때 자동으로 최적 CLI 선택
21
+ - 실패 허용 없이 끝까지 완수해야 할 때
22
+ - Haiku로 충분한 작업에 Opus를 낭비하지 않을 때
23
+ - 비용 최적화 + 완수율 극대화
24
+
25
+ ## 핵심 원리
26
+
27
+ ```
28
+ 1. IntentGate로 작업 유형 분류
29
+ 2. 유형에 맞는 최적 CLI/모델에 라우팅
30
+ 3. 실패 시 자동 승격 (Haiku → Sonnet → Opus, Codex normal → xhigh)
31
+ 4. 최종 실패 시에만 사용자에게 보고
32
+ ```
33
+
34
+ ## 워크플로우
35
+
36
+ ### Step 0: 라우팅 전략 선택
37
+
38
+ 실행 전에 AskUserQuestion으로 모델 라우팅 전략을 선택받는다:
39
+
40
+ ```
41
+ AskUserQuestion:
42
+ "기본 라우팅 전략을 선택하세요:"
43
+ 1. 자동 (IntentGate 판단) [기본]
44
+ 2. 성능 우선 (Codex 위주)
45
+ 3. 비용 절약 (Haiku 위주)
46
+ 4. 정확도 우선 (Opus 위주)
47
+ ```
48
+
49
+ - 1번 선택 → Step 1의 IntentGate 분류를 정상 수행
50
+ - 2번 선택 → primary_cli를 Codex(xhigh)로 고정, 실패 시에만 Opus fallback
51
+ - 3번 선택 → primary_cli를 Claude Haiku로 고정, 실패 시 Sonnet → Codex 순 승격
52
+ - 4번 선택 → primary_cli를 Claude Opus로 고정, fallback 없음
53
+
54
+ 사용자가 빈 응답을 보내면 기본값 1번(자동)을 적용한다.
55
+
56
+ ### Step 1: IntentGate 분류
57
+
58
+ 사용자 입력을 분석하여 작업 카테고리와 복잡도를 판단한다:
59
+
60
+ ```
61
+ 분류 결과:
62
+ {
63
+ "category": "visual | deep | quick | code | research | review",
64
+ "complexity": "trivial | simple | moderate | complex | extreme",
65
+ "estimated_tokens": N,
66
+ "routing": {
67
+ "primary_cli": "gemini | codex | claude",
68
+ "primary_model": "flash | normal | haiku",
69
+ "fallback_chain": ["sonnet", "opus"]
70
+ }
71
+ }
72
+ ```
73
+
74
+ ### Step 2: 카테고리 라우팅
75
+
76
+ | 카테고리 | Primary CLI | Primary 모델 | 이유 |
77
+ |----------|-------------|-------------|------|
78
+ | visual (UI/디자인/멀티모달) | Gemini | flash | 시각적 처리 최적 |
79
+ | deep (아키텍처/설계/분석) | Codex | xhigh | 깊은 추론 필요 |
80
+ | quick (간단한 수정/질문) | Claude | haiku | 최소 비용 |
81
+ | code (구현/디버깅/리팩터링) | Codex | normal | 코드 작성 최적 |
82
+ | research (검색/문서/조사) | Codex | normal | MCP 접근 |
83
+ | review (리뷰/검증/QA) | Codex | thorough | 꼼꼼한 검토 |
84
+
85
+ ### Step 3: 실행
86
+
87
+ 라우팅 결과에 따라 실행한다:
88
+
89
+ ```
90
+ if primary_cli == "codex":
91
+ Bash("bash ~/.claude/scripts/tfx-route.sh codex '{prompt}' implement")
92
+
93
+ elif primary_cli == "gemini":
94
+ Bash("bash ~/.claude/scripts/tfx-route.sh gemini '{prompt}' implement")
95
+
96
+ elif primary_cli == "claude":
97
+ if primary_model == "haiku":
98
+ Agent(model="haiku", prompt="{prompt}")
99
+ else:
100
+ Agent(model="sonnet", prompt="{prompt}")
101
+ ```
102
+
103
+ ### Step 4: 실패 감지 및 자동 승격
104
+
105
+ 실행 결과를 평가하고, 실패 시 fallback chain을 따라 승격한다:
106
+
107
+ ```
108
+ 실패 판단 기준:
109
+ - exit_code != 0
110
+ - 출력에 "error", "failed", "unable to" 포함
111
+ - 출력이 비어 있음
112
+ - 출력이 프롬프트를 반복하기만 함 (hallucination)
113
+
114
+ 승격 체인:
115
+ Level 0: primary (최소 비용)
116
+ ↓ 실패
117
+ Level 1: 동일 CLI, 모델 한 단계 승격
118
+ 예: haiku → sonnet, codex normal → codex xhigh
119
+ ↓ 실패
120
+ Level 2: CLI 전환 + 강한 모델
121
+ 예: gemini → codex xhigh, codex → claude opus
122
+ ↓ 실패
123
+ Level 3: Claude Opus 직접 실행 (최후 수단)
124
+ ↓ 실패
125
+ Level 4: 사용자에게 보고 + 도움 요청 (AskUserQuestion)
126
+ ```
127
+
128
+ ### Step 5: 결과 보고
129
+
130
+ ```markdown
131
+ ## Sisyphus 완료
132
+
133
+ **작업**: {task_description}
134
+ **분류**: {category} / {complexity}
135
+ **라우팅**: {primary_cli} ({primary_model})
136
+ **승격 횟수**: {escalation_count}
137
+ **최종 실행**: {final_cli} ({final_model})
138
+
139
+ ### 실행 경로
140
+ | 시도 | CLI | 모델 | 결과 | 토큰 |
141
+ |------|-----|------|------|------|
142
+ | 1 | Haiku | haiku | 실패 (불완전) | ~1K |
143
+ | 2 | Codex | normal | 성공 | ~3K |
144
+
145
+ ### 결과
146
+ {output}
147
+
148
+ ### 비용 절감
149
+ Primary Opus였다면: ~{opus_cost}K tokens
150
+ 실제 사용: ~{actual_cost}K tokens
151
+ 절감: {savings}%
152
+ ```
153
+
154
+ ## Anti-Stuck 메커니즘
155
+
156
+ ```
157
+ 같은 에러로 2회 연속 실패 시:
158
+ → 에러 메시지를 다음 프롬프트에 포함하여 우회 시도
159
+
160
+ 승격 체인 전체 소진 시 (Level 4):
161
+ → AskUserQuestion: "다음 작업이 모든 모델에서 실패했습니다.
162
+ 에러: {error}. 접근 방식을 변경하시겠습니까?"
163
+ ```
164
+
165
+ ## 토큰 예산
166
+
167
+ 가변. 최소 비용 라우팅이 핵심이므로 고정 예산 없음.
168
+
169
+ | 시나리오 | 예상 토큰 |
170
+ |----------|----------|
171
+ | 1회 성공 (haiku) | ~2K |
172
+ | 1회 성공 (codex) | ~5K |
173
+ | 1회 승격 후 성공 | ~8K |
174
+ | 2회 승격 후 성공 | ~15K |
175
+ | 전체 체인 소진 | ~25K |
176
+
177
+ ## 사용 예
178
+
179
+ ```
180
+ /tfx-autoroute "이 함수의 타입 에러 수정해"
181
+ /tfx-autoroute "프로젝트 구조 분석해서 아키텍처 다이어그램 만들어"
182
+ /tfx-autoroute "README.md 한국어로 번역"
183
+ /시지프스 "테스트 커버리지 80%까지 올려"
184
+ ```
@@ -1,112 +1,114 @@
1
- ---
2
- name: tfx-consensus
3
- description: 3자 합의 엔진 — 모든 Deep 스킬의 핵심 인프라. Claude/Codex/Gemini 독립 분석 결과를 교차검증하여 편향 없는 합의를 도출한다.
4
- triggers: []
5
- argument-hint: "(내부 전용 — Deep 스킬이 자동 호출)"
6
- ---
7
-
8
- # tfx-consensus — Tri-CLI Consensus Engine
9
-
10
- > 모든 Deep 스킬의 공통 기반. 3개 CLI의 독립 결과를 교차검증하여 합의 도출.
11
-
12
- ## Core Protocol
13
-
14
- 이 스킬은 직접 호출하지 않는다. `tfx-deep-*` 스킬이 내부적으로 사용한다.
15
-
16
- ## Consensus Algorithm
17
-
18
- ### Phase 1: Independent Analysis (Anti-Herding)
19
-
20
- 3개 CLI가 **동시에, 상호 결과를 보지 않고** 독립 분석한다. 이것이 핵심이다 — 한 CLI의 결과가 다른 CLI에 영향을 주면 편향이 발생한다.
21
-
22
- ```
23
- 실행 방식:
24
- ├─ Claude (Opus/Sonnet): Agent() 또는 /team worker로 실행
25
- ├─ Codex: Bash("codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check '{prompt}'")
26
- └─ Gemini: Bash("gemini -y -p '{prompt}'")
27
-
28
- CLI에게 동일한 프롬프트를 전달하되, 출력 형식을 JSON으로 강제:
29
- {
30
- "findings": [
31
- { "id": "F1", "category": "...", "severity": "critical|high|medium|low", "description": "...", "evidence": "..." }
32
- ],
33
- "summary": "...",
34
- "confidence": 0.0-1.0
35
- }
36
- ```
37
-
38
- ### Phase 2: Cross-Validation
39
-
40
- Claude가 3개 결과를 통합하여 교차검증한다:
41
-
42
- ```
43
- 입력: result_claude, result_codex, result_gemini
44
-
45
- for each finding in ALL results:
46
- agreement_count = count(CLIs that found this or similar finding)
47
-
48
- if agreement_count >= 2:
49
- mark as "CONSENSUS" (합의됨)
50
- elif agreement_count == 1:
51
- mark as "DISPUTED" (미합의 — 추가 검증 필요)
52
-
53
- consensus_score = len(CONSENSUS) / len(ALL_UNIQUE) * 100
54
- ```
55
-
56
- ### Phase 3: Resolution (consensus_score < 70일 때)
57
-
58
- ```
59
- 미합의 항목에 대해 2차 라운드:
60
- 1. 각 CLI에게 다른 두 CLI의 반대 논거를 제시
61
- 2. "수용(accept) 또는 반박(rebut)으로 응답하라"
62
- 3. 수용이 2개 이상이면 CONSENSUS로 승격
63
- 4. 여전히 미합의이면 사용자에게 판단 요청 (AskUserQuestion)
64
- ```
65
-
66
- ### Learned Weights (시간 기반 신뢰도)
67
-
68
- ```
69
- 각 CLI의 historical accuracy를 .omc/state/consensus-weights.json에 저장:
70
- {
71
- "claude": { "accuracy": 0.85, "total": 100, "correct": 85 },
72
- "codex": { "accuracy": 0.82, "total": 100, "correct": 82 },
73
- "gemini": { "accuracy": 0.78, "total": 100, "correct": 78 }
74
- }
75
-
76
- 가중 투표 시 accuracy를 weight로 사용:
77
- weighted_score = (claude_vote * 0.85 + codex_vote * 0.82 + gemini_vote * 0.78) / (0.85 + 0.82 + 0.78)
78
- ```
79
-
80
- ## Output Format
81
-
82
- ```json
83
- {
84
- "consensus_score": 85,
85
- "consensus_items": [...],
86
- "disputed_items": [...],
87
- "resolved_items": [...],
88
- "user_decision_needed": [...],
89
- "cli_weights": { "claude": 0.85, "codex": 0.82, "gemini": 0.78 }
90
- }
91
- ```
92
-
93
- ## Integration Point
94
-
95
- Deep 스킬에서 사용하는 방법:
96
-
97
- ```
98
- 1. 프롬프트 준비 (주제 + 분석 관점 + 출력 형식)
99
- 2. 3개 CLI 병렬 실행 (Bash background + Agent background)
100
- 3. 결과 수집
101
- 4. Consensus Algorithm 적용
102
- 5. consensus_score >= 70 → 확정
103
- 6. consensus_score < 70 → Resolution Phase 진입
104
- 7. 최종 결과를 호출 스킬에 반환
105
- ```
106
-
107
- ## Token Budget
108
-
109
- - Phase 1 (3x 독립분석): ~15K (각 5K)
110
- - Phase 2 (교차검증): ~3K
111
- - Phase 3 (Resolution, 필요 시): ~8K
112
- - **총합**: 18-26K tokens
1
+ ---
2
+ name: tfx-consensus
3
+ description: 3자 합의 엔진 — 모든 Deep 스킬의 핵심 인프라. Claude/Codex/Gemini 독립 분석 결과를 교차검증하여 편향 없는 합의를 도출한다.
4
+ triggers: []
5
+ argument-hint: "(내부 전용 — Deep 스킬이 자동 호출)"
6
+ ---
7
+
8
+ # tfx-consensus — Tri-CLI Consensus Engine
9
+
10
+ > 모든 Deep 스킬의 공통 기반. 3개 CLI의 독립 결과를 교차검증하여 합의 도출.
11
+
12
+ ## Core Protocol
13
+
14
+ 이 스킬은 직접 호출하지 않는다. `tfx-deep-*` 스킬이 내부적으로 사용한다.
15
+
16
+ ## Consensus Algorithm
17
+
18
+ ### Phase 1: Independent Analysis (Anti-Herding)
19
+
20
+ 3개 CLI가 **동시에, 상호 결과를 보지 않고** 독립 분석한다. 이것이 핵심이다 — 한 CLI의 결과가 다른 CLI에 영향을 주면 편향이 발생한다.
21
+
22
+ ```
23
+ 실행 방식 (MANDATORY — headless dispatch):
24
+ ├─ Claude (Opus/Sonnet): Agent(subagent_type, run_in_background=true)
25
+ └─ CLI 워커 (Codex+Gemini): Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
26
+ --assign 'codex:{prompt}:analyst' \
27
+ --assign 'gemini:{prompt}:analyst' \
28
+ --timeout 600")
29
+
30
+ CLI에게 동일한 프롬프트를 전달하되, 출력 형식을 JSON으로 강제:
31
+ {
32
+ "findings": [
33
+ { "id": "F1", "category": "...", "severity": "critical|high|medium|low", "description": "...", "evidence": "..." }
34
+ ],
35
+ "summary": "...",
36
+ "confidence": 0.0-1.0
37
+ }
38
+ ```
39
+
40
+ ### Phase 2: Cross-Validation
41
+
42
+ Claude가 3개 결과를 통합하여 교차검증한다:
43
+
44
+ ```
45
+ 입력: result_claude, result_codex, result_gemini
46
+
47
+ for each finding in ALL results:
48
+ agreement_count = count(CLIs that found this or similar finding)
49
+
50
+ if agreement_count >= 2:
51
+ mark as "CONSENSUS" (합의됨)
52
+ elif agreement_count == 1:
53
+ mark as "DISPUTED" (미합의 추가 검증 필요)
54
+
55
+ consensus_score = len(CONSENSUS) / len(ALL_UNIQUE) * 100
56
+ ```
57
+
58
+ ### Phase 3: Resolution (consensus_score < 70일 때)
59
+
60
+ ```
61
+ 미합의 항목에 대해 2차 라운드:
62
+ 1. CLI에게 다른 CLI의 반대 논거를 제시
63
+ 2. "수용(accept) 또는 반박(rebut)으로 응답하라"
64
+ 3. 수용이 2개 이상이면 CONSENSUS로 승격
65
+ 4. 여전히 미합의이면 사용자에게 판단 요청 (AskUserQuestion)
66
+ ```
67
+
68
+ ### Learned Weights (시간 기반 신뢰도)
69
+
70
+ ```
71
+ CLI의 historical accuracy .omc/state/consensus-weights.json에 저장:
72
+ {
73
+ "claude": { "accuracy": 0.85, "total": 100, "correct": 85 },
74
+ "codex": { "accuracy": 0.82, "total": 100, "correct": 82 },
75
+ "gemini": { "accuracy": 0.78, "total": 100, "correct": 78 }
76
+ }
77
+
78
+ 가중 투표 시 accuracy를 weight로 사용:
79
+ weighted_score = (claude_vote * 0.85 + codex_vote * 0.82 + gemini_vote * 0.78) / (0.85 + 0.82 + 0.78)
80
+ ```
81
+
82
+ ## Output Format
83
+
84
+ ```json
85
+ {
86
+ "consensus_score": 85,
87
+ "consensus_items": [...],
88
+ "disputed_items": [...],
89
+ "resolved_items": [...],
90
+ "user_decision_needed": [...],
91
+ "cli_weights": { "claude": 0.85, "codex": 0.82, "gemini": 0.78 }
92
+ }
93
+ ```
94
+
95
+ ## Integration Point
96
+
97
+ Deep 스킬에서 사용하는 방법:
98
+
99
+ ```
100
+ 1. 프롬프트 준비 (주제 + 분석 관점 + 출력 형식)
101
+ 2. 3개 CLI 병렬 실행 (headless dispatch + Agent background)
102
+ 3. 결과 수집
103
+ 4. Consensus Algorithm 적용
104
+ 5. consensus_score >= 70 확정
105
+ 6. consensus_score < 70 → Resolution Phase 진입
106
+ 7. 최종 결과를 호출 스킬에 반환
107
+ ```
108
+
109
+ ## Token Budget
110
+
111
+ - Phase 1 (3x 독립분석): ~15K (각 5K)
112
+ - Phase 2 (교차검증): ~3K
113
+ - Phase 3 (Resolution, 필요 시): ~8K
114
+ - **총합**: 18-26K tokens
@@ -60,16 +60,16 @@ Claude (Agent, background):
60
60
  최종 추천과 근거를 제시하세요.
61
61
  JSON 형식으로 출력하세요: { recommendation, reasoning, pros, cons, risks, confidence }"
62
62
 
63
- Codex (Bash, background):
64
- codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check \
65
- "당신은 시니어 백엔드 엔지니어입니다. {topic}에 대해 구현 관점에서 분석하세요.
66
- {context} 기반으로 각 옵션의 기술적 트레이드오프를 평가하세요.
67
- JSON: { recommendation, reasoning, pros, cons, risks, confidence }"
63
+ > **MANDATORY: Codex/Gemini 독립 분석은 headless dispatch로 실행**
68
64
 
69
- Gemini (Bash, background):
70
- gemini -y -p \
71
- "당신은 DevOps/인프라 엔지니어이자 DX 전문가입니다. {topic}에 대해 운영+개발자경험 관점에서 분석하세요.
72
- {context}. JSON: { recommendation, reasoning, pros, cons, risks, confidence }"
65
+ CLI 워커 headless dispatch (Bash, background):
66
+ Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
67
+ --assign 'codex:당신은 시니어 백엔드 엔지니어입니다. {topic}에 대해 구현 관점에서 분석하세요.
68
+ {context} 기반으로 옵션의 기술적 트레이드오프를 평가하세요.
69
+ JSON: { recommendation, reasoning, pros, cons, risks, confidence }:analyst' \
70
+ --assign 'gemini:당신은 DevOps/인프라 엔지니어이자 DX 전문가입니다. {topic}에 대해 운영+개발자경험 관점에서 분석하세요.
71
+ {context}. JSON: { recommendation, reasoning, pros, cons, risks, confidence }:analyst' \
72
+ --timeout 600")
73
73
  ```
74
74
 
75
75
  ### Step 3: 결과 수집 및 교차검증