triflux 8.2.3 → 8.3.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/.claude-plugin/plugin.json +1 -1
- package/README.md +209 -97
- package/bin/tfx-doctor-tui.mjs +7 -0
- package/bin/tfx-profile.mjs +7 -0
- package/bin/tfx-setup-tui.mjs +7 -0
- package/bin/triflux.mjs +14 -4
- package/hub/intent.mjs +7 -7
- package/hub/team/tui.mjs +4 -0
- package/hub/workers/delegator-mcp.mjs +18 -18
- package/package.json +6 -2
- package/scripts/setup.mjs +4 -33
- package/scripts/tfx-route.sh +57 -57
- package/skills/.omc/state/agent-replay-8f0e10a9-9693-4410-96f5-a6b07e8ed995.jsonl +1 -0
- package/skills/.omc/state/idle-notif-cooldown.json +3 -0
- package/skills/.omc/state/last-tool-error.json +7 -0
- package/skills/.omc/state/subagent-tracking.json +7 -0
- package/skills/tfx-analysis/SKILL.md +101 -0
- package/skills/tfx-auto-codex/SKILL.md +1 -1
- package/skills/tfx-autopilot/SKILL.md +112 -0
- package/skills/tfx-autoresearch/SKILL.md +1 -2
- package/skills/tfx-autoroute/SKILL.md +184 -0
- package/skills/tfx-codex/SKILL.md +2 -2
- package/skills/tfx-consensus/SKILL.md +112 -0
- package/skills/tfx-debate/SKILL.md +148 -0
- package/skills/tfx-deep-analysis/SKILL.md +186 -0
- package/skills/tfx-deep-plan/SKILL.md +113 -0
- package/skills/tfx-deep-qa/SKILL.md +158 -0
- package/skills/tfx-deep-research/SKILL.md +212 -0
- package/skills/tfx-deep-review/SKILL.md +91 -0
- package/skills/tfx-doctor/SKILL.md +161 -94
- package/skills/tfx-find/SKILL.md +123 -0
- package/skills/tfx-forge/SKILL.md +183 -0
- package/skills/tfx-fullcycle/SKILL.md +195 -0
- package/skills/tfx-hub/SKILL.md +1 -1
- package/skills/tfx-index/SKILL.md +174 -0
- package/skills/tfx-interview/SKILL.md +210 -0
- package/skills/tfx-panel/SKILL.md +187 -0
- package/skills/tfx-persist/SKILL.md +141 -0
- package/skills/tfx-plan/SKILL.md +53 -0
- package/skills/tfx-profile/SKILL.md +149 -0
- package/skills/tfx-prune/SKILL.md +198 -0
- package/skills/tfx-qa/SKILL.md +117 -0
- package/skills/tfx-research/SKILL.md +126 -0
- package/skills/tfx-review/SKILL.md +51 -0
- package/skills/tfx-setup/SKILL.md +160 -101
- package/tui/codex-profile.mjs +402 -0
- package/tui/core.mjs +236 -0
- package/tui/doctor.mjs +327 -0
- package/tui/setup.mjs +362 -0
package/scripts/tfx-route.sh
CHANGED
|
@@ -641,53 +641,53 @@ route_agent() {
|
|
|
641
641
|
case "$agent" in
|
|
642
642
|
# ─── 구현 레인 ───
|
|
643
643
|
executor)
|
|
644
|
-
CLI_ARGS="exec ${codex_base}"
|
|
645
|
-
CLI_EFFORT="
|
|
644
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base}"
|
|
645
|
+
CLI_EFFORT="codex53_high"; DEFAULT_TIMEOUT=1080; RUN_MODE="fg"; OPUS_OVERSIGHT="false" ;;
|
|
646
646
|
build-fixer)
|
|
647
|
-
CLI_ARGS="exec --profile
|
|
648
|
-
CLI_EFFORT="
|
|
647
|
+
CLI_ARGS="exec --profile codex53_low ${codex_base}"
|
|
648
|
+
CLI_EFFORT="codex53_low"; DEFAULT_TIMEOUT=540; RUN_MODE="fg"; OPUS_OVERSIGHT="false" ;;
|
|
649
649
|
debugger)
|
|
650
|
-
CLI_ARGS="exec ${codex_base}"
|
|
651
|
-
CLI_EFFORT="
|
|
650
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base}"
|
|
651
|
+
CLI_EFFORT="codex53_high"; DEFAULT_TIMEOUT=900; RUN_MODE="bg"; OPUS_OVERSIGHT="false" ;;
|
|
652
652
|
deep-executor)
|
|
653
|
-
CLI_ARGS="exec --profile
|
|
654
|
-
CLI_EFFORT="
|
|
653
|
+
CLI_ARGS="exec --profile gpt54_xhigh ${codex_base}"
|
|
654
|
+
CLI_EFFORT="gpt54_xhigh"; DEFAULT_TIMEOUT=3600; RUN_MODE="bg"; OPUS_OVERSIGHT="true" ;;
|
|
655
655
|
|
|
656
|
-
# ─── 설계/분석 레인 ───
|
|
656
|
+
# ─── 설계/분석 레인 (5.4: 1M 컨텍스트, 에이전틱) ───
|
|
657
657
|
architect)
|
|
658
|
-
CLI_ARGS="exec --profile
|
|
659
|
-
CLI_EFFORT="
|
|
658
|
+
CLI_ARGS="exec --profile gpt54_xhigh ${codex_base}"
|
|
659
|
+
CLI_EFFORT="gpt54_xhigh"; DEFAULT_TIMEOUT=3600; RUN_MODE="bg"; OPUS_OVERSIGHT="true" ;;
|
|
660
660
|
planner)
|
|
661
|
-
CLI_ARGS="exec --profile
|
|
662
|
-
CLI_EFFORT="
|
|
661
|
+
CLI_ARGS="exec --profile gpt54_xhigh ${codex_base}"
|
|
662
|
+
CLI_EFFORT="gpt54_xhigh"; DEFAULT_TIMEOUT=3600; RUN_MODE="fg"; OPUS_OVERSIGHT="true" ;;
|
|
663
663
|
critic)
|
|
664
|
-
CLI_ARGS="exec --profile
|
|
665
|
-
CLI_EFFORT="
|
|
664
|
+
CLI_ARGS="exec --profile gpt54_xhigh ${codex_base}"
|
|
665
|
+
CLI_EFFORT="gpt54_xhigh"; DEFAULT_TIMEOUT=3600; RUN_MODE="bg"; OPUS_OVERSIGHT="true" ;;
|
|
666
666
|
analyst)
|
|
667
|
-
CLI_ARGS="exec --profile
|
|
668
|
-
CLI_EFFORT="
|
|
667
|
+
CLI_ARGS="exec --profile gpt54_xhigh ${codex_base}"
|
|
668
|
+
CLI_EFFORT="gpt54_xhigh"; DEFAULT_TIMEOUT=3600; RUN_MODE="fg"; OPUS_OVERSIGHT="true" ;;
|
|
669
669
|
|
|
670
|
-
# ─── 리뷰 레인 ───
|
|
670
|
+
# ─── 리뷰 레인 (5.3-codex: SWE-Bench 72%) ───
|
|
671
671
|
code-reviewer)
|
|
672
|
-
CLI_ARGS="exec --profile
|
|
673
|
-
CLI_EFFORT="
|
|
672
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base} review"
|
|
673
|
+
CLI_EFFORT="codex53_high"; DEFAULT_TIMEOUT=1800; RUN_MODE="bg"; OPUS_OVERSIGHT="false" ;;
|
|
674
674
|
security-reviewer)
|
|
675
|
-
CLI_ARGS="exec --profile
|
|
676
|
-
CLI_EFFORT="
|
|
675
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base} review"
|
|
676
|
+
CLI_EFFORT="codex53_high"; DEFAULT_TIMEOUT=1800; RUN_MODE="bg"; OPUS_OVERSIGHT="true" ;;
|
|
677
677
|
quality-reviewer)
|
|
678
|
-
CLI_ARGS="exec --profile
|
|
679
|
-
CLI_EFFORT="
|
|
678
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base} review"
|
|
679
|
+
CLI_EFFORT="codex53_high"; DEFAULT_TIMEOUT=1800; RUN_MODE="bg"; OPUS_OVERSIGHT="false" ;;
|
|
680
680
|
|
|
681
681
|
# ─── 리서치 레인 ───
|
|
682
682
|
scientist)
|
|
683
|
-
CLI_ARGS="exec ${codex_base}"
|
|
684
|
-
CLI_EFFORT="
|
|
683
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base}"
|
|
684
|
+
CLI_EFFORT="codex53_high"; DEFAULT_TIMEOUT=1440; RUN_MODE="bg"; OPUS_OVERSIGHT="false" ;;
|
|
685
685
|
scientist-deep)
|
|
686
|
-
CLI_ARGS="exec --profile
|
|
687
|
-
CLI_EFFORT="
|
|
686
|
+
CLI_ARGS="exec --profile gpt54_high ${codex_base}"
|
|
687
|
+
CLI_EFFORT="gpt54_high"; DEFAULT_TIMEOUT=3600; RUN_MODE="bg"; OPUS_OVERSIGHT="false" ;;
|
|
688
688
|
document-specialist)
|
|
689
|
-
CLI_ARGS="exec ${codex_base}"
|
|
690
|
-
CLI_EFFORT="
|
|
689
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base}"
|
|
690
|
+
CLI_EFFORT="codex53_high"; DEFAULT_TIMEOUT=1440; RUN_MODE="bg"; OPUS_OVERSIGHT="false" ;;
|
|
691
691
|
|
|
692
692
|
# ─── UI/문서 레인 ───
|
|
693
693
|
designer)
|
|
@@ -703,23 +703,23 @@ route_agent() {
|
|
|
703
703
|
|
|
704
704
|
# ─── 검증/테스트 (Codex: 무료 + 파일 쓰기 가능) ───
|
|
705
705
|
verifier)
|
|
706
|
-
CLI_ARGS="exec --profile
|
|
707
|
-
CLI_EFFORT="
|
|
706
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base} review"
|
|
707
|
+
CLI_EFFORT="codex53_high"; DEFAULT_TIMEOUT=1200; RUN_MODE="fg"; OPUS_OVERSIGHT="false" ;;
|
|
708
708
|
test-engineer)
|
|
709
|
-
CLI_ARGS="exec ${codex_base}"
|
|
710
|
-
CLI_EFFORT="
|
|
709
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base}"
|
|
710
|
+
CLI_EFFORT="codex53_high"; DEFAULT_TIMEOUT=1200; RUN_MODE="bg"; OPUS_OVERSIGHT="false" ;;
|
|
711
711
|
qa-tester)
|
|
712
|
-
CLI_ARGS="exec --profile
|
|
713
|
-
CLI_EFFORT="
|
|
712
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base} review"
|
|
713
|
+
CLI_EFFORT="codex53_high"; DEFAULT_TIMEOUT=1200; RUN_MODE="bg"; OPUS_OVERSIGHT="false" ;;
|
|
714
714
|
|
|
715
715
|
# ─── 경량 ───
|
|
716
716
|
spark)
|
|
717
|
-
CLI_ARGS="exec --profile
|
|
718
|
-
CLI_EFFORT="
|
|
717
|
+
CLI_ARGS="exec --profile spark53_low ${codex_base}"
|
|
718
|
+
CLI_EFFORT="spark53_low"; DEFAULT_TIMEOUT=180; RUN_MODE="fg"; OPUS_OVERSIGHT="false" ;;
|
|
719
719
|
# ─── CLI 이름 alias (사용자 편의) ───
|
|
720
720
|
codex)
|
|
721
|
-
CLI_ARGS="exec ${codex_base}"
|
|
722
|
-
CLI_EFFORT="
|
|
721
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base}"
|
|
722
|
+
CLI_EFFORT="codex53_high"; DEFAULT_TIMEOUT=1080; RUN_MODE="fg"; OPUS_OVERSIGHT="false" ;;
|
|
723
723
|
gemini)
|
|
724
724
|
CLI_ARGS="-m gemini-3.1-pro-preview -y --prompt"
|
|
725
725
|
CLI_EFFORT="pro"; DEFAULT_TIMEOUT=900; RUN_MODE="bg"; OPUS_OVERSIGHT="false" ;;
|
|
@@ -729,8 +729,8 @@ route_agent() {
|
|
|
729
729
|
*)
|
|
730
730
|
case "$CLI_TYPE" in
|
|
731
731
|
codex)
|
|
732
|
-
CLI_ARGS="exec ${codex_base}"
|
|
733
|
-
CLI_EFFORT="
|
|
732
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base}"
|
|
733
|
+
CLI_EFFORT="codex53_high"; DEFAULT_TIMEOUT=1080; RUN_MODE="fg"; OPUS_OVERSIGHT="false" ;;
|
|
734
734
|
gemini)
|
|
735
735
|
CLI_ARGS="-m gemini-3.1-pro-preview -y --prompt"
|
|
736
736
|
CLI_EFFORT="pro"; DEFAULT_TIMEOUT=900; RUN_MODE="bg"; OPUS_OVERSIGHT="false" ;;
|
|
@@ -813,9 +813,9 @@ apply_cli_mode() {
|
|
|
813
813
|
CLI_TYPE="codex"; CLI_CMD="codex"
|
|
814
814
|
case "$AGENT_TYPE" in
|
|
815
815
|
designer)
|
|
816
|
-
CLI_ARGS="exec ${codex_base}"; CLI_EFFORT="
|
|
816
|
+
CLI_ARGS="exec --profile gpt54_xhigh ${codex_base}"; CLI_EFFORT="gpt54_xhigh"; DEFAULT_TIMEOUT=600 ;;
|
|
817
817
|
writer)
|
|
818
|
-
CLI_ARGS="exec --profile
|
|
818
|
+
CLI_ARGS="exec --profile spark53_low ${codex_base}"; CLI_EFFORT="spark53_low"; DEFAULT_TIMEOUT=180 ;;
|
|
819
819
|
esac
|
|
820
820
|
echo "[tfx-route] TFX_CLI_MODE=codex: $AGENT_TYPE → codex($CLI_EFFORT)로 리매핑" >&2
|
|
821
821
|
fi ;;
|
|
@@ -854,16 +854,16 @@ apply_cli_mode() {
|
|
|
854
854
|
esac
|
|
855
855
|
}
|
|
856
856
|
|
|
857
|
-
# ── Codex 요금제 가드 (
|
|
857
|
+
# ── Codex 요금제 가드 (spark 프로필은 Pro 전용) ──
|
|
858
858
|
apply_plan_guard() {
|
|
859
859
|
[[ "$CLI_TYPE" != "codex" ]] && return
|
|
860
860
|
[[ "$TFX_CODEX_PLAN" == "pro" ]] && return
|
|
861
861
|
|
|
862
|
-
if [[ "$CLI_EFFORT" ==
|
|
862
|
+
if [[ "$CLI_EFFORT" == spark53_* ]]; then
|
|
863
863
|
local codex_base="--dangerously-bypass-approvals-and-sandbox --skip-git-repo-check"
|
|
864
|
-
CLI_ARGS="exec ${codex_base}"
|
|
865
|
-
CLI_EFFORT="
|
|
866
|
-
echo "[tfx-route] TFX_CODEX_PLAN=$TFX_CODEX_PLAN:
|
|
864
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base}"
|
|
865
|
+
CLI_EFFORT="codex53_high"
|
|
866
|
+
echo "[tfx-route] TFX_CODEX_PLAN=$TFX_CODEX_PLAN: spark → codex53_high로 다운그레이드 (Pro 전용)" >&2
|
|
867
867
|
fi
|
|
868
868
|
}
|
|
869
869
|
|
|
@@ -885,29 +885,29 @@ apply_no_claude_native_mode() {
|
|
|
885
885
|
|
|
886
886
|
case "$AGENT_TYPE" in
|
|
887
887
|
explore)
|
|
888
|
-
CLI_ARGS="exec --profile
|
|
889
|
-
CLI_EFFORT="
|
|
888
|
+
CLI_ARGS="exec --profile codex53_low ${codex_base}"
|
|
889
|
+
CLI_EFFORT="codex53_low"
|
|
890
890
|
DEFAULT_TIMEOUT=600
|
|
891
891
|
RUN_MODE="fg"
|
|
892
892
|
OPUS_OVERSIGHT="false"
|
|
893
893
|
;;
|
|
894
894
|
verifier)
|
|
895
|
-
CLI_ARGS="exec --profile
|
|
896
|
-
CLI_EFFORT="
|
|
895
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base} review"
|
|
896
|
+
CLI_EFFORT="codex53_high"
|
|
897
897
|
DEFAULT_TIMEOUT=1200
|
|
898
898
|
RUN_MODE="fg"
|
|
899
899
|
OPUS_OVERSIGHT="false"
|
|
900
900
|
;;
|
|
901
901
|
test-engineer)
|
|
902
|
-
CLI_ARGS="exec ${codex_base}"
|
|
903
|
-
CLI_EFFORT="
|
|
902
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base}"
|
|
903
|
+
CLI_EFFORT="codex53_high"
|
|
904
904
|
DEFAULT_TIMEOUT=1200
|
|
905
905
|
RUN_MODE="bg"
|
|
906
906
|
OPUS_OVERSIGHT="false"
|
|
907
907
|
;;
|
|
908
908
|
qa-tester)
|
|
909
|
-
CLI_ARGS="exec --profile
|
|
910
|
-
CLI_EFFORT="
|
|
909
|
+
CLI_ARGS="exec --profile codex53_high ${codex_base} review"
|
|
910
|
+
CLI_EFFORT="codex53_high"
|
|
911
911
|
DEFAULT_TIMEOUT=1200
|
|
912
912
|
RUN_MODE="bg"
|
|
913
913
|
OPUS_OVERSIGHT="false"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"t":0,"agent":"adb34b0","agent_type":"general-purpose","event":"agent_stop","success":true}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tool_name": "Bash",
|
|
3
|
+
"tool_input_preview": "{\"command\":\"ls -la \\\"C:/Users/tellang/Desktop/Projects/triflux/skills/tfx-deslop/\\\" 2>/dev/null; echo \\\"===\\\"; ls -la \\\"C:/Users/tellang/Desktop/Projects/triflux/skills/tfx-codebase-search/\\\" 2>/dev/n...",
|
|
4
|
+
"error": "Exit code 2\n===",
|
|
5
|
+
"timestamp": "2026-03-29T03:40:35.913Z",
|
|
6
|
+
"retry_count": 1
|
|
7
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tfx-analysis
|
|
3
|
+
description: "코드나 아키텍처를 분석해야 할 때 사용한다. '코드 분석', 'code analysis', '아키텍처 분석', '이 코드 어떻게 돌아가?', '구조 파악' 같은 요청에 반드시 사용. 코드 품질, 보안, 성능, 복잡도 분석이 필요한 모든 상황에 적극 활용."
|
|
4
|
+
triggers:
|
|
5
|
+
- 코드 분석
|
|
6
|
+
- code analysis
|
|
7
|
+
- 아키텍처 분석
|
|
8
|
+
- analysis
|
|
9
|
+
argument-hint: "<분석 대상 — 파일, 디렉토리, 또는 주제>"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# tfx-analysis — Light Code Analysis
|
|
13
|
+
|
|
14
|
+
> Codex 단일 분석으로 빠른 인사이트. SuperClaude sc:analyze 영감.
|
|
15
|
+
|
|
16
|
+
## 용도
|
|
17
|
+
|
|
18
|
+
- 코드 품질 빠른 점검
|
|
19
|
+
- 모듈/파일 구조 분석
|
|
20
|
+
- 의존성 관계 파악
|
|
21
|
+
- 성능 병목 후보 식별
|
|
22
|
+
- 기술 부채 탐지
|
|
23
|
+
- "이 코드 어떤 상태야?" 류의 질문
|
|
24
|
+
|
|
25
|
+
## 워크플로우
|
|
26
|
+
|
|
27
|
+
### Step 1: 분석 대상 식별
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
우선순위:
|
|
31
|
+
1. 사용자가 파일/디렉토리 지정 → 해당 범위
|
|
32
|
+
2. 사용자가 주제 지정 (예: "인증 모듈") → 관련 파일 탐색
|
|
33
|
+
3. 지정 없음 → 프로젝트 전체 고수준 분석
|
|
34
|
+
|
|
35
|
+
분석 유형 자동 감지:
|
|
36
|
+
파일 1개 → 코드 품질 + 로직 분석
|
|
37
|
+
디렉토리 → 구조 + 의존성 + 모듈 분석
|
|
38
|
+
프로젝트 전체 → 아키텍처 + 기술 부채 분석
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Step 2: Codex 분석 실행
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check \
|
|
45
|
+
"시니어 소프트웨어 엔지니어로서 다음을 분석하라:
|
|
46
|
+
대상: {target}
|
|
47
|
+
유형: {analysis_type}
|
|
48
|
+
|
|
49
|
+
분석 항목:
|
|
50
|
+
1. 구조 — 파일/모듈 구성, 계층, 의존성 방향
|
|
51
|
+
2. 복잡도 — 순환 복잡도 높은 함수, 깊은 중첩
|
|
52
|
+
3. 품질 — SOLID 위반, 코드 냄새, 중복
|
|
53
|
+
4. 성능 — O(n²) 패턴, 불필요한 연산, 캐싱 부재
|
|
54
|
+
5. 기술 부채 — TODO/FIXME, deprecated API, 하드코딩
|
|
55
|
+
6. 테스트 — 커버리지 추정, 테스트 부재 영역
|
|
56
|
+
|
|
57
|
+
구조화된 보고서로 출력하라."
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Step 3: 결과 포맷
|
|
61
|
+
|
|
62
|
+
```markdown
|
|
63
|
+
## 분석 결과: {target}
|
|
64
|
+
|
|
65
|
+
### 구조 개요
|
|
66
|
+
{파일/모듈 구조 요약 또는 의존성 다이어그램}
|
|
67
|
+
|
|
68
|
+
### 주요 발견
|
|
69
|
+
| # | 카테고리 | 심각도 | 설명 | 위치 |
|
|
70
|
+
|---|---------|--------|------|------|
|
|
71
|
+
| 1 | 복잡도 | high | {설명} | `{file}:{line}` |
|
|
72
|
+
| 2 | 성능 | medium | {설명} | `{file}:{line}` |
|
|
73
|
+
|
|
74
|
+
### 메트릭
|
|
75
|
+
- 파일 수: {n} | 총 라인: {n}
|
|
76
|
+
- 평균 복잡도: {n} | 최대 복잡도: {n} (`{file}:{function}`)
|
|
77
|
+
- TODO/FIXME: {n}개
|
|
78
|
+
- 테스트 커버리지 추정: {n}%
|
|
79
|
+
|
|
80
|
+
### 개선 권장사항
|
|
81
|
+
1. **{우선순위 1}** — {구체적 제안}
|
|
82
|
+
2. **{우선순위 2}** — {구체적 제안}
|
|
83
|
+
3. **{우선순위 3}** — {구체적 제안}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## 토큰 예산
|
|
87
|
+
|
|
88
|
+
| 단계 | 토큰 |
|
|
89
|
+
|------|------|
|
|
90
|
+
| Step 1 (식별) | ~500 |
|
|
91
|
+
| Step 2 (Codex 분석) | ~5K |
|
|
92
|
+
| Step 3 (포맷) | ~2K |
|
|
93
|
+
| **총합** | **~8K** |
|
|
94
|
+
|
|
95
|
+
## 사용 예
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
/tfx-analysis "src/auth/"
|
|
99
|
+
/tfx-analysis "이 프로젝트 전체 아키텍처 분석"
|
|
100
|
+
/tfx-analysis "src/utils/parser.ts 코드 품질"
|
|
101
|
+
```
|
|
@@ -21,7 +21,7 @@ argument-hint: "\"작업 설명\" | N:agent_type \"작업 설명\""
|
|
|
21
21
|
3. **Claude 네이티브 제거**
|
|
22
22
|
- 실행 시 `TFX_NO_CLAUDE_NATIVE=1`로 강제.
|
|
23
23
|
4. **고난도 설계는 xhigh**
|
|
24
|
-
- 설계/분해/비판 검토 성격의 작업은 `codex --profile
|
|
24
|
+
- 설계/분해/비판 검토 성격의 작업은 `codex --profile gpt54_xhigh` 기준으로 운용.
|
|
25
25
|
|
|
26
26
|
## 사용법
|
|
27
27
|
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tfx-autopilot
|
|
3
|
+
description: "간단한 작업을 자율적으로 구현해야 할 때 사용한다. 'autopilot', '자동으로', '알아서 해', '그냥 해줘', 'auto' 같은 요청에 반드시 사용. 명확한 단일 작업을 빠르게 자동 구현+검증할 때 적극 활용."
|
|
4
|
+
triggers:
|
|
5
|
+
- autopilot
|
|
6
|
+
- 자동
|
|
7
|
+
- 알아서 해
|
|
8
|
+
- auto
|
|
9
|
+
argument-hint: "<구현할 작업 설명>"
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# tfx-autopilot — Light Autonomous Execution
|
|
13
|
+
|
|
14
|
+
> Codex 직접 구현 → Claude 검증. 최소 토큰으로 빠른 자율 실행.
|
|
15
|
+
|
|
16
|
+
## 용도
|
|
17
|
+
|
|
18
|
+
- 명확한 단일 작업을 빠르게 자동 구현
|
|
19
|
+
- 보일러플레이트 생성 + 검증
|
|
20
|
+
- 간단한 버그 수정 자동화
|
|
21
|
+
- 린트/포맷/리팩터 자동 적용
|
|
22
|
+
- "알아서 해줘" 류의 명확한 요청
|
|
23
|
+
|
|
24
|
+
## 워크플로우
|
|
25
|
+
|
|
26
|
+
### Step 1: 작업 파싱
|
|
27
|
+
|
|
28
|
+
사용자 입력에서 구현 범위와 완료 기준을 추출한다:
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
입력: "로그인 API에 rate limiting 추가"
|
|
32
|
+
파싱: {
|
|
33
|
+
task: "로그인 API에 rate limiting 추가",
|
|
34
|
+
scope: ["src/routes/auth.ts", "src/middleware/"],
|
|
35
|
+
criteria: [
|
|
36
|
+
"rate limiter 미들웨어 생성",
|
|
37
|
+
"로그인 엔드포인트에 적용",
|
|
38
|
+
"기존 테스트 통과"
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
모호하면 AskUserQuestion으로 명확화.
|
|
44
|
+
|
|
45
|
+
### Step 2: Codex 직접 구현
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check \
|
|
49
|
+
"다음 작업을 구현하라:
|
|
50
|
+
작업: {task}
|
|
51
|
+
프로젝트 컨텍스트: {context}
|
|
52
|
+
완료 기준: {criteria}
|
|
53
|
+
|
|
54
|
+
1. 관련 파일을 읽고 구조를 파악하라
|
|
55
|
+
2. 필요한 코드를 작성/수정하라
|
|
56
|
+
3. 기존 테스트를 실행하여 회귀가 없는지 확인하라
|
|
57
|
+
4. 변경 사항을 요약하라"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Step 3: Claude 검증
|
|
61
|
+
|
|
62
|
+
Codex 실행 완료 후, Claude가 변경 사항을 검증한다:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
검증 항목:
|
|
66
|
+
1. 파일 변경 확인 — git diff로 실제 변경 내용 확인
|
|
67
|
+
2. 완료 기준 충족 — 각 criterion 대조
|
|
68
|
+
3. 회귀 여부 — 테스트 결과 확인
|
|
69
|
+
4. 코드 품질 — 명백한 결함 여부 (깊은 리뷰는 아님)
|
|
70
|
+
|
|
71
|
+
판정:
|
|
72
|
+
PASS → 완료 보고
|
|
73
|
+
FAIL → Codex에 수정 지시 (1회 재시도)
|
|
74
|
+
재시도 FAIL → 사용자에게 문제 보고
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Step 4: 완료 보고
|
|
78
|
+
|
|
79
|
+
```markdown
|
|
80
|
+
## Autopilot 완료: {task}
|
|
81
|
+
|
|
82
|
+
### 변경 사항
|
|
83
|
+
- `{file1}` — {변경 요약}
|
|
84
|
+
- `{file2}` — {변경 요약}
|
|
85
|
+
|
|
86
|
+
### 검증
|
|
87
|
+
- 완료 기준: {pass}/{total} 충족
|
|
88
|
+
- 테스트: {pass}/{total} 통과
|
|
89
|
+
- 검증: Claude ✓
|
|
90
|
+
|
|
91
|
+
### 다음 단계 (선택)
|
|
92
|
+
- {추가 권장 사항이 있으면}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## 토큰 예산
|
|
96
|
+
|
|
97
|
+
| 단계 | 토큰 |
|
|
98
|
+
|------|------|
|
|
99
|
+
| Step 1 (파싱) | ~500 |
|
|
100
|
+
| Step 2 (Codex 구현) | ~5K |
|
|
101
|
+
| Step 3 (Claude 검증) | ~3K |
|
|
102
|
+
| Step 4 (보고) | ~500 |
|
|
103
|
+
| 재시도 (필요 시) | +4K |
|
|
104
|
+
| **총합** | **~10K** |
|
|
105
|
+
|
|
106
|
+
## 사용 예
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
/tfx-autopilot "이 함수에 입력 검증 추가해줘"
|
|
110
|
+
/tfx-autopilot "ESLint 경고 전부 수정"
|
|
111
|
+
/tfx-autopilot "알아서 해 — 이 TODO 코멘트 3개 구현"
|
|
112
|
+
```
|
|
@@ -0,0 +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
|
+
```
|
|
@@ -31,8 +31,8 @@ argument-hint: "\"작업 설명\" | N:codex \"작업 설명\""
|
|
|
31
31
|
| architect, planner, critic, analyst | Codex | Codex (변경 없음) |
|
|
32
32
|
| code-reviewer, security-reviewer | Codex | Codex (변경 없음) |
|
|
33
33
|
| scientist, document-specialist | Codex | Codex (변경 없음) |
|
|
34
|
-
| **designer** | ~~Gemini~~ | **Codex** (effort:
|
|
35
|
-
| **writer** | ~~Gemini~~ | **Codex Spark** (effort:
|
|
34
|
+
| **designer** | ~~Gemini~~ | **Codex** (effort: codex53_high) — UI 코드 생성 |
|
|
35
|
+
| **writer** | ~~Gemini~~ | **Codex Spark** (effort: spark53_low) — 경량 문서 |
|
|
36
36
|
| explore | Claude Haiku | Claude Haiku (변경 없음) |
|
|
37
37
|
| verifier, test-engineer | Claude Sonnet | Codex (변경 없음) |
|
|
38
38
|
|