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.
@@ -15,12 +15,22 @@ argument-hint: "[파일 경로 또는 git diff 범위]"
15
15
  > OMC ai-slop-cleaner 오마주. 핵심 차별점: 단일 판단이 아닌 **3자 독립 감지 + 합의** 기반 제거.
16
16
  > "AI가 만든 슬롭은 AI 3명이 합의해야 슬롭이다."
17
17
 
18
- ## 용도
18
+ ## HARD RULES
19
19
 
20
- - AI 생성 코드에서 불필요한 추상화, 중복, 과잉 패턴 제거
21
- - 코드 리뷰 후 슬롭 정리
22
- - 리팩터링 AI가 추가한 불필요한 코드 청소
23
- - PR 머지 코드 품질 최종 점검
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 | AI 슬롭 탐지 | 구현 효율, 중복 패턴, 과잉 에러 핸들링 |
33
+ | Gemini | 가독성 평가 | 가독성/DX, 과잉 주석, 과잉 타입 |
24
34
 
25
35
  ## 슬롭 카테고리
26
36
 
@@ -34,118 +44,99 @@ argument-hint: "[파일 경로 또는 git diff 범위]"
34
44
  | 사용되지 않는 코드 | import 했지만 사용 안 함 | dead imports, unused variables |
35
45
  | 과잉 로깅 | 불필요한 console.log/debug | `console.log("here")` |
36
46
 
37
- ## 워크플로우
47
+ ## EXECUTION STEPS
38
48
 
39
49
  ### Step 0: 슬롭 제거 범위 선택
40
50
 
41
- 인자 없이 호출된 경우, AskUserQuestion으로 대상 범위를 선택받는다:
51
+ 인자 없이 호출된 경우 사용자에게 범위를 선택받는다:
42
52
 
43
53
  ```
44
- AskUserQuestion:
45
- "슬롭 제거 범위를 선택하세요:"
46
- 1. 최근 변경 파일만 (git diff)
47
- 2. 전체 프로젝트
48
- 3. 특정 디렉토리 지정
54
+ 1. 최근 변경 파일만 (git diff)
55
+ 2. 전체 프로젝트
56
+ 3. 특정 디렉토리 지정
49
57
  ```
50
58
 
51
- - 1번 선택 → `git diff HEAD`로 최근 변경 파일 대상
52
- - 2번 선택 → 프로젝트 전체 소스 파일 대상 (대규모 주의 경고 표시)
53
- - 3번 선택 → 추가 AskUserQuestion으로 대상 디렉토리 경로 입력받음
59
+ - 1번 → `git diff HEAD`로 최근 변경 파일 대상
60
+ - 2번 → 프로젝트 전체 소스 파일 대상 (대규모 주의 경고 표시)
61
+ - 3번 → 추가 AskUserQuestion으로 대상 디렉토리 경로 입력받음
54
62
 
55
63
  파일 경로나 git diff 범위가 인자로 이미 제공된 경우 이 단계를 건너뛴다.
56
64
 
57
65
  ### Step 1: 대상 파일 수집
58
66
 
59
- ```
60
- 입력에 따라 대상 결정:
61
-
67
+ 대상 결정 우선순위:
62
68
  1. 파일 경로 지정 → 해당 파일만
63
69
  2. git diff 범위 지정 → diff에 포함된 파일
64
- 3. 입력 없음 → git diff HEAD 최근 변경 파일
70
+ 3. 입력 없음 → `git diff --name-only HEAD~1`로 최근 변경 파일
65
71
  4. "all" → 프로젝트 전체 소스 파일 (주의: 대규모)
66
72
 
67
- 대상 파일 목록:
68
- Bash("git diff --name-only HEAD~1") 또는 지정된 범위
69
- → 소스 파일만 필터 (.ts, .js, .mjs, .tsx, .py 등)
70
- → node_modules, dist, build 제외
71
- ```
73
+ 소스 파일만 필터: `.ts`, `.js`, `.mjs`, `.tsx`, `.py` 등. `node_modules`, `dist`, `build` 제외.
72
74
 
73
75
  ### Step 2: 3자 독립 슬롭 감지 (Anti-Herding)
74
76
 
75
- 3CLI가 **동시에, 상호 결과 비공개로** 각 파일의 슬롭을 감지한다:
77
+ **아래 2도구를 반드시 같은 응답에서 동시에 호출하라.**
76
78
 
79
+ Claude (Agent, background):
80
+ ```
81
+ Agent(
82
+ subagent_type="claude-sonnet-4-5",
83
+ model="opus",
84
+ run_in_background=true,
85
+ prompt="다음 파일에서 AI 슬롭을 감지하세요. 코드 품질 관점으로 분석합니다.
86
+ 슬롭 정의: 불필요 추상화, 중복, 과잉 에러핸들링, 과잉 주석, 과잉 타입, 미사용 코드, 과잉 로깅.
87
+ 파일: {file_content}
88
+ 각 발견에 대해 JSON: [{ id, category, line_start, line_end, description, severity, suggested_fix }]
89
+ severity: critical(기능에 영향) | high(가독성 심각) | medium(개선) | low(취향)
90
+ 슬롭이 아닌 것은 보고하지 마세요. 과탐(false positive)보다 미탐이 낫습니다."
91
+ )
77
92
  ```
78
- 공통 프롬프트 (각 CLI에 동일하게):
79
- "다음 파일에서 AI 슬롭을 감지하세요.
80
- 슬롭 정의: 불필요 추상화, 중복, 과잉 에러핸들링, 과잉 주석, 과잉 타입,
81
- 미사용 코드, 과잉 로깅.
82
-
83
- 파일: {file_content}
84
-
85
- 각 발견에 대해:
86
- { id, category, line_start, line_end, description, severity, suggested_fix }
87
- severity: critical(기능에 영향) | high(가독성 심각) | medium(개선) | low(취향)
88
-
89
- 슬롭이 아닌 것은 보고하지 마세요. 과탐(false positive)보다 미탐이 낫습니다."
90
93
 
91
- 실행:
92
- Claude (Agent, background): 코드 품질 관점
93
- Codex (Bash, background): 구현 효율 관점
94
- Gemini (Bash, background): 가독성/DX 관점
94
+ Codex + Gemini (Bash, background):
95
+ ```
96
+ Bash("tfx multi --teammate-mode headless --auto-attach --dashboard \
97
+ --assign 'codex:다음 파일에서 AI 슬롭을 감지하세요. 구현 효율 관점(중복 패턴, 과잉 에러핸들링, 미사용 코드)으로 분석. 파일: {file_content}. JSON: [{id,category,line_start,line_end,description,severity,suggested_fix}]. severity: critical|high|medium|low. 과탐보다 미탐이 낫습니다.:slop-detector' \
98
+ --assign 'gemini:다음 파일에서 AI 슬롭을 감지하세요. 가독성/DX 관점(과잉 주석, 과잉 타입, 불필요 추상화)으로 분석. 파일: {file_content}. JSON: [{id,category,line_start,line_end,description,severity,suggested_fix}]. severity: critical|high|medium|low. 과탐보다 미탐이 낫습니다.:readability-reviewer' \
99
+ --timeout 600")
95
100
  ```
96
101
 
97
102
  ### Step 3: 합의 필터링
98
103
 
99
- tfx-consensus 프로토콜로 교차검증한다:
104
+ 3개 CLI 결과를 교차검증한다:
100
105
 
101
106
  ```
102
107
  for each finding in ALL results:
103
108
  agreement = count(CLIs that found same or similar slop at same location)
104
109
 
105
110
  if agreement >= 2:
106
- → "CONFIRMED SLOP" (확정 — 제거 대상)
111
+ → "CONFIRMED SLOP" — 제거 대상
107
112
  elif agreement == 1:
108
- → "UNCONFIRMED" (미확정 — 제거하지 않음)
109
-
110
- 원칙: 2+ 합의된 항목만 제거한다.
111
- 1개 CLI만 지적한 항목은 무시한다 (과탐 방지).
113
+ → "UNCONFIRMED" — 제거하지 않음 (과탐 방지)
112
114
  ```
113
115
 
116
+ 원칙: 2+ 합의된 항목만 제거한다. 1개 CLI만 지적한 항목은 무시한다.
117
+
114
118
  ### Step 4: 슬롭 제거
115
119
 
116
- 확정된 슬롭만 제거한다:
120
+ 확정된 슬롭을 안전 순서대로 제거한다:
117
121
 
118
- ```
119
- 제거 순서 (안전 → 위험):
120
- 1. 과잉 주석 제거 (가장 안전)
121
- 2. 미사용 코드/import 제거
122
- 3. 과잉 로깅 제거
123
- 4. 과잉 에러핸들링 간소화
124
- 5. 중복 코드 통합
125
- 6. 불필요 추상화 제거 (가장 위험 — 인터페이스 변경 가능)
126
-
127
- 각 제거 후:
128
- - 변경 내용을 기록
129
- - 제거 이유를 주석으로 남기지 않음 (그것 자체가 슬롭)
130
- ```
122
+ 1. 과잉 주석 제거 (가장 안전)
123
+ 2. 미사용 코드/import 제거
124
+ 3. 과잉 로깅 제거
125
+ 4. 과잉 에러핸들링 간소화
126
+ 5. 중복 코드 통합
127
+ 6. 불필요 추상화 제거 (가장 위험 — 인터페이스 변경 가능)
131
128
 
132
- ### Step 5: 회귀 테스트
129
+ 제거 변경 내용을 기록한다. 제거 이유를 주석으로 남기지 않는다 (그것 자체가 슬롭).
133
130
 
134
- ```
135
- 제거 후 안전성 검증:
136
-
137
- 1. 기존 테스트 실행
138
- Bash("npm test" 또는 프로젝트 테스트 명령)
131
+ ### Step 5: 회귀 테스트
139
132
 
140
- 2. 테스트 실패 시:
141
- → 해당 제거를 롤백
142
- → 롤백된 항목을 "위험 — 수동 검토 필요"로 표시
133
+ 제거 안전성을 검증한다:
143
134
 
144
- 3. 테스트 통과 시:
145
- 제거 확정
146
- ```
135
+ 1. 기존 테스트 실행: `Bash("npm test")` (또는 프로젝트 테스트 명령)
136
+ 2. 테스트 실패 시 해당 제거를 롤백 → 롤백된 항목을 "위험 — 수동 검토 필요"로 표시
137
+ 3. 테스트 통과 시 → 제거 확정
147
138
 
148
- ### Step 6: 보고서
139
+ ### Step 6: 보고서 출력
149
140
 
150
141
  ```markdown
151
142
  ## Deslop 보고서
@@ -175,7 +166,13 @@ for each finding in ALL results:
175
166
  통과: {pass}/{total} | 실패: {fail} | 롤백: {rollback}
176
167
  ```
177
168
 
178
- ## 토큰 예산
169
+ ## ERROR RECOVERY
170
+
171
+ - Codex/Gemini 타임아웃(600s 초과) → Claude Agent 단독으로 2자 합의 기준(단독 감지도 제거 대상) 적용
172
+ - 테스트 명령 없음 → Step 5 건너뜀, 보고서에 "테스트 미실행 — 수동 검증 필요" 표시
173
+ - 파일 파싱 오류 → 해당 파일 스킵 후 보고서에 "파싱 실패" 기록
174
+
175
+ ## TOKEN BUDGET
179
176
 
180
177
  | 단계 | 토큰 |
181
178
  |------|------|