@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.
- package/README.es.md +60 -59
- package/README.ja.md +60 -59
- package/README.ko.md +62 -61
- package/README.md +61 -60
- package/README.zh.md +62 -61
- package/dist/src/cli.js +25 -0
- package/dist/src/hook.js +209 -0
- package/dist/src/paths.js +6 -0
- package/dist/src/scaffold.js +67 -7
- 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 +100 -50
- package/docs/usage.ja.md +73 -23
- package/docs/usage.ko.md +102 -52
- package/docs/usage.md +53 -3
- package/docs/usage.zh.md +97 -47
- package/package.json +3 -1
package/docs/concept.es.md
CHANGED
|
@@ -4,49 +4,61 @@
|
|
|
4
4
|
|
|
5
5
|
## Resumen
|
|
6
6
|
|
|
7
|
-
`gctree` es una capa
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
23
|
-
-
|
|
22
|
+
- un archivo de prompt local en el repositorio
|
|
23
|
+
- algunas notas copiadas en los prompts cuando se necesitan
|
|
24
24
|
|
|
25
|
-
Eso funciona
|
|
25
|
+
Eso funciona un tiempo. Luego llega el trabajo real y comienzan a aparecer las fisuras:
|
|
26
26
|
|
|
27
|
-
-
|
|
28
|
-
- el trabajo para clientes
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
- el contexto
|
|
32
|
-
- una
|
|
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
|
|
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
|
|
50
|
+
`gctree` intencionalmente no es:
|
|
39
51
|
|
|
40
|
-
- un orquestador
|
|
52
|
+
- un orquestador de entregas de solicitud a commit
|
|
41
53
|
- un sistema de memoria oculta
|
|
42
|
-
- un
|
|
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
|
|
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
|
|
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`
|
|
64
|
-
- `settings.json`
|
|
65
|
-
- `branch-repo-map.json`
|
|
66
|
-
- `branch.json`
|
|
67
|
-
- `index.md` es el punto de entrada compacto para herramientas
|
|
68
|
-
- `docs/` contiene los documentos markdown que
|
|
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
|
|
82
|
+
## Comportamiento según el repositorio
|
|
71
83
|
|
|
72
|
-
|
|
73
|
-
Si la
|
|
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
|
|
87
|
+
Cuando `gctree resolve` se ejecuta en otro repositorio como `F`, puede:
|
|
76
88
|
|
|
77
|
-
- continuar
|
|
78
|
-
- usar siempre
|
|
79
|
-
- ignorar
|
|
89
|
+
- continuar una vez
|
|
90
|
+
- usar siempre esa gc-branch en `F`
|
|
91
|
+
- ignorar esa gc-branch en `F`
|
|
80
92
|
|
|
81
|
-
|
|
93
|
+
Esto hace que gc-tree sea mucho más seguro para usuarios avanzados que mantienen muchas sesiones paralelas abiertas en repositorios no relacionados.
|
package/docs/concept.ja.md
CHANGED
|
@@ -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
|
|
7
|
+
`gctree` は AI コーディングツール向けの軽量なグローバルコンテキスト層です。長期的なコンテキストを単一のリポジトリの外に置いた明示的なマークダウンドキュメントで管理し、gc-branch を切り替えながら文脈を使い分けられるようにし、各 gc-branch が本当に関係するリポジトリにだけ影響するよう制御できます。
|
|
8
8
|
|
|
9
9
|
## `gctree` とは何か
|
|
10
10
|
|
|
11
|
-
`gctree`
|
|
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
|
-
-
|
|
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
|
-
|
|
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`
|
|
64
|
-
- `settings.json`
|
|
65
|
-
- `branch-repo-map.json`
|
|
66
|
-
- `branch.json`
|
|
67
|
-
- `index.md`
|
|
68
|
-
- `docs/`
|
|
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
|
-
|
|
84
|
+
gc-branch はすべての場所に適用する必要はありません。
|
|
85
|
+
ブランチ `A` がリポジトリ `B`・`C`・`D` にのみ関係する場合、`gctree` はそれを `branch-repo-map.json` に記録できます。
|
|
74
86
|
|
|
75
|
-
|
|
87
|
+
別のリポジトリ `F` で `gctree resolve` が実行された場合、次のいずれかを選択できます。
|
|
76
88
|
|
|
77
|
-
-
|
|
78
|
-
-
|
|
89
|
+
- 一度だけ続行する
|
|
90
|
+
- `F` でも常にその gc-branch を使用する
|
|
79
91
|
- `F` ではその gc-branch を無視する
|
|
80
92
|
|
|
81
|
-
|
|
93
|
+
これにより、無関係な多数のリポジトリで並行セッションを維持するヘビーユーザーにとって、gc-tree はより安全に使えます。
|
package/docs/concept.ko.md
CHANGED
|
@@ -4,49 +4,61 @@
|
|
|
4
4
|
|
|
5
5
|
## 요약
|
|
6
6
|
|
|
7
|
-
`gctree`는 AI 코딩 도구를 위한
|
|
7
|
+
`gctree`는 AI 코딩 도구를 위한 경량 전역 컨텍스트 레이어입니다. 오래 유지되는 컨텍스트를 특정 저장소 바깥에 명시적인 마크다운 문서로 관리하고, gc-branch 간 전환을 지원하며, 각 gc-branch를 실제로 관련된 저장소로만 범위를 제한할 수 있습니다.
|
|
8
8
|
|
|
9
|
-
## `gctree
|
|
9
|
+
## `gctree`란 무엇인가
|
|
10
10
|
|
|
11
|
-
`gctree`는 재사용 가능한
|
|
12
|
-
|
|
11
|
+
`gctree`는 재사용 가능한 전역 컨텍스트를 관리하기 위한 CLI입니다.
|
|
12
|
+
중요한 컨텍스트를 저장소, 세션, 도구를 가로질러 유지하되, 숨겨진 메모리처럼 블랙박스에 갇히지 않게 하려는 개인과 팀을 위해 만들어졌습니다.
|
|
13
13
|
|
|
14
|
-
|
|
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
|
-
- 여러 도구가
|
|
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`는
|
|
64
|
-
- `settings.json
|
|
65
|
-
- `branch-repo-map.json
|
|
66
|
-
- `branch.json
|
|
67
|
-
- `index.md`는
|
|
68
|
-
- `docs
|
|
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
|
-
|
|
84
|
+
gc-branch가 모든 곳에 적용될 필요는 없습니다.
|
|
85
|
+
브랜치 `A`가 저장소 `B`, `C`, `D`에만 관련된다면, `gctree`는 이를 `branch-repo-map.json`에 기록할 수 있습니다.
|
|
74
86
|
|
|
75
|
-
|
|
87
|
+
다른 저장소 `F`에서 `gctree resolve`를 실행하면 다음 중 하나를 선택할 수 있습니다:
|
|
76
88
|
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
- `F
|
|
89
|
+
- 한 번만 계속 진행
|
|
90
|
+
- `F`에서 항상 해당 gc-branch 사용
|
|
91
|
+
- `F`에서 해당 gc-branch 무시
|
|
80
92
|
|
|
81
|
-
|
|
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
|
package/docs/concept.zh.md
CHANGED
|
@@ -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`
|
|
7
|
+
`gctree` 是一个为 AI 编程工具设计的轻量级全局上下文层。它将长期上下文保存在任何单一代码仓库之外的显式 Markdown 文档中,支持在 gc-branch 之间切换,并可将每个 gc-branch 的作用范围限制在真正需要它的代码仓库中。
|
|
8
8
|
|
|
9
9
|
## `gctree` 是什么
|
|
10
10
|
|
|
11
|
-
`gctree`
|
|
12
|
-
|
|
11
|
+
`gctree` 是一个用于管理可复用全局上下文的 CLI 工具。
|
|
12
|
+
它专为希望重要上下文能够跨代码仓库、跨会话、跨工具持续存在,同时又不变成隐藏记忆的个人和团队而设计。
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
与其将关键知识分散在提示词文件、仓库本地笔记和临时指令中,`gctree` 为这些知识提供了一个稳定的、以文件为载体的归宿。
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## 它解决了什么问题
|
|
17
17
|
|
|
18
|
-
|
|
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
|
-
-
|
|
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
|
-
|
|
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`
|
|
64
|
-
- `settings.json`
|
|
65
|
-
- `branch-repo-map.json`
|
|
66
|
-
- `branch.json`
|
|
67
|
-
- `index.md`
|
|
68
|
-
- `docs/`
|
|
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
|
-
|
|
84
|
+
gc-branch 不必应用于所有地方。
|
|
85
|
+
如果分支 `A` 只与代码仓库 `B`、`C` 和 `D` 相关,`gctree` 可以将这一关系记录在 `branch-repo-map.json` 中。
|
|
74
86
|
|
|
75
|
-
|
|
87
|
+
当 `gctree resolve` 在另一个代码仓库(例如 `F`)中运行时,它可以:
|
|
76
88
|
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
- 在 `F`
|
|
89
|
+
- 继续一次
|
|
90
|
+
- 始终在 `F` 中使用该 gc-branch
|
|
91
|
+
- 在 `F` 中忽略该 gc-branch
|
|
80
92
|
|
|
81
|
-
|
|
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
|
|
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
|
|
13
|
+
- binarios locales de `codex` y/o `claude` si quieres hacer pruebas manuales con los lanzamientos de proveedores
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## Configuración
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
18
|
npm install
|
|
19
19
|
npm run build
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
##
|
|
22
|
+
## Ejecutar la CLI localmente
|
|
23
23
|
|
|
24
|
-
### Opción 1: ejecutar
|
|
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
|
|
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
|
-
|
|
48
|
+
### Suite de evaluación
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
Además de las pruebas unitarias, una suite de evaluación mide la calidad de resolve contra fixtures realistas:
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
|
|
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
|
-
##
|
|
81
|
+
## Verificaciones E2E manuales del proveedor
|
|
60
82
|
|
|
61
|
-
|
|
62
|
-
Si quieres
|
|
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
|
|
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
|
|
74
|
-
- `tests/` —
|
|
75
|
-
- `skills/` —
|
|
76
|
-
- `scaffolds/` —
|
|
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
|