triflux 8.6.0 → 8.9.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.
- package/README.ko.md +46 -7
- package/README.md +46 -7
- package/hub/team/ansi.mjs +134 -11
- package/hub/team/tui.mjs +288 -53
- package/package.json +1 -1
- package/skills/tfx-consensus/SKILL.md +138 -114
- package/skills/tfx-debate/SKILL.md +96 -57
- package/skills/tfx-deep-analysis/SKILL.md +171 -191
- package/skills/tfx-deep-plan/SKILL.md +181 -73
- package/skills/tfx-deep-qa/SKILL.md +58 -58
- package/skills/tfx-deep-research/SKILL.md +79 -80
- package/skills/tfx-deep-review/SKILL.md +122 -96
- package/skills/tfx-fullcycle/SKILL.md +117 -105
- package/skills/tfx-panel/SKILL.md +66 -69
- package/skills/tfx-persist/SKILL.md +149 -76
- package/skills/tfx-prune/SKILL.md +72 -75
- package/skills/tfx-remote-setup/SKILL.md +530 -0
- package/skills/tfx-remote-spawn/SKILL.md +259 -0
- package/skills/remote-spawn/SKILL.md +0 -205
- /package/skills/{remote-spawn → tfx-remote-spawn}/references/hosts.json +0 -0
|
@@ -15,13 +15,22 @@ argument-hint: "<토론 주제>"
|
|
|
15
15
|
> SuperClaude spec-panel + business-panel 오마주. 실제 전문가 5-10명의 관점을 시뮬레이션하여 다각적 분석.
|
|
16
16
|
> "한 사람의 시야는 좁다. 패널의 시야는 넓다."
|
|
17
17
|
|
|
18
|
-
##
|
|
18
|
+
## HARD RULES
|
|
19
19
|
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
|
|
20
|
+
> headless-guard가 이 규칙 위반을 **자동 차단**한다. 우회 불가.
|
|
21
|
+
|
|
22
|
+
1. **`codex exec` / `gemini -p` 직접 호출 절대 금지**
|
|
23
|
+
2. Codex·Gemini → `Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'cli:프롬프트:역할' --timeout 600")` **만** 사용
|
|
24
|
+
3. Claude → `Agent(run_in_background=true)`
|
|
25
|
+
4. Bash + Agent를 같은 메시지에서 동시 호출하여 병렬 실행
|
|
26
|
+
|
|
27
|
+
## MODEL ROLES
|
|
28
|
+
|
|
29
|
+
| CLI | 역할 | 담당 전문가 유형 |
|
|
30
|
+
|-----|------|----------------|
|
|
31
|
+
| Claude (Opus) | 패널 모더레이터 + 인문/전략 전문가 | 리팩터링, 점진적 설계, 요구사항 |
|
|
32
|
+
| Codex | 기술 구현 전문가 | 아키텍처, 마이크로서비스, 클라우드 |
|
|
33
|
+
| Gemini | 통합/비즈니스 전문가 | 통합 패턴, 경쟁 전략, 프로덕트 |
|
|
25
34
|
|
|
26
35
|
## 전문가 풀
|
|
27
36
|
|
|
@@ -46,94 +55,78 @@ argument-hint: "<토론 주제>"
|
|
|
46
55
|
| Eric Ries | 린 스타트업 | MVP, 검증된 학습 |
|
|
47
56
|
| Marty Cagan | 프로덕트 | 가치, 실현 가능성, 비즈니스 |
|
|
48
57
|
|
|
49
|
-
##
|
|
58
|
+
## EXECUTION STEPS
|
|
50
59
|
|
|
51
60
|
### Step 0: 패널 도메인 선택
|
|
52
61
|
|
|
53
|
-
|
|
62
|
+
주제 인자가 없으면 사용자에게 도메인을 선택받는다:
|
|
54
63
|
|
|
55
64
|
```
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
5. 프론트엔드/UX (Nielsen, Cooper, Krug)
|
|
63
|
-
6. 직접 구성
|
|
65
|
+
1. 소프트웨어 아키텍처 (Fowler, Newman, Vernon, Evans)
|
|
66
|
+
2. 보안 (OWASP, Trail of Bits, Schneier)
|
|
67
|
+
3. 비즈니스 전략 (Porter, Christensen, Drucker)
|
|
68
|
+
4. DevOps/SRE (Humble, Kim, Forsgren)
|
|
69
|
+
5. 프론트엔드/UX (Nielsen, Cooper, Krug)
|
|
70
|
+
6. 직접 구성
|
|
64
71
|
```
|
|
65
72
|
|
|
66
|
-
|
|
67
|
-
"직접 구성"을 선택하면 사용자가 전문가 이름/역할을 직접 지정할 수 있다.
|
|
73
|
+
"직접 구성" 선택 시 사용자가 전문가 이름/역할을 직접 지정한다.
|
|
68
74
|
|
|
69
75
|
### Step 1: 주제 분석 및 전문가 선정
|
|
70
76
|
|
|
71
|
-
사용자 입력에서 주제를
|
|
77
|
+
사용자 입력에서 주제를 파싱하고 관련 도메인을 식별한다. 5-10명의 전문가를 선정하여 3개 CLI에 분배한다.
|
|
72
78
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
domains: ["아키텍처", "운영", "조직", "비즈니스"],
|
|
78
|
-
selected_experts: [
|
|
79
|
-
{ name: "Sam Newman", role: "마이크로서비스 아키텍트", cli: "codex" },
|
|
80
|
-
{ name: "Martin Fowler", role: "리팩터링 전문가", cli: "claude" },
|
|
81
|
-
{ name: "Gregor Hohpe", role: "통합 패턴 전문가", cli: "gemini" },
|
|
82
|
-
{ name: "Michael Porter", role: "전략 분석가", cli: "codex" },
|
|
83
|
-
{ name: "Kent Beck", role: "점진적 설계 옹호자", cli: "claude" },
|
|
84
|
-
{ name: "Karl Wiegers", role: "요구사항 검증자", cli: "gemini" }
|
|
85
|
-
]
|
|
86
|
-
}
|
|
87
|
-
```
|
|
79
|
+
분배 예시 (`"우리 모놀리스를 마이크로서비스로 전환해야 할까?"`):
|
|
80
|
+
- Claude 담당: Martin Fowler (리팩터링), Kent Beck (점진적 설계)
|
|
81
|
+
- Codex 담당: Sam Newman (마이크로서비스), Michael Porter (전략)
|
|
82
|
+
- Gemini 담당: Gregor Hohpe (통합 패턴), Karl Wiegers (요구사항)
|
|
88
83
|
|
|
89
|
-
모호하면 AskUserQuestion으로
|
|
84
|
+
주제가 모호하면 AskUserQuestion으로 명확화한다.
|
|
90
85
|
|
|
91
|
-
### Step 2: 독립 분석 (
|
|
86
|
+
### Step 2: 독립 분석 (Anti-Herding)
|
|
92
87
|
|
|
93
|
-
|
|
88
|
+
**아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
|
|
94
89
|
|
|
95
|
-
```
|
|
96
90
|
Claude (Agent, background):
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
--timeout 600")
|
|
91
|
+
```
|
|
92
|
+
Agent(
|
|
93
|
+
subagent_type="claude-sonnet-4-5",
|
|
94
|
+
model="opus",
|
|
95
|
+
run_in_background=true,
|
|
96
|
+
prompt="당신은 {claude_expert_1}({role_1})과 {claude_expert_2}({role_2})입니다.
|
|
97
|
+
주제: {topic}
|
|
98
|
+
각 전문가의 고유 관점에서 독립적으로 분석하세요. 상대 전문가의 입장을 참조하지 마세요.
|
|
99
|
+
JSON 형식으로 응답:
|
|
100
|
+
{ 'experts': [{ 'name': string, 'position': string, 'reasoning': string, 'concerns': string[], 'recommendation': string, 'confidence': number }] }"
|
|
101
|
+
)
|
|
109
102
|
```
|
|
110
103
|
|
|
111
|
-
|
|
104
|
+
Codex + Gemini (Bash, background):
|
|
105
|
+
```
|
|
106
|
+
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
|
|
107
|
+
--assign 'codex:당신은 {codex_expert_1}({role_3})과 {codex_expert_2}({role_4})입니다. 주제: {topic}. 각 전문가의 고유 관점에서 독립 분석. 상호 참조 금지. JSON: {experts:[{name,position,reasoning,concerns,recommendation,confidence}]}:analyst' \
|
|
108
|
+
--assign 'gemini:당신은 {gemini_expert_1}({role_5})과 {gemini_expert_2}({role_6})입니다. 주제: {topic}. 각 전문가의 고유 관점에서 독립 분석. 상호 참조 금지. JSON: {experts:[{name,position,reasoning,concerns,recommendation,confidence}]}:analyst' \
|
|
109
|
+
--timeout 600")
|
|
110
|
+
```
|
|
112
111
|
|
|
113
|
-
|
|
112
|
+
### Step 3: 패널 토론 시뮬레이션
|
|
114
113
|
|
|
115
|
-
|
|
116
|
-
Claude Opus가 패널 모더레이터 역할:
|
|
114
|
+
3개 CLI 결과 수집 후 Claude Opus가 패널 모더레이터로 교차 토론을 시뮬레이션한다:
|
|
117
115
|
|
|
118
|
-
1. 각 전문가 의견 정리
|
|
116
|
+
1. 각 전문가 의견 정리 — 합의점 / 분쟁점 식별
|
|
119
117
|
2. 분쟁점에 대해 가상 반론 생성:
|
|
120
|
-
"
|
|
121
|
-
Newman의 반론은? Fowler의 재반론은?"
|
|
118
|
+
- "{expert_A}은 {position_A}를 주장하지만, {expert_B}는 {position_B}를 권고합니다. {expert_A}의 반론은? {expert_B}의 재반론은?"
|
|
122
119
|
3. 2차 라운드: 반론을 반영한 수정 의견 도출
|
|
123
|
-
```
|
|
124
120
|
|
|
125
121
|
### Step 4: 합의 종합
|
|
126
122
|
|
|
127
|
-
```
|
|
128
123
|
tfx-consensus 프로토콜 적용:
|
|
129
124
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
- 대립 → "미해결 쟁점" (양측 근거 병기)
|
|
134
|
-
```
|
|
125
|
+
- 과반(50%+) 합의 → "패널 합의" (근거 포함)
|
|
126
|
+
- 소수 의견 → "소수 견해" (근거 포함)
|
|
127
|
+
- 대립 → "미해결 쟁점" (양측 근거 병기)
|
|
135
128
|
|
|
136
|
-
### Step 5: 최종 패널 보고서
|
|
129
|
+
### Step 5: 최종 패널 보고서 출력
|
|
137
130
|
|
|
138
131
|
```markdown
|
|
139
132
|
## 전문가 패널 보고서: {topic}
|
|
@@ -141,9 +134,7 @@ tfx-consensus 프로토콜 적용:
|
|
|
141
134
|
### 패널 구성
|
|
142
135
|
| # | 전문가 | 역할 | 핵심 입장 |
|
|
143
136
|
|---|--------|------|----------|
|
|
144
|
-
| 1 |
|
|
145
|
-
| 2 | Martin Fowler | 리팩터링 전문가 | 모놀리스 우선 정리 |
|
|
146
|
-
| ... | ... | ... | ... |
|
|
137
|
+
| 1 | {name} | {role} | {position} |
|
|
147
138
|
|
|
148
139
|
### 패널 합의 (Consensus Score: {score}%)
|
|
149
140
|
- [합의 1] — {N}/{total} 합의
|
|
@@ -166,7 +157,13 @@ tfx-consensus 프로토콜 적용:
|
|
|
166
157
|
2. {action_2}
|
|
167
158
|
```
|
|
168
159
|
|
|
169
|
-
##
|
|
160
|
+
## ERROR RECOVERY
|
|
161
|
+
|
|
162
|
+
- Codex/Gemini 타임아웃(600s 초과) → Claude Agent로 해당 전문가 재분석
|
|
163
|
+
- 결과 파싱 실패 → 원문 그대로 Step 3에 투입하여 모더레이터가 정리
|
|
164
|
+
- 전문가 선정 불확실 → AskUserQuestion으로 사용자 확인 후 진행
|
|
165
|
+
|
|
166
|
+
## TOKEN BUDGET
|
|
170
167
|
|
|
171
168
|
| 단계 | 토큰 |
|
|
172
169
|
|------|------|
|
|
@@ -15,122 +15,195 @@ argument-hint: "<완료할 작업 설명>"
|
|
|
15
15
|
> OMC ralph 오마주. 핵심 차별점: 검증자가 단일 agent가 아니라 **3-CLI consensus**.
|
|
16
16
|
> The boulder never stops — but it stops being wrong.
|
|
17
17
|
|
|
18
|
-
##
|
|
18
|
+
## HARD RULES
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
tfx-persist는 Claude/Codex/Gemini **3자 독립 검증**으로 편향 없는 완료 판단을 보장한다.
|
|
20
|
+
> headless-guard가 이 규칙 위반을 **자동 차단**한다. 우회 불가.
|
|
22
21
|
|
|
23
|
-
|
|
22
|
+
1. **`codex exec` / `gemini -p` 직접 호출 절대 금지**
|
|
23
|
+
2. Codex·Gemini 검증자 → `Bash("tfx multi --teammate-mode headless --auto-attach --dashboard --assign 'cli:프롬프트:역할' --timeout 600")` **만** 사용
|
|
24
|
+
3. Claude 검증자 → `Agent(run_in_background=true)`
|
|
25
|
+
4. Bash + Agent를 같은 메시지에서 동시 호출하여 병렬 실행
|
|
26
|
+
5. 루프 종료 조건: 모든 criteria 3자 검증 통과 + 통합 검증 Consensus >= 70
|
|
27
|
+
|
|
28
|
+
## MODEL ROLES
|
|
29
|
+
|
|
30
|
+
| 단계 | 역할 | 담당 |
|
|
31
|
+
|------|------|------|
|
|
32
|
+
| Goal Definition | 완료 기준 추출 및 사용자 확인 | Claude (직접 실행) |
|
|
33
|
+
| 구현 (단순) | 코드 작성, 파일 수정, 테스트 | Codex (tfx headless) |
|
|
34
|
+
| 구현 (복잡) | 태스크 분해 후 병렬 실행 | Codex + Gemini (tfx headless) |
|
|
35
|
+
| 기준별 검증 — Claude | 코드 읽기 + 논리 검증 | Claude (Agent, background) |
|
|
36
|
+
| 기준별 검증 — Codex | 코드 실행 + 테스트 검증 | Codex (tfx headless) |
|
|
37
|
+
| 기준별 검증 — Gemini | 코드 리뷰 + 품질 검증 | Gemini (tfx headless) |
|
|
38
|
+
| 통합 검증 | 전체 criteria 최종 합의 | Claude + Codex + Gemini (동시) |
|
|
39
|
+
| Deslop Pass | 슬롭 감지 및 제거 | Codex + Gemini (tfx headless) |
|
|
40
|
+
|
|
41
|
+
## EXECUTION STEPS
|
|
24
42
|
|
|
25
43
|
### Step 1: Goal Definition
|
|
26
44
|
|
|
45
|
+
Claude가 직접 실행한다.
|
|
46
|
+
|
|
47
|
+
1. 사용자 요청에서 완료 기준(acceptance criteria)을 추출한다.
|
|
48
|
+
2. AskUserQuestion으로 추출된 기준을 사용자에게 확인받는다:
|
|
49
|
+
- "맞습니다 — 진행" → Step 2로 이동
|
|
50
|
+
- "수정 필요" → 해당 기준 번호와 내용 입력 받아 반영 후 재확인
|
|
51
|
+
- "추가 필요" → 추가 기준 입력 받아 반영 후 재확인
|
|
52
|
+
3. 확정된 `{criteria_list}`를 루프 전체에서 사용한다.
|
|
53
|
+
|
|
54
|
+
### Step 2: Execution Loop
|
|
55
|
+
|
|
56
|
+
**모든 criteria가 검증 통과할 때까지 반복한다.**
|
|
57
|
+
|
|
58
|
+
#### 2a. 현재 상태 평가
|
|
59
|
+
|
|
60
|
+
미완료 criteria를 식별하고 다음 구현 작업을 결정한다.
|
|
61
|
+
|
|
62
|
+
#### 2b. 구현 실행
|
|
63
|
+
|
|
64
|
+
단순 작업 (파일 수정, 단일 모듈):
|
|
27
65
|
```
|
|
28
|
-
|
|
29
|
-
{
|
|
30
|
-
|
|
31
|
-
"criteria": [
|
|
32
|
-
"로그인 엔드포인트 /api/auth/login 작동",
|
|
33
|
-
"JWT 토큰 발급/검증 로직",
|
|
34
|
-
"보호된 라우트에 미들웨어 적용",
|
|
35
|
-
"refresh 토큰 지원",
|
|
36
|
-
"테스트 커버리지 80%+"
|
|
37
|
-
]
|
|
38
|
-
}
|
|
66
|
+
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
|
|
67
|
+
--assign 'codex:{미완료_criterion}을 충족하도록 구현하라. 구체적 작업: {task_description}. TDD 필요 시 테스트 먼저 작성(RED) → 구현(GREEN) 순서로 진행하라.:implementer' \
|
|
68
|
+
--timeout 600")
|
|
39
69
|
```
|
|
40
70
|
|
|
41
|
-
|
|
42
|
-
|
|
71
|
+
복잡 작업 (여러 파일, 연동 모듈):
|
|
43
72
|
```
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
{
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
3. 추가 필요 — 기준 추가
|
|
73
|
+
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
|
|
74
|
+
--assign 'codex:{서브태스크_A} 구현하라. 세부사항: {spec_A}:implementer' \
|
|
75
|
+
--assign 'codex:{서브태스크_B} 구현하라. 세부사항: {spec_B}:implementer' \
|
|
76
|
+
--assign 'gemini:{문서/UI_항목} 작성하라. 세부사항: {spec_C}:writer' \
|
|
77
|
+
--timeout 600")
|
|
50
78
|
```
|
|
51
79
|
|
|
52
|
-
|
|
53
|
-
- 2번 선택 → 사용자가 수정할 기준 번호와 내용을 입력, 반영 후 재확인
|
|
54
|
-
- 3번 선택 → 사용자가 추가 기준을 입력, 반영 후 재확인
|
|
80
|
+
#### 2c. 3자 독립 검증
|
|
55
81
|
|
|
56
|
-
|
|
82
|
+
**구현 완료 후, 아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
|
|
57
83
|
|
|
84
|
+
**Claude 검증 (Agent):**
|
|
85
|
+
```
|
|
86
|
+
Agent(
|
|
87
|
+
subagent_type="oh-my-claudecode:verifier",
|
|
88
|
+
model="sonnet",
|
|
89
|
+
run_in_background=true,
|
|
90
|
+
prompt="다음 기준이 충족되었는지 코드를 직접 읽고 판단하라.
|
|
91
|
+
기준: {current_criterion}
|
|
92
|
+
코드를 읽고 논리적으로 충족 여부를 판단하라.
|
|
93
|
+
결과: PASS 또는 FAIL + 근거 1문장"
|
|
94
|
+
)
|
|
58
95
|
```
|
|
59
|
-
WHILE (NOT all criteria verified):
|
|
60
|
-
|
|
61
|
-
2a. 현재 상태 평가
|
|
62
|
-
- 어떤 기준이 미완료인지 확인
|
|
63
|
-
- 다음 작업 결정
|
|
64
|
-
|
|
65
|
-
2b. 구현 실행
|
|
66
|
-
- 단순 작업 → Codex exec 직접 실행
|
|
67
|
-
- 복잡 작업 → tfx-auto로 분해 후 실행
|
|
68
|
-
- 파일 수정, 테스트 작성, 빌드 등
|
|
69
96
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
97
|
+
**Codex + Gemini 검증 (Bash — 동시에 위 Agent와 같은 응답에서 호출):**
|
|
98
|
+
```
|
|
99
|
+
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
|
|
100
|
+
--assign 'codex:다음 기준 충족 여부를 코드 실행/테스트로 검증하라. 기준: {current_criterion}. 실제 테스트를 실행하여 결과를 확인하라. 결과: PASS 또는 FAIL + 근거 1문장:verifier' \
|
|
101
|
+
--assign 'gemini:다음 기준 충족 여부를 코드 리뷰로 판단하라. 기준: {current_criterion}. 코드 품질, 엣지 케이스, 완전성을 확인하라. 결과: PASS 또는 FAIL + 근거 1문장:verifier' \
|
|
102
|
+
--timeout 600")
|
|
103
|
+
```
|
|
74
104
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
105
|
+
**검증 판정:**
|
|
106
|
+
- 2/3 이상 PASS → 해당 기준 확정, 다음 기준으로 이동
|
|
107
|
+
- 1/3만 PASS → 재작업 필요, 실패 근거를 구현 프롬프트에 포함하여 2b 재실행
|
|
108
|
+
- 0/3 PASS → 즉시 재작업, 실패 근거 전달
|
|
78
109
|
|
|
79
|
-
|
|
80
|
-
"🪨 Ralph: {완료}/{전체} 기준 충족. 현재: {작업 중인 것}. 다음: {예정}"
|
|
110
|
+
#### 2d. 진행 보고
|
|
81
111
|
|
|
82
|
-
|
|
112
|
+
각 기준 검증 후 보고한다:
|
|
113
|
+
```
|
|
114
|
+
[tfx-persist] {완료수}/{전체수} 기준 충족.
|
|
115
|
+
완료: {완료된_criteria_목록}
|
|
116
|
+
현재: {작업_중인_criterion}
|
|
117
|
+
다음: {예정_criterion}
|
|
83
118
|
```
|
|
84
119
|
|
|
85
120
|
### Step 3: Final Verification
|
|
86
121
|
|
|
87
|
-
모든 기준이 개별 검증을 통과한 후, 전체 통합
|
|
122
|
+
모든 기준이 개별 검증을 통과한 후, 전체 통합 검증을 실행한다.
|
|
123
|
+
|
|
124
|
+
**아래 2개 도구를 반드시 같은 응답에서 동시에 호출하라.**
|
|
88
125
|
|
|
126
|
+
**Claude 통합 검증 (Agent):**
|
|
127
|
+
```
|
|
128
|
+
Agent(
|
|
129
|
+
subagent_type="oh-my-claudecode:verifier",
|
|
130
|
+
model="opus",
|
|
131
|
+
run_in_background=true,
|
|
132
|
+
prompt="모든 acceptance criteria가 충족되었는지 전체적으로 검증하라.
|
|
133
|
+
기준 목록: {criteria_list}
|
|
134
|
+
코드를 직접 읽고, 회귀 여부를 확인하고, 기준 간 상호 의존성을 검증하라.
|
|
135
|
+
JSON 형식: { criteria_results: [{criterion, pass, reason}], regression_check, overall_pass }"
|
|
136
|
+
)
|
|
89
137
|
```
|
|
90
|
-
3자 독립 통합 검증:
|
|
91
|
-
"모든 acceptance criteria가 충족되었는지 전체적으로 검증하라.
|
|
92
|
-
기준 목록: {criteria}
|
|
93
|
-
코드를 직접 읽고, 테스트를 실행하고, 회귀 여부를 확인하라."
|
|
94
138
|
|
|
95
|
-
|
|
96
|
-
|
|
139
|
+
**Codex + Gemini 통합 검증 (Bash — 동시에 위 Agent와 같은 응답에서 호출):**
|
|
140
|
+
```
|
|
141
|
+
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
|
|
142
|
+
--assign 'codex:모든 acceptance criteria 충족 여부를 테스트 실행으로 통합 검증하라. 기준 목록: {criteria_list}. 전체 테스트 스위트를 실행하고 회귀 여부를 확인하라. JSON 형식: { criteria_results, test_results, overall_pass }:verifier' \
|
|
143
|
+
--assign 'gemini:모든 acceptance criteria 충족 여부를 코드 리뷰로 통합 검증하라. 기준 목록: {criteria_list}. 전체 변경사항을 검토하고 누락, 불완전한 구현, 엣지 케이스를 확인하라. JSON 형식: { criteria_results, edge_cases, overall_pass }:verifier' \
|
|
144
|
+
--timeout 600")
|
|
97
145
|
```
|
|
98
146
|
|
|
147
|
+
**통합 판정:**
|
|
148
|
+
- Consensus Score >= 70 → Step 4(Deslop) 또는 Step 5(완료) 진행
|
|
149
|
+
- Consensus Score < 70 → 미달 항목을 추출하여 Step 2 루프 재진입
|
|
150
|
+
|
|
99
151
|
### Step 4: Deslop Pass (선택적)
|
|
100
152
|
|
|
101
|
-
검증 통과
|
|
153
|
+
검증 통과 후 변경된 파일에 슬롭이 있으면 제거한다.
|
|
154
|
+
|
|
102
155
|
```
|
|
103
|
-
|
|
156
|
+
Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
|
|
157
|
+
--assign 'codex:다음 파일에서 AI가 생성한 불필요 코드(슬롭)를 감지하라. 파일: {changed_files}. 중복 코드, 불필요 추상화, 과잉 에러 핸들링, 사용되지 않는 임포트를 보고하라. 수정하지 말고 목록만 반환하라.:critic' \
|
|
158
|
+
--assign 'gemini:다음 파일에서 AI가 생성한 불필요 코드(슬롭)를 감지하라. 파일: {changed_files}. 중복 코드, 불필요 추상화, 과잉 에러 핸들링, 사용되지 않는 임포트를 보고하라. 수정하지 말고 목록만 반환하라.:critic' \
|
|
159
|
+
--timeout 600")
|
|
104
160
|
```
|
|
105
161
|
|
|
162
|
+
2/3 이상 동의한 슬롭만 Codex로 제거하고, 제거 후 회귀 검증을 실행한다.
|
|
163
|
+
|
|
106
164
|
### Step 5: 완료
|
|
107
165
|
|
|
108
|
-
|
|
109
|
-
모든 기준 3자 검증 통과 + 통합 검증 통과 → 완료 보고:
|
|
166
|
+
모든 기준 3자 검증 통과 + 통합 검증 통과 시 완료를 보고한다.
|
|
110
167
|
|
|
111
|
-
"🪨 Ralph 완료: {전체}/{전체} 기준 충족 (Consensus Score: {score}%)
|
|
112
|
-
변경 파일: {count}개
|
|
113
|
-
테스트: {pass}/{total} 통과
|
|
114
|
-
검증: Claude ✓ Codex ✓ Gemini ✓"
|
|
115
168
|
```
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
169
|
+
[tfx-persist 완료] {전체}/{전체} 기준 충족
|
|
170
|
+
Consensus Score: {score}%
|
|
171
|
+
변경 파일: {count}개
|
|
172
|
+
테스트: {pass}/{total} 통과
|
|
173
|
+
검증: Claude PASS | Codex PASS | Gemini PASS
|
|
119
174
|
```
|
|
120
|
-
같은 기준에서 3회 연속 검증 실패 시:
|
|
121
|
-
1. 접근법 변경 시도
|
|
122
|
-
2. 변경 후에도 실패 → AskUserQuestion으로 사용자 도움 요청
|
|
123
|
-
3. 사용자 지시 받은 후 재시도
|
|
124
175
|
|
|
125
|
-
|
|
126
|
-
→ 강제 진행 상황 보고 + 사용자 판단 요청
|
|
127
|
-
```
|
|
176
|
+
## ANTI-STUCK 메커니즘
|
|
128
177
|
|
|
129
|
-
|
|
178
|
+
같은 기준에서 3회 연속 검증 실패 시 즉시 실행한다:
|
|
130
179
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
180
|
+
1. 접근법을 변경하여 재시도한다 (다른 구현 전략 선택).
|
|
181
|
+
2. 변경 후에도 실패하면 AskUserQuestion으로 사용자 도움을 요청한다:
|
|
182
|
+
- 실패한 기준, 3회 시도 내역, 각 실패 이유를 제시한다.
|
|
183
|
+
3. 사용자 지시를 받은 후 재시도한다.
|
|
184
|
+
|
|
185
|
+
같은 전체 루프가 5회 반복 시:
|
|
186
|
+
- 강제로 진행 상황을 보고하고 AskUserQuestion으로 사용자 판단을 요청한다.
|
|
187
|
+
|
|
188
|
+
## ERROR RECOVERY
|
|
189
|
+
|
|
190
|
+
| 상황 | 대응 |
|
|
191
|
+
|------|------|
|
|
192
|
+
| tfx headless 타임아웃 | `--timeout` 900으로 올려 재시도 |
|
|
193
|
+
| 검증 결과 불일치 (2자 PASS, 1자 FAIL) | FAIL 근거를 구현 프롬프트에 포함하여 재작업 |
|
|
194
|
+
| 빌드 실패 | Codex에 빌드 로그 전달하여 수정 지시 |
|
|
195
|
+
| 무한 루프 감지 (5회 이상) | 강제 보고 + AskUserQuestion |
|
|
196
|
+
|
|
197
|
+
## TOKEN BUDGET
|
|
198
|
+
|
|
199
|
+
| 항목 | 토큰 |
|
|
200
|
+
|------|------|
|
|
201
|
+
| 기준당 구현 | ~3K |
|
|
202
|
+
| 기준당 3자 검증 | ~5K |
|
|
203
|
+
| 기준당 합계 | ~8K |
|
|
204
|
+
| 통합 검증 (Step 3) | ~15K |
|
|
205
|
+
| Deslop Pass (선택) | ~5K |
|
|
206
|
+
| **예시: 5개 기준** | **~55K** |
|
|
134
207
|
|
|
135
208
|
## 사용 예
|
|
136
209
|
|