@handsupmin/gc-tree 0.1.4 → 0.2.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/README.es.md +135 -119
- package/README.ja.md +136 -120
- package/README.ko.md +137 -121
- package/README.md +134 -118
- package/README.zh.md +140 -123
- package/dist/src/resolve.js +40 -6
- package/docs/concept.es.md +45 -33
- package/docs/concept.ja.md +41 -29
- package/docs/concept.ko.md +48 -36
- package/docs/concept.md +13 -1
- package/docs/concept.zh.md +48 -36
- package/docs/local-development.es.md +44 -22
- package/docs/local-development.ja.md +40 -18
- package/docs/local-development.ko.md +47 -25
- package/docs/local-development.md +27 -5
- package/docs/local-development.zh.md +27 -5
- package/docs/principles.es.md +39 -26
- package/docs/principles.ja.md +26 -13
- package/docs/principles.ko.md +40 -27
- package/docs/principles.md +15 -2
- package/docs/principles.zh.md +42 -29
- package/docs/usage.es.md +98 -50
- package/docs/usage.ja.md +71 -23
- package/docs/usage.ko.md +100 -52
- package/docs/usage.md +51 -3
- package/docs/usage.zh.md +95 -47
- package/package.json +11 -2
package/README.ko.md
CHANGED
|
@@ -19,44 +19,33 @@ Git 브랜치 다루듯 여러 컨텍스트를 나눠 관리할 수 있습니다
|
|
|
19
19
|
|
|
20
20
|
</div>
|
|
21
21
|
|
|
22
|
-
실제 업무가 여러 레포, 제품, 고객사, 워크플로에 걸쳐 있는 개발자를 위해 만들었습니다.
|
|
23
|
-
|
|
24
|
-
`gc-tree`는 AI 코딩 도구에 **레포 바깥 레벨의 재사용 가능한 컨텍스트 레이어**를 붙여줍니다. 오래 가는 맥락은 유지하고, 관련 있는 레포에서만 적용하고, 지금 레포와 무관할 때는 조용히 빠집니다.
|
|
25
|
-
|
|
26
22
|
---
|
|
27
23
|
|
|
28
|
-
##
|
|
24
|
+
## 문제
|
|
29
25
|
|
|
30
|
-
|
|
26
|
+
Claude Code나 Codex를 매일 씁니다. 그런데 실제 업무는 여러 레포, 제품, 고객사에 걸쳐 있고 — AI 도구는 현재 파일밖에 모릅니다.
|
|
31
27
|
|
|
32
|
-
|
|
28
|
+
그래서 매번 이렇게 됩니다:
|
|
33
29
|
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
- 작업 전환 때마다 사람 머리로 컨텍스트 스위칭을 직접 해야 함
|
|
30
|
+
- 어떤 레포들이 한 묶음인지 다시 설명
|
|
31
|
+
- 같은 아키텍처 문서를 또 프롬프트에 붙여넣기
|
|
32
|
+
- 지난주에 "이미 알던" 컨벤션을 다시 알려주기
|
|
33
|
+
- 현재 레포와 무관한 컨텍스트를 손으로 걷어내기
|
|
39
34
|
|
|
40
|
-
|
|
35
|
+
이건 AI 문제가 아닙니다. **컨텍스트 관리 문제**입니다.
|
|
41
36
|
|
|
42
37
|
---
|
|
43
38
|
|
|
44
|
-
##
|
|
45
|
-
|
|
46
|
-
- **여러 개의 장기 컨텍스트**
|
|
47
|
-
제품, 고객사, 워크스트림마다 컨텍스트 레인을 따로 유지할 수 있습니다.
|
|
39
|
+
## 이 도구가 맞는 사람
|
|
48
40
|
|
|
49
|
-
-
|
|
50
|
-
어떤 컨텍스트가 어떤 레포에만 적용되어야 하는지 명확하게 묶을 수 있습니다.
|
|
41
|
+
다음에 해당하면 gc-tree를 제일 잘 쓸 수 있습니다:
|
|
51
42
|
|
|
52
|
-
-
|
|
53
|
-
|
|
43
|
+
- **여러 레포**에 걸쳐 일하는 경우 (모노레포 팀, 플랫폼 + 클라이언트 레포, 백엔드 + 프론트엔드 스택)
|
|
44
|
+
- 같은 주에 **여러 제품이나 고객사** 사이를 오가는 경우
|
|
45
|
+
- AI 세션 시작마다 **같은 컨텍스트를 반복 설명**하는 경우
|
|
46
|
+
- AI 도구가 현재 파일뿐 아니라 **컨벤션, 아키텍처, 도메인 지식**도 알길 원하는 경우
|
|
54
47
|
|
|
55
|
-
|
|
56
|
-
Codex, Claude Code, 혹은 둘 다를 써서 컨텍스트를 처음 만들고 계속 다듬을 수 있습니다.
|
|
57
|
-
|
|
58
|
-
- **summary-first markdown 지식 구조**
|
|
59
|
-
숨겨진 메모리가 아니라 파일에 남기고, 도구는 먼저 짧은 요약부터 읽게 할 수 있습니다.
|
|
48
|
+
레포 하나, 제품 하나에서만 일한다면 굳이 이 도구가 필요 없습니다. `CLAUDE.md`나 `.cursorrules`로 충분합니다.
|
|
60
49
|
|
|
61
50
|
---
|
|
62
51
|
|
|
@@ -67,169 +56,196 @@ npm install -g @handsupmin/gc-tree
|
|
|
67
56
|
gctree init
|
|
68
57
|
```
|
|
69
58
|
|
|
70
|
-
|
|
71
|
-
그다음부터는 원래 하던 방식대로 개발하면 됩니다. `gc-tree`가 평소 워크플로 바깥에서 글로벌 컨텍스트만 붙여줍니다.
|
|
59
|
+
`gctree init`이 안내합니다:
|
|
72
60
|
|
|
73
|
-
-
|
|
74
|
-
|
|
61
|
+
1. 프로바이더 선택: `claude-code`, `codex`, 또는 `both`
|
|
62
|
+
2. 현재 레포에 통합 파일 스캐폴딩
|
|
63
|
+
3. `main` gc-branch 가이드형 온보딩 실행
|
|
75
64
|
|
|
76
|
-
|
|
65
|
+
이후 AI 도구가 계획·구현 전에 `gctree resolve`를 호출하는 법을 자동으로 알게 됩니다.
|
|
66
|
+
|
|
67
|
+
- **CLI:** `gctree`
|
|
68
|
+
- **요구 사항:** Node.js 20+
|
|
77
69
|
|
|
78
70
|
---
|
|
79
71
|
|
|
80
|
-
##
|
|
72
|
+
## gc-tree가 하는 일
|
|
81
73
|
|
|
82
|
-
|
|
74
|
+
`gc-tree`는 **레포 위 레벨**에 위치합니다. 컨텍스트를 구조화된 마크다운 파일에 저장하고, AI 도구가 매 세션마다 관련된 것만 자동으로 가져오게 합니다.
|
|
83
75
|
|
|
84
76
|
```bash
|
|
85
|
-
gctree
|
|
86
|
-
gctree onboard
|
|
77
|
+
gctree resolve --query "auth token rotation policy"
|
|
87
78
|
```
|
|
88
79
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"gc_branch": "main",
|
|
83
|
+
"matches": [
|
|
84
|
+
{
|
|
85
|
+
"title": "인증 & 세션 컨벤션",
|
|
86
|
+
"score": 4,
|
|
87
|
+
"summary": "모든 요청에서 JWT rotation, refresh token은 httpOnly 쿠키에 저장, access token TTL 15분",
|
|
88
|
+
"excerpt": "## 인증 플로우\nAccess token: 15분 TTL, 매 인증 요청마다 rotation..."
|
|
89
|
+
}
|
|
90
|
+
]
|
|
91
|
+
}
|
|
95
92
|
```
|
|
96
93
|
|
|
97
|
-
|
|
94
|
+
AI 도구가 올바른 컨텍스트를 가져옵니다. 지식 베이스 전체가 아니라 — 관련된 조각만.
|
|
98
95
|
|
|
99
|
-
|
|
96
|
+
**실제로: 쿼리당 전체 컨텍스트의 ~4%만 주입됩니다.** 나머지 96%는 실제로 필요할 때까지 디스크에 남아 토큰 윈도우 밖에 있습니다.
|
|
100
97
|
|
|
101
|
-
|
|
102
|
-
gctree update-gc
|
|
103
|
-
gctree ugc
|
|
104
|
-
```
|
|
98
|
+
---
|
|
105
99
|
|
|
106
|
-
|
|
100
|
+
## CLAUDE.md나 cursor rules와 뭐가 다른가요?
|
|
107
101
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
102
|
+
`CLAUDE.md`는 훌륭합니다 — 레포 하나에서는요.
|
|
103
|
+
|
|
104
|
+
여러 레포, 고객사, 워크스트림이 생기는 순간:
|
|
111
105
|
|
|
112
|
-
|
|
106
|
+
| | `CLAUDE.md` / cursor rules | `gc-tree` |
|
|
107
|
+
| ---------------- | -------------------------- | ---------------------------- |
|
|
108
|
+
| 범위 | 레포 하나 | 여러 레포, 컨텍스트 하나 |
|
|
109
|
+
| 지속성 | 레포 내 파일 | 레포 밖 저장, 세션 간 재사용 |
|
|
110
|
+
| 컨텍스트 전환 | 파일 직접 수정 | `gctree checkout client-b` |
|
|
111
|
+
| 관련성 필터링 | 전부 아니면 없음 | 매칭 문서만 주입 (~4%) |
|
|
112
|
+
| 온보딩 | 손으로 작성 | AI 도구가 가이드 |
|
|
113
|
+
| Codex 지원 | ✅ | ✅ |
|
|
114
|
+
| Claude Code 지원 | ✅ | ✅ |
|
|
113
115
|
|
|
114
116
|
---
|
|
115
117
|
|
|
116
|
-
##
|
|
118
|
+
## 검증된 성능
|
|
117
119
|
|
|
118
|
-
|
|
120
|
+
실제 내부 문서 기준 테스트 (Notion 내보내기 4종, 한국어 + 영어 혼합 쿼리):
|
|
119
121
|
|
|
120
|
-
|
|
122
|
+
| 지표 | 결과 |
|
|
123
|
+
| ----------------------------------------------- | ---------------- |
|
|
124
|
+
| Recall — 관련 쿼리가 올바른 문서를 찾는 비율 | **100%** (16/16) |
|
|
125
|
+
| Precision — 무관 쿼리가 빈 결과를 반환하는 비율 | **80%** (4/5) |
|
|
126
|
+
| F1 점수 | **88.9%** |
|
|
127
|
+
| 쿼리당 주입 토큰 비율 (전체 컨텍스트 대비) | **~4%** |
|
|
128
|
+
| 한국어 + 영어 혼합 쿼리 지원 | ✅ |
|
|
121
129
|
|
|
122
|
-
|
|
123
|
-
- 제품 라인
|
|
124
|
-
- 플랫폼 팀
|
|
125
|
-
- 함께 움직이는 백엔드 + 프론트엔드 스택
|
|
126
|
-
- 일시적인 이니셔티브나 마이그레이션
|
|
130
|
+
---
|
|
127
131
|
|
|
128
|
-
|
|
132
|
+
## Claude Code와 Codex 양쪽 모두 검증 완료
|
|
129
133
|
|
|
130
134
|
```bash
|
|
131
|
-
gctree
|
|
132
|
-
gctree
|
|
135
|
+
gctree scaffold --host claude-code # CLAUDE.md 스니펫 + /gc-onboard, /gc-update-global-context 설치
|
|
136
|
+
gctree scaffold --host codex # AGENTS.md 스니펫 + $gc-onboard, $gc-update-global-context 설치
|
|
137
|
+
gctree scaffold --host both # 둘 다 한번에
|
|
133
138
|
```
|
|
134
139
|
|
|
135
|
-
|
|
140
|
+
두 프로바이더 모두 동일한 컨텍스트 저장소를 씁니다. 한 번 온보딩하면 어느 도구에서든 사용 가능.
|
|
136
141
|
|
|
137
|
-
|
|
142
|
+
**Claude Code** — `/gc-resolve-context`, `/gc-onboard`, `/gc-update-global-context` 슬래시 커맨드 사용.
|
|
138
143
|
|
|
139
|
-
|
|
144
|
+
**Codex** — `$gc-resolve-context`, `$gc-onboard`, `$gc-update-global-context` 스킬 사용. `codex exec`으로 직접 검증됨:
|
|
140
145
|
|
|
141
|
-
|
|
146
|
+
```
|
|
147
|
+
gctree status → gc_branch: main, doc_count: 2
|
|
148
|
+
gctree resolve --query 'NestJS DTO plainToInstance'
|
|
149
|
+
→ "백엔드 코딩 컨벤션" 매칭 (score: 3)
|
|
150
|
+
→ DTO: class-transformer plainToInstance, class-validator 필수
|
|
151
|
+
→ 에러 처리: HttpException 기반 커스텀 예외, raw Error throw 금지
|
|
152
|
+
```
|
|
142
153
|
|
|
143
|
-
|
|
154
|
+
---
|
|
144
155
|
|
|
145
|
-
|
|
156
|
+
## 자주 쓰는 흐름
|
|
146
157
|
|
|
147
|
-
|
|
148
|
-
- 고객사 레포 두 개
|
|
149
|
-
- 사내 툴링 레포 하나
|
|
158
|
+
### 워크스트림마다 별도 컨텍스트
|
|
150
159
|
|
|
151
|
-
|
|
160
|
+
```bash
|
|
161
|
+
gctree checkout -b client-b
|
|
162
|
+
gctree onboard
|
|
163
|
+
```
|
|
152
164
|
|
|
153
|
-
-
|
|
154
|
-
- 어떤 레포들이 한 묶음인지
|
|
155
|
-
- 여기서 중요한 워크플로가 뭔지
|
|
156
|
-
- 지금은 어떤 컨텍스트가 오히려 방해가 되는지
|
|
165
|
+
각 gc-branch는 완전히 독립된 컨텍스트 레인입니다. Git 브랜치처럼 오갈 수 있습니다.
|
|
157
166
|
|
|
158
|
-
|
|
167
|
+
### 필요할 때 관련 컨텍스트 가져오기
|
|
159
168
|
|
|
160
|
-
|
|
169
|
+
```bash
|
|
170
|
+
gctree resolve --query "billing retry policy"
|
|
171
|
+
```
|
|
161
172
|
|
|
162
|
-
|
|
163
|
-
> **일의 단위에 맞는 컨텍스트를 올바른 레벨에서 관리하는 것.**
|
|
173
|
+
매칭된 문서만 반환합니다 — 제목, 요약, 발췌문. 요약만으로 부족할 때만 전체 문서를 읽습니다.
|
|
164
174
|
|
|
165
|
-
|
|
175
|
+
### 컨텍스트 최신 상태 유지
|
|
166
176
|
|
|
167
|
-
|
|
177
|
+
```bash
|
|
178
|
+
gctree update-global-context # 또는: gctree update-gc / gctree ugc
|
|
179
|
+
```
|
|
168
180
|
|
|
169
|
-
|
|
170
|
-
제품, 고객사, 워크스트림, 도메인 하나를 위한 장기 컨텍스트 레인입니다.
|
|
181
|
+
가이드형 업데이트 플로우 — AI 도구가 무엇이 바뀌었는지 물어보고 새 컨텍스트를 gc-branch에 씁니다.
|
|
171
182
|
|
|
172
|
-
|
|
173
|
-
어떤 레포에서 이 컨텍스트를 적용할지 결정하는 규칙입니다.
|
|
183
|
+
### 특정 레포에 컨텍스트 범위 지정
|
|
174
184
|
|
|
175
|
-
|
|
176
|
-
|
|
185
|
+
```bash
|
|
186
|
+
gctree set-repo-scope --branch client-b --include # 현재 레포 포함
|
|
187
|
+
gctree set-repo-scope --branch client-b --exclude # 현재 레포 제외
|
|
188
|
+
```
|
|
177
189
|
|
|
178
|
-
|
|
179
|
-
내부적으로 `gc-tree`는 브랜치 단위의 파일 기반 지식 트리로 컨텍스트를 관리합니다.
|
|
180
|
-
사용자가 체감하는 가치는 결국 프로젝트 밖까지 이어지는 재사용 가능한 컨텍스트입니다.
|
|
190
|
+
관계없는 레포에는 컨텍스트가 주입되지 않습니다.
|
|
181
191
|
|
|
182
192
|
---
|
|
183
193
|
|
|
184
|
-
##
|
|
185
|
-
|
|
186
|
-
스캐폴딩 이후 런타임에서 보이는 명령은 다음과 같습니다.
|
|
194
|
+
## 컨텍스트 저장 구조
|
|
187
195
|
|
|
188
|
-
|
|
189
|
-
|
|
196
|
+
```
|
|
197
|
+
~/.gctree/
|
|
198
|
+
branches/
|
|
199
|
+
main/
|
|
200
|
+
index.md ← 압축 인덱스, ≤2000자, 먼저 로드됨
|
|
201
|
+
docs/
|
|
202
|
+
auth.md ← 전체 문서, 필요할 때만 읽음
|
|
203
|
+
architecture.md
|
|
204
|
+
client-b/
|
|
205
|
+
index.md
|
|
206
|
+
docs/
|
|
207
|
+
...
|
|
208
|
+
branch-repo-map.json ← 어떤 레포가 어떤 gc-branch에 속하는지
|
|
209
|
+
settings.json ← 선호 프로바이더, 언어
|
|
210
|
+
```
|
|
190
211
|
|
|
191
|
-
|
|
212
|
+
컨텍스트는 레포 밖에 저장됩니다 — `.gitignore` 규칙 불필요, 실수로 커밋될 일 없음, 같은 gc-branch를 쓰는 모든 프로젝트에서 재사용 가능.
|
|
192
213
|
|
|
193
214
|
---
|
|
194
215
|
|
|
195
|
-
## 핵심 명령
|
|
196
|
-
|
|
197
|
-
| 목적
|
|
198
|
-
|
|
|
199
|
-
| gc-tree 초기화 및
|
|
200
|
-
|
|
|
201
|
-
| 활성 컨텍스트 검색
|
|
202
|
-
|
|
|
203
|
-
| gc-branch
|
|
204
|
-
| gc-branch
|
|
205
|
-
|
|
|
206
|
-
|
|
|
207
|
-
|
|
|
208
|
-
|
|
|
216
|
+
## 핵심 명령
|
|
217
|
+
|
|
218
|
+
| 목적 | 명령 |
|
|
219
|
+
| --------------------------------- | --------------------------------------------------------------- |
|
|
220
|
+
| gc-tree 초기화 및 프로바이더 선택 | `gctree init` |
|
|
221
|
+
| 활성 gc-branch 확인 | `gctree status` |
|
|
222
|
+
| 활성 컨텍스트 검색 | `gctree resolve --query "..."` |
|
|
223
|
+
| gc-branch 생성 또는 전환 | `gctree checkout <branch>` / `gctree checkout -b <branch>` |
|
|
224
|
+
| 모든 gc-branch 목록 | `gctree branches` |
|
|
225
|
+
| 빈 gc-branch 가이드형 온보딩 | `gctree onboard` |
|
|
226
|
+
| 활성 gc-branch 가이드형 업데이트 | `gctree update-global-context` / `gctree ugc` |
|
|
227
|
+
| 레포 범위 규칙 확인 | `gctree repo-map` |
|
|
228
|
+
| 현재 레포 포함/제외 설정 | `gctree set-repo-scope --branch <name> --include` / `--exclude` |
|
|
229
|
+
| 재온보딩 전 gc-branch 초기화 | `gctree reset-gc-branch --branch <name> --yes` |
|
|
230
|
+
| 새 환경 스캐폴딩 | `gctree scaffold --host codex --target /path/to/repo` |
|
|
209
231
|
|
|
210
232
|
---
|
|
211
233
|
|
|
212
234
|
## 문서
|
|
213
235
|
|
|
214
|
-
자세한 문서는 [`docs/`](https://github.com/handsupmin/gc-tree/tree/main/docs) 아래에 정리되어 있습니다.
|
|
215
|
-
|
|
216
236
|
- **컨셉** — [`docs/concept.ko.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/concept.ko.md)
|
|
217
|
-
`gctree`가 무엇인지, 어떤 문제를 해결하는지, 글로벌 컨텍스트 레이어의 범위를 설명합니다.
|
|
218
237
|
- **원리** — [`docs/principles.ko.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/principles.ko.md)
|
|
219
|
-
gc-branch, 레포 범위, slim index, summary-first 문서, 가이드형 업데이트 원칙을 정리합니다.
|
|
220
238
|
- **사용방법** — [`docs/usage.ko.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/usage.ko.md)
|
|
221
|
-
|
|
222
|
-
- **로컬 실행방법** — [`docs/local-development.ko.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/local-development.ko.md)
|
|
223
|
-
의존성 설치, 로컬 CLI 실행, 변경 검증 방법을 설명합니다.
|
|
239
|
+
- **로컬 개발** — [`docs/local-development.ko.md`](https://github.com/handsupmin/gc-tree/blob/main/docs/local-development.ko.md)
|
|
224
240
|
|
|
225
241
|
---
|
|
226
242
|
|
|
227
243
|
## 기여하기
|
|
228
244
|
|
|
229
|
-
기여는 언제든 환영합니다. 개발 흐름과 PR 체크리스트는
|
|
245
|
+
기여는 언제든 환영합니다. 개발 흐름과 PR 체크리스트는 [CONTRIBUTING.md](https://github.com/handsupmin/gc-tree/blob/main/CONTRIBUTING.md)를 참고하세요.
|
|
230
246
|
|
|
231
247
|
---
|
|
232
248
|
|
|
233
249
|
## 라이선스
|
|
234
250
|
|
|
235
|
-
MIT.
|
|
251
|
+
MIT. [`LICENSE`](https://github.com/handsupmin/gc-tree/blob/main/LICENSE) 참고.
|