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