triflux 3.2.0-dev.8 → 3.3.0-dev.1
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/bin/triflux.mjs +1296 -1055
- package/hooks/hooks.json +17 -0
- package/hooks/keyword-rules.json +20 -4
- package/hooks/pipeline-stop.mjs +54 -0
- package/hub/bridge.mjs +517 -318
- package/hub/hitl.mjs +45 -31
- package/hub/pipe.mjs +457 -0
- package/hub/pipeline/index.mjs +121 -0
- package/hub/pipeline/state.mjs +164 -0
- package/hub/pipeline/transitions.mjs +114 -0
- package/hub/router.mjs +422 -161
- package/hub/schema.sql +14 -0
- package/hub/server.mjs +499 -424
- package/hub/store.mjs +388 -314
- package/hub/team/cli-team-common.mjs +348 -0
- package/hub/team/cli-team-control.mjs +393 -0
- package/hub/team/cli-team-start.mjs +516 -0
- package/hub/team/cli-team-status.mjs +269 -0
- package/hub/team/cli.mjs +75 -1475
- package/hub/team/dashboard.mjs +1 -9
- package/hub/team/native.mjs +190 -130
- package/hub/team/nativeProxy.mjs +165 -78
- package/hub/team/orchestrator.mjs +15 -20
- package/hub/team/pane.mjs +137 -103
- package/hub/team/psmux.mjs +506 -0
- package/hub/team/session.mjs +393 -330
- package/hub/team/shared.mjs +13 -0
- package/hub/team/staleState.mjs +299 -0
- package/hub/tools.mjs +105 -31
- package/hub/workers/claude-worker.mjs +446 -0
- package/hub/workers/codex-mcp.mjs +414 -0
- package/hub/workers/factory.mjs +18 -0
- package/hub/workers/gemini-worker.mjs +349 -0
- package/hub/workers/interface.mjs +41 -0
- package/hud/hud-qos-status.mjs +1790 -1788
- package/package.json +4 -1
- package/scripts/__tests__/keyword-detector.test.mjs +8 -8
- package/scripts/keyword-detector.mjs +15 -0
- package/scripts/lib/keyword-rules.mjs +4 -1
- package/scripts/preflight-cache.mjs +72 -0
- package/scripts/psmux-steering-prototype.sh +368 -0
- package/scripts/setup.mjs +136 -71
- package/scripts/tfx-route-worker.mjs +161 -0
- package/scripts/tfx-route.sh +485 -91
- package/skills/tfx-auto/SKILL.md +90 -564
- package/skills/tfx-auto-codex/SKILL.md +1 -3
- package/skills/tfx-codex/SKILL.md +1 -4
- package/skills/tfx-doctor/SKILL.md +1 -0
- package/skills/tfx-gemini/SKILL.md +1 -4
- package/skills/tfx-multi/SKILL.md +378 -0
- package/skills/tfx-setup/SKILL.md +1 -4
- package/skills/tfx-team/SKILL.md +0 -304
package/skills/tfx-auto/SKILL.md
CHANGED
|
@@ -26,69 +26,29 @@ argument-hint: "<command|task> [args...]"
|
|
|
26
26
|
|
|
27
27
|
# tfx-auto — 통합 CLI 오케스트레이터
|
|
28
28
|
|
|
29
|
-
> **MANDATORY
|
|
29
|
+
> **MANDATORY RULES**
|
|
30
30
|
>
|
|
31
|
-
>
|
|
32
|
-
>
|
|
33
|
-
>
|
|
34
|
-
>
|
|
35
|
-
> executor, build-fixer, debugger, deep-executor, architect, planner, critic, analyst,
|
|
36
|
-
> code-reviewer, security-reviewer, quality-reviewer, scientist, document-specialist,
|
|
37
|
-
> designer, writer
|
|
38
|
-
>
|
|
39
|
-
> **Task()로 실행해야 하는 에이전트 (Claude 네이티브 — 예외 4개만):**
|
|
40
|
-
> explore, verifier, test-engineer, qa-tester
|
|
41
|
-
>
|
|
42
|
-
> **트리아지 (Phase 2)는 예외:** Codex `--full-auto` + Claude 인라인 보정. Agent 스폰 없음.
|
|
43
|
-
>
|
|
44
|
-
> **위반 시 Codex 무료 토큰 대신 Claude 유료 토큰을 낭비하게 된다.**
|
|
45
|
-
|
|
46
|
-
> **COST RULE — Codex/Gemini 최대 활용, Claude 최소화**
|
|
47
|
-
>
|
|
48
|
-
> Codex Pro 무료 기간 — **모든 작업을 가능한 한 Codex/Gemini에 할당하라.**
|
|
49
|
-
>
|
|
50
|
-
> **라우팅 우선순위 (반드시 순서대로):**
|
|
51
|
-
> 1. **Codex 우선** — 코드 구현/수정/분석/리뷰/디버깅/리서치/설계 전부
|
|
52
|
-
> 2. **Gemini 우선** — 문서/UI/디자인/멀티모달
|
|
53
|
-
> 3. **Claude는 최후 수단** — Glob/Grep/Bash 직접 접근이 필수인 경우만 (탐색/테스트/검증)
|
|
54
|
-
>
|
|
55
|
-
> **Codex 분류 시**: `claude`를 선택하기 전에 "이 작업이 Codex로 가능한가?" 반드시 재확인.
|
|
56
|
-
> 코드 읽기/분석도 Codex로 가능하다. 리서치도 Codex(MCP: context7, brave-search)로 가능하다.
|
|
57
|
-
> **claude는 Glob/Grep/Read/Bash 직접 실행이 반드시 필요할 때만 선택하라.**
|
|
31
|
+
> 1. **실행**: CLI 에이전트는 반드시 `Bash("bash ~/.claude/scripts/tfx-route.sh ...")`. Claude 네이티브(explore/verifier/test-engineer/qa-tester)만 `Agent()`.
|
|
32
|
+
> 2. **비용**: Codex 우선 → Gemini → Claude 최후 수단. `claude` 선택 전 "Codex로 가능한가?" 재확인.
|
|
33
|
+
> 3. **DAG**: SEQUENTIAL/DAG이면 레벨 기반 순차 실행. `.omc/context/{sid}/` 생성, context_output 저장, 실패 시 후속 SKIP.
|
|
34
|
+
> 4. **트리아지**: Codex `--full-auto` 분류 + Opus 인라인 분해. Agent 스폰 금지.
|
|
58
35
|
|
|
59
|
-
|
|
60
|
-
>
|
|
61
|
-
> 1. graph_type이 SEQUENTIAL 또는 DAG이면 → **반드시 레벨 기반 순차 실행**
|
|
62
|
-
> 2. `.omc/context/{session_id}/` 디렉토리 생성했는가?
|
|
63
|
-
> 3. Level 0 완료 후 context_output 파일을 저장했는가?
|
|
64
|
-
> 4. Level 1+ 태스크에 tfx-route.sh **5번째 인자로 context file**을 전달했는가?
|
|
65
|
-
> 5. 실패한 태스크의 후속 의존 태스크를 SKIP 처리했는가?
|
|
36
|
+
## 모드
|
|
66
37
|
|
|
67
|
-
|
|
38
|
+
| 입력 형식 | 모드 | 트리아지 |
|
|
39
|
+
|-----------|------|----------|
|
|
40
|
+
| `/implement JWT 추가` | 커맨드 숏컷 | 없음 (즉시 실행) |
|
|
41
|
+
| `/tfx-auto "리팩터링 + UI"` | 자동 | Codex 분류 → Opus 분해 |
|
|
42
|
+
| `/tfx-auto 3:codex "리뷰"` | 수동 | Opus 분해만 |
|
|
68
43
|
|
|
69
|
-
|
|
70
|
-
|-----------|------|----------|------|
|
|
71
|
-
| `/implement JWT 추가` | **커맨드 숏컷** | 없음 (즉시 실행) | 단일 에이전트 직행 |
|
|
72
|
-
| `/tfx-auto "리팩터링 + UI 개선"` | **자동** | Codex 분류 → Opus 분해 | 복잡한 작업 자동 분배 |
|
|
73
|
-
| `/tfx-auto 3:codex "리뷰"` | **수동** | Opus 분해만 | 에이전트 직접 지정 |
|
|
44
|
+
## 커맨드 숏컷
|
|
74
45
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
```
|
|
78
|
-
/implement JWT 인증 미들웨어 추가 ← 커맨드 숏컷
|
|
79
|
-
/tfx-auto "작업 설명" ← 자동 모드
|
|
80
|
-
/tfx-auto N:agent_type "작업 설명" ← 수동 모드
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## 커맨드 숏컷 (트리아지 없이 즉시 실행)
|
|
84
|
-
|
|
85
|
-
커맨드명이 매칭되면 트리아지를 건너뛰고 tfx-route.sh로 즉시 라우팅.
|
|
86
|
-
타임아웃은 tfx-route.sh 에이전트별 기본값 사용.
|
|
46
|
+
커맨드명 매칭 시 트리아지 없이 즉시 실행. 패턴: `Bash("bash ~/.claude/scripts/tfx-route.sh {에이전트} '{PROMPT}' {MCP}")`.
|
|
87
47
|
|
|
88
48
|
### Codex 직행
|
|
89
49
|
|
|
90
|
-
| 커맨드 | 에이전트 | MCP
|
|
91
|
-
|
|
50
|
+
| 커맨드 | 에이전트 | MCP |
|
|
51
|
+
|--------|---------|-----|
|
|
92
52
|
| `implement` | executor | implement |
|
|
93
53
|
| `build` | build-fixer | implement |
|
|
94
54
|
| `research` | document-specialist | analyze |
|
|
@@ -98,568 +58,134 @@ argument-hint: "<command|task> [args...]"
|
|
|
98
58
|
| `cleanup` | executor | implement |
|
|
99
59
|
| `pm` | planner | analyze |
|
|
100
60
|
|
|
101
|
-
|
|
102
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh {에이전트} '{PROMPT}' {MCP프로필}")
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Codex 2단계 (분석 → 실행)
|
|
61
|
+
### 2단계: `improve`
|
|
106
62
|
|
|
107
|
-
|
|
108
|
-
|--------|-------|-------|------|
|
|
109
|
-
| `improve` | code-reviewer (review) | executor (implement) | 2단계는 사용자 승인 후 |
|
|
63
|
+
1단계 `code-reviewer '{PROMPT}' review` → 사용자 승인 → 2단계 `executor '리뷰 반영: {요약}' implement`
|
|
110
64
|
|
|
111
|
-
|
|
112
|
-
# 1단계 — 분석
|
|
113
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh code-reviewer '{PROMPT}' review")
|
|
114
|
-
# 사용자에게 분석 결과 보고, 승인 요청
|
|
115
|
-
# 2단계 — 수정 (승인 시)
|
|
116
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh executor '리뷰 결과 반영: {1단계_결과_요약}' implement")
|
|
117
|
-
```
|
|
65
|
+
### 병렬
|
|
118
66
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
| 커맨드 | 에이전트들 | MCP 프로필 |
|
|
122
|
-
|--------|----------|-----------|
|
|
67
|
+
| 커맨드 | 에이전트들 (병렬, run_in_background=true) | MCP |
|
|
68
|
+
|--------|------------------------------------------|-----|
|
|
123
69
|
| `analyze` | quality-reviewer + security-reviewer | review |
|
|
124
70
|
| `spec-panel` | architect + analyst + critic | analyze |
|
|
125
71
|
| `business-panel` | analyst + architect | analyze |
|
|
126
72
|
|
|
127
|
-
```bash
|
|
128
|
-
# analyze — 2개 병렬
|
|
129
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh quality-reviewer '{PROMPT}' review", run_in_background=true)
|
|
130
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh security-reviewer '{PROMPT}' review", run_in_background=true)
|
|
131
|
-
|
|
132
|
-
# spec-panel — 3개 병렬
|
|
133
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh architect '기술 실현성 평가: {PROMPT}' analyze", run_in_background=true)
|
|
134
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh analyst '요구사항 완전성 평가: {PROMPT}' analyze", run_in_background=true)
|
|
135
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh critic '비판적 검토: {PROMPT}' analyze", run_in_background=true)
|
|
136
|
-
|
|
137
|
-
# business-panel — 2개 병렬
|
|
138
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh analyst '시장/전략 분석: {PROMPT}' analyze", run_in_background=true)
|
|
139
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh architect '기술-비즈니스 연계 분석: {PROMPT}' analyze", run_in_background=true)
|
|
140
|
-
```
|
|
141
|
-
|
|
142
73
|
### Gemini 직행
|
|
143
74
|
|
|
144
|
-
| 커맨드 | 에이전트 | MCP
|
|
145
|
-
|
|
75
|
+
| 커맨드 | 에이전트 | MCP |
|
|
76
|
+
|--------|---------|-----|
|
|
146
77
|
| `explain` | writer | docs |
|
|
147
78
|
| `document` | writer | docs |
|
|
148
79
|
|
|
149
|
-
```bash
|
|
150
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh writer '{PROMPT}' docs")
|
|
151
|
-
```
|
|
152
|
-
|
|
153
80
|
### Claude 네이티브
|
|
154
81
|
|
|
155
|
-
| 커맨드 |
|
|
156
|
-
|
|
157
|
-
| `test` | test-engineer
|
|
158
|
-
| `reflect` | verifier
|
|
159
|
-
|
|
160
|
-
```
|
|
161
|
-
Agent(subagent_type="oh-my-claudecode:test-engineer", model="sonnet", prompt="{PROMPT}")
|
|
162
|
-
Agent(subagent_type="oh-my-claudecode:verifier", model="sonnet", prompt="{PROMPT}")
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### 복합 워크플로우
|
|
166
|
-
|
|
167
|
-
#### estimate — 규모 추정
|
|
168
|
-
|
|
169
|
-
```bash
|
|
170
|
-
# 1. 탐색 (Claude Haiku)
|
|
171
|
-
Agent(subagent_type="oh-my-claudecode:explore", model="haiku",
|
|
172
|
-
prompt="다음 작업의 영향 범위 탐색 — 관련 파일, 모듈, 의존성 목록화: {PROMPT}")
|
|
173
|
-
|
|
174
|
-
# 2. 분석 (Codex)
|
|
175
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh analyst '탐색 결과: {explore_결과}. 작업: {PROMPT}. 평가: 영향범위, 복잡도(S/M/L/XL), 리스크, 선행조건, 권장실행방식' analyze")
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
#### index-repo — 코드베이스 인덱싱
|
|
179
|
-
|
|
180
|
-
```bash
|
|
181
|
-
# mode 파싱: "mode=quick" → QUICK, "mode=update" → UPDATE, 기본 → FULL
|
|
182
|
-
|
|
183
|
-
# 1. 구조 탐색 (Claude Haiku)
|
|
184
|
-
Agent(subagent_type="oh-my-claudecode:explore", model="haiku",
|
|
185
|
-
prompt="코드베이스 전체 구조 매핑: 디렉토리 트리, 진입점, 설정 파일, 테스트 구조")
|
|
82
|
+
| 커맨드 | 실행 |
|
|
83
|
+
|--------|------|
|
|
84
|
+
| `test` | `Agent(subagent_type="oh-my-claudecode:test-engineer", model="sonnet")` |
|
|
85
|
+
| `reflect` | `Agent(subagent_type="oh-my-claudecode:verifier", model="sonnet")` |
|
|
186
86
|
|
|
187
|
-
|
|
188
|
-
Agent(subagent_type="oh-my-claudecode:explore", model="haiku",
|
|
189
|
-
prompt="모듈 간 import 관계 분석: 내부 import 그래프, 순환 의존성, API 경계, 공유 유틸리티")
|
|
87
|
+
### 복합
|
|
190
88
|
|
|
191
|
-
|
|
192
|
-
|
|
89
|
+
| 커맨드 | 흐름 |
|
|
90
|
+
|--------|------|
|
|
91
|
+
| `estimate` | explore(haiku) → analyst(codex): 영향범위, 복잡도(S/M/L/XL), 리스크 |
|
|
92
|
+
| `index-repo` | explore(haiku) × 2 → Write(PROJECT_INDEX.md). mode=quick/update/full |
|
|
193
93
|
|
|
194
|
-
##
|
|
94
|
+
## 트리아지
|
|
195
95
|
|
|
196
|
-
|
|
96
|
+
**자동 모드:**
|
|
97
|
+
1. Codex 분류: `codex exec --full-auto --skip-git-repo-check` → JSON `{parts: [{description, agent: "codex|gemini|claude"}]}`
|
|
98
|
+
2. Opus 인라인 분해: `{graph_type: "INDEPENDENT|SEQUENTIAL|DAG", subtasks: [{id, description, scope, agent, mcp_profile, depends_on, context_output, context_input}]}`
|
|
99
|
+
3. 실패 시 Opus가 직접 분류+분해
|
|
197
100
|
|
|
198
|
-
|
|
199
|
-
- **agent_type** (선택) — `codex`, `gemini`, `claude`, 또는 OMC 에이전트명
|
|
200
|
-
- **task** (필수) — 작업 설명
|
|
201
|
-
|
|
202
|
-
### 에이전트 매핑
|
|
101
|
+
**수동 모드 (`N:agent_type`):** Codex 분류 건너뜀 → Opus가 N개 서브태스크 분해. N > 10 거부.
|
|
203
102
|
|
|
204
|
-
|
|
205
|
-
|------|-----|------|
|
|
206
|
-
| `codex` / `executor` / `debugger` / `deep-executor` | Codex CLI | 코드 구현/분석/디버깅 |
|
|
207
|
-
| `gemini` / `designer` / `writer` | Gemini CLI | 문서/UI |
|
|
208
|
-
| `claude` / `explore` / `verifier` / `test-engineer` | Claude Task | 탐색/검증 (네이티브) |
|
|
209
|
-
| `code-reviewer` / `security-reviewer` / `quality-reviewer` | Codex CLI (exec review) | 리뷰 (전용 review 커맨드) |
|
|
210
|
-
| `scientist` | Codex CLI (high, 480s) | 일반 리서치 (검색+요약) |
|
|
211
|
-
| `scientist-deep` | Codex CLI (thorough, 1200s) | 심층 리서치 (논문 분석, 교차 검증) |
|
|
212
|
-
| `document-specialist` | Codex CLI | 문서 조사 (analyze MCP) |
|
|
213
|
-
| `architect` / `planner` / `critic` / `analyst` | Codex CLI (xhigh + Opus 검증) | 설계/계획 (analyze MCP) |
|
|
103
|
+
## 실행
|
|
214
104
|
|
|
215
|
-
###
|
|
105
|
+
### CLI 에이전트 (Codex/Gemini)
|
|
216
106
|
|
|
217
107
|
```bash
|
|
218
|
-
#
|
|
219
|
-
/tfx-
|
|
220
|
-
/tfx-auto "이 프로젝트의 보안 취약점 분석"
|
|
221
|
-
/tfx-auto "src/api 전체 TypeScript 에러 수정"
|
|
222
|
-
|
|
223
|
-
# 수동 모드 — agent 직접 지정
|
|
224
|
-
/tfx-auto 3:codex "src/api, src/auth, src/payment 각각 리뷰"
|
|
225
|
-
/tfx-auto 2:gemini "UI 컴포넌트 접근성 개선"
|
|
226
|
-
/tfx-auto 1:codex "결제 모듈 구현"
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
## 필수 조건
|
|
230
|
-
|
|
231
|
-
- `~/.claude/scripts/tfx-route.sh` — CLI 라우팅 래퍼 (필수)
|
|
232
|
-
- **codex** CLI: `npm install -g @openai/codex` (codex 워커 사용 시)
|
|
233
|
-
- **gemini** CLI: `npm install -g @google/gemini-cli` (gemini 워커 사용 시)
|
|
234
|
-
- tmux **불필요**
|
|
235
|
-
|
|
236
|
-
## 아키텍처
|
|
237
|
-
|
|
238
|
-
### 트리아지 (Codex 분류 → Opus 설계)
|
|
239
|
-
|
|
240
|
-
```
|
|
241
|
-
사용자 입력
|
|
242
|
-
|
|
|
243
|
-
+-- agent 지정됨? ──YES──→ [Opus 인라인 분해] → 병렬 실행
|
|
244
|
-
|
|
|
245
|
-
NO
|
|
246
|
-
|
|
|
247
|
-
v
|
|
248
|
-
[Codex 분류] (--full-auto, 무료)
|
|
249
|
-
"이 작업은 codex/gemini/claude 중 뭐가 적합?"
|
|
250
|
-
→ 가벼운 분류 결과
|
|
251
|
-
|
|
|
252
|
-
v
|
|
253
|
-
[Opus 설계+분해] (인라인, Agent 스폰 없음)
|
|
254
|
-
→ 구체 에이전트 매핑 + scope + DAG 설계
|
|
255
|
-
→ 오케스트레이터 자체가 Opus이므로 별도 Agent 불필요
|
|
256
|
-
|
|
|
257
|
-
v
|
|
258
|
-
[tfx-route.sh × N 병렬 실행]
|
|
259
|
-
→ Windows면 Gemini 안정화 자동 적용
|
|
260
|
-
|
|
|
261
|
-
v
|
|
262
|
-
[결과 수집 + 보고]
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
> **설계는 Opus 품질, 비용은 최소화:**
|
|
266
|
-
> - 분류(가벼운 작업) → Codex 무료
|
|
267
|
-
> - 설계+분해(품질 중요) → Opus 인라인 (오케스트레이터가 직접)
|
|
268
|
-
> - Agent 스폰 없음 → MANDATORY RULE 준수 + 오버헤드 제거
|
|
269
|
-
|
|
270
|
-
### 전체 실행 흐름
|
|
271
|
-
|
|
272
|
-
```
|
|
273
|
-
User: "/tfx-auto 인증 리팩터링 + UI 개선 + 테스트"
|
|
274
|
-
|
|
|
275
|
-
v
|
|
276
|
-
[Phase 1: 입력 파싱] — 자동 모드 감지
|
|
277
|
-
|
|
|
278
|
-
v
|
|
279
|
-
[Phase 2a: Codex 분류]
|
|
280
|
-
Bash("codex exec --full-auto --skip-git-repo-check '분류 프롬프트'")
|
|
281
|
-
→ [{auth 리팩터링, codex}, {UI 개선, gemini}, {테스트, claude}]
|
|
282
|
-
(실패 시 Opus가 직접 분류+분해)
|
|
283
|
-
|
|
|
284
|
-
v
|
|
285
|
-
[Phase 2b: Opus 설계+분해 (인라인)]
|
|
286
|
-
codex → executor (implement, scope: src/auth/)
|
|
287
|
-
gemini → designer (docs, scope: src/components/login/)
|
|
288
|
-
claude → test-engineer (Claude 네이티브)
|
|
289
|
-
graph_type: DAG, depends_on 설정
|
|
290
|
-
|
|
|
291
|
-
v
|
|
292
|
-
[Phase 3: 병렬 실행]
|
|
293
|
-
Bash("tfx-route.sh executor '리팩터링' implement", run_in_background=true)
|
|
294
|
-
Bash("tfx-route.sh designer 'UI 개선' docs", run_in_background=true)
|
|
295
|
-
Agent(subagent_type="oh-my-claudecode:test-engineer", model="sonnet", run_in_background=true)
|
|
296
|
-
|
|
|
297
|
-
v
|
|
298
|
-
[Phase 4: 결과 수집]
|
|
299
|
-
[Phase 5: 실패 처리 → Claude fallback]
|
|
300
|
-
[Phase 6: 보고]
|
|
301
|
-
```
|
|
108
|
+
# Level 0 / INDEPENDENT
|
|
109
|
+
Bash("bash ~/.claude/scripts/tfx-route.sh {agent} '{prompt}' {mcp_profile}", run_in_background=true)
|
|
302
110
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
### Phase 1: 입력 파싱 (모드 감지)
|
|
306
|
-
|
|
307
|
-
사용자 입력에서 모드를 자동 감지:
|
|
308
|
-
|
|
309
|
-
```
|
|
310
|
-
입력: "3:codex src/api 리뷰"
|
|
311
|
-
→ 수동 모드: N=3, agent=codex, task="src/api 리뷰"
|
|
312
|
-
|
|
313
|
-
입력: "인증 모듈 리팩터링 + UI 개선"
|
|
314
|
-
→ 자동 모드: task="인증 모듈 리팩터링 + UI 개선"
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
**감지 규칙:**
|
|
318
|
-
- `N:agent_type` 패턴 존재 → 수동 모드
|
|
319
|
-
- 그 외 → 자동 모드
|
|
320
|
-
- N > 10이면 거부
|
|
321
|
-
|
|
322
|
-
### Phase 2: 트리아지 (Codex 분류 → Opus 설계)
|
|
323
|
-
|
|
324
|
-
#### 자동 모드 — Step 2a: Codex 분류
|
|
325
|
-
|
|
326
|
-
Codex가 작업 유형을 분류 (무료, 가벼운 작업):
|
|
327
|
-
|
|
328
|
-
```bash
|
|
329
|
-
Bash("codex exec --full-auto --skip-git-repo-check '다음 작업을 분석하고 각 부분에 적합한 agent를 분류하라.
|
|
330
|
-
|
|
331
|
-
agent 선택:
|
|
332
|
-
- codex: 코드 구현/수정/분석/리뷰/디버깅/설계 (기본값 — 확신 없으면 codex)
|
|
333
|
-
- gemini: 문서/UI/디자인/멀티모달
|
|
334
|
-
- claude: 코드베이스 탐색/테스트 실행/검증 (최후 수단)
|
|
335
|
-
|
|
336
|
-
리서치 agent:
|
|
337
|
-
- scientist: 일반 리서치 (high, 480s)
|
|
338
|
-
- scientist-deep: 심층 리서치 (thorough, 1200s)
|
|
339
|
-
|
|
340
|
-
작업: {task}
|
|
341
|
-
|
|
342
|
-
JSON 형식:
|
|
343
|
-
{
|
|
344
|
-
\"parts\": [
|
|
345
|
-
{ \"description\": \"...\", \"agent\": \"codex|gemini|claude\" }
|
|
346
|
-
]
|
|
347
|
-
}
|
|
348
|
-
'")
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
> **Codex 분류 실패 시:** 오케스트레이터(Opus)가 직접 분류+분해 수행.
|
|
352
|
-
|
|
353
|
-
#### 자동 모드 — Step 2b: Opus 설계+분해 (인라인)
|
|
354
|
-
|
|
355
|
-
분류 결과를 받아 **오케스트레이터(Opus)가 직접** 설계+분해. Agent 스폰 없음.
|
|
356
|
-
|
|
357
|
-
```
|
|
358
|
-
오케스트레이터가 인라인으로 수행:
|
|
359
|
-
1. 분류 결과를 기반으로 독립적인 서브태스크로 분해
|
|
360
|
-
2. 각 서브태스크에 구체 agent 배정:
|
|
361
|
-
- codex → executor / debugger / deep-executor / scientist 등
|
|
362
|
-
- gemini → designer / writer
|
|
363
|
-
- claude → explore / test-engineer / verifier
|
|
364
|
-
3. scope (파일/모듈/영역) 명시
|
|
365
|
-
4. 의존 관계 설정 (depends_on, context_output, context_input)
|
|
366
|
-
5. graph_type 결정 (INDEPENDENT / SEQUENTIAL / DAG)
|
|
367
|
-
|
|
368
|
-
결과 JSON:
|
|
369
|
-
{
|
|
370
|
-
"graph_type": "INDEPENDENT|SEQUENTIAL|DAG",
|
|
371
|
-
"subtasks": [
|
|
372
|
-
{
|
|
373
|
-
"id": "t1",
|
|
374
|
-
"description": "...",
|
|
375
|
-
"scope": "src/auth/",
|
|
376
|
-
"agent": "executor",
|
|
377
|
-
"mcp_profile": "implement",
|
|
378
|
-
"depends_on": [],
|
|
379
|
-
"context_output": "t1-auth-refactor.md",
|
|
380
|
-
"context_input": []
|
|
381
|
-
}
|
|
382
|
-
]
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
의존 관계 규칙:
|
|
386
|
-
- depends_on: 선행 태스크 ID 목록. 순환 금지.
|
|
387
|
-
- context_output: 후속 태스크에 전달할 결과 파일명
|
|
388
|
-
- context_input: 참조할 선행 태스크의 context_output 목록
|
|
111
|
+
# Level 1+ (컨텍스트 의존) — 4번째=timeout(빈값), 5번째=context_file
|
|
112
|
+
Bash("bash ~/.claude/scripts/tfx-route.sh {agent} '{prompt}' {mcp_profile} '' .omc/context/{sid}/combined-{tid}.md", run_in_background=true)
|
|
389
113
|
```
|
|
390
114
|
|
|
391
|
-
|
|
392
|
-
> 오케스트레이터 자체가 Opus. 같은 모델의 Agent를 스폰하면 오버헤드만 추가.
|
|
393
|
-
> 설계 품질은 Opus급 그대로, 토큰 절약 + MANDATORY RULE 준수.
|
|
394
|
-
|
|
395
|
-
#### 수동 모드 — Opus 인라인 분해
|
|
396
|
-
|
|
397
|
-
agent가 지정된 경우 (`N:agent_type`), Codex 분류를 건너뛰고 Opus가 직접 분해:
|
|
398
|
-
|
|
399
|
-
```
|
|
400
|
-
오케스트레이터가 인라인으로 처리:
|
|
401
|
-
1. 작업을 정확히 {N}개의 독립 서브태스크로 분해
|
|
402
|
-
2. 모든 서브태스크에 {agent_type} 배정
|
|
403
|
-
3. 각 서브태스크는 파일 충돌 없이 독립 실행 가능해야 함
|
|
404
|
-
4. JSON 형식으로 구성 후 Phase 3으로 진행
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
### Phase 3: DAG 기반 실행
|
|
408
|
-
|
|
409
|
-
graph_type에 따라 실행 전략이 달라진다:
|
|
410
|
-
|
|
411
|
-
#### INDEPENDENT: 전부 병렬 (기존 동작과 동일)
|
|
412
|
-
|
|
413
|
-
모든 서브태스크를 단일 메시지에서 병렬로 실행:
|
|
414
|
-
|
|
415
|
-
```bash
|
|
416
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh {agent} '{prompt}' {mcp_profile}",
|
|
417
|
-
run_in_background=true)
|
|
418
|
-
```
|
|
419
|
-
|
|
420
|
-
#### SEQUENTIAL / DAG: 레벨 기반 실행
|
|
421
|
-
|
|
422
|
-
**Step 1: 토폴로지 정렬 → 레벨 할당**
|
|
423
|
-
|
|
424
|
-
depends_on 관계를 분석하여 실행 레벨을 결정:
|
|
425
|
-
- Level 0: depends_on이 빈 태스크 (루트)
|
|
426
|
-
- Level N: 모든 의존 태스크가 Level 0~(N-1)에 속하는 태스크
|
|
427
|
-
|
|
428
|
-
예시:
|
|
429
|
-
```
|
|
430
|
-
t1(리서치A), t2(리서치B) → Level 0 (병렬)
|
|
431
|
-
t3(구현, depends_on:[t1,t2]) → Level 1 (t1,t2 완료 후)
|
|
432
|
-
t4(테스트, depends_on:[t3]) → Level 2 (t3 완료 후)
|
|
433
|
-
```
|
|
434
|
-
|
|
435
|
-
**Step 2: 컨텍스트 디렉토리 생성**
|
|
436
|
-
|
|
437
|
-
```bash
|
|
438
|
-
Bash("mkdir -p .omc/context/{session_id}")
|
|
439
|
-
```
|
|
440
|
-
|
|
441
|
-
**Step 3: 레벨별 순차 실행**
|
|
115
|
+
### Claude 네이티브
|
|
442
116
|
|
|
443
117
|
```
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
1. 해당 레벨의 모든 태스크를 수집
|
|
447
|
-
|
|
448
|
-
2. 각 태스크에 대해:
|
|
449
|
-
a. context_input이 있으면 → 컨텍스트 머지:
|
|
450
|
-
# 다중 선행 컨텍스트를 하나로 합침
|
|
451
|
-
for ctx in context_input:
|
|
452
|
-
echo "=== Context from: {source_task_id} ===" >> combined.md
|
|
453
|
-
cat .omc/context/{session_id}/{ctx} >> combined.md
|
|
454
|
-
b. CLI 에이전트:
|
|
455
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh {agent} '{prompt}' {mcp} {timeout} {context_file}",
|
|
456
|
-
run_in_background=(같은 레벨에 다른 태스크가 있으면))
|
|
457
|
-
c. Claude 네이티브 에이전트:
|
|
458
|
-
Agent(subagent_type="oh-my-claudecode:{agent}", model="{model}",
|
|
459
|
-
prompt="{prompt}\n\n<prior_context>\n{context_content}\n</prior_context>",
|
|
460
|
-
run_in_background=(같은 레벨에 다른 태스크가 있으면))
|
|
461
|
-
|
|
462
|
-
3. 해당 레벨의 모든 태스크 완료 대기
|
|
463
|
-
|
|
464
|
-
4. 각 완료된 태스크에 대해:
|
|
465
|
-
a. context_output이 있으면 → 결과 저장:
|
|
466
|
-
- CLI: OUTPUT 섹션 추출 → .omc/context/{session_id}/{context_output}
|
|
467
|
-
- Claude: 반환값 → .omc/context/{session_id}/{context_output}
|
|
468
|
-
b. 실패/타임아웃 → 의존 태스크 SKIP 처리 (실패 전파)
|
|
469
|
-
|
|
470
|
-
5. 다음 레벨로 진행
|
|
471
|
-
```
|
|
472
|
-
|
|
473
|
-
#### CLI 에이전트 실행 (Codex/Gemini)
|
|
474
|
-
|
|
475
|
-
```bash
|
|
476
|
-
# 컨텍스트 없는 경우 (Level 0 또는 독립)
|
|
477
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh {agent} '{prompt}' {mcp_profile}",
|
|
478
|
-
run_in_background=true)
|
|
479
|
-
|
|
480
|
-
# 컨텍스트 있는 경우 (Level 1+, 의존 태스크)
|
|
481
|
-
Bash("bash ~/.claude/scripts/tfx-route.sh {agent} '{prompt}' {mcp_profile} .omc/context/{sid}/combined-{task_id}.md",
|
|
482
|
-
run_in_background=true)
|
|
118
|
+
Agent(subagent_type="oh-my-claudecode:{agent}", model="{model}", prompt="{prompt}", run_in_background=true)
|
|
119
|
+
# 컨텍스트 있으면 prompt에 <prior_context>...</prior_context> 추가
|
|
483
120
|
```
|
|
484
121
|
|
|
485
|
-
|
|
486
|
-
- Gemini 워커에 `--timeout 60` 플래그 자동 추가
|
|
487
|
-
- health check: 실행 후 10초 내 응답 없으면 재시작
|
|
488
|
-
- `enableInteractiveShell=false`로 node-pty 우회
|
|
489
|
-
|
|
490
|
-
#### Claude 네이티브 에이전트
|
|
122
|
+
### 에이전트 매핑
|
|
491
123
|
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
run_in_background=true)
|
|
501
|
-
```
|
|
124
|
+
| 입력 | CLI | MCP |
|
|
125
|
+
|------|-----|-----|
|
|
126
|
+
| codex / executor / debugger / deep-executor | Codex | implement |
|
|
127
|
+
| architect / planner / critic / analyst | Codex (xhigh) | analyze |
|
|
128
|
+
| scientist / document-specialist | Codex | analyze |
|
|
129
|
+
| code-reviewer / security-reviewer / quality-reviewer | Codex (review) | review |
|
|
130
|
+
| gemini / designer / writer | Gemini | docs |
|
|
131
|
+
| claude / explore / verifier / test-engineer / qa-tester | Claude native | — |
|
|
502
132
|
|
|
503
|
-
|
|
133
|
+
### MCP 프로필 자동 결정
|
|
504
134
|
|
|
505
|
-
| 에이전트 | MCP
|
|
506
|
-
|
|
135
|
+
| 에이전트 | MCP |
|
|
136
|
+
|----------|-----|
|
|
507
137
|
| executor, build-fixer, debugger, deep-executor | implement |
|
|
508
|
-
| architect, planner, critic, analyst | analyze |
|
|
509
|
-
| scientist, document-specialist | analyze |
|
|
138
|
+
| architect, planner, critic, analyst, scientist, document-specialist | analyze |
|
|
510
139
|
| code-reviewer, security-reviewer, quality-reviewer | review |
|
|
511
140
|
| designer, writer | docs |
|
|
512
141
|
|
|
513
|
-
|
|
142
|
+
### 결과 파싱
|
|
514
143
|
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
144
|
+
| exit_code + status | 사용할 출력 |
|
|
145
|
+
|--------------------|-----------|
|
|
146
|
+
| 0 + success | `=== OUTPUT ===` 섹션 |
|
|
147
|
+
| 124 + timeout | `=== PARTIAL OUTPUT ===` |
|
|
148
|
+
| ≠0 + failed | STDERR → Claude fallback |
|
|
518
149
|
|
|
519
|
-
|
|
150
|
+
OUTPUT 추출: `echo "$result" | sed -n '/^=== OUTPUT ===/,/^=== /{/^=== OUTPUT ===/d;/^=== /d;p}'`
|
|
520
151
|
|
|
521
|
-
|
|
522
|
-
```bash
|
|
523
|
-
# OUTPUT 추출
|
|
524
|
-
echo "$result" | sed -n '/^=== OUTPUT ===/,/^=== /{/^=== OUTPUT ===/d;/^=== /d;p}'
|
|
525
|
-
```
|
|
152
|
+
### 실패 처리
|
|
526
153
|
|
|
527
|
-
|
|
154
|
+
1차 → `Agent(subagent_type="oh-my-claudecode:executor", model="sonnet")` fallback.
|
|
155
|
+
2차 연속 실패 → 실패 보고 + 성공 결과만 종합.
|
|
528
156
|
|
|
529
|
-
|
|
530
|
-
```bash
|
|
531
|
-
Bash("node ~/.claude/scripts/token-snapshot.mjs snapshot pre-{subtask_id}")
|
|
532
|
-
```
|
|
533
|
-
|
|
534
|
-
각 서브태스크 완료 후, 토큰 상태 캡처 + diff 계산:
|
|
535
|
-
```bash
|
|
536
|
-
Bash("node ~/.claude/scripts/token-snapshot.mjs snapshot post-{subtask_id}")
|
|
537
|
-
Bash("node ~/.claude/scripts/token-snapshot.mjs diff pre-{subtask_id} post-{subtask_id} --agent {agent} --cli {cli} --id {subtask_id}")
|
|
538
|
-
```
|
|
539
|
-
|
|
540
|
-
> **참고:** tfx-route.sh가 실행별 토큰을 JSONL 로그에 직접 기록하므로, 병렬 실행 시에도 정확한 추적 가능.
|
|
541
|
-
> 스냅샷 diff는 단일 워커 검증용, 로그 토큰은 병렬 워커 구분용으로 이중 추적.
|
|
542
|
-
|
|
543
|
-
### Phase 4: 결과 수집
|
|
544
|
-
|
|
545
|
-
모든 백그라운드 작업 완료 후 결과 수집.
|
|
546
|
-
|
|
547
|
-
#### CLI 워커 결과 파싱
|
|
548
|
-
|
|
549
|
-
`=== TFX-ROUTE RESULT ===` 헤더에서:
|
|
550
|
-
|
|
551
|
-
| 필드 | 의미 |
|
|
552
|
-
|------|------|
|
|
553
|
-
| `exit_code: 0` + `status: success` | 성공. OUTPUT 섹션 사용 |
|
|
554
|
-
| `exit_code: 0` + `status: success_with_warnings` | 성공 + 경고 |
|
|
555
|
-
| `exit_code: 124` + `status: timeout` | 타임아웃. PARTIAL OUTPUT 사용 |
|
|
556
|
-
| `exit_code: ≠0` + `status: failed` | 실패. STDERR 확인 |
|
|
557
|
-
|
|
558
|
-
#### DAG 모드 추가 처리
|
|
559
|
-
|
|
560
|
-
- 각 레벨 완료 후 context_output 파일 저장
|
|
561
|
-
- 실패한 태스크의 모든 후속 의존 태스크를 SKIPPED로 마킹
|
|
562
|
-
- 부분 성공: 완료된 태스크의 컨텍스트 파일은 보존
|
|
563
|
-
|
|
564
|
-
**실패 전파 규칙:**
|
|
565
|
-
| 시나리오 | 처리 |
|
|
566
|
-
|----------|------|
|
|
567
|
-
| Level N 태스크 실패 | 해당 태스크에 직접/간접 의존하는 모든 태스크를 SKIPPED |
|
|
568
|
-
| Level N 태스크 타임아웃 | 실패와 동일 처리 |
|
|
569
|
-
| 같은 레벨 일부 실패 | 다른 독립 태스크는 계속 실행 |
|
|
570
|
-
| 전체 레벨 실패 | 이후 레벨 전부 SKIP |
|
|
571
|
-
|
|
572
|
-
### Phase 5: 실패 처리
|
|
573
|
-
|
|
574
|
-
1. **1차 실패** → Claude 네이티브 에이전트로 fallback:
|
|
575
|
-
```
|
|
576
|
-
Agent(subagent_type="oh-my-claudecode:executor", model="sonnet",
|
|
577
|
-
prompt="{failed_subtask}")
|
|
578
|
-
```
|
|
579
|
-
|
|
580
|
-
2. **2차 연속 실패** → 해당 서브태스크 실패 보고. 나머지 성공 결과만 종합.
|
|
581
|
-
|
|
582
|
-
3. **전체 타임아웃** → 부분 결과 보고 + 타임아웃 안내.
|
|
583
|
-
|
|
584
|
-
### Phase 6: 보고
|
|
157
|
+
### 보고 형식
|
|
585
158
|
|
|
586
159
|
```markdown
|
|
587
160
|
## tfx-auto 완료
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
| # | 서브태스크 | Agent | CLI | MCP | 레벨 | 의존 | 상태 | 시간 |
|
|
593
|
-
|---|----------|-------|-----|-----|------|------|------|------|
|
|
594
|
-
| t1 | 리서치A | scientist | codex | analyze | 0 | - | success | 45s |
|
|
595
|
-
| t2 | 리서치B | scientist | codex | analyze | 0 | - | success | 50s |
|
|
596
|
-
| t3 | 구현 | executor | codex | implement | 1 | t1,t2 | success | 30s |
|
|
597
|
-
| t4 | 테스트 | test-engineer | claude | — | 2 | t3 | success | 25s |
|
|
598
|
-
|
|
599
|
-
### 컨텍스트 체인
|
|
600
|
-
t1 → t3 (t1-research-a.md, 2.3KB)
|
|
601
|
-
t2 → t3 (t2-research-b.md, 1.8KB)
|
|
602
|
-
t3 → t4 (t3-implementation.md, 4.1KB)
|
|
603
|
-
|
|
604
|
-
### 워커 t1: 리서치A
|
|
605
|
-
(출력 요약)
|
|
606
|
-
|
|
607
|
-
### 워커 t2: 리서치B
|
|
608
|
-
(출력 요약)
|
|
609
|
-
|
|
610
|
-
### 워커 t3: 구현
|
|
611
|
-
(출력 요약)
|
|
612
|
-
|
|
613
|
-
### 워커 t4: 테스트
|
|
161
|
+
**모드**: {auto|manual} | **그래프**: {type} | **레벨**: {N}
|
|
162
|
+
| # | 서브태스크 | Agent | CLI | MCP | 레벨 | 상태 | 시간 |
|
|
163
|
+
### 워커 {n}: {제목}
|
|
614
164
|
(출력 요약)
|
|
615
|
-
|
|
616
165
|
### Token Savings Report
|
|
617
|
-
|
|
618
|
-
| # | 서브태스크 | Agent | CLI | Input | Output | Claude 비용(추정) | 실제 비용 | 절약 |
|
|
619
|
-
|---|----------|-------|-----|-------|--------|-----------------|---------|------|
|
|
620
|
-
| t1 | 리서치A | scientist | codex | 138K | 1.7K | $0.44 | $0.00 | $0.44 |
|
|
621
|
-
| t2 | 리서치B | scientist | codex | 52K | 3.1K | $0.20 | $0.00 | $0.20 |
|
|
622
|
-
| t3 | 구현 | executor | codex | 95K | 2.4K | $0.30 | $0.00 | $0.30 |
|
|
623
|
-
| t4 | 테스트 | test-engineer | claude | — | — | (Claude native) | — | — |
|
|
624
|
-
|
|
625
|
-
**총 절약: $0.94** (Codex $0.94)
|
|
626
|
-
|
|
627
|
-
전체 소요: 50s(L0) + 30s(L1) + 25s(L2) = 105s (순차) | 트리아지: Sonnet+Opus ~8s
|
|
166
|
+
(node ~/.claude/scripts/token-snapshot.mjs report {session-id})
|
|
628
167
|
```
|
|
629
168
|
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
> ```
|
|
169
|
+
## 필수 조건
|
|
170
|
+
|
|
171
|
+
- `~/.claude/scripts/tfx-route.sh` (필수)
|
|
172
|
+
- codex: `npm install -g @openai/codex` | gemini: `npm install -g @google/gemini-cli`
|
|
635
173
|
|
|
636
174
|
## 에러 레퍼런스
|
|
637
175
|
|
|
638
|
-
| 에러 |
|
|
639
|
-
|------|------|------|
|
|
640
|
-
| `tfx-route.sh: not found` | 래퍼 스크립트 미설치 | `~/.claude/scripts/tfx-route.sh` 생성 |
|
|
641
|
-
| `codex: command not found` | Codex CLI 미설치 | `npm install -g @openai/codex` |
|
|
642
|
-
| `gemini: command not found` | Gemini CLI 미설치 | `npm install -g @google/gemini-cli` |
|
|
643
|
-
| `status: timeout` | CLI 타임아웃 (에이전트별 동적) | 타임아웃 늘리거나 작업 범위 축소 |
|
|
644
|
-
| `status: failed` | CLI 에러 | stderr 로그 확인 → Claude fallback |
|
|
645
|
-
| `N > 10` | 워커 수 초과 | 10 이하로 조정 |
|
|
646
|
-
| Codex 분류 실패 | 모호한 작업 설명 | 기본값 codex로 fallback |
|
|
647
|
-
| Opus 분해 실패 | 작업 분해 불가 | 단일 워커로 실행 |
|
|
648
|
-
| 순환 의존 감지 | depends_on에 순환 존재 | 분해 재시도 또는 사용자에게 확인 |
|
|
649
|
-
| 컨텍스트 파일 미생성 | 선행 태스크 출력 비어있음 | 경고 후 컨텍스트 없이 실행 |
|
|
650
|
-
| 컨텍스트 크기 초과 | 합친 컨텍스트 > 32KB | 비례 절삭 후 실행 |
|
|
651
|
-
| SKIPPED 태스크 발생 | 선행 태스크 실패 | 부분 성공 보고 + 수동 재실행 안내 |
|
|
652
|
-
|
|
653
|
-
## 관련
|
|
654
|
-
|
|
655
|
-
| 항목 | 설명 |
|
|
176
|
+
| 에러 | 처리 |
|
|
656
177
|
|------|------|
|
|
657
|
-
|
|
|
658
|
-
|
|
|
178
|
+
| `tfx-route.sh: not found` | tfx-route.sh 생성 |
|
|
179
|
+
| `codex/gemini: not found` | npm install -g |
|
|
180
|
+
| timeout / failed | stderr → Claude fallback |
|
|
181
|
+
| N > 10 | 10 이하로 조정 |
|
|
182
|
+
| 순환 의존 | 분해 재시도 |
|
|
183
|
+
| 컨텍스트 > 32KB | 비례 절삭 |
|
|
659
184
|
|
|
660
185
|
## Troubleshooting
|
|
661
186
|
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
187
|
+
`/tfx-doctor` 진단 | `/tfx-doctor --fix` 자동 수정 | `/tfx-doctor --reset` 캐시 초기화
|
|
188
|
+
|
|
189
|
+
## 상세 레퍼런스
|
|
190
|
+
|
|
191
|
+
DAG 알고리즘, 컨텍스트 머지 규칙, 토큰 스냅샷, 보고서 상세 → [`docs/tfx-auto-internals.md`](../../docs/tfx-auto-internals.md)
|