@tienne/gestalt 0.5.0 → 0.6.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.backup.md +442 -0
- package/README.ko.md +466 -0
- package/README.md +315 -283
- package/dist/bin/gestalt.js +8 -0
- package/dist/bin/gestalt.js.map +1 -1
- package/dist/package.json +9 -3
- package/dist/review-agents/performance-reviewer/AGENT.md +31 -0
- package/dist/review-agents/quality-reviewer/AGENT.md +31 -0
- package/dist/review-agents/security-reviewer/AGENT.md +32 -0
- package/dist/role-agents/architect/AGENT.md +30 -0
- package/dist/role-agents/backend-developer/AGENT.md +30 -0
- package/dist/role-agents/designer/AGENT.md +30 -0
- package/dist/role-agents/devops-engineer/AGENT.md +30 -0
- package/dist/role-agents/frontend-developer/AGENT.md +30 -0
- package/dist/role-agents/product-planner/AGENT.md +30 -0
- package/dist/role-agents/qa-engineer/AGENT.md +30 -0
- package/dist/role-agents/researcher/AGENT.md +30 -0
- package/dist/role-agents/technical-writer/AGENT.md +212 -0
- package/dist/skills/agent/SKILL.md +102 -0
- package/dist/skills/execute/SKILL.md +274 -6
- package/dist/src/agent/role-agent-registry.d.ts +4 -2
- package/dist/src/agent/role-agent-registry.d.ts.map +1 -1
- package/dist/src/agent/role-agent-registry.js +12 -3
- package/dist/src/agent/role-agent-registry.js.map +1 -1
- package/dist/src/cli/commands/interview.d.ts +4 -1
- package/dist/src/cli/commands/interview.d.ts.map +1 -1
- package/dist/src/cli/commands/interview.js +55 -2
- package/dist/src/cli/commands/interview.js.map +1 -1
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +3 -2
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/core/config.d.ts +3 -0
- package/dist/src/core/config.d.ts.map +1 -1
- package/dist/src/core/config.js +4 -0
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/types.d.ts +28 -0
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +12 -1
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/agent-passthrough.d.ts +7 -0
- package/dist/src/mcp/tools/agent-passthrough.d.ts.map +1 -0
- package/dist/src/mcp/tools/agent-passthrough.js +49 -0
- package/dist/src/mcp/tools/agent-passthrough.js.map +1 -0
- package/dist/src/recording/filename-generator.d.ts +18 -0
- package/dist/src/recording/filename-generator.d.ts.map +1 -0
- package/dist/src/recording/filename-generator.js +60 -0
- package/dist/src/recording/filename-generator.js.map +1 -0
- package/dist/src/recording/gif-generator.d.ts +21 -0
- package/dist/src/recording/gif-generator.d.ts.map +1 -0
- package/dist/src/recording/gif-generator.js +121 -0
- package/dist/src/recording/gif-generator.js.map +1 -0
- package/dist/src/recording/recording-dir.d.ts +5 -0
- package/dist/src/recording/recording-dir.d.ts.map +1 -0
- package/dist/src/recording/recording-dir.js +13 -0
- package/dist/src/recording/recording-dir.js.map +1 -0
- package/dist/src/recording/resume-detector.d.ts +10 -0
- package/dist/src/recording/resume-detector.d.ts.map +1 -0
- package/dist/src/recording/resume-detector.js +14 -0
- package/dist/src/recording/resume-detector.js.map +1 -0
- package/dist/src/recording/segment-merger.d.ts +27 -0
- package/dist/src/recording/segment-merger.d.ts.map +1 -0
- package/dist/src/recording/segment-merger.js +65 -0
- package/dist/src/recording/segment-merger.js.map +1 -0
- package/dist/src/recording/terminal-recorder.d.ts +31 -0
- package/dist/src/recording/terminal-recorder.d.ts.map +1 -0
- package/dist/src/recording/terminal-recorder.js +111 -0
- package/dist/src/recording/terminal-recorder.js.map +1 -0
- package/package.json +9 -3
- package/review-agents/performance-reviewer/AGENT.md +31 -0
- package/review-agents/quality-reviewer/AGENT.md +31 -0
- package/review-agents/security-reviewer/AGENT.md +32 -0
- package/role-agents/architect/AGENT.md +30 -0
- package/role-agents/backend-developer/AGENT.md +30 -0
- package/role-agents/designer/AGENT.md +30 -0
- package/role-agents/devops-engineer/AGENT.md +30 -0
- package/role-agents/frontend-developer/AGENT.md +30 -0
- package/role-agents/product-planner/AGENT.md +30 -0
- package/role-agents/qa-engineer/AGENT.md +30 -0
- package/role-agents/researcher/AGENT.md +30 -0
- package/role-agents/technical-writer/AGENT.md +212 -0
- package/skills/agent/SKILL.md +102 -0
- package/skills/execute/SKILL.md +274 -6
package/README.backup.md
ADDED
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/logo.svg" alt="Gestalt" width="600" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<strong>Gestalt psychology-driven AI development harness</strong><br/>
|
|
7
|
+
Transforms scattered requirements into structured, validated specifications through interactive interviews.
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<a href="https://github.com/tienne/gestalt/actions/workflows/ci.yml"><img src="https://github.com/tienne/gestalt/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
|
|
12
|
+
<a href="https://www.npmjs.com/package/@tienne/gestalt"><img src="https://img.shields.io/npm/v/@tienne/gestalt" alt="npm version" /></a>
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Prerequisites
|
|
18
|
+
|
|
19
|
+
- **Node.js >= 20.0.0** (22.x recommended)
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
node --version # v20.x.x 이상이어야 합니다
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Node 18 이하에서는 MCP SDK의 ES2024 기능 호환성 문제로 실행이 실패합니다. [nvm](https://github.com/nvm-sh/nvm) 사용 시:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
nvm install 22
|
|
29
|
+
nvm use 22
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Installation
|
|
33
|
+
|
|
34
|
+
### Claude Plugin (Recommended)
|
|
35
|
+
|
|
36
|
+
Claude Code 마켓플레이스를 통해 설치하면 MCP 서버, Skill, Agent, CLAUDE.md가 자동 구성된다.
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# 1. 마켓플레이스 등록 (최초 1회)
|
|
40
|
+
/plugin marketplace add tienne/gestalt
|
|
41
|
+
|
|
42
|
+
# 2. 플러그인 설치
|
|
43
|
+
/plugin install gestalt@gestalt
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
플러그인 설치 시 포함되는 항목:
|
|
47
|
+
|
|
48
|
+
| 항목 | 내용 |
|
|
49
|
+
|------|------|
|
|
50
|
+
| **MCP Tools** | `ges_interview`, `ges_generate_spec`, `ges_execute`, `ges_create_agent`, `ges_status` |
|
|
51
|
+
| **Skills** | `/interview`, `/spec`, `/execute` (slash command) |
|
|
52
|
+
| **Agents** | 5개 Gestalt Agent + 8개 Role Agent |
|
|
53
|
+
| **CLAUDE.md** | 프로젝트 컨텍스트 및 MCP 사용 가이드 자동 주입 |
|
|
54
|
+
|
|
55
|
+
설치 후 바로 사용 가능:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
/interview "사용자 인증 시스템" # 요구사항 인터뷰 시작
|
|
59
|
+
/spec # 인터뷰 완료 후 Spec 생성
|
|
60
|
+
/execute # Spec 기반 실행 계획 수립 및 실행
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Claude Code MCP
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
claude mcp add gestalt -- npx -y @tienne/gestalt
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### npx (No Install)
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
npx -y @tienne/gestalt
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Global Install
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
npm install -g @tienne/gestalt
|
|
79
|
+
gestalt
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## How It Works
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
Interview → Spec → Execute → Evaluate → Evolve
|
|
86
|
+
↓
|
|
87
|
+
Lateral Thinking (resilience)
|
|
88
|
+
↓
|
|
89
|
+
Human Escalation (if exhausted)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 1. Interview
|
|
93
|
+
|
|
94
|
+
Gestalt 원리가 각 라운드의 질문 방향을 가이드하여 **모호성 점수(ambiguity score)가 0.2 이하**로 떨어질 때까지 요구사항을 명확화한다.
|
|
95
|
+
|
|
96
|
+
- 프로젝트 유형 자동 감지 (greenfield / brownfield)
|
|
97
|
+
- 5가지 Gestalt 원리 기반 동적 질문 선택 알고리즘
|
|
98
|
+
- 차원별 가중치 기반 모호성 점수 산출
|
|
99
|
+
- 모순 감지 시 Continuity 원리 자동 개입 + 페널티 부여
|
|
100
|
+
|
|
101
|
+
### 2. Spec Generation
|
|
102
|
+
|
|
103
|
+
완료된 인터뷰에서 **구조화된 프로젝트 스펙**을 생성한다. 2-Call Passthrough 패턴으로 동작.
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
Call 1: specContext 요청 → systemPrompt + specPrompt + 전체 인터뷰 라운드 반환
|
|
107
|
+
Call 2: caller가 생성한 Spec JSON 제출 → Zod 검증 후 저장
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Spec 구성요소: `goal`, `constraints`, `acceptanceCriteria`, `ontologySchema` (entities + relations), `gestaltAnalysis`
|
|
111
|
+
|
|
112
|
+
### 3. Execute (Planning)
|
|
113
|
+
|
|
114
|
+
Gestalt 4원리를 **고정 순서**로 적용하여 실행 계획을 수립한다.
|
|
115
|
+
|
|
116
|
+
| Step | Principle | 역할 |
|
|
117
|
+
|:---:|---|---|
|
|
118
|
+
| 1 | **Figure-Ground** | AC를 essential(figure) / supplementary(ground)로 분류 |
|
|
119
|
+
| 2 | **Closure** | AC를 원자적 태스크로 분해 (암묵적 하위 태스크 포함) |
|
|
120
|
+
| 3 | **Proximity** | 관련 태스크를 도메인/기능 영역별로 그룹핑 |
|
|
121
|
+
| 4 | **Continuity** | DAG 검증 — 순환 의존, 그룹 간 충돌 확인, 위상 정렬 |
|
|
122
|
+
|
|
123
|
+
결과물: `ExecutionPlan` (classifiedACs, atomicTasks, taskGroups, dagValidation, criticalPath)
|
|
124
|
+
|
|
125
|
+
### 4. Execute (Execution) + Drift Detection
|
|
126
|
+
|
|
127
|
+
위상 정렬 순서대로 태스크를 실행하며, **Similarity 원리**를 활용하여 유사 패턴의 완료된 태스크를 참조 컨텍스트로 제공한다.
|
|
128
|
+
|
|
129
|
+
매 태스크 완료 시 **Drift Detection**이 자동 실행된다:
|
|
130
|
+
|
|
131
|
+
- **3차원 가중합**: Goal(50%) + Constraint(30%) + Ontology(20%)
|
|
132
|
+
- Jaccard 기반 키워드 유사도 측정
|
|
133
|
+
- Threshold(기본 0.3) 초과 시 `retrospectiveContext` 반환
|
|
134
|
+
|
|
135
|
+
### 5. Evaluate (2-Stage)
|
|
136
|
+
|
|
137
|
+
| Stage | 이름 | 방식 | 실패 시 |
|
|
138
|
+
|:---:|---|---|---|
|
|
139
|
+
| 1 | **Structural** | lint → build → test 자동 검증 | Contextual 스킵 (short-circuit) |
|
|
140
|
+
| 2 | **Contextual** | LLM 기반 완료 조건(AC) 검증 + goalAlignment | Evolution Loop 진입 |
|
|
141
|
+
|
|
142
|
+
성공 조건: `overallScore ≥ 0.85` && `goalAlignment ≥ 0.80`
|
|
143
|
+
|
|
144
|
+
### 6. Evolution Loop
|
|
145
|
+
|
|
146
|
+
Evaluate 실패 시 3가지 경로로 자동 복구를 시도한다:
|
|
147
|
+
|
|
148
|
+
**Flow A — Structural Fix** (structural 실패 시)
|
|
149
|
+
```
|
|
150
|
+
evolve_fix → fixTasks 제출 → re-evaluate
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Flow B — Contextual Evolution** (contextual 점수 미달 시)
|
|
154
|
+
```
|
|
155
|
+
evolve → evolve_patch(specPatch) → evolve_re_execute(impacted tasks) → re-evaluate
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Spec Patch 범위: 완료 조건(AC) + constraints 자유 수정, ontology 추가/변경만, **goal 변경 금지**
|
|
159
|
+
|
|
160
|
+
**Flow C — Lateral Thinking** (stagnation 감지 시 자동 분기)
|
|
161
|
+
|
|
162
|
+
evolve 호출 시 stagnation이 감지되면 즉시 종료하는 대신 **Lateral Thinking Persona**로 자동 분기한다. (아래 섹션 참조)
|
|
163
|
+
|
|
164
|
+
**종료 조건:**
|
|
165
|
+
|
|
166
|
+
| 조건 | 설명 |
|
|
167
|
+
|---|---|
|
|
168
|
+
| `success` | score ≥ 0.85, goalAlignment ≥ 0.80 |
|
|
169
|
+
| `stagnation` | 2회 연속 delta < 0.05 |
|
|
170
|
+
| `oscillation` | 2회 연속 점수 진동 (up↔down) |
|
|
171
|
+
| `hard_cap` | structural 3회 + contextual 3회 실패 |
|
|
172
|
+
| `caller` | 사용자 수동 종료 |
|
|
173
|
+
| `human_escalation` | Lateral Thinking 4개 persona 모두 실패 |
|
|
174
|
+
|
|
175
|
+
## Gestalt Principles
|
|
176
|
+
|
|
177
|
+
Each letter in the logo represents a core Gestalt principle used throughout the system:
|
|
178
|
+
|
|
179
|
+
| Principle | Role in Gestalt |
|
|
180
|
+
|-----------|----------------|
|
|
181
|
+
| **Closure** | Finds implicit requirements that aren't explicitly stated |
|
|
182
|
+
| **Proximity** | Groups related requirements and tasks by domain |
|
|
183
|
+
| **Continuation** | Validates dependency chains and execution order (DAG) |
|
|
184
|
+
| **Similarity** | Identifies repeating patterns across requirements |
|
|
185
|
+
| **Figure & Ground** | Separates core (figure) from supporting (ground) requirements |
|
|
186
|
+
|
|
187
|
+
> For a deep dive into how each principle maps to interview strategies, ambiguity scoring, and the dynamic principle selection algorithm, see [Gestalt 5원리 상세 문서](docs/gestalt-principles.md).
|
|
188
|
+
|
|
189
|
+
## Lateral Thinking Personas
|
|
190
|
+
|
|
191
|
+
Evolution Loop에서 stagnation이 감지되면 패턴을 분류하고 매칭되는 persona를 활성화한다:
|
|
192
|
+
|
|
193
|
+
| Stagnation Pattern | Persona | Strategy |
|
|
194
|
+
|--------------------|---------|----------|
|
|
195
|
+
| Spinning (hard cap) | **Multistability** | See from a different angle |
|
|
196
|
+
| Oscillation | **Simplicity** | Simplify and converge |
|
|
197
|
+
| No drift | **Reification** | Fill in missing pieces |
|
|
198
|
+
| Diminishing returns | **Invariance** | Replicate success patterns |
|
|
199
|
+
|
|
200
|
+
4개 persona를 순차적으로 시도한다. 모두 실패하면 **Human Escalation**을 트리거하여 사용자에게 actionable suggestions를 제공한다.
|
|
201
|
+
|
|
202
|
+
## Role Agent System
|
|
203
|
+
|
|
204
|
+
**8개의 내장 Role Agent**가 Execute Phase에서 다중 관점을 제공한다.
|
|
205
|
+
|
|
206
|
+
| Agent | Domain | Description |
|
|
207
|
+
|---|---|---|
|
|
208
|
+
| `architect` | system design, scalability | 시스템 아키텍처 전문가 |
|
|
209
|
+
| `backend-developer` | api, database, server | 백엔드 개발 전문가 |
|
|
210
|
+
| `frontend-developer` | ui, react, css, accessibility | 프론트엔드 개발 전문가 |
|
|
211
|
+
| `designer` | ux, ui, design system | UX/UI 디자인 전문가 |
|
|
212
|
+
| `devops-engineer` | ci/cd, infra, monitoring | DevOps/인프라 전문가 |
|
|
213
|
+
| `product-planner` | roadmap, user story, metrics | 제품 기획 전문가 |
|
|
214
|
+
| `qa-engineer` | testing, quality, automation | QA/테스트 전문가 |
|
|
215
|
+
| `researcher` | analysis, data, benchmarks | 리서치 및 분석 전문가 |
|
|
216
|
+
|
|
217
|
+
### 동작 방식
|
|
218
|
+
|
|
219
|
+
Execute Phase에서 각 태스크마다 2단계로 진행된다:
|
|
220
|
+
|
|
221
|
+
1. **Role Match** — 태스크의 도메인 키워드와 매칭되는 Role Agent를 동적으로 선택
|
|
222
|
+
2. **Role Consensus** — 선택된 Agent들의 관점을 수집하고, 충돌을 해소하여 통합 가이던스 생성
|
|
223
|
+
|
|
224
|
+
### Custom Agent 생성
|
|
225
|
+
|
|
226
|
+
`ges_create_agent` 도구로 **인터뷰 결과를 기반으로 커스텀 Role Agent를 생성**할 수 있다:
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
# 1. 인터뷰 완료 후 agent creation context 요청
|
|
230
|
+
ges_create_agent({ action: "start", sessionId: "<id>" })
|
|
231
|
+
→ systemPrompt + creationPrompt + agentMdSchema 반환
|
|
232
|
+
|
|
233
|
+
# 2. AGENT.md 콘텐츠 생성 후 제출
|
|
234
|
+
ges_create_agent({ action: "submit", sessionId: "<id>", agentContent: "---\nname: ..." })
|
|
235
|
+
→ agents/{name}/AGENT.md 파일 생성
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
커스텀 Agent는 `agents/` 디렉토리에 저장되며, 동일 이름의 내장 Agent를 override할 수 있다.
|
|
239
|
+
|
|
240
|
+
### AGENT.md 포맷
|
|
241
|
+
|
|
242
|
+
```yaml
|
|
243
|
+
---
|
|
244
|
+
name: security-expert # 에이전트 이름 (kebab-case)
|
|
245
|
+
tier: standard # frugal | standard | frontier
|
|
246
|
+
pipeline: execute # interview | spec | execute | evaluate
|
|
247
|
+
role: true # Role Agent 필수
|
|
248
|
+
domain: ["oauth", "jwt"] # 도메인 키워드 목록
|
|
249
|
+
description: "보안 전문가" # 한줄 설명
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
System prompt 내용 (Markdown)
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## MCP Tools
|
|
256
|
+
|
|
257
|
+
5 MCP tools exposed in passthrough mode (no API key required):
|
|
258
|
+
|
|
259
|
+
| Tool | Description |
|
|
260
|
+
|---|---|
|
|
261
|
+
| `ges_interview` | Gestalt-driven requirement interview (start, respond, score, complete) |
|
|
262
|
+
| `ges_generate_spec` | Generate a structured Spec from completed interview (2-Call) |
|
|
263
|
+
| `ges_execute` | Execute Spec via Gestalt pipeline (plan, execute, evaluate, evolve, lateral thinking, role agents) |
|
|
264
|
+
| `ges_create_agent` | Create custom Role Agent from completed interview (2-Call: start, submit) |
|
|
265
|
+
| `ges_status` | Check session status |
|
|
266
|
+
|
|
267
|
+
## Skill System
|
|
268
|
+
|
|
269
|
+
`skills/` 디렉토리의 SKILL.md 파일로 각 파이프라인 단계의 동작을 정의한다.
|
|
270
|
+
|
|
271
|
+
| Skill | Description |
|
|
272
|
+
|---|---|
|
|
273
|
+
| `interview` | 인터뷰 프로세스 — 4단계 (start → iterate → score → complete) |
|
|
274
|
+
| `spec` | Spec 생성 프로세스 — 2-Call Passthrough 패턴 |
|
|
275
|
+
| `execute` | 실행 계획 수립 — 4단계 Planning + Execution + Evaluation |
|
|
276
|
+
|
|
277
|
+
### SKILL.md 포맷
|
|
278
|
+
|
|
279
|
+
```yaml
|
|
280
|
+
---
|
|
281
|
+
name: interview
|
|
282
|
+
version: "1.0.0"
|
|
283
|
+
description: "Gestalt-driven interview"
|
|
284
|
+
triggers: ["interview", "clarify requirements"]
|
|
285
|
+
inputs:
|
|
286
|
+
topic: { type: string, required: true }
|
|
287
|
+
outputs: [session, ambiguityScore]
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
Skill documentation (Markdown)
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
커스텀 Skill은 `skills/` 디렉토리에 추가하면 **chokidar hot-reload**로 자동 로드된다.
|
|
294
|
+
|
|
295
|
+
## Multi-provider LLM
|
|
296
|
+
|
|
297
|
+
Agent System의 **FiguralRouter**가 에이전트의 tier에 따라 다른 LLM provider를 라우팅한다:
|
|
298
|
+
|
|
299
|
+
| Tier | Provider | Model Example | Use Case |
|
|
300
|
+
|---|---|---|---|
|
|
301
|
+
| `frugal` | OpenAI | gpt-4o-mini | 반복적/저비용 태스크 (proximity-worker) |
|
|
302
|
+
| `standard` | Anthropic | claude-sonnet | 일반 태스크 (closure-completer, ground-mapper) |
|
|
303
|
+
| `frontier` | Anthropic | claude-opus | 고품질 판단 (continuity-judge) |
|
|
304
|
+
|
|
305
|
+
이를 위해 `@anthropic-ai/sdk`와 `openai` 두 SDK가 모두 포함되어 있다. Passthrough 모드에서는 caller가 LLM 호출을 하므로 이 라우팅이 적용되지 않는다.
|
|
306
|
+
|
|
307
|
+
## Event Sourcing
|
|
308
|
+
|
|
309
|
+
모든 세션 활동은 **SQLite WAL 모드 이벤트 스토어**에 기록된다.
|
|
310
|
+
|
|
311
|
+
- Interview 이벤트: session started/completed, question asked, response recorded, ambiguity scored
|
|
312
|
+
- Execute 이벤트: planning steps, task completed, drift measured
|
|
313
|
+
- Evaluate 이벤트: structural/contextual results, short-circuit
|
|
314
|
+
- Evolution 이벤트: spec patched, lateral thinking, human escalation
|
|
315
|
+
- Agent 이벤트: role match/consensus, agent created
|
|
316
|
+
|
|
317
|
+
완전한 audit trail로 세션 히스토리 재생 및 사후 분석이 가능하다.
|
|
318
|
+
|
|
319
|
+
## CLI Commands
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
gestalt # Start MCP server (default)
|
|
323
|
+
gestalt serve # Start MCP server (explicit)
|
|
324
|
+
gestalt interview "topic" # Interactive interview
|
|
325
|
+
gestalt spec <session-id> # Generate Spec from interview
|
|
326
|
+
gestalt status # List all sessions
|
|
327
|
+
gestalt setup # Generate gestalt.json config file
|
|
328
|
+
gestalt monitor # TUI dashboard (real-time session monitoring)
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### TUI Dashboard
|
|
332
|
+
|
|
333
|
+
`gestalt monitor` 명령으로 터미널 기반 대시보드를 실행한다:
|
|
334
|
+
|
|
335
|
+
- **Session List** — 진행 중인 세션 목록 및 상태
|
|
336
|
+
- **Interview Monitor** — 실시간 인터뷰 진행 상황 + Gestalt 원리 표시
|
|
337
|
+
- **Evolution Tracker** — Evolution Loop 진행, Drift 수치 게이지
|
|
338
|
+
- **Task DAG Tree** — 태스크 의존성 관계 시각화
|
|
339
|
+
- **Spec Viewer** — 생성된 Spec 조회
|
|
340
|
+
- **Event Log** — 실시간 이벤트 로그
|
|
341
|
+
|
|
342
|
+
## Configuration
|
|
343
|
+
|
|
344
|
+
Run `gestalt setup` to generate a `gestalt.json` configuration file with IDE autocompletion support.
|
|
345
|
+
|
|
346
|
+
```json
|
|
347
|
+
{
|
|
348
|
+
"$schema": "./node_modules/@tienne/gestalt/schemas/gestalt.schema.json",
|
|
349
|
+
"interview": {
|
|
350
|
+
"ambiguityThreshold": 0.2,
|
|
351
|
+
"maxRounds": 10
|
|
352
|
+
},
|
|
353
|
+
"execute": {
|
|
354
|
+
"driftThreshold": 0.3,
|
|
355
|
+
"successThreshold": 0.85,
|
|
356
|
+
"goalAlignmentThreshold": 0.80
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
Configuration is loaded with the following priority (highest → lowest):
|
|
362
|
+
|
|
363
|
+
1. Code overrides (`loadConfig(overrides)`)
|
|
364
|
+
2. Shell environment variables (`GESTALT_*`)
|
|
365
|
+
3. `.env` file
|
|
366
|
+
4. `gestalt.json`
|
|
367
|
+
5. Built-in defaults
|
|
368
|
+
|
|
369
|
+
Invalid values trigger a warning and fall back to defaults.
|
|
370
|
+
|
|
371
|
+
### Environment Variables
|
|
372
|
+
|
|
373
|
+
| Variable | Config Path | Default |
|
|
374
|
+
|---|---|---|
|
|
375
|
+
| `ANTHROPIC_API_KEY` | `llm.apiKey` | `""` |
|
|
376
|
+
| `GESTALT_MODEL` | `llm.model` | `claude-sonnet-4-20250514` |
|
|
377
|
+
| `GESTALT_AMBIGUITY_THRESHOLD` | `interview.ambiguityThreshold` | `0.2` |
|
|
378
|
+
| `GESTALT_MAX_ROUNDS` | `interview.maxRounds` | `10` |
|
|
379
|
+
| `GESTALT_DRIFT_THRESHOLD` | `execute.driftThreshold` | `0.3` |
|
|
380
|
+
| `GESTALT_EVOLVE_SUCCESS_THRESHOLD` | `execute.successThreshold` | `0.85` |
|
|
381
|
+
| `GESTALT_EVOLVE_GOAL_ALIGNMENT_THRESHOLD` | `execute.goalAlignmentThreshold` | `0.80` |
|
|
382
|
+
| `GESTALT_DB_PATH` | `dbPath` | `~/.gestalt/events.db` |
|
|
383
|
+
| `GESTALT_SKILLS_DIR` | `skillsDir` | `skills` |
|
|
384
|
+
| `GESTALT_AGENTS_DIR` | `agentsDir` | `agents` |
|
|
385
|
+
| `GESTALT_LOG_LEVEL` | `logLevel` | `info` |
|
|
386
|
+
|
|
387
|
+
## Operating Modes
|
|
388
|
+
|
|
389
|
+
Gestalt supports two operating modes:
|
|
390
|
+
|
|
391
|
+
| Mode | API Key | LLM Calls | Use Case |
|
|
392
|
+
|---|---|---|---|
|
|
393
|
+
| **Passthrough** (default) | Not needed | Caller (e.g., Claude Code) | MCP 통합 환경에서 권장 |
|
|
394
|
+
| **Provider-backed** | `ANTHROPIC_API_KEY` 필요 | Gestalt가 직접 호출 | 독립 실행 (CLI 등) |
|
|
395
|
+
|
|
396
|
+
### Passthrough Mode
|
|
397
|
+
|
|
398
|
+
Gestalt runs in passthrough mode by default: it returns prompts and context to the calling LLM (e.g., Claude Code) instead of making its own API calls. No `ANTHROPIC_API_KEY` needed.
|
|
399
|
+
|
|
400
|
+
### Provider-backed Mode
|
|
401
|
+
|
|
402
|
+
`ANTHROPIC_API_KEY`를 설정하면 Gestalt가 직접 LLM 호출을 수행한다. CLI 명령어(`gestalt interview`, `gestalt spec`)는 이 모드에서 동작한다.
|
|
403
|
+
|
|
404
|
+
### N-Call Passthrough Pattern
|
|
405
|
+
|
|
406
|
+
All MCP tools follow a consistent **N-Call Passthrough Pattern**:
|
|
407
|
+
|
|
408
|
+
```
|
|
409
|
+
Call 1: Context 요청 → systemPrompt + actionPrompt 반환
|
|
410
|
+
Call N: Caller가 LLM으로 결과 생성 → 제출 및 검증
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
| Tool | Pattern | Calls |
|
|
414
|
+
|---|---|---|
|
|
415
|
+
| `ges_interview` | Multi-Call | start → (respond + score) × N → complete |
|
|
416
|
+
| `ges_generate_spec` | 2-Call | specContext 요청 → spec JSON 제출 |
|
|
417
|
+
| `ges_execute` | Multi-Call | plan (4-step) → execute → evaluate (2-stage) → evolve |
|
|
418
|
+
| `ges_create_agent` | 2-Call | agentContext 요청 → agentContent 제출 |
|
|
419
|
+
|
|
420
|
+
## Benchmarks
|
|
421
|
+
|
|
422
|
+
`pnpm bench`로 파이프라인 벤치마크를 실행할 수 있다. 3개의 시나리오가 Interview → Spec → Execute → Evaluate 전체 파이프라인을 통과한다.
|
|
423
|
+
|
|
424
|
+
```bash
|
|
425
|
+
pnpm bench # 전체 시나리오 실행
|
|
426
|
+
pnpm bench -s auth-system # 특정 시나리오만 실행
|
|
427
|
+
pnpm bench -o benchmarks/results # 결과 출력 디렉토리 지정
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
### Latest Results
|
|
431
|
+
|
|
432
|
+
| Scenario | Tasks | Completion | Score | Goal Alignment | ACs |
|
|
433
|
+
|----------|-------|------------|-------|----------------|-----|
|
|
434
|
+
| auth-system | 7 | 100% | 0.92 | 0.90 | 5/5 |
|
|
435
|
+
| dashboard | 6 | 100% | 0.88 | 0.85 | 4/4 |
|
|
436
|
+
| api-gateway | 8 | 100% | 0.95 | 0.92 | 5/5 |
|
|
437
|
+
|
|
438
|
+
**Average Score: 0.92 | Average Goal Alignment: 0.89**
|
|
439
|
+
|
|
440
|
+
## License
|
|
441
|
+
|
|
442
|
+
MIT
|