@handsupmin/gc-tree 0.2.0 → 0.3.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.
@@ -4,49 +4,61 @@
4
4
 
5
5
  ## Resumen
6
6
 
7
- `gctree` es una capa ligera de contexto global para herramientas de programación con IA. Mantiene el contexto duradero en documentos markdown explícitos fuera de cualquier repositorio individual, permite cambiar entre gc-branches y puede limitar cada gc-branch a los repositorios donde realmente tiene sentido.
7
+ `gctree` es una capa de contexto global ligera para herramientas de programación con IA. Mantiene el contexto de larga duración en documentos markdown explícitos fuera de cualquier repositorio individual, permite cambiar entre gc-branches y puede limitar cada gc-branch a los repositorios donde realmente corresponde.
8
8
 
9
9
  ## Qué es `gctree`
10
10
 
11
11
  `gctree` es una CLI para gestionar contexto global reutilizable.
12
- Está pensada para equipos y personas que quieren que el contexto de largo recorrido sobreviva entre repositorios, sesiones y herramientas, sin convertirlo en una memoria oculta imposible de inspeccionar.
12
+ Está pensada para personas y equipos que quieren que el contexto importante persista entre repositorios, sesiones y herramientas sin convertirse en memoria oculta.
13
13
 
14
- En lugar de repartir el conocimiento importante entre archivos de prompt, notas locales al repo e instrucciones improvisadas, `gctree` le da a ese conocimiento un hogar estable, visible y respaldado por archivos.
14
+ En lugar de dispersar conocimiento clave entre archivos de prompt, notas locales de cada repositorio e instrucciones puntuales, `gctree` le da a ese conocimiento un lugar estable y respaldado por archivos donde vivir.
15
15
 
16
16
  ## Qué problema resuelve
17
17
 
18
- Muchos entornos de programación con IA empiezan de forma bastante simple:
18
+ Muchas configuraciones de programación con IA empiezan siendo pequeñas:
19
19
 
20
20
  - un `AGENTS.md`
21
21
  - un `CLAUDE.md`
22
- - un archivo de prompt dentro del repo
23
- - unas pocas notas que se copian al prompt cuando hacen falta
22
+ - un archivo de prompt local en el repositorio
23
+ - algunas notas copiadas en los prompts cuando se necesitan
24
24
 
25
- Eso funciona durante un tiempo. Pero cuando empiezan a aparecer necesidades reales, la misma configuración empieza a romperse:
25
+ Eso funciona un tiempo. Luego llega el trabajo real y comienzan a aparecer las fisuras:
26
26
 
27
- - cada producto necesita un contexto distinto
28
- - el trabajo para clientes debe mantenerse aislado
29
- - la guía reutilizable debería vivir fuera de un único repositorio
30
- - varias herramientas deberían poder leer la misma source of truth
31
- - el contexto duradero debería evolucionar con un flujo seguro y revisable
32
- - una misma persona puede tener muchas sesiones abiertas en muchos repos a la vez
27
+ - diferentes productos necesitan contexto diferente
28
+ - el trabajo para clientes necesita un aislamiento limpio
29
+ - las guías reutilizables deberían vivir fuera de cualquier repositorio individual
30
+ - múltiples herramientas deberían poder leer la misma fuente de verdad
31
+ - el contexto de larga duración debería cambiar mediante un flujo explícito y revisable
32
+ - una persona puede tener muchas sesiones abiertas en varios repositorios al mismo tiempo
33
33
 
34
- `gctree` existe para resolver precisamente esa capa del problema, y hacerlo de forma limpia.
34
+ `gctree` existe para gestionar esa capa de forma limpia.
35
+
36
+ ## Cómo funciona resolve
37
+
38
+ Cuando una herramienta llama a `gctree resolve --query "..."`, gc-tree puntúa cada documento de la gc-branch activa contra la consulta usando coincidencia de palabras clave con soporte Unicode (las consultas en coreano, CJK e idiomas mixtos funcionan igual que en inglés). Las coincidencias en el título cuentan el doble que las coincidencias en el cuerpo.
39
+
40
+ La herramienta recibe únicamente los documentos que coinciden — título, resumen y fragmento — no la base de conocimiento completa. En la práctica, esto significa que se inyecta aproximadamente el 4 % del contexto total por consulta. La herramienta lee el documento completo solo cuando el resumen no es suficiente.
41
+
42
+ Esto mantiene el uso de tokens bajo sin ocultar nada. Todo el contexto sigue siendo explícito, respaldado por archivos y revisable.
43
+
44
+ ## Compatibilidad con proveedores
45
+
46
+ `gctree` funciona tanto con Claude Code como con Codex. Ambos proveedores usan el mismo almacén de contexto subyacente. Haz scaffold una vez y ambas herramientas podrán hacer resolve, onboard y actualizar el contexto desde la misma gc-branch.
35
47
 
36
48
  ## Límite de alcance
37
49
 
38
- `gctree` no pretende ser:
50
+ `gctree` intencionalmente no es:
39
51
 
40
- - un orquestador integral que lleve una petición hasta el commit
52
+ - un orquestador de entregas de solicitud a commit
41
53
  - un sistema de memoria oculta
42
- - un runtime de colaboración en navegador
54
+ - un entorno de colaboración en el navegador
43
55
  - un producto de base de conocimiento de propósito general
44
56
 
45
- Se concentra en una sola tarea: gestionar ramas de contexto global reutilizable y sus actualizaciones explícitas.
57
+ Se centra en un único trabajo: gestionar gc-branches de contexto global reutilizable y actualizaciones duraderas explícitas.
46
58
 
47
59
  ## Modelo de archivos
48
60
 
49
- Un directorio personal típico queda así:
61
+ Un directorio de inicio típico tiene este aspecto:
50
62
 
51
63
  ```text
52
64
  ~/.gctree/
@@ -60,22 +72,22 @@ Un directorio personal típico queda así:
60
72
  docs/
61
73
  ```
62
74
 
63
- - `HEAD` sigue el gc-branch activo por defecto.
64
- - `settings.json` guarda el modo de provider, el provider elegido para lanzar el onboarding en runtime y el idioma preferido del flujo.
65
- - `branch-repo-map.json` guarda qué repositorios están incluidos o excluidos para cada gc-branch.
66
- - `branch.json` guarda metadatos ligeros del gc-branch.
67
- - `index.md` es el punto de entrada compacto para herramientas y personas.
68
- - `docs/` contiene los documentos markdown que actúan como source of truth.
75
+ - `HEAD` registra la gc-branch activa predeterminada.
76
+ - `settings.json` almacena el modo de proveedor, el proveedor de onboarding elegido para el lanzamiento en tiempo de ejecución y el idioma de trabajo preferido.
77
+ - `branch-repo-map.json` almacena qué repositorios están incluidos o excluidos para cada gc-branch.
78
+ - `branch.json` almacena metadatos ligeros de la gc-branch.
79
+ - `index.md` es el punto de entrada compacto para las herramientas se mantiene por debajo de 2000 caracteres para que cargue rápido sin consumir un presupuesto significativo de tokens.
80
+ - `docs/` contiene los documentos markdown que son la fuente de verdad.
69
81
 
70
- ## Comportamiento con conciencia de repositorio
82
+ ## Comportamiento según el repositorio
71
83
 
72
- Un gc-branch no tiene por qué aplicarse en todas partes.
73
- Si la rama `A` solo es relevante para los repositorios `B`, `C` y `D`, `gctree` puede dejarlo registrado en `branch-repo-map.json`.
84
+ Una gc-branch no tiene que aplicarse en todos lados.
85
+ Si la branch `A` solo es relevante para los repositorios `B`, `C` y `D`, `gctree` puede registrar eso en `branch-repo-map.json`.
74
86
 
75
- Cuando `gctree resolve` se ejecuta desde otro repositorio, por ejemplo `F`, puede:
87
+ Cuando `gctree resolve` se ejecuta en otro repositorio como `F`, puede:
76
88
 
77
- - continuar solo una vez
78
- - usar siempre ese gc-branch en `F`
79
- - ignorar ese gc-branch en `F`
89
+ - continuar una vez
90
+ - usar siempre esa gc-branch en `F`
91
+ - ignorar esa gc-branch en `F`
80
92
 
81
- Eso hace que gc-tree sea mucho más seguro para quienes mantienen muchas sesiones paralelas abiertas en repositorios que no tienen relación entre sí.
93
+ Esto hace que gc-tree sea mucho más seguro para usuarios avanzados que mantienen muchas sesiones paralelas abiertas en repositorios no relacionados.
@@ -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