@su-record/vibe 2.0.0 → 2.0.2
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/agents/explorer.md +48 -48
- package/.claude/agents/implementer.md +53 -53
- package/.claude/agents/searcher.md +54 -54
- package/.claude/agents/simplifier.md +119 -119
- package/.claude/agents/tester.md +49 -49
- package/.claude/commands/vibe.analyze.md +239 -239
- package/.claude/commands/vibe.continue.md +88 -88
- package/.claude/commands/vibe.diagram.md +178 -178
- package/.claude/commands/vibe.reason.md +306 -306
- package/.claude/commands/vibe.run.md +760 -760
- package/.claude/commands/vibe.spec.md +339 -339
- package/.claude/commands/vibe.tool.md +153 -153
- package/.claude/commands/vibe.ui.md +137 -137
- package/.claude/commands/vibe.verify.md +238 -238
- package/.claude/settings.json +152 -152
- package/.claude/settings.local.json +4 -57
- package/.vibe/config.json +9 -0
- package/.vibe/constitution.md +184 -184
- package/.vibe/rules/core/communication-guide.md +104 -104
- package/.vibe/rules/core/development-philosophy.md +52 -52
- package/.vibe/rules/core/quick-start.md +120 -120
- package/.vibe/rules/quality/bdd-contract-testing.md +388 -388
- package/.vibe/rules/quality/checklist.md +276 -276
- package/.vibe/rules/quality/testing-strategy.md +437 -437
- package/.vibe/rules/standards/anti-patterns.md +369 -369
- package/.vibe/rules/standards/code-structure.md +291 -291
- package/.vibe/rules/standards/complexity-metrics.md +312 -312
- package/.vibe/rules/standards/naming-conventions.md +198 -198
- package/.vibe/rules/tools/mcp-hi-ai-guide.md +665 -665
- package/.vibe/rules/tools/mcp-workflow.md +51 -51
- package/.vibe/setup.sh +31 -31
- package/CLAUDE.md +122 -122
- package/LICENSE +21 -21
- package/README.md +568 -568
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +391 -406
- package/dist/cli/index.js.map +1 -1
- package/dist/lib/MemoryManager.js +92 -92
- package/dist/lib/PythonParser.js +108 -108
- package/dist/lib/gemini-mcp.js +15 -15
- package/dist/lib/gemini-oauth.d.ts.map +1 -1
- package/dist/lib/gemini-oauth.js +41 -38
- package/dist/lib/gemini-oauth.js.map +1 -1
- package/dist/lib/gpt-mcp.js +17 -17
- package/dist/lib/gpt-oauth.d.ts.map +1 -1
- package/dist/lib/gpt-oauth.js +50 -45
- package/dist/lib/gpt-oauth.js.map +1 -1
- package/dist/tools/analytics/getUsageAnalytics.js +12 -12
- package/dist/tools/memory/createMemoryTimeline.js +10 -10
- package/dist/tools/memory/getMemoryGraph.js +12 -12
- package/dist/tools/memory/getSessionContext.js +9 -9
- package/dist/tools/memory/linkMemories.js +14 -14
- package/dist/tools/memory/listMemories.js +4 -4
- package/dist/tools/memory/recallMemory.js +4 -4
- package/dist/tools/memory/saveMemory.js +4 -4
- package/dist/tools/memory/searchMemoriesAdvanced.js +22 -22
- package/dist/tools/planning/generatePrd.js +46 -46
- package/dist/tools/prompt/enhancePromptGemini.js +160 -160
- package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
- package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
- package/package.json +67 -67
- package/templates/constitution-template.md +184 -184
- package/templates/contract-backend-template.md +517 -517
- package/templates/contract-frontend-template.md +594 -594
- package/templates/feature-template.md +96 -96
- package/templates/hooks-template.json +103 -103
- package/templates/spec-template.md +199 -199
- package/dist/lib/vibe-mcp.d.ts.map +0 -1
- package/dist/lib/vibe-mcp.js.map +0 -1
|
@@ -99,134 +99,134 @@ export async function enhancePromptGemini(args) {
|
|
|
99
99
|
// Helper methods
|
|
100
100
|
function addFewShotExamples(prompt, agent_role) {
|
|
101
101
|
const examples = {
|
|
102
|
-
'Specification Agent': `
|
|
103
|
-
**예시 1: 푸시 알림 설정**
|
|
104
|
-
입력: "댓글, 좋아요, 팔로우 알림을 켜고 끌 수 있게 해주세요"
|
|
105
|
-
출력:
|
|
106
|
-
- 알림 유형: 6개 (댓글, 좋아요, 팔로우, 공지, 이벤트, 마케팅)
|
|
107
|
-
- 설정 방식: ON/OFF 토글
|
|
108
|
-
- 디자인 참고: iOS Settings > Notifications
|
|
109
|
-
- 기술 스택: FCM (기존 사용 중)
|
|
110
|
-
|
|
111
|
-
**예시 2: 사용자 프로필 편집**
|
|
112
|
-
입력: "프로필 사진이랑 자기소개를 바꿀 수 있게 해주세요"
|
|
113
|
-
출력:
|
|
114
|
-
- 편집 항목: 프로필 사진, 자기소개, 표시 이름
|
|
115
|
-
- 검증: 이미지 크기 < 5MB, 자기소개 < 500자
|
|
116
|
-
- UI 패턴: 인라인 편집 (모달 아님)
|
|
102
|
+
'Specification Agent': `
|
|
103
|
+
**예시 1: 푸시 알림 설정**
|
|
104
|
+
입력: "댓글, 좋아요, 팔로우 알림을 켜고 끌 수 있게 해주세요"
|
|
105
|
+
출력:
|
|
106
|
+
- 알림 유형: 6개 (댓글, 좋아요, 팔로우, 공지, 이벤트, 마케팅)
|
|
107
|
+
- 설정 방식: ON/OFF 토글
|
|
108
|
+
- 디자인 참고: iOS Settings > Notifications
|
|
109
|
+
- 기술 스택: FCM (기존 사용 중)
|
|
110
|
+
|
|
111
|
+
**예시 2: 사용자 프로필 편집**
|
|
112
|
+
입력: "프로필 사진이랑 자기소개를 바꿀 수 있게 해주세요"
|
|
113
|
+
출력:
|
|
114
|
+
- 편집 항목: 프로필 사진, 자기소개, 표시 이름
|
|
115
|
+
- 검증: 이미지 크기 < 5MB, 자기소개 < 500자
|
|
116
|
+
- UI 패턴: 인라인 편집 (모달 아님)
|
|
117
117
|
- 저장 방식: 자동 저장 (debounce 500ms)`,
|
|
118
|
-
'Planning Agent': `
|
|
119
|
-
**예시 1: API 엔드포인트 추가**
|
|
120
|
-
입력: "사용자 팔로우/언팔로우 기능"
|
|
121
|
-
출력:
|
|
122
|
-
- Phase 1: Backend (8시간)
|
|
123
|
-
- DB 스키마 (follows 테이블)
|
|
124
|
-
- API 엔드포인트 (POST /follows, DELETE /follows/:id)
|
|
125
|
-
- 비즈니스 로직 (중복 방지, 자기 팔로우 금지)
|
|
126
|
-
- Phase 2: Frontend (6시간)
|
|
127
|
-
- 팔로우 버튼 컴포넌트
|
|
128
|
-
- 팔로워/팔로잉 목록
|
|
129
|
-
- 비용 영향: +0원 (기존 인프라 활용)
|
|
130
|
-
|
|
131
|
-
**예시 2: 실시간 알림**
|
|
132
|
-
입력: "댓글 달리면 실시간으로 알림"
|
|
133
|
-
출력:
|
|
134
|
-
- Phase 1: WebSocket 서버 구축 (12시간)
|
|
135
|
-
- Phase 2: 클라이언트 구독 로직 (8시간)
|
|
136
|
-
- Phase 3: 알림 UI (6시간)
|
|
118
|
+
'Planning Agent': `
|
|
119
|
+
**예시 1: API 엔드포인트 추가**
|
|
120
|
+
입력: "사용자 팔로우/언팔로우 기능"
|
|
121
|
+
출력:
|
|
122
|
+
- Phase 1: Backend (8시간)
|
|
123
|
+
- DB 스키마 (follows 테이블)
|
|
124
|
+
- API 엔드포인트 (POST /follows, DELETE /follows/:id)
|
|
125
|
+
- 비즈니스 로직 (중복 방지, 자기 팔로우 금지)
|
|
126
|
+
- Phase 2: Frontend (6시간)
|
|
127
|
+
- 팔로우 버튼 컴포넌트
|
|
128
|
+
- 팔로워/팔로잉 목록
|
|
129
|
+
- 비용 영향: +0원 (기존 인프라 활용)
|
|
130
|
+
|
|
131
|
+
**예시 2: 실시간 알림**
|
|
132
|
+
입력: "댓글 달리면 실시간으로 알림"
|
|
133
|
+
출력:
|
|
134
|
+
- Phase 1: WebSocket 서버 구축 (12시간)
|
|
135
|
+
- Phase 2: 클라이언트 구독 로직 (8시간)
|
|
136
|
+
- Phase 3: 알림 UI (6시간)
|
|
137
137
|
- 비용 영향: +$20/월 (Redis Pub/Sub)`
|
|
138
138
|
};
|
|
139
|
-
return examples[agent_role] || `
|
|
140
|
-
**Few-Shot 예시를 작업 유형에 맞게 추가**:
|
|
141
|
-
- 예시 1: [구체적인 입력] → [명확한 출력]
|
|
142
|
-
- 예시 2: [다른 형태의 입력] → [일관된 형식의 출력]
|
|
143
|
-
- 예시 3: [엣지 케이스] → [처리 방법]
|
|
144
|
-
|
|
145
|
-
**지침**:
|
|
146
|
-
- 2-3개 예시 (과적합 방지)
|
|
147
|
-
- 다양한 시나리오 포함
|
|
139
|
+
return examples[agent_role] || `
|
|
140
|
+
**Few-Shot 예시를 작업 유형에 맞게 추가**:
|
|
141
|
+
- 예시 1: [구체적인 입력] → [명확한 출력]
|
|
142
|
+
- 예시 2: [다른 형태의 입력] → [일관된 형식의 출력]
|
|
143
|
+
- 예시 3: [엣지 케이스] → [처리 방법]
|
|
144
|
+
|
|
145
|
+
**지침**:
|
|
146
|
+
- 2-3개 예시 (과적합 방지)
|
|
147
|
+
- 다양한 시나리오 포함
|
|
148
148
|
- 일관된 출력 형식 유지`;
|
|
149
149
|
}
|
|
150
150
|
function specifyOutputFormat(prompt, agent_role) {
|
|
151
151
|
const formats = {
|
|
152
|
-
'Specification Agent': `
|
|
153
|
-
**출력 형식 (마크다운 + YAML frontmatter)**:
|
|
154
|
-
|
|
155
|
-
\`\`\`markdown
|
|
156
|
-
---
|
|
157
|
-
title: [기능 이름]
|
|
158
|
-
priority: [HIGH/MEDIUM/LOW]
|
|
159
|
-
created: [날짜]
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
# SPEC: [기능 이름]
|
|
163
|
-
|
|
164
|
-
## REQ-001: [요구사항 제목]
|
|
165
|
-
**WHEN** [조건]
|
|
166
|
-
**THEN** [결과]
|
|
167
|
-
|
|
168
|
-
### Acceptance Criteria
|
|
169
|
-
- [ ] [기준 1]
|
|
170
|
-
- [ ] [기준 2]
|
|
171
|
-
\`\`\`
|
|
172
|
-
|
|
152
|
+
'Specification Agent': `
|
|
153
|
+
**출력 형식 (마크다운 + YAML frontmatter)**:
|
|
154
|
+
|
|
155
|
+
\`\`\`markdown
|
|
156
|
+
---
|
|
157
|
+
title: [기능 이름]
|
|
158
|
+
priority: [HIGH/MEDIUM/LOW]
|
|
159
|
+
created: [날짜]
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
# SPEC: [기능 이름]
|
|
163
|
+
|
|
164
|
+
## REQ-001: [요구사항 제목]
|
|
165
|
+
**WHEN** [조건]
|
|
166
|
+
**THEN** [결과]
|
|
167
|
+
|
|
168
|
+
### Acceptance Criteria
|
|
169
|
+
- [ ] [기준 1]
|
|
170
|
+
- [ ] [기준 2]
|
|
171
|
+
\`\`\`
|
|
172
|
+
|
|
173
173
|
**응답 접두사**: "# SPEC: "로 시작하여 모델이 올바른 형식으로 완성하도록 유도`,
|
|
174
|
-
'Planning Agent': `
|
|
175
|
-
**출력 형식 (구조화된 마크다운)**:
|
|
176
|
-
|
|
177
|
-
\`\`\`markdown
|
|
178
|
-
# PLAN: [기능 이름]
|
|
179
|
-
|
|
180
|
-
## Architecture
|
|
181
|
-
- Backend: [기술 스택]
|
|
182
|
-
- Frontend: [기술 스택]
|
|
183
|
-
- Database: [스키마 변경사항]
|
|
184
|
-
|
|
185
|
-
## Timeline
|
|
186
|
-
| Phase | Tasks | Duration |
|
|
187
|
-
|-------|-------|----------|
|
|
188
|
-
| 1 | ... | 8h |
|
|
189
|
-
|
|
190
|
-
## Cost Analysis
|
|
191
|
-
- Infrastructure: +$X/월
|
|
192
|
-
- Third-party: +$Y/월
|
|
193
|
-
- Total: +$Z/월
|
|
194
|
-
\`\`\`
|
|
195
|
-
|
|
174
|
+
'Planning Agent': `
|
|
175
|
+
**출력 형식 (구조화된 마크다운)**:
|
|
176
|
+
|
|
177
|
+
\`\`\`markdown
|
|
178
|
+
# PLAN: [기능 이름]
|
|
179
|
+
|
|
180
|
+
## Architecture
|
|
181
|
+
- Backend: [기술 스택]
|
|
182
|
+
- Frontend: [기술 스택]
|
|
183
|
+
- Database: [스키마 변경사항]
|
|
184
|
+
|
|
185
|
+
## Timeline
|
|
186
|
+
| Phase | Tasks | Duration |
|
|
187
|
+
|-------|-------|----------|
|
|
188
|
+
| 1 | ... | 8h |
|
|
189
|
+
|
|
190
|
+
## Cost Analysis
|
|
191
|
+
- Infrastructure: +$X/월
|
|
192
|
+
- Third-party: +$Y/월
|
|
193
|
+
- Total: +$Z/월
|
|
194
|
+
\`\`\`
|
|
195
|
+
|
|
196
196
|
**응답 접두사**: "# PLAN: "로 시작`
|
|
197
197
|
};
|
|
198
|
-
return formats[agent_role] || `
|
|
199
|
-
**출력 형식 명시**:
|
|
200
|
-
- 마크다운 헤더로 섹션 구분 (##, ###)
|
|
201
|
-
- 테이블, 불릿 포인트, 체크박스 활용
|
|
202
|
-
- XML 태그로 의미 구성요소 레이블링 (선택)
|
|
203
|
-
예: <analysis>...</analysis>, <recommendation>...</recommendation>
|
|
204
|
-
- 응답 접두사로 완성 유도
|
|
198
|
+
return formats[agent_role] || `
|
|
199
|
+
**출력 형식 명시**:
|
|
200
|
+
- 마크다운 헤더로 섹션 구분 (##, ###)
|
|
201
|
+
- 테이블, 불릿 포인트, 체크박스 활용
|
|
202
|
+
- XML 태그로 의미 구성요소 레이블링 (선택)
|
|
203
|
+
예: <analysis>...</analysis>, <recommendation>...</recommendation>
|
|
204
|
+
- 응답 접두사로 완성 유도
|
|
205
205
|
예: "분석 결과: "로 시작하면 모델이 분석 내용으로 완성`;
|
|
206
206
|
}
|
|
207
207
|
function optimizeContextPlacement(prompt) {
|
|
208
|
-
return `
|
|
209
|
-
**컨텍스트 배치 최적화 (Gemini 3 권장)**:
|
|
210
|
-
|
|
211
|
-
1. **긴 컨텍스트를 앞에 배치**:
|
|
212
|
-
\`\`\`
|
|
213
|
-
[기술 스택 정보 (CLAUDE.md 내용)]
|
|
214
|
-
[기존 코드베이스 구조]
|
|
215
|
-
[관련 SPEC/PLAN 문서]
|
|
216
|
-
|
|
217
|
-
--- 이후 구체적 요청 ---
|
|
218
|
-
|
|
219
|
-
[사용자의 구체적 질문이나 작업]
|
|
220
|
-
\`\`\`
|
|
221
|
-
|
|
222
|
-
2. **컨텍스트 구조화**:
|
|
223
|
-
- 카테고리별로 그룹화 (기술 스택, 아키텍처, 비즈니스 로직)
|
|
224
|
-
- 중요한 제약 조건은 반복해서 강조
|
|
225
|
-
- 참조 가능하도록 명확한 레이블링
|
|
226
|
-
|
|
227
|
-
3. **명시적 지시사항 배치**:
|
|
228
|
-
- 컨텍스트 다음에 구체적 작업 지시
|
|
229
|
-
- 단계별 지침 (1, 2, 3...)
|
|
208
|
+
return `
|
|
209
|
+
**컨텍스트 배치 최적화 (Gemini 3 권장)**:
|
|
210
|
+
|
|
211
|
+
1. **긴 컨텍스트를 앞에 배치**:
|
|
212
|
+
\`\`\`
|
|
213
|
+
[기술 스택 정보 (CLAUDE.md 내용)]
|
|
214
|
+
[기존 코드베이스 구조]
|
|
215
|
+
[관련 SPEC/PLAN 문서]
|
|
216
|
+
|
|
217
|
+
--- 이후 구체적 요청 ---
|
|
218
|
+
|
|
219
|
+
[사용자의 구체적 질문이나 작업]
|
|
220
|
+
\`\`\`
|
|
221
|
+
|
|
222
|
+
2. **컨텍스트 구조화**:
|
|
223
|
+
- 카테고리별로 그룹화 (기술 스택, 아키텍처, 비즈니스 로직)
|
|
224
|
+
- 중요한 제약 조건은 반복해서 강조
|
|
225
|
+
- 참조 가능하도록 명확한 레이블링
|
|
226
|
+
|
|
227
|
+
3. **명시적 지시사항 배치**:
|
|
228
|
+
- 컨텍스트 다음에 구체적 작업 지시
|
|
229
|
+
- 단계별 지침 (1, 2, 3...)
|
|
230
230
|
- 출력 형식 예시`;
|
|
231
231
|
}
|
|
232
232
|
function decomposePrompt(prompt, agent_role) {
|
|
@@ -234,32 +234,32 @@ function decomposePrompt(prompt, agent_role) {
|
|
|
234
234
|
if (!isComplex) {
|
|
235
235
|
return '**프롬프트 분해 불필요**: 단순한 작업이므로 단일 프롬프트로 충분합니다.';
|
|
236
236
|
}
|
|
237
|
-
return `
|
|
238
|
-
**프롬프트 분해 (순차적 체인)**:
|
|
239
|
-
|
|
240
|
-
**Step 1: 정보 수집**
|
|
241
|
-
\`\`\`
|
|
242
|
-
프롬프트: "${prompt.slice(0, 100)}..."에 대한 필수 정보를 식별하세요.
|
|
243
|
-
출력: 필요한 기술 스택, 제약 조건, 선행 작업 목록
|
|
244
|
-
\`\`\`
|
|
245
|
-
|
|
246
|
-
**Step 2: 분석 및 계획**
|
|
247
|
-
\`\`\`
|
|
248
|
-
프롬프트: Step 1의 정보를 바탕으로 구현 계획을 작성하세요.
|
|
249
|
-
입력: [Step 1의 출력]
|
|
250
|
-
출력: Phase별 작업, 타임라인, 리스크
|
|
251
|
-
\`\`\`
|
|
252
|
-
|
|
253
|
-
**Step 3: 세부 작업 생성**
|
|
254
|
-
\`\`\`
|
|
255
|
-
프롬프트: Step 2의 계획을 실행 가능한 작업으로 분해하세요.
|
|
256
|
-
입력: [Step 2의 출력]
|
|
257
|
-
출력: Task 목록 (의존성 포함)
|
|
258
|
-
\`\`\`
|
|
259
|
-
|
|
260
|
-
**장점**:
|
|
261
|
-
- 각 단계의 출력 품질 향상
|
|
262
|
-
- 중간 검증 가능
|
|
237
|
+
return `
|
|
238
|
+
**프롬프트 분해 (순차적 체인)**:
|
|
239
|
+
|
|
240
|
+
**Step 1: 정보 수집**
|
|
241
|
+
\`\`\`
|
|
242
|
+
프롬프트: "${prompt.slice(0, 100)}..."에 대한 필수 정보를 식별하세요.
|
|
243
|
+
출력: 필요한 기술 스택, 제약 조건, 선행 작업 목록
|
|
244
|
+
\`\`\`
|
|
245
|
+
|
|
246
|
+
**Step 2: 분석 및 계획**
|
|
247
|
+
\`\`\`
|
|
248
|
+
프롬프트: Step 1의 정보를 바탕으로 구현 계획을 작성하세요.
|
|
249
|
+
입력: [Step 1의 출력]
|
|
250
|
+
출력: Phase별 작업, 타임라인, 리스크
|
|
251
|
+
\`\`\`
|
|
252
|
+
|
|
253
|
+
**Step 3: 세부 작업 생성**
|
|
254
|
+
\`\`\`
|
|
255
|
+
프롬프트: Step 2의 계획을 실행 가능한 작업으로 분해하세요.
|
|
256
|
+
입력: [Step 2의 출력]
|
|
257
|
+
출력: Task 목록 (의존성 포함)
|
|
258
|
+
\`\`\`
|
|
259
|
+
|
|
260
|
+
**장점**:
|
|
261
|
+
- 각 단계의 출력 품질 향상
|
|
262
|
+
- 중간 검증 가능
|
|
263
263
|
- 에러 발생 시 특정 단계만 재실행`;
|
|
264
264
|
}
|
|
265
265
|
function suggestParameters(prompt, agent_role) {
|
|
@@ -277,24 +277,24 @@ function suggestParameters(prompt, agent_role) {
|
|
|
277
277
|
topP = 0.8;
|
|
278
278
|
topK = 20;
|
|
279
279
|
}
|
|
280
|
-
return `
|
|
281
|
-
**권장 매개변수** (작업 특성 기반):
|
|
282
|
-
|
|
283
|
-
- **Temperature**: ${temperature}
|
|
284
|
-
${temperature > 0.7 ? '창의적 작업에 적합 (다양한 옵션 탐색)' : '결정적 작업에 적합 (일관된 출력)'}
|
|
285
|
-
|
|
286
|
-
- **Top-P**: ${topP}
|
|
287
|
-
누적 확률 ${topP * 100}%까지의 토큰만 선택
|
|
288
|
-
|
|
289
|
-
- **Top-K**: ${topK}
|
|
290
|
-
상위 ${topK}개 토큰만 고려
|
|
291
|
-
|
|
292
|
-
- **Max Output Tokens**: ${agent_role === 'Specification Agent' ? '4000 (상세 문서)' : '2000 (일반)'}
|
|
293
|
-
|
|
294
|
-
- **Stop Sequences**: ["---END---", "\`\`\`"] (선택)
|
|
295
|
-
|
|
296
|
-
**주의**:
|
|
297
|
-
- Gemini 3는 temperature 기본값 1.0 유지 권장
|
|
280
|
+
return `
|
|
281
|
+
**권장 매개변수** (작업 특성 기반):
|
|
282
|
+
|
|
283
|
+
- **Temperature**: ${temperature}
|
|
284
|
+
${temperature > 0.7 ? '창의적 작업에 적합 (다양한 옵션 탐색)' : '결정적 작업에 적합 (일관된 출력)'}
|
|
285
|
+
|
|
286
|
+
- **Top-P**: ${topP}
|
|
287
|
+
누적 확률 ${topP * 100}%까지의 토큰만 선택
|
|
288
|
+
|
|
289
|
+
- **Top-K**: ${topK}
|
|
290
|
+
상위 ${topK}개 토큰만 고려
|
|
291
|
+
|
|
292
|
+
- **Max Output Tokens**: ${agent_role === 'Specification Agent' ? '4000 (상세 문서)' : '2000 (일반)'}
|
|
293
|
+
|
|
294
|
+
- **Stop Sequences**: ["---END---", "\`\`\`"] (선택)
|
|
295
|
+
|
|
296
|
+
**주의**:
|
|
297
|
+
- Gemini 3는 temperature 기본값 1.0 유지 권장
|
|
298
298
|
- 예상치 못한 동작 방지를 위해 기본값에서 크게 벗어나지 않기`;
|
|
299
299
|
}
|
|
300
300
|
function combineEnhancements(prompt, enhancements) {
|
|
@@ -308,7 +308,7 @@ function combineEnhancements(prompt, enhancements) {
|
|
|
308
308
|
return enhanced;
|
|
309
309
|
}
|
|
310
310
|
function generateSummary(enhancements) {
|
|
311
|
-
return `${enhancements.length}개의 Gemini 프롬프팅 전략을 적용하여 프롬프트 품질을 향상시켰습니다:
|
|
311
|
+
return `${enhancements.length}개의 Gemini 프롬프팅 전략을 적용하여 프롬프트 품질을 향상시켰습니다:
|
|
312
312
|
${enhancements.map(e => `- ${e.strategy}: ${e.improvement}`).join('\n')}`;
|
|
313
313
|
}
|
|
314
314
|
function formatOutput(result) {
|
|
@@ -154,10 +154,10 @@ export async function applyReasoningFramework(args) {
|
|
|
154
154
|
}
|
|
155
155
|
// Helper methods
|
|
156
156
|
function analyzeConstraints(problem, context) {
|
|
157
|
-
return `**제약 조건 분석**:
|
|
158
|
-
- 정책/규칙: ${context ? '프로젝트 컨텍스트 확인 필요' : 'CLAUDE.md, constitution.md 확인 필요'}
|
|
159
|
-
- 작업 순서: 선행 작업 식별 필요 (DB → Backend → Frontend 패턴 고려)
|
|
160
|
-
- 전제 조건: ${problem}을(를) 위한 필수 정보/도구 확인
|
|
157
|
+
return `**제약 조건 분석**:
|
|
158
|
+
- 정책/규칙: ${context ? '프로젝트 컨텍스트 확인 필요' : 'CLAUDE.md, constitution.md 확인 필요'}
|
|
159
|
+
- 작업 순서: 선행 작업 식별 필요 (DB → Backend → Frontend 패턴 고려)
|
|
160
|
+
- 전제 조건: ${problem}을(를) 위한 필수 정보/도구 확인
|
|
161
161
|
- 사용자 제약: 명시적 요청사항 우선 적용`;
|
|
162
162
|
}
|
|
163
163
|
function assessRisks(problem, context) {
|
|
@@ -166,82 +166,82 @@ function assessRisks(problem, context) {
|
|
|
166
166
|
problem.toLowerCase().includes('확인') ||
|
|
167
167
|
problem.toLowerCase().includes('find') ||
|
|
168
168
|
problem.toLowerCase().includes('analyze');
|
|
169
|
-
return `**위험 평가**:
|
|
170
|
-
- 작업 유형: ${isExploration ? '탐색 작업 (낮은 위험)' : '구현 작업 (높은 위험)'}
|
|
171
|
-
- 롤백 가능성: ${isExploration ? '높음' : '확인 필요'}
|
|
172
|
-
- 호환성 위험: 기존 코드와의 충돌 가능성 검토
|
|
173
|
-
- 보안 위험: SQL Injection, XSS, 민감 정보 노출 검토
|
|
169
|
+
return `**위험 평가**:
|
|
170
|
+
- 작업 유형: ${isExploration ? '탐색 작업 (낮은 위험)' : '구현 작업 (높은 위험)'}
|
|
171
|
+
- 롤백 가능성: ${isExploration ? '높음' : '확인 필요'}
|
|
172
|
+
- 호환성 위험: 기존 코드와의 충돌 가능성 검토
|
|
173
|
+
- 보안 위험: SQL Injection, XSS, 민감 정보 노출 검토
|
|
174
174
|
- 성능 위험: N+1 쿼리, 메모리 누수, 불필요한 리렌더 검토`;
|
|
175
175
|
}
|
|
176
176
|
function generateHypotheses(problem, context) {
|
|
177
|
-
return `**가설 생성**:
|
|
178
|
-
1. **가설 1** (가능성: 높음)
|
|
179
|
-
- 근거: ${problem}의 가장 직접적인 원인
|
|
180
|
-
- 검증: [도구/파일]을 통해 확인
|
|
181
|
-
2. **가설 2** (가능성: 중간)
|
|
182
|
-
- 근거: 간접적 요인 또는 환경 차이
|
|
183
|
-
- 검증: 추가 정보 수집 필요
|
|
184
|
-
3. **가설 3** (가능성: 낮음)
|
|
185
|
-
- 근거: 엣지 케이스 또는 드문 상황
|
|
186
|
-
- 검증: 다른 가설 반증 시 검토
|
|
187
|
-
|
|
177
|
+
return `**가설 생성**:
|
|
178
|
+
1. **가설 1** (가능성: 높음)
|
|
179
|
+
- 근거: ${problem}의 가장 직접적인 원인
|
|
180
|
+
- 검증: [도구/파일]을 통해 확인
|
|
181
|
+
2. **가설 2** (가능성: 중간)
|
|
182
|
+
- 근거: 간접적 요인 또는 환경 차이
|
|
183
|
+
- 검증: 추가 정보 수집 필요
|
|
184
|
+
3. **가설 3** (가능성: 낮음)
|
|
185
|
+
- 근거: 엣지 케이스 또는 드문 상황
|
|
186
|
+
- 검증: 다른 가설 반증 시 검토
|
|
187
|
+
|
|
188
188
|
**우선순위**: 가능성 높은 순으로 검증하되, 낮은 가능성도 완전히 배제하지 않음`;
|
|
189
189
|
}
|
|
190
190
|
function evaluateAdaptability(problem, context) {
|
|
191
|
-
return `**적응성 평가**:
|
|
192
|
-
- 관찰 결과 반영: 새로운 정보에 따라 계획 수정 필요 여부 확인
|
|
193
|
-
- 가설 업데이트: 반증된 가설 폐기, 새 가설 생성
|
|
194
|
-
- 백트래킹: 막다른 길 도달 시 이전 단계로 돌아가 다른 경로 탐색
|
|
191
|
+
return `**적응성 평가**:
|
|
192
|
+
- 관찰 결과 반영: 새로운 정보에 따라 계획 수정 필요 여부 확인
|
|
193
|
+
- 가설 업데이트: 반증된 가설 폐기, 새 가설 생성
|
|
194
|
+
- 백트래킹: 막다른 길 도달 시 이전 단계로 돌아가 다른 경로 탐색
|
|
195
195
|
- 계획 재평가: 전체 접근법이 유효한지 주기적으로 검토`;
|
|
196
196
|
}
|
|
197
197
|
function identifyInformationSources(problem, context) {
|
|
198
|
-
return `**정보 소스**:
|
|
199
|
-
1. **도구**:
|
|
200
|
-
- MCP 도구 (hi-ai 38개 도구)
|
|
201
|
-
- 파일 시스템 (Read, Write, Edit, Glob, Grep)
|
|
202
|
-
- Git, 패키지 관리자
|
|
203
|
-
2. **정책/규칙**:
|
|
204
|
-
- CLAUDE.md (기술 스택, 아키텍처)
|
|
205
|
-
- .vibe/constitution.md (프로젝트 규칙)
|
|
206
|
-
- skills/ 폴더 (품질 기준, 코딩 표준)
|
|
207
|
-
3. **메모리**:
|
|
208
|
-
- recall_memory (이전 세션 정보)
|
|
209
|
-
- restore_session_context (컨텍스트 복원)
|
|
210
|
-
4. **사용자 확인**:
|
|
211
|
-
- 비즈니스 로직 세부사항
|
|
212
|
-
- 디자인 선호도
|
|
198
|
+
return `**정보 소스**:
|
|
199
|
+
1. **도구**:
|
|
200
|
+
- MCP 도구 (hi-ai 38개 도구)
|
|
201
|
+
- 파일 시스템 (Read, Write, Edit, Glob, Grep)
|
|
202
|
+
- Git, 패키지 관리자
|
|
203
|
+
2. **정책/규칙**:
|
|
204
|
+
- CLAUDE.md (기술 스택, 아키텍처)
|
|
205
|
+
- .vibe/constitution.md (프로젝트 규칙)
|
|
206
|
+
- skills/ 폴더 (품질 기준, 코딩 표준)
|
|
207
|
+
3. **메모리**:
|
|
208
|
+
- recall_memory (이전 세션 정보)
|
|
209
|
+
- restore_session_context (컨텍스트 복원)
|
|
210
|
+
4. **사용자 확인**:
|
|
211
|
+
- 비즈니스 로직 세부사항
|
|
212
|
+
- 디자인 선호도
|
|
213
213
|
- 우선순위 결정`;
|
|
214
214
|
}
|
|
215
215
|
function ensurePrecision(problem, context) {
|
|
216
|
-
return `**정밀성 확보**:
|
|
217
|
-
- 정책 인용: "CLAUDE.md:12에 따르면..." 형식으로 명시
|
|
218
|
-
- 코드 참조: "users.py:45의 User 모델" 형식으로 파일명:라인 포함
|
|
219
|
-
- 숫자 정확성: 복잡도, 커버리지, 성능 지표를 정확한 수치로 표현
|
|
216
|
+
return `**정밀성 확보**:
|
|
217
|
+
- 정책 인용: "CLAUDE.md:12에 따르면..." 형식으로 명시
|
|
218
|
+
- 코드 참조: "users.py:45의 User 모델" 형식으로 파일명:라인 포함
|
|
219
|
+
- 숫자 정확성: 복잡도, 커버리지, 성능 지표를 정확한 수치로 표현
|
|
220
220
|
- 근거 제시: 모든 주장에 대해 출처와 근거 명확히`;
|
|
221
221
|
}
|
|
222
222
|
function ensureCompleteness(problem, context) {
|
|
223
|
-
return `**완전성 확보**:
|
|
224
|
-
- 충돌 해결: 정책 → 작업 순서 → 전제 조건 → 사용자 선호도 순
|
|
225
|
-
- 옵션 탐색: 단일 해결책에 조기 고정하지 않고 여러 대안 검토
|
|
226
|
-
- 정보 검토: 모든 관련 정보 소스(#5) 철저히 검토
|
|
223
|
+
return `**완전성 확보**:
|
|
224
|
+
- 충돌 해결: 정책 → 작업 순서 → 전제 조건 → 사용자 선호도 순
|
|
225
|
+
- 옵션 탐색: 단일 해결책에 조기 고정하지 않고 여러 대안 검토
|
|
226
|
+
- 정보 검토: 모든 관련 정보 소스(#5) 철저히 검토
|
|
227
227
|
- 사용자 확인: 불확실한 부분은 가정하지 말고 확인`;
|
|
228
228
|
}
|
|
229
229
|
function demonstratePersistence(problem, context) {
|
|
230
|
-
return `**끈기 전략**:
|
|
231
|
-
- 일시적 오류: 지수 백오프로 재시도 (예: 1초, 2초, 4초...)
|
|
232
|
-
- 한계 인식: 명확한 재시도 제한, 타임아웃 도달 시 중단
|
|
233
|
-
- 전략 변경: 같은 실패 반복 X → 다른 접근법 시도
|
|
230
|
+
return `**끈기 전략**:
|
|
231
|
+
- 일시적 오류: 지수 백오프로 재시도 (예: 1초, 2초, 4초...)
|
|
232
|
+
- 한계 인식: 명확한 재시도 제한, 타임아웃 도달 시 중단
|
|
233
|
+
- 전략 변경: 같은 실패 반복 X → 다른 접근법 시도
|
|
234
234
|
- 철저한 분석: 시간이 걸리더라도 모든 추론 단계 완료`;
|
|
235
235
|
}
|
|
236
236
|
function planExecution(problem, context) {
|
|
237
|
-
return `**실행 계획**:
|
|
238
|
-
1. **추론 문서화**: 복잡한 결정의 경우 추론 과정 간략히 설명
|
|
239
|
-
2. **단계별 실행**: 한 번에 하나의 주요 행동만 수행
|
|
240
|
-
3. **결과 확인**: 각 행동의 결과를 확인한 후 다음 단계로 진행
|
|
237
|
+
return `**실행 계획**:
|
|
238
|
+
1. **추론 문서화**: 복잡한 결정의 경우 추론 과정 간략히 설명
|
|
239
|
+
2. **단계별 실행**: 한 번에 하나의 주요 행동만 수행
|
|
240
|
+
3. **결과 확인**: 각 행동의 결과를 확인한 후 다음 단계로 진행
|
|
241
241
|
4. **롤백 대비**: 문제 발생 시 이전 상태로 복구 가능하도록 준비`;
|
|
242
242
|
}
|
|
243
243
|
function generateSummary(problem, steps) {
|
|
244
|
-
return `9단계 추론 프레임워크를 "${problem}"에 적용했습니다.
|
|
244
|
+
return `9단계 추론 프레임워크를 "${problem}"에 적용했습니다.
|
|
245
245
|
총 ${steps.length}개 단계를 체계적으로 분석하여 논리적 종속성, 위험, 가설, 정보 소스를 포괄적으로 검토했습니다.`;
|
|
246
246
|
}
|
|
247
247
|
function formatOutput(result) {
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
import { ProjectCache } from '../../lib/ProjectCache.js';
|
|
3
3
|
export const analyzeDependencyGraphDefinition = {
|
|
4
4
|
name: 'analyze_dependency_graph',
|
|
5
|
-
description: `코드 의존성 그래프를 분석합니다.
|
|
6
|
-
|
|
7
|
-
키워드: 의존성, 관계 분석, 순환 참조, dependency graph, circular dependency
|
|
8
|
-
|
|
9
|
-
**분석 내용:**
|
|
10
|
-
- 파일 간 import/export 관계
|
|
11
|
-
- 순환 의존성 감지
|
|
12
|
-
- 모듈 클러스터 식별
|
|
13
|
-
- 코드 결합도 분석
|
|
14
|
-
|
|
15
|
-
사용 예시:
|
|
16
|
-
- "src 폴더의 의존성 그래프 분석해줘"
|
|
5
|
+
description: `코드 의존성 그래프를 분석합니다.
|
|
6
|
+
|
|
7
|
+
키워드: 의존성, 관계 분석, 순환 참조, dependency graph, circular dependency
|
|
8
|
+
|
|
9
|
+
**분석 내용:**
|
|
10
|
+
- 파일 간 import/export 관계
|
|
11
|
+
- 순환 의존성 감지
|
|
12
|
+
- 모듈 클러스터 식별
|
|
13
|
+
- 코드 결합도 분석
|
|
14
|
+
|
|
15
|
+
사용 예시:
|
|
16
|
+
- "src 폴더의 의존성 그래프 분석해줘"
|
|
17
17
|
- "index.ts의 의존 관계 보여줘"`,
|
|
18
18
|
inputSchema: {
|
|
19
19
|
type: 'object',
|