@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.
@@ -1,15 +1,15 @@
1
- # 概念
1
+ # コンセプト
2
2
 
3
3
  [English](concept.md) | [한국어](concept.ko.md) | [简体中文](concept.zh.md) | [日本語](concept.ja.md) | [Español](concept.es.md)
4
4
 
5
- ## 要約
5
+ ## 概要
6
6
 
7
- `gctree` は AI コーディングツール向けの軽量なグローバルコンテキストレイヤーです。単一リポジトリの外側に長期コンテキストを明示的な markdown 文書として置き、gc-branch を切り替えながら文脈を使い分けられるようにし、各 gc-branch が本当に関係あるリポジトリにだけ影響するよう制御できます。
7
+ `gctree` は AI コーディングツール向けの軽量なグローバルコンテキスト層です。長期的なコンテキストを単一のリポジトリの外に置いた明示的なマークダウンドキュメントで管理し、gc-branch を切り替えながら文脈を使い分けられるようにし、各 gc-branch が本当に関係するリポジトリにだけ影響するよう制御できます。
8
8
 
9
9
  ## `gctree` とは何か
10
10
 
11
- `gctree` は再利用できるグローバルコンテキストを管理するための CLI です。
12
- 複数のリポジトリ、複数のセッション、複数のツールをまたいでも長期コンテキストが生き残るようにしつつ、それをブラックボックスな隠れメモリにはしない、という前提で作られています。
11
+ `gctree` は再利用可能なグローバルコンテキストを管理するための CLI です。
12
+ 複数のリポジトリ・セッション・ツールをまたいでも重要なコンテキストが生き残るようにしつつ、それを隠れたメモリにはしない、という前提で作られています。
13
13
 
14
14
  大事な知識がプロンプトファイル、リポジトリ内メモ、場当たり的な指示に散らばる代わりに、`gctree` はその知識に安定したファイルベースの置き場所を与えます。
15
15
 
@@ -22,31 +22,43 @@
22
22
  - リポジトリ内の短いプロンプトファイルが 1 つ
23
23
  - 必要なときだけプロンプトに貼り付けるメモが少し
24
24
 
25
- しばらくはそれで回ります。けれど実務が乗ってくると、同じやり方はすぐ苦しくなります。
25
+ しばらくはそれで回ります。けれど実務が積み重なると、同じやり方はすぐ苦しくなります。
26
26
 
27
27
  - プロダクトごとに必要なコンテキストが違う
28
28
  - クライアント案件は互いに分離しておく必要がある
29
29
  - 再利用したいガイダンスは単一リポジトリの外に置きたい
30
- - 複数ツールが同じ source of truth を読めるべき
31
- - 長期コンテキストは安全でレビュー可能な流れで育てたい
32
- - 1 人のユーザーが同時に複数リポジトリで複数セッションを動かすことがある
30
+ - 複数ツールが同じ信頼できる情報源を読めるべき
31
+ - 長期コンテキストは明示的でレビュー可能な流れで変更すべき
32
+ - 1 人のユーザーが複数のリポジトリで多くのセッションを同時に開くことがある
33
33
 
34
- `gctree` は、まさにそのレイヤーをきれいに扱うためのものです。
34
+ `gctree` は、まさにそのレイヤーをきれいに扱うために存在します。
35
+
36
+ ## resolve の仕組み
37
+
38
+ ツールが `gctree resolve --query "..."` を呼び出すと、gc-tree はアクティブな gc-branch 内のすべてのドキュメントをクエリに対してスコアリングします。スコアリングには Unicode 対応のキーワードマッチングを使用しており、韓国語・CJK 文字・多言語混在クエリも英語と同様に機能します。タイトルの一致はボディの一致の 2 倍の重みを持ちます。
39
+
40
+ ツールが受け取るのは、マッチしたドキュメントのタイトル・サマリー・抜粋のみです。ナレッジベース全体は返されません。実際には 1 クエリあたり総コンテキストの約 4% が注入されます。サマリーだけでは不足する場合にのみ、ツールはフルドキュメントを読み込みます。
41
+
42
+ これによりトークン使用量を低く抑えながら、何も隠しません。すべてのコンテキストは引き続き明示的で、ファイルに裏付けられており、レビュー可能です。
43
+
44
+ ## プロバイダーサポート
45
+
46
+ `gctree` は Claude Code と Codex の両方で動作します。どちらのプロバイダーも同じ基盤のコンテキストストアを使用します。一度 scaffold すれば、両方のツールが同じ gc-branch から resolve・onboard・コンテキスト更新を行えます。
35
47
 
36
48
  ## スコープの境界
37
49
 
38
- `gctree` は意図的に、次のものではありません。
50
+ `gctree` は意図的に以下のものではありません。
39
51
 
40
- - リクエストからコミットまでを一気通貫で回す実行オーケストレータ
41
- - 隠れメモリの仕組み
42
- - ブラウザ型のコラボレーションランタイム
52
+ - リクエストからコミットまでの配信オーケストレーター
53
+ - 隠れたメモリシステム
54
+ - ブラウザ上のコラボレーションランタイム
43
55
  - 汎用ナレッジベース製品
44
56
 
45
- `gctree` が集中する仕事は 1 つです。再利用できるグローバルコンテキストブランチと、その明示的な更新を管理することです。
57
+ 一つの仕事に集中します:再利用可能なグローバルコンテキストブランチの管理と、明示的な永続的更新です。
46
58
 
47
59
  ## ファイルモデル
48
60
 
49
- 典型的なホームディレクトリ配下の構成はこうなります。
61
+ 典型的なホームディレクトリの構成は次のとおりです。
50
62
 
51
63
  ```text
52
64
  ~/.gctree/
@@ -60,22 +72,22 @@
60
72
  docs/
61
73
  ```
62
74
 
63
- - `HEAD` はデフォルトでアクティブになる gc-branch を追跡します。
64
- - `settings.json` には provider モード、ランタイム起動に使うオンボーディング provider、優先するワークフロー言語が入ります。
65
- - `branch-repo-map.json` には各 gc-branch ごとのリポジトリの include / exclude 情報が入ります。
66
- - `branch.json` には軽量な gc-branch メタデータが入ります。
67
- - `index.md` はツールが最初に読むコンパクトな入口です。
68
- - `docs/` には source-of-truth の markdown 文書が入ります。
75
+ - `HEAD` はフォールバックとしてアクティブな gc-branch を追跡します。
76
+ - `settings.json` はプロバイダーモード、ランタイム起動時に選択したオンボーディングプロバイダー、および優先ワークフロー言語を保存します。
77
+ - `branch-repo-map.json` は各 gc-branch に対してどのリポジトリを含むか・除外するかを保存します。
78
+ - `branch.json` は軽量な gc-branch メタデータを保存します。
79
+ - `index.md` はツール向けのコンパクトなエントリーポイントです。高速に読み込めるよう 2000 文字以内に収められており、トークンバジェットを大きく消費しません。
80
+ - `docs/` は信頼できる情報源となるマークダウンドキュメントを格納します。
69
81
 
70
- ## リポジトリを意識した振る舞い
82
+ ## リポジトリを意識した動作
71
83
 
72
- gc-branch はどこでも有効である必要はありません。
73
- たとえば branch `A` repo `B`、`C`、`D` にしか関係しないなら、その事実を `branch-repo-map.json` に記録できます。
84
+ gc-branch はすべての場所に適用する必要はありません。
85
+ ブランチ `A` がリポジトリ `B`・`C`・`D` にのみ関係する場合、`gctree` はそれを `branch-repo-map.json` に記録できます。
74
86
 
75
- その状態で別の repo `F` から `gctree resolve` を実行した場合、`gctree` は次のように扱えます。
87
+ 別のリポジトリ `F` `gctree resolve` が実行された場合、次のいずれかを選択できます。
76
88
 
77
- - 今回だけ続ける
78
- - 今後も `F` ではその gc-branch を使う
89
+ - 一度だけ続行する
90
+ - `F` でも常にその gc-branch を使用する
79
91
  - `F` ではその gc-branch を無視する
80
92
 
81
- これによって、無関係なリポジトリをまたいで多くの並行セッションを開いているヘビーユーザーでも、gc-tree をかなり安全に使えます。
93
+ これにより、無関係な多数のリポジトリで並行セッションを維持するヘビーユーザーにとって、gc-tree はより安全に使えます。
@@ -4,49 +4,61 @@
4
4
 
5
5
  ## 요약
6
6
 
7
- `gctree`는 AI 코딩 도구를 위한 가벼운 글로벌 컨텍스트 레이어입니다. 하나의 레포 밖에서 장기 컨텍스트를 명시적인 markdown 문서로 관리하고, gc-branch 바꿔가며 맥락을 나눠 쓸 수 있게 해주며, 각 gc-branch 실제로 관련 있는 레포에서만 적용되도록 제한할 수 있습니다.
7
+ `gctree`는 AI 코딩 도구를 위한 경량 전역 컨텍스트 레이어입니다. 오래 유지되는 컨텍스트를 특정 저장소 바깥에 명시적인 마크다운 문서로 관리하고, gc-branch 전환을 지원하며, 각 gc-branch 실제로 관련된 저장소로만 범위를 제한할 수 있습니다.
8
8
 
9
- ## `gctree`는 무엇인가
9
+ ## `gctree`란 무엇인가
10
10
 
11
- `gctree`는 재사용 가능한 글로벌 컨텍스트를 관리하는 CLI입니다.
12
- 여러 레포, 여러 세션, 여러 도구를 오가더라도 장기 컨텍스트가 사라지지 않게 하되, 컨텍스트가 숨겨진 메모리처럼 블랙박스에 갇히지 않도록 설계했습니다.
11
+ `gctree`는 재사용 가능한 전역 컨텍스트를 관리하기 위한 CLI입니다.
12
+ 중요한 컨텍스트를 저장소, 세션, 도구를 가로질러 유지하되, 숨겨진 메모리처럼 블랙박스에 갇히지 않게 하려는 개인과 팀을 위해 만들어졌습니다.
13
13
 
14
- 중요한 지식이 프롬프트 파일, 레포 내부 메모, 임시 지시문으로 흩어지는 대신, `gctree`는 그 지식이 머물 있는 안정적인 파일 기반 저장소를 제공합니다.
14
+ 핵심 지식을 프롬프트 파일, 저장소 로컬 메모, 그때그때 추가하는 지시사항에 흩어놓는 대신, `gctree`는 그 지식이 안정적으로 파일 기반으로 자리잡을 있는 공간을 제공합니다.
15
15
 
16
- ## 어떤 문제를 해결하나
16
+ ## 어떤 문제를 해결하는가
17
17
 
18
- 많은 AI 코딩 환경은 이렇게 작게 시작합니다.
18
+ 많은 AI 코딩 환경은 작게 시작합니다:
19
19
 
20
20
  - `AGENTS.md` 하나
21
21
  - `CLAUDE.md` 하나
22
- - 레포 안의 짧은 프롬프트 파일 하나
23
- - 필요할 때마다 프롬프트에 복붙하는 메모 몇
22
+ - 저장소 로컬 프롬프트 파일 하나
23
+ - 필요할 프롬프트에 복사해 넣는 메모 몇 가지
24
24
 
25
- 처음에는돌아갑니다. 하지만 실제 업무가 얹히기 시작하면 금방 틀어집니다.
25
+ 한동안은작동합니다. 그러다 실제 업무가 쌓이면서 문제가 드러나기 시작합니다:
26
26
 
27
- - 제품마다 필요한 컨텍스트가 다르다
28
- - 고객사 작업은 서로 섞이면 안 된다
29
- - 재사용 가능한 가이드는 특정 레포 바깥에 있어야 한다
30
- - 여러 도구가 같은 source of truth를 읽을 수 있어야 한다
31
- - 장기 컨텍스트는 안전하고 검토 가능한 흐름으로 업데이트되어야 한다
32
- - 한 사람이 동시에 여러 레포에서 여러 세션을 돌릴있다
27
+ - 제품마다 서로 다른 컨텍스트가 필요함
28
+ - 클라이언트 업무는 명확한 격리가 필요함
29
+ - 재사용 가능한 지침은 특정 저장소 바깥에 존재해야
30
+ - 여러 도구가 동일한 정보 소스를 읽을 수 있어야
31
+ - 오래 유지되는 컨텍스트는 명시적이고 검토 가능한 흐름으로만 변경되어야
32
+ - 한 사람이 여러 저장소에 걸쳐 많은 세션을 동시에 열어둘 있음
33
33
 
34
- `gctree`는 바로 레이어를 깔끔하게 해결하려고 존재합니다.
34
+ `gctree`는 바로 레이어를 깔끔하게 처리하기 위해 만들어졌습니다.
35
+
36
+ ## resolve가 동작하는 방식
37
+
38
+ 도구가 `gctree resolve --query "..."`를 호출하면, gc-tree는 활성 gc-branch 내의 모든 문서를 쿼리와 대조해 유니코드를 지원하는 키워드 매칭으로 점수를 매깁니다. 한국어, CJK 문자, 혼합 언어 쿼리도 영어와 동일하게 처리됩니다. 제목 매칭은 본문 매칭보다 두 배의 가중치를 가집니다.
39
+
40
+ 도구는 전체 지식 베이스가 아닌 매칭된 문서만 받습니다 — 제목, 요약, 발췌문 형태로. 실제로 이는 쿼리당 전체 컨텍스트의 약 4%만 주입됨을 의미합니다. 도구는 요약만으로 충분하지 않을 때만 전체 문서를 읽습니다.
41
+
42
+ 이를 통해 아무것도 숨기지 않으면서 토큰 사용량을 낮게 유지합니다. 모든 컨텍스트는 여전히 명시적이고, 파일 기반이며, 검토 가능합니다.
43
+
44
+ ## 프로바이더 지원
45
+
46
+ `gctree`는 Claude Code와 Codex 모두에서 동작합니다. 두 프로바이더는 동일한 기반 컨텍스트 저장소를 사용합니다. 한 번만 scaffold하면 두 도구 모두 같은 gc-branch에서 resolve, onboard, 컨텍스트 업데이트를 수행할 수 있습니다.
35
47
 
36
48
  ## 범위 경계
37
49
 
38
- `gctree`는 의도적으로 다음이 아닙니다.
50
+ `gctree`는 의도적으로 다음을 지향하지 않습니다:
39
51
 
40
- - 요청부터 커밋까지 전 과정을 오케스트레이션하는 배달 시스템
52
+ - 요청-커밋 배달 오케스트레이터
41
53
  - 숨겨진 메모리 시스템
42
- - 브라우저 기반 협업 런타임
54
+ - 브라우저 협업 런타임
43
55
  - 범용 지식 베이스 제품
44
56
 
45
- `gctree`는 한 가지 일에 집중합니다. 재사용 가능한 글로벌 컨텍스트 브랜치를 관리하고, 변경을 명시적으로 다루는 일입니다.
57
+ `gctree`는 한 가지 역할에 집중합니다: 재사용 가능한 전역 컨텍스트 브랜치 관리와 명시적인 지속 업데이트.
46
58
 
47
59
  ## 파일 모델
48
60
 
49
- 보통디렉터리 아래 구조는 이렇게 생깁니다.
61
+ 일반적인디렉토리 구조는 다음과 같습니다:
50
62
 
51
63
  ```text
52
64
  ~/.gctree/
@@ -60,22 +72,22 @@
60
72
  docs/
61
73
  ```
62
74
 
63
- - `HEAD`는 기본으로 활성화되는 gc-branch를 가리킵니다.
64
- - `settings.json`에는 provider 모드, 런타임 시작에 사용할 온보딩 provider, 선호 워크플로 언어가 저장됩니다.
65
- - `branch-repo-map.json`에는 각 gc-branch별로 어떤 레포를 포함하거나 제외할지 저장됩니다.
66
- - `branch.json`에는 가벼운 gc-branch 메타데이터가 들어갑니다.
67
- - `index.md`는 도구가 먼저 들어오는 압축된 진입점입니다.
68
- - `docs/`에는 source-of-truth markdown 문서가 들어갑니다.
75
+ - `HEAD`는 폴백 활성 gc-branch를 추적합니다.
76
+ - `settings.json`은 프로바이더 모드, 런타임 실행 선택된 온보딩 프로바이더, 선호 워크플로우 언어를 저장합니다.
77
+ - `branch-repo-map.json`은 각 gc-branch 대해 어떤 저장소가 포함되거나 제외되는지 저장합니다.
78
+ - `branch.json`은 gc-branch 경량 메타데이터를 저장합니다.
79
+ - `index.md`는 도구를 위한 간결한 진입점으로, 2000자 이하로 유지되어 상당한 토큰 예산을 소비하지 않고 빠르게 로드됩니다.
80
+ - `docs/`는 정보 소스가 되는 마크다운 문서들을 담습니다.
69
81
 
70
- ## 레포 인식 동작
82
+ ## 저장소 인식 동작
71
83
 
72
- gc-branch 모든 곳에 적용될 필요가 없습니다.
73
- 예를 들어 `A` 브랜치가 `B`, `C`, `D` 레포에서만 의미가 있다면, `gctree`는 사실을 `branch-repo-map.json`에 기록할 수 있습니다.
84
+ gc-branch 모든 곳에 적용될 필요는 없습니다.
85
+ 브랜치 `A`가 저장소 `B`, `C`, `D`에만 관련된다면, `gctree`는 이를 `branch-repo-map.json`에 기록할 수 있습니다.
74
86
 
75
- 그 상태에서 다른 레포인 `F`에서 `gctree resolve`를 실행하면, 다음처럼 처리할있습니다.
87
+ 다른 저장소 `F`에서 `gctree resolve`를 실행하면 다음 하나를 선택할 있습니다:
76
88
 
77
- - 이번 한 번만 계속하기
78
- - 앞으로 `F`에서도 gc-branch 항상 사용하기
79
- - `F`에서는 gc-branch 무시하기
89
+ - 한 번만 계속 진행
90
+ - `F`에서 항상 해당 gc-branch 사용
91
+ - `F`에서 해당 gc-branch 무시
80
92
 
81
- 덕분에 서로 무관한 레포들 사이에서 여러 세션을 동시에 많이 띄워두는 사용자에게도 gc-tree가 훨씬 안전하게 동작합니다.
93
+ 이를 통해 관련 없는 여러 저장소에 걸쳐 많은 병렬 세션을 유지하는 헤비 유저에게도 gc-tree가 훨씬 안전하게 동작합니다.
package/docs/concept.md CHANGED
@@ -33,6 +33,18 @@ That works for a while. Then real work shows up and the cracks start to show:
33
33
 
34
34
  `gctree` exists to handle that layer cleanly.
35
35
 
36
+ ## How resolve works
37
+
38
+ When a tool calls `gctree resolve --query "..."`, gc-tree scores every document in the active gc-branch against the query using keyword matching with Unicode support (Korean, CJK, and mixed-language queries work the same as English). Title matches count twice as much as body matches.
39
+
40
+ The tool receives only the matching documents — title, summary, and excerpt — not the full knowledge base. In practice this means roughly 4% of total context is injected per query. The tool reads the full document only when the summary is not enough.
41
+
42
+ This keeps token use low without hiding anything. All context is still explicit, file-backed, and reviewable.
43
+
44
+ ## Provider support
45
+
46
+ `gctree` works with both Claude Code and Codex. Both providers use the same underlying context store. Scaffold once and both tools can resolve, onboard, and update context from the same gc-branch.
47
+
36
48
  ## Scope boundary
37
49
 
38
50
  `gctree` is intentionally not:
@@ -64,7 +76,7 @@ A typical home directory looks like this:
64
76
  - `settings.json` stores the provider mode, the onboarding provider chosen for runtime launch, and the preferred workflow language.
65
77
  - `branch-repo-map.json` stores which repositories are included or excluded for each gc-branch.
66
78
  - `branch.json` stores lightweight gc-branch metadata.
67
- - `index.md` is the compact entry point for tools.
79
+ - `index.md` is the compact entry point for tools — kept under 2000 characters so it loads fast without consuming significant token budget.
68
80
  - `docs/` holds the source-of-truth markdown documents.
69
81
 
70
82
  ## Repo-aware behavior
@@ -2,51 +2,63 @@
2
2
 
3
3
  [English](concept.md) | [한국어](concept.ko.md) | [简体中文](concept.zh.md) | [日本語](concept.ja.md) | [Español](concept.es.md)
4
4
 
5
- ## 摘要
5
+ ## 概述
6
6
 
7
- `gctree` 是一层面向 AI 编码工具的轻量级全局上下文层。它把长期上下文放在单个仓库之外、以显式 markdown 文档的形式保存,让你可以在不同 gc-branch 之间切换,并且把每条 gc-branch 的影响范围限制在真正相关的仓库里。
7
+ `gctree` 是一个为 AI 编程工具设计的轻量级全局上下文层。它将长期上下文保存在任何单一代码仓库之外的显式 Markdown 文档中,支持在 gc-branch 之间切换,并可将每个 gc-branch 的作用范围限制在真正需要它的代码仓库中。
8
8
 
9
9
  ## `gctree` 是什么
10
10
 
11
- `gctree` 是一个用来管理可复用全局上下文的 CLI
12
- 它面向的是这样一种需求:长期上下文需要在多个仓库、多个会话、多个工具之间持续存在,但又不能变成一个看不见、摸不着的“隐式记忆黑盒”。
11
+ `gctree` 是一个用于管理可复用全局上下文的 CLI 工具。
12
+ 它专为希望重要上下文能够跨代码仓库、跨会话、跨工具持续存在,同时又不变成隐藏记忆的个人和团队而设计。
13
13
 
14
- 与其把重要知识分散在提示词文件、仓库内笔记和临时指令里,不如让 `gctree` 给这些知识一个稳定、可追踪、由文件承载的家。
14
+ 与其将关键知识分散在提示词文件、仓库本地笔记和临时指令中,`gctree` 为这些知识提供了一个稳定的、以文件为载体的归宿。
15
15
 
16
- ## 它解决什么问题
16
+ ## 它解决了什么问题
17
17
 
18
- 很多 AI 编码环境一开始都很简单:
18
+ 许多 AI 编程环境最初规模都很小:
19
19
 
20
20
  - 一个 `AGENTS.md`
21
21
  - 一个 `CLAUDE.md`
22
- - 一个仓库内提示词文件
23
- - 几段需要时再复制进提示词里的笔记
22
+ - 一个仓库本地提示词文件
23
+ - 几条在需要时复制进提示词的笔记
24
24
 
25
- 一开始这样完全够用。但一旦进入真实工作场景,这套做法很快就会吃力。
25
+ 这样的方式在一段时间内是可行的。但当真正的工作量到来时,裂缝就开始显现:
26
26
 
27
27
  - 不同产品需要不同的上下文
28
- - 客户项目之间必须隔离
29
- - 可复用的指导信息应该放在单个仓库之外
30
- - 多个工具应该能读取同一份 source of truth
31
- - 长期上下文应该通过安全、可审阅的流程来演进
32
- - 同一个人可能同时在多个仓库里跑很多个会话
28
+ - 客户项目需要清晰的隔离
29
+ - 可复用的指导内容应该存放在任何单一仓库之外
30
+ - 多个工具应该能够读取同一个可信来源
31
+ - 长期上下文应该通过明确的、可审查的流程来变更
32
+ - 一个人可能同时跨多个代码仓库开启多个会话
33
33
 
34
- `gctree` 存在的目的,就是把这一层问题单独而清晰地解决掉。
34
+ `gctree` 的存在,就是为了干净地处理这一层问题。
35
35
 
36
- ## 边界在哪里
36
+ ## resolve 的工作原理
37
37
 
38
- `gctree` 有意不去做下面这些事:
38
+ 当工具调用 `gctree resolve --query "..."` 时,gc-tree 会使用支持 Unicode 的关键词匹配,对当前活跃 gc-branch 中的每个文档与查询内容进行评分(韩语、中日韩文字及混合语言查询与英语的处理方式完全相同)。标题匹配的权重是正文匹配的两倍。
39
39
 
40
- - 从需求一路编排到 commit 的交付系统
41
- - 隐藏式记忆系统
40
+ 工具只会收到匹配的文档——包含标题、摘要和摘录——而非完整的知识库。实际上,每次查询注入的上下文约占总量的 4%。只有在摘要不足以满足需求时,工具才会读取完整文档。
41
+
42
+ 这种方式在不遮蔽任何内容的前提下保持了较低的 token 消耗。所有上下文仍然是显式的、以文件为载体的,且可供审查。
43
+
44
+ ## 提供商支持
45
+
46
+ `gctree` 同时支持 Claude Code 和 Codex。两个提供商使用相同的底层上下文存储。只需 scaffold 一次,两个工具便可从同一个 gc-branch 中执行 resolve、onboard 和上下文更新。
47
+
48
+ ## 范围边界
49
+
50
+ `gctree` 有意不做以下事情:
51
+
52
+ - 从需求到提交的交付编排器
53
+ - 隐藏记忆系统
42
54
  - 浏览器协作运行时
43
55
  - 通用知识库产品
44
56
 
45
- 它只专注一件事:管理可复用的全局上下文分支,以及这些分支上的显式更新。
57
+ 它专注于一件事:管理可复用的全局上下文分支,以及明确的持久化更新。
46
58
 
47
59
  ## 文件模型
48
60
 
49
- 一个典型的主目录结构大致如下:
61
+ 一个典型的主目录结构如下:
50
62
 
51
63
  ```text
52
64
  ~/.gctree/
@@ -60,22 +72,22 @@
60
72
  docs/
61
73
  ```
62
74
 
63
- - `HEAD` 记录默认激活的 gc-branch。
64
- - `settings.json` 保存 provider 模式、运行时启动时选用的 onboarding provider,以及偏好的工作流语言。
65
- - `branch-repo-map.json` 保存每条 gc-branch 对哪些仓库包含或排除。
66
- - `branch.json` 保存轻量级的 gc-branch 元数据。
67
- - `index.md` 是工具首先进入的紧凑入口。
68
- - `docs/` 用来保存 source-of-truth markdown 文档。
75
+ - `HEAD` 记录后备的活跃 gc-branch。
76
+ - `settings.json` 存储提供商模式、运行时启动时选择的 onboarding 提供商,以及首选的工作流语言。
77
+ - `branch-repo-map.json` 存储每个 gc-branch 包含或排除的代码仓库。
78
+ - `branch.json` 存储轻量级的 gc-branch 元数据。
79
+ - `index.md` 是工具的简洁入口点——保持在 2000 字符以内,以便快速加载而不消耗大量 token 预算。
80
+ - `docs/` 存放作为可信来源的 Markdown 文档。
69
81
 
70
- ## 面向仓库的行为
82
+ ## 仓库感知行为
71
83
 
72
- gc-branch 不需要在所有地方都生效。
73
- 如果 branch `A` 只和仓库 `B`、`C`、`D` 有关,`gctree` 就可以把这件事记录到 `branch-repo-map.json` 里。
84
+ gc-branch 不必应用于所有地方。
85
+ 如果分支 `A` 只与代码仓库 `B`、`C` 和 `D` 相关,`gctree` 可以将这一关系记录在 `branch-repo-map.json` 中。
74
86
 
75
- 这样一来,当你在另一个仓库 `F` 里执行 `gctree resolve` 时,它可以这样处理:
87
+ `gctree resolve` 在另一个代码仓库(例如 `F`)中运行时,它可以:
76
88
 
77
- - 只这一次继续
78
- - 以后在 `F` 里始终使用这条 gc-branch
79
- - 在 `F` 里忽略这条 gc-branch
89
+ - 继续一次
90
+ - 始终在 `F` 中使用该 gc-branch
91
+ - 在 `F` 中忽略该 gc-branch
80
92
 
81
- 对于那些同时在多个互不相关仓库里开很多并行会话的重度用户来说,这会让 gc-tree 安全得多,也更实用。
93
+ 这使得 gc-tree 对于同时跨多个无关代码仓库保持大量并行会话的重度用户来说更加安全。
@@ -4,24 +4,24 @@
4
4
 
5
5
  ## Resumen
6
6
 
7
- El desarrollo local sigue un flujo estándar de Node.js 20+: instalar dependencias, compilar la CLI, ejecutarla localmente y verificar los cambios con la suite de tests existente antes de enviarlos.
7
+ El desarrollo local sigue un flujo de trabajo estándar de Node.js 20+: instalar dependencias, compilar la CLI, ejecutarla localmente y verificar los cambios con el conjunto de pruebas existente antes de enviarlos.
8
8
 
9
9
  ## Requisitos previos
10
10
 
11
11
  - Node.js 20+
12
12
  - npm
13
- - binarios locales de `codex` y / o `claude` si quieres probar manualmente el arranque de providers
13
+ - binarios locales de `codex` y/o `claude` si quieres hacer pruebas manuales con los lanzamientos de proveedores
14
14
 
15
- ## Preparación
15
+ ## Configuración
16
16
 
17
17
  ```bash
18
18
  npm install
19
19
  npm run build
20
20
  ```
21
21
 
22
- ## Ejecuta la CLI en local
22
+ ## Ejecutar la CLI localmente
23
23
 
24
- ### Opción 1: ejecutar directamente la entrada ya compilada
24
+ ### Opción 1: ejecutar el punto de entrada compilado directamente
25
25
 
26
26
  ```bash
27
27
  node dist/src/cli.js status
@@ -34,7 +34,7 @@ npm link
34
34
  gctree status
35
35
  ```
36
36
 
37
- Si cambias archivos TypeScript, vuelve a compilar antes de probar otra vez la CLI.
37
+ Si cambias archivos TypeScript, vuelve a compilar antes de probar la CLI de nuevo.
38
38
 
39
39
  ## Verificación
40
40
 
@@ -45,33 +45,55 @@ npm run build
45
45
  npm test
46
46
  ```
47
47
 
48
- ## Tests de repo scope
48
+ ### Suite de evaluación
49
49
 
50
- La suite de tests cubre ahora:
50
+ Además de las pruebas unitarias, una suite de evaluación mide la calidad de resolve contra fixtures realistas:
51
51
 
52
- - persistencia del modo de provider (`claude-code`, `codex`, `both`)
53
- - persistencia del idioma preferido y aplicación estricta del idioma en los launch prompts
54
- - selección de gc-branch con conciencia de repositorio
55
- - decisiones interactivas de include / exclude durante `resolve`
56
- - actualizaciones del branch repo map
57
- - límites del flujo guiado de onboarding / update
52
+ ```bash
53
+ npm run eval # suite sintética de 5 escenarios (onboarding, resolve, eficiencia de tokens, actualización, aislamiento)
54
+ npm run eval:verbose # lo mismo, con detalle por caso
55
+ npm run eval:multi-repo # prueba de aislamiento entre repositorios usando fixtures de estilo cosmo
56
+ npm run eval:real-docs # recall y precisión contra exportaciones reales de Notion (requiere documentos locales)
57
+ npm run eval:autoresearch # bucle iterativo de mejora de resolve (modifica src/resolve.ts en su lugar)
58
+ ```
59
+
60
+ Líneas base esperadas (ejecuta `npm run eval` para verificar):
61
+
62
+ | Suite | Objetivo |
63
+ | --- | --- |
64
+ | Sintética (5 escenarios) | 5/5 PASS, media ≥ 90% |
65
+ | Multi-repo | ≥ 80% en total |
66
+ | Real-docs | Recall ≥ 90%, F1 ≥ 80% |
67
+
68
+ Si modificas `src/resolve.ts`, ejecuta `npm test && npm run eval && npm run eval:real-docs` antes de abrir un PR.
69
+
70
+ ## Cobertura de pruebas
71
+
72
+ El conjunto de pruebas unitarias cubre actualmente:
73
+
74
+ - persistencia del modo de proveedor (`claude-code`, `codex`, `both`)
75
+ - persistencia del idioma preferido y aplicación estricta del idioma en los prompts de lanzamiento
76
+ - selección de gc-branch según el repositorio
77
+ - decisiones interactivas de incluir/excluir durante `resolve`
78
+ - actualizaciones del mapa de repositorios de la branch
79
+ - límites del flujo guiado de onboarding/actualización
58
80
 
59
- ## Comprobaciones manuales E2E de providers
81
+ ## Verificaciones E2E manuales del proveedor
60
82
 
61
- Los tests automatizados desactivan el lanzamiento de providers para poder verificar los launch plans sin abrir sesiones reales de Codex o Claude Code.
62
- Si quieres probar la ruta real de lanzamiento, ejecuta uno de estos comandos dentro de un directorio desechable:
83
+ Las pruebas automatizadas deshabilitan el lanzamiento del proveedor para poder verificar los planes de lanzamiento sin abrir sesiones reales de Codex o Claude Code.
84
+ Si quieres hacer pruebas con el camino de lanzamiento real, ejecuta uno de estos en un directorio de prueba:
63
85
 
64
86
  ```bash
65
87
  gctree init --provider codex
66
88
  gctree init --provider claude-code
67
89
  ```
68
90
 
69
- Deberías ver que el provider se abre y recibe inmediatamente `$gc-onboard` o `/gc-onboard`.
91
+ Deberías ver cómo se abre el proveedor y recibe inmediatamente `$gc-onboard` o `/gc-onboard`.
70
92
 
71
93
  ## Estructura del proyecto
72
94
 
73
- - `src/` — CLI, almacenamiento de contexto, selección de provider, mapeo de repo scope, flujos guiados de onboarding / update y lógica de scaffolding
74
- - `tests/` — tests de CLI y de comportamiento
75
- - `skills/` — habilidades de flujo de trabajo independientes de la herramienta
76
- - `scaffolds/` — plantillas de arranque específicas por host
95
+ - `src/` — CLI, almacenamiento de contexto, selección de proveedor, mapeo de alcance del repositorio, flujos guiados de onboarding/actualización y lógica de scaffolding
96
+ - `tests/` — pruebas unitarias y scripts de evaluación
97
+ - `skills/` — skills de flujo de trabajo agnósticas a la herramienta (usadas por Claude Code)
98
+ - `scaffolds/` — directorios de marcador de posición; el contenido de los archivos de scaffold se genera programáticamente en `src/scaffold.ts`
77
99
  - `docs/` — documentación de concepto, principios, uso y desarrollo
@@ -2,15 +2,15 @@
2
2
 
3
3
  [English](local-development.md) | [한국어](local-development.ko.md) | [简体中文](local-development.zh.md) | [日本語](local-development.ja.md) | [Español](local-development.es.md)
4
4
 
5
- ## 要約
5
+ ## 概要
6
6
 
7
- ローカル開発は、一般的な Node.js 20+ の流れに沿っています。依存関係を入れ、CLI をビルドし、ローカルで実行し、変更を送る前に既存のテストスイートで検証します。
7
+ ローカル開発は標準的な Node.js 20+ の流れに沿っています。依存関係をインストールし、CLI をビルドし、ローカルで実行し、変更を送る前に既存のテストスイートで検証します。
8
8
 
9
9
  ## 前提条件
10
10
 
11
11
  - Node.js 20+
12
12
  - npm
13
- - provider 起動を自分で試したい場合はローカルの `codex` / または `claude` バイナリ
13
+ - プロバイダー起動を手元で試したい場合はローカルの `codex` `claude` バイナリ
14
14
 
15
15
  ## セットアップ
16
16
 
@@ -45,33 +45,55 @@ npm run build
45
45
  npm test
46
46
  ```
47
47
 
48
- ## repo-scope テスト
48
+ ### eval スイート
49
49
 
50
- 現在のテストスイートでは、次をカバーしています。
50
+ ユニットテストに加えて、eval スイートがリアルなフィクスチャに対して resolve の品質を測定します。
51
51
 
52
- - provider モードの保存(`claude-code`、`codex`、`both`)
53
- - 優先言語の保存と launch prompt での強い言語維持
52
+ ```bash
53
+ npm run eval # 5 シナリオの合成スイート(オンボーディング、resolve、トークン効率、更新、分離)
54
+ npm run eval:verbose # 同上、ケースごとの詳細付き
55
+ npm run eval:multi-repo # cosmo スタイルのフィクスチャを使ったクロスリポジトリ分離テスト
56
+ npm run eval:real-docs # 実際の Notion エクスポートに対する再現率と適合率(ローカルドキュメントが必要)
57
+ npm run eval:autoresearch # 反復的な resolve 改善ループ(src/resolve.ts をその場で変更します)
58
+ ```
59
+
60
+ 期待されるベースライン(`npm run eval` を実行して確認):
61
+
62
+ | スイート | 目標 |
63
+ | --- | --- |
64
+ | 合成(5 シナリオ) | 5/5 PASS、平均 ≥ 90% |
65
+ | マルチリポジトリ | 全体 ≥ 80% |
66
+ | 実ドキュメント | 再現率 ≥ 90%、F1 ≥ 80% |
67
+
68
+ `src/resolve.ts` を変更した場合は、PR を開く前に `npm test && npm run eval && npm run eval:real-docs` を実行してください。
69
+
70
+ ## テストカバレッジ
71
+
72
+ 現在のユニットテストスイートでは次をカバーしています。
73
+
74
+ - プロバイダーモードの永続化(`claude-code`、`codex`、`both`)
75
+ - 優先言語の永続化と起動プロンプトでの言語強制
54
76
  - リポジトリを意識した gc-branch 選択
55
- - `resolve` 実行中の include / exclude の対話
77
+ - `resolve` 実行中の include / exclude の対話的な決定
56
78
  - branch repo map の更新
57
- - ガイド付きオンボーディング / 更新の境界条件
79
+ - ガイド付きオンボーディング・更新フローの境界条件
58
80
 
59
- ## provider の手動 E2E チェック
81
+ ## プロバイダーの手動 E2E チェック
60
82
 
61
- 自動テストでは、Codex や Claude Code のセッションを実際に開かなくても launch plan を検証できるよう、provider 起動を無効化しています。
62
- 本物の launch path を試したい場合は、使い捨てディレクトリで次のどちらかを実行してください。
83
+ 自動テストでは、Codex や Claude Code のセッションを実際に開かなくても起動計画を検証できるよう、プロバイダー起動を無効化しています。
84
+ 本物の起動パスを試したい場合は、使い捨てディレクトリで次のどちらかを実行してください。
63
85
 
64
86
  ```bash
65
87
  gctree init --provider codex
66
88
  gctree init --provider claude-code
67
89
  ```
68
90
 
69
- 正しく動けば、provider が起動し、すぐに `$gc-onboard` または `/gc-onboard` を受け取るはずです。
91
+ 正しく動けば、プロバイダーが起動し、すぐに `$gc-onboard` または `/gc-onboard` を受け取るはずです。
70
92
 
71
93
  ## プロジェクト構成
72
94
 
73
- - `src/` — CLI、本体のコンテキスト保存、provider 選択、repo-scope マッピング、ガイド付きオンボーディング / 更新フロー、scaffolding ロジック
74
- - `tests/` — CLI と振る舞いのテスト
75
- - `skills/` — ツール非依存のワークフロースキル
76
- - `scaffolds/` — ホスト別のブートストラップテンプレート
77
- - `docs/` — 概念、原則、使い方、開発ドキュメント
95
+ - `src/` — CLI、コンテキストストレージ、プロバイダー選択、repo-scope マッピング、ガイド付きオンボーディング・更新フロー、および scaffolding ロジック
96
+ - `tests/` — ユニットテストと eval スクリプト
97
+ - `skills/` — ツールに依存しないワークフロースキル(Claude Code が使用)
98
+ - `scaffolds/` — プレースホルダーディレクトリ。scaffold ファイルの内容は `src/scaffold.ts` でプログラム的に生成されます
99
+ - `docs/` — コンセプト・原則・使い方・開発ドキュメント