@roarpeng/graphflow 0.6.5 → 0.6.14

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.
Files changed (118) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/README.md +167 -289
  3. package/dist/config/defaults.d.ts +6 -0
  4. package/dist/config/defaults.d.ts.map +1 -1
  5. package/dist/config/defaults.js +20 -7
  6. package/dist/config/defaults.js.map +1 -1
  7. package/dist/config/loader.d.ts +8 -0
  8. package/dist/config/loader.d.ts.map +1 -1
  9. package/dist/config/loader.js +42 -9
  10. package/dist/config/loader.js.map +1 -1
  11. package/dist/config/paths.d.ts.map +1 -1
  12. package/dist/config/paths.js +6 -5
  13. package/dist/config/paths.js.map +1 -1
  14. package/dist/config/resolve.d.ts +3 -0
  15. package/dist/config/resolve.d.ts.map +1 -1
  16. package/dist/config/resolve.js +58 -24
  17. package/dist/config/resolve.js.map +1 -1
  18. package/dist/config/secrets.d.ts +6 -1
  19. package/dist/config/secrets.d.ts.map +1 -1
  20. package/dist/config/secrets.js +9 -1
  21. package/dist/config/secrets.js.map +1 -1
  22. package/dist/core/errors.d.ts +28 -1
  23. package/dist/core/errors.d.ts.map +1 -1
  24. package/dist/core/errors.js +55 -2
  25. package/dist/core/errors.js.map +1 -1
  26. package/dist/graph/file-indexer.d.ts +2 -0
  27. package/dist/graph/file-indexer.d.ts.map +1 -1
  28. package/dist/graph/file-indexer.js +65 -36
  29. package/dist/graph/file-indexer.js.map +1 -1
  30. package/dist/graph/graph-utils.d.ts +4 -0
  31. package/dist/graph/graph-utils.d.ts.map +1 -0
  32. package/dist/graph/graph-utils.js +29 -0
  33. package/dist/graph/graph-utils.js.map +1 -0
  34. package/dist/graph/graphify-client.d.ts +2 -1
  35. package/dist/graph/graphify-client.d.ts.map +1 -1
  36. package/dist/graph/graphify-client.js +6 -17
  37. package/dist/graph/graphify-client.js.map +1 -1
  38. package/dist/graph/graphify-file-client.js +3 -3
  39. package/dist/graph/graphify-file-client.js.map +1 -1
  40. package/dist/graph/snapshot-view.d.ts +26 -0
  41. package/dist/graph/snapshot-view.d.ts.map +1 -0
  42. package/dist/graph/snapshot-view.js +228 -0
  43. package/dist/graph/snapshot-view.js.map +1 -0
  44. package/dist/index.d.ts +3 -2
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +7 -1
  47. package/dist/index.js.map +1 -1
  48. package/dist/integrations/agent-mcp-installer.d.ts +3 -0
  49. package/dist/integrations/agent-mcp-installer.d.ts.map +1 -1
  50. package/dist/integrations/agent-mcp-installer.js +7 -5
  51. package/dist/integrations/agent-mcp-installer.js.map +1 -1
  52. package/dist/learning/episodic-memory.d.ts.map +1 -1
  53. package/dist/learning/episodic-memory.js +2 -8
  54. package/dist/learning/episodic-memory.js.map +1 -1
  55. package/dist/learning/reflector.d.ts.map +1 -1
  56. package/dist/learning/reflector.js +2 -8
  57. package/dist/learning/reflector.js.map +1 -1
  58. package/dist/learning/skill-evolution.d.ts +16 -0
  59. package/dist/learning/skill-evolution.d.ts.map +1 -0
  60. package/dist/learning/skill-evolution.js +154 -0
  61. package/dist/learning/skill-evolution.js.map +1 -0
  62. package/dist/learning/skill-flywheel.d.ts +4 -47
  63. package/dist/learning/skill-flywheel.d.ts.map +1 -1
  64. package/dist/learning/skill-flywheel.js +44 -337
  65. package/dist/learning/skill-flywheel.js.map +1 -1
  66. package/dist/learning/skill-store.d.ts +20 -0
  67. package/dist/learning/skill-store.d.ts.map +1 -0
  68. package/dist/learning/skill-store.js +170 -0
  69. package/dist/learning/skill-store.js.map +1 -0
  70. package/dist/learning/skill-types.d.ts +43 -0
  71. package/dist/learning/skill-types.d.ts.map +1 -0
  72. package/dist/learning/skill-types.js +6 -0
  73. package/dist/learning/skill-types.js.map +1 -0
  74. package/dist/surfaces/cli/init.d.ts.map +1 -1
  75. package/dist/surfaces/cli/init.js +25 -39
  76. package/dist/surfaces/cli/init.js.map +1 -1
  77. package/dist/surfaces/cli/runtime/env.d.ts +8 -0
  78. package/dist/surfaces/cli/runtime/env.d.ts.map +1 -0
  79. package/dist/surfaces/cli/runtime/env.js +134 -0
  80. package/dist/surfaces/cli/runtime/env.js.map +1 -0
  81. package/dist/surfaces/cli/runtime/facade.d.ts +45 -0
  82. package/dist/surfaces/cli/runtime/facade.d.ts.map +1 -0
  83. package/dist/surfaces/cli/runtime/facade.js +34 -0
  84. package/dist/surfaces/cli/runtime/facade.js.map +1 -0
  85. package/dist/surfaces/cli/runtime/graph.d.ts +25 -0
  86. package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -0
  87. package/dist/surfaces/cli/runtime/graph.js +416 -0
  88. package/dist/surfaces/cli/runtime/graph.js.map +1 -0
  89. package/dist/surfaces/cli/runtime/helpers.d.ts +30 -0
  90. package/dist/surfaces/cli/runtime/helpers.d.ts.map +1 -0
  91. package/dist/surfaces/cli/runtime/helpers.js +159 -0
  92. package/dist/surfaces/cli/runtime/helpers.js.map +1 -0
  93. package/dist/surfaces/cli/runtime/panel.d.ts +5 -0
  94. package/dist/surfaces/cli/runtime/panel.d.ts.map +1 -0
  95. package/dist/surfaces/cli/runtime/panel.js +91 -0
  96. package/dist/surfaces/cli/runtime/panel.js.map +1 -0
  97. package/dist/surfaces/cli/runtime/routing.d.ts +11 -0
  98. package/dist/surfaces/cli/runtime/routing.d.ts.map +1 -0
  99. package/dist/surfaces/cli/runtime/routing.js +233 -0
  100. package/dist/surfaces/cli/runtime/routing.js.map +1 -0
  101. package/dist/surfaces/cli/runtime/settings.d.ts +6 -0
  102. package/dist/surfaces/cli/runtime/settings.d.ts.map +1 -0
  103. package/dist/surfaces/cli/runtime/settings.js +334 -0
  104. package/dist/surfaces/cli/runtime/settings.js.map +1 -0
  105. package/dist/surfaces/cli/runtime/types.d.ts +218 -0
  106. package/dist/surfaces/cli/runtime/types.d.ts.map +1 -0
  107. package/dist/surfaces/cli/runtime/types.js +3 -0
  108. package/dist/surfaces/cli/runtime/types.js.map +1 -0
  109. package/dist/surfaces/cli/runtime.d.ts +8 -214
  110. package/dist/surfaces/cli/runtime.d.ts.map +1 -1
  111. package/dist/surfaces/cli/runtime.js +52 -1116
  112. package/dist/surfaces/cli/runtime.js.map +1 -1
  113. package/dist/utils/hash.d.ts +11 -0
  114. package/dist/utils/hash.d.ts.map +1 -0
  115. package/dist/utils/hash.js +27 -0
  116. package/dist/utils/hash.js.map +1 -0
  117. package/package.json +3 -1
  118. package/scripts/safe-postinstall.cjs +6 -0
package/README.md CHANGED
@@ -2,34 +2,58 @@
2
2
 
3
3
  A Context-Aware Multi-Agent Orchestration Engine.
4
4
 
5
- GraphFlow 是一个基于 TypeScript/Node.js 的多智能体编排引擎,当前版本聚焦于工程可用性:任务分流、DAG 执行、结果校验、图谱索引、近无损上下文压缩、CLI 与 VS Code 扩展联动。
5
+ GraphFlow 是一个基于 TypeScript/Node.js 的多智能体编排引擎,将 **Graphify 式知识图谱** 与 **Superpowers 式任务编排** 整合为可本地运行的上下文层:自动建图、压缩检索、规划执行、经验沉淀,并通过 CLI、MCP 与 VS Code 扩展对外暴露。
6
+
7
+ ## 当前能力总览(v0.6.13)
8
+
9
+ | 能力域 | 说明 |
10
+ | --- | --- |
11
+ | **任务编排** | 按任务复杂度分流 simple / complex;DAG 并行执行、校验、重试、集成轮 |
12
+ | **模型路由** | Smart / Economy 双 tier;多 provider 健康探测与 fallback(OpenAI、Anthropic、百炼、豆包、OpenBMB) |
13
+ | **知识图谱** | 工作区 AST 索引(TS/JS/Python/Rust/Go/C/C++);File / Module / Symbol 节点 + 依赖/引用/定义边 |
14
+ | **上下文压缩** | L1/L2/L3 分层锚点;近无损打包;可选向量召回 + RRF 融合;默认 `maxContextTokens: 1500` |
15
+ | **持续建图** | 默认 `autoIndexOnSave`;preview / run 前按需增量索引(`hasPendingGraphIndexWork`) |
16
+ | **语义增强** | 可选 post-index LLM 语义 enrich;OpenBMB 本地 embedded 模式 |
17
+ | **学习飞轮** | Episodic Memory、Reflection、Skill 节点、nightly 学习、技能提示注入规划 |
18
+ | **Agent 接入** | CLI `--json`;MCP stdio(9 工具);Cursor / Claude Code 规则与示例配置 |
19
+ | **VS Code 扩展** | Settings、建图、路由测试、Context Preview、**知识图谱可视化**、Skill Insights、Chat Agent |
20
+ | **存储后端** | `file`(JSON)/ `memory` / `sqlite`(FTS5)/ `mcp-http`(Graphify) |
21
+ | **工程质量** | TypeScript strict;**41 测试文件 / 177 tests**;`npm run ci` 含扩展 esbuild 打包与 bundled runtime smoke |
6
22
 
7
- ## 当前进度(v0.6.5)
23
+ ### 一句话总结
8
24
 
9
- GraphFlow 已演进为面向多 agent 协作的工程级编排 + 上下文引擎,覆盖 **任务编排 / 路由 / 图谱 / 检索 / 学习 / Agent 接入** 全链路。
25
+ > task 描述出发,自动规划 路由模型 压缩图谱上下文(含向量召回)→ 执行/校验/重试,并把经验沉淀回知识图谱;Coding Agent 通过 MCP/CLI 优先消费压缩上下文而非整库扫描。
10
26
 
11
- ### 一句话总结
27
+ ### v0.6.7 – v0.6.13 近期演进
12
28
 
13
- > 从 task 描述出发,自动规划 → 路由模型 → 压缩图谱上下文(含向量召回)→ 执行/校验/重试,并把经验沉淀回知识图谱。
29
+ 1. **知识图谱可视化(v0.6.12–0.6.13)**
30
+ - 可读标签(文件名、符号名、目录组)、代码层 / 学习层 Tab
31
+ - 暗色面板、目录聚类着色、关系线型、缩放/平移
32
+ - 双击节点或「打开源文件」跳转源码行
33
+ - 布局归一化修复大图谱「只剩角落小点」问题
14
34
 
15
- ### v0.6.5 本轮重点
35
+ 2. **持续静默建图(v0.6.11)**
36
+ - `autoIndexOnSave` 默认开启;保存文件后 debounce 增量索引
37
+ - 旧配置 `maxContextTokens: 400` 自动升级到 1500
16
38
 
17
- 1. **Settings 可观测性**:图谱规模、上次索引、配置覆盖层 diff、面板内路由诊断。
18
- 2. **保存即索引(可选)**:`autoIndexOnSave` 在文件保存后 debounce 增量索引。
19
- 3. **发布流水线**:main 推送自动构建 VSIX 并发布 GitHub Release;`v*` tag 额外触发 npm publish(需 `NPM_TOKEN`)。
20
- 4. **推送前门禁**:Husky + lint-staged 在 `git push` 前运行 ESLint,避免 CI 才发现语法错误。
39
+ 3. **Runtime 模块化与扩展打包(v0.6.10)**
40
+ - `runtime/` 子模块 + `GraphFlowRuntimeModule` 类型校验
41
+ - VS Code 扩展 esbuild 单文件 bundle
21
42
 
22
- ### 工程质量
43
+ 4. **配置与健壮性(v0.6.7–0.6.9)**
44
+ - 全局配置优先(`~/.graphflow.config.json`)
45
+ - 损坏 JSON 容错;postinstall 需显式 `GRAPHFLOW_ENABLE_POSTINSTALL=1`
46
+ - 无工作区也可打开 Settings;CI 可复现 `npm ci`
23
47
 
24
- - 测试:**39 文件** 全绿(`npm run ci` 含 extension build + bundled runtime smoke)。
25
- - 类型:TypeScript 6 strict + exactOptionalPropertyTypes + NodeNext。
26
- - License:Apache-2.0。
48
+ 5. **无 LLM 也能建图(v0.6.6 起)**
49
+ - Settings「建立图谱(无需 LLM)」或 `graph index` 即可生成结构图谱
50
+ - 可选「测试路由并建立图谱」在 LLM 连通后触发语义 enrich
27
51
 
28
- 发布信息:
52
+ ### 发布信息
29
53
 
30
- 1. 最新版本:`v0.6.5`(root + vscode-extension
31
- 2. **GitHub Release**:push 到 `main` 且 CI 通过后自动发布 VSIX(见 [Actions](https://github.com/Roarpeng/GraphFlow/actions))
32
- 3. 变更日志:`CHANGELOG.md`
54
+ - 最新版本:**v0.6.13**(root + vscode-extension);npm:`@roarpeng/graphflow@0.6.13`
55
+ - **GitHub Release**:push 到 `main` 且 CI 通过后自动发布 VSIX(见 [Actions](https://github.com/Roarpeng/GraphFlow/actions))
56
+ - 变更日志:`CHANGELOG.md`
33
57
 
34
58
  ## 环境要求
35
59
 
@@ -37,184 +61,103 @@ GraphFlow 已演进为面向多 agent 协作的工程级编排 + 上下文引擎
37
61
  2. npm >= 10
38
62
  3. Windows / macOS / Linux 均可
39
63
 
40
- ## 5 分钟本地试跑(推荐)
41
-
42
- 在仓库根目录执行:
64
+ ## 5 分钟本地试跑
43
65
 
44
66
  ```bash
45
67
  npm install
46
- npm run lint
47
- npm run build
48
- npm test
49
- ```
50
-
51
- 预期结果:
52
-
53
- 1. `lint` 无错误
54
- 2. `build` 成功
55
- 3. `vitest` 全量通过(当前应为 146 tests / 33 files passed)
56
-
57
- 可选一键 CI 本地校验:
58
-
59
- ```bash
60
68
  npm run ci
61
69
  ```
62
70
 
71
+ 预期:`lint` 无错误、`build` 成功、**177 tests** 通过、扩展 bundle 与 runtime smoke 通过。
72
+
63
73
  ## Agent 工具接入
64
74
 
65
- GraphFlow 已支持两种对外接入方式:
75
+ GraphFlow 支持两种对外接入方式:
66
76
 
67
- 1. CLI 机器输出:所有核心命令支持 `--json`
68
- 2. MCP stdio server:可被 Cursor、Claude Code 等支持 MCP 的 agent 直接调用
77
+ 1. **CLI 机器输出**:核心命令均支持 `--json`
78
+ 2. **MCP stdio server**:Cursor、Claude Code 等可直接调用
69
79
 
70
- 本仓库内直接启动 MCP server
80
+ 本仓库启动 MCP:
71
81
 
72
82
  ```bash
73
83
  npm run start:mcp
74
84
  ```
75
85
 
76
- CLI 结构化输出示例:
86
+ ### MCP 工具一览
77
87
 
78
- ```bash
79
- npm run start -- plan "refactor planner and add tests" --json
80
- ```
88
+ | 工具 | 用途 |
89
+ | --- | --- |
90
+ | `graphflow_preview_context` | 压缩任务相关上下文(优先调用) |
91
+ | `graphflow_plan` | 多步任务分解 |
92
+ | `graphflow_run` | 执行编排循环 |
93
+ | `graphflow_index` / `graphflow_rebuild` | 增量 / 全量建图 |
94
+ | `graphflow_inspect_graph` | 图谱快照与统计 |
95
+ | `graphflow_enrich_graph` | 语义增强 |
96
+ | `graphflow_skill_insights` | 技能学习洞察 |
97
+ | `graphflow_diagnose` | 路由健康诊断 |
98
+ | `graphflow_model_download` | OpenBMB 模型下载 |
81
99
 
82
- CLI 标准帮助与版本:
100
+ CLI 示例:
83
101
 
84
102
  ```bash
85
- npm run start -- --help
86
- npm run start -- --version
103
+ npm run start -- plan "refactor planner and add tests" --json
104
+ npm run start -- context preview "orchestrator" --json
105
+ npm run start -- graph inspect --json
87
106
  ```
88
107
 
89
- 外部 agent 约定文件:
90
-
91
- 1. `AGENTS.md`
92
- 2. `CLAUDE.md`
93
- 3. `.cursor/rules/graphflow.mdc`
94
- 4. `docs/integrations/cursor.mcp.json`
95
- 5. `docs/integrations/claude-code.mcp.json`
96
- 6. `docs/integrations/claude-desktop-config.json`
108
+ 外部 agent 约定文件:`AGENTS.md`、`CLAUDE.md`、`.cursor/rules/graphflow.mdc`、`docs/integrations/*.json`
97
109
 
98
110
  ## 本地功能验证(CLI)
99
111
 
100
- ### 1) 图谱索引
112
+ ### 图谱索引
101
113
 
102
114
  ```bash
103
115
  npm run start -- graph index .
104
116
  ```
105
117
 
106
- 预期输出示例:
107
-
108
- ```text
109
- indexedFiles=52; indexedSymbols=98
110
- ```
118
+ 预期:`indexedFiles=…; indexedSymbols=…`
111
119
 
112
- ### 2) 上下文压缩预览
120
+ ### 上下文压缩预览
113
121
 
114
122
  ```bash
115
123
  npm run start -- context preview "orchestrator"
116
124
  ```
117
125
 
118
- 预期输出示例:
119
-
120
- ```text
121
- summary=6; anchors=6; tokens=98; truncated=false; L1=3; L2=2; L3=1
122
- ```
126
+ 预期:`summary=…; anchors=…; tokens=…`(相对原始上下文通常可节省 **90%+ token**)
123
127
 
124
- ### 3) 执行任务
128
+ ### 执行任务 / 规划
125
129
 
126
130
  ```bash
127
131
  npm run start -- run "update readme and add tests"
128
- ```
129
-
130
- 说明:该命令会根据任务复杂度自动走 simple 或 complex 工作流。
131
-
132
- ### 4) 规划与头脑风暴
133
-
134
- ```bash
135
132
  npm run start -- plan "update readme and add tests and refactor architecture module"
136
133
  ```
137
134
 
138
- 预期输出示例:
139
-
140
- ```text
141
- mode=complex; ideas=...; plan=task-1... | task-2... | task-3...
142
- ```
143
-
144
- ### 5) 动态路由诊断
135
+ ### 路由诊断 / 学习 / 洞察
145
136
 
146
137
  ```bash
147
138
  npm run start -- route diagnose
148
- ```
149
-
150
- 预期输出示例:
151
-
152
- ```text
153
- dynamicRouting=on; health=openai:true,...; planner=openai/...; worker=openai/...
154
- ```
155
-
156
- ### 6) 学习夜跑
157
-
158
- ```bash
159
139
  npm run start -- learn nightly
160
- ```
161
-
162
- 预期输出示例:
163
-
164
- ```text
165
- events=12; passRate=0.833; avgTokens=118.0; canary=allow; dataset=tmp/learning-dataset.jsonl
166
- ```
167
-
168
- ### 7) 图谱快照洞察
169
-
170
- ```bash
171
140
  npm run start -- graph inspect
172
- ```
173
-
174
- 预期输出示例:
175
-
176
- ```text
177
- nodes=120; edges=184; types=File:20,Symbol:54,...; relations=defines:44,imports:20,...
178
- ```
179
-
180
- ### 8) 技能洞察
181
-
182
- ```bash
183
141
  npm run start -- skill insights
184
142
  ```
185
143
 
186
- 预期输出示例:
187
-
188
- ```text
189
- source=graph-store; transport=file; count=8; top=add tests:4/6,refactor planner:3/4
190
- ```
191
-
192
- ## v0.4 新能力使用指南
144
+ ## 进阶能力
193
145
 
194
- ### 1) 切换到 SQLite/FTS5 图谱后端
195
-
196
- 将 `graphflow.config.json` 的 `graphPolicy` 改为:
146
+ ### SQLite / FTS5 后端
197
147
 
198
148
  ```json
199
149
  {
200
150
  "graphPolicy": {
201
- "enableAutoBuild": true,
202
151
  "transport": "sqlite",
203
152
  "graphStorePath": "tmp/graphflow-graph.sqlite",
204
- "maxContextTokens": 1200
153
+ "maxContextTokens": 1500
205
154
  }
206
155
  }
207
156
  ```
208
157
 
209
- 特点:
210
-
211
- 1. WAL 模式 + FTS5 全文索引,关键词查询 O(log n)
212
- 2. 边表三索引(from / to / relation),`getNeighbors` O(度)
213
- 3. 与 `file` / `memory` transport 接口完全一致,零业务代码改动
214
-
215
- ### 2) 启用向量召回 + RRF 双路融合
158
+ WAL + FTS5 全文索引;与 `file` / `memory` 接口一致。
216
159
 
217
- 代码侧(`buildLayeredContextPackage` 调用方)打开:
160
+ ### 向量召回 + RRF 融合
218
161
 
219
162
  ```ts
220
163
  import { createHashEmbeddingProvider } from "graphflow/dist/learning/embeddings";
@@ -223,212 +166,147 @@ const pkg = await buildLayeredContextPackage(client, query, {
223
166
  enableVectorRecall: true,
224
167
  embeddingProvider: createHashEmbeddingProvider(),
225
168
  vectorTopK: 8,
226
- vectorMinSimilarity: 0.2,
227
- });
228
- ```
229
-
230
- 切换到 OpenAI 真向量:
231
-
232
- ```ts
233
- import { createOpenAiEmbeddingProvider } from "graphflow/dist/learning/embeddings";
234
-
235
- const provider = createOpenAiEmbeddingProvider({
236
- apiKey: process.env.OPENAI_API_KEY!,
237
- model: "text-embedding-3-small",
238
169
  });
239
170
  ```
240
171
 
241
- 关键词命中 + 向量相似度通过 RRF(k=60)融合排序,对自然语言任务描述召回更稳。
242
-
243
- ### 3) Episodic Memory + Reflection
244
-
245
- 在 `orchestrate(...)` 选项里打开:
172
+ ### Episodic Memory + Reflection
246
173
 
247
174
  ```ts
248
175
  const run = await orchestrate(
249
176
  { task: "refactor planner module and add tests" },
250
- {
251
- graphClient,
252
- enableEpisodicMemory: true,
253
- enableGraphContextInPrompt: true,
254
- }
177
+ { graphClient, enableEpisodicMemory: true, enableGraphContextInPrompt: true }
255
178
  );
256
-
257
- console.log(run.episodeId); // "episode:xxx"
258
- console.log(run.similarEpisodes); // 历史相似 task 的 keyDecisions
259
179
  ```
260
180
 
261
- 行为:
181
+ 每次 task 写入 Episode;相似 task 注入历史决策;`learn nightly` 合成 Lesson 节点。
182
+
183
+ ### 跨语言 AST 索引
184
+
185
+ | 语言 | 扩展 |
186
+ | --- | --- |
187
+ | TypeScript / JavaScript | `.ts .tsx .js .jsx` |
188
+ | Python | `.py` |
189
+ | Rust | `.rs` |
190
+ | Go | `.go` |
191
+ | C / C++ | `.c .h .cc .cpp .cxx .hpp .hxx` |
262
192
 
263
- 1. 每次 task 结束写入一个 `Episode` 节点(含 plan / outcome / keyDecisions / attempts)
264
- 2. 复现相似 task 时,Top-K 历史决策自动注入 PromptContext.extraInstructions
265
- 3. `learn nightly` 调用 reflector:将多次成功 episode 聚类合成 `Lesson` 节点 + `improves` 边,可被技能提示复用
193
+ 通过 `graphPolicy.includeExtensions` 限制扫描范围。
266
194
 
267
- ### 4) 跨语言 AST 索引
195
+ ## 配置文件
268
196
 
269
- 无需额外配置。`graph index` 会自动识别并解析:
197
+ 默认:`graphflow.config.json`(也可使用 `~/.graphflow.config.json` 全局配置)。
270
198
 
271
199
  ```bash
272
- npm run start -- graph index .
200
+ cp graphflow.config.example.json graphflow.config.json
273
201
  ```
274
202
 
275
- 支持的语言/扩展:
203
+ 关键项:
276
204
 
277
- | 语言 | 扩展 | 解析方式 |
278
- | --- | --- | --- |
279
- | TypeScript / JavaScript | `.ts .tsx .js .jsx` | TS Compiler API |
280
- | Python | `.py` | 语言专用 indexer |
281
- | Rust | `.rs` | 语言专用 indexer |
282
- | Go | `.go` | 语言专用 indexer |
283
- | C / C++ | `.c .h .cc .cpp .cxx .hpp .hxx` | 语言专用 indexer |
205
+ | 配置 | 说明 |
206
+ | --- | --- |
207
+ | `graphPolicy.transport` | `file` / `memory` / `sqlite` / `mcp-http` |
208
+ | `graphPolicy.graphStorePath` | JSON 或 `.sqlite` 路径 |
209
+ | `graphPolicy.maxContextTokens` | 压缩上下文预算(默认 **1500**) |
210
+ | `graphPolicy.autoIndexOnSave` | 保存后增量索引(默认 **true**) |
211
+ | `graphPolicy.autoIndexOnPreview` / `autoIndexOnRun` | preview / run 前自动索引 |
212
+ | `graphPolicy.enableNearLosslessMode` | 近无损上下文打包 |
213
+ | `graphPolicy.layerQuota` | L1/L2/L3 锚点配额 |
214
+ | `routingPolicy.enableDynamicRouting` | provider 健康路由 |
215
+ | `skillPolicy.enableSkillFlywheel` | 技能飞轮 |
284
216
 
285
- 统一输出 `Symbol` / `Module` 节点 + `defines` / `imports` / `references` 边,下游图谱检索、prompt 注入、episode 召回完全透明复用。
217
+ ## VS Code 扩展
286
218
 
287
- 如需限制扫描语言,调整 `graphPolicy.includeExtensions` 即可。
219
+ ### 命令面板
288
220
 
289
- ## 配置文件
221
+ | 命令 | 说明 |
222
+ | --- | --- |
223
+ | GraphFlow: Show Settings | 配置、建图、路由测试 |
224
+ | GraphFlow: Show Graph | **知识图谱可视化**(分层、搜索、跳转源码) |
225
+ | GraphFlow: Preview Context | 上下文压缩与 Token Budget |
226
+ | GraphFlow: Plan & Brainstorm | 任务规划 |
227
+ | GraphFlow: Run Task | 执行任务 |
228
+ | GraphFlow: Skill Insights | 技能学习面板 |
229
+ | GraphFlow: Enrich Graph | 语义增强 |
230
+ | GraphFlow: Install MCP | 注入 MCP 配置 |
290
231
 
291
- 默认使用根目录 `graphflow.config.json`。
232
+ Chat Agent(`@graphflow`):`/run`、`/plan`、`/graph`、`/skills`、`/diagnose`、`/learn`、`/history`
292
233
 
293
- 首次使用建议从模板复制:
234
+ ### Settings 推荐流程
294
235
 
295
- Windows CMD:
236
+ 1. 填写 Graph Store Path → **Save Settings**
237
+ 2. **建立图谱(无需 LLM)** → 生成结构图谱
238
+ 3. (可选)配置 Provider → **测试路由并建立图谱** → 语义 enrich
296
239
 
297
- ```bash
298
- copy graphflow.config.example.json graphflow.config.json
299
- ```
240
+ 其它建图入口:`graph index` CLI、MCP `graphflow_index`、`autoIndexOnPreview` / `autoIndexOnRun` / `autoIndexOnSave`
300
241
 
301
- PowerShell / macOS / Linux:
242
+ ### 开发模式
302
243
 
303
244
  ```bash
304
- cp graphflow.config.example.json graphflow.config.json
245
+ cd vscode-extension
246
+ npm install
247
+ npm run build
305
248
  ```
306
249
 
307
- 关键配置:
308
-
309
- 1. `graphPolicy.transport`
310
- - `file`:本地持久化图谱(JSON,默认,适合正式使用测试)
311
- - `memory`:本地内存图谱(适合轻量调试)
312
- - `sqlite`:SQLite + FTS5 后端(v0.4 新增,适合大型工作区与跨会话持久化)
313
- - `mcp-http`:连接 Graphify MCP HTTP 服务
314
- 2. `graphPolicy.graphStorePath`
315
- - `file` transport 的 JSON 路径,或 `sqlite` transport 的 `.sqlite` 路径
316
- 2. `graphPolicy.enableNearLosslessMode`
317
- - 开启后启用近无损上下文打包
318
- 3. `graphPolicy.autoIndexOnPreview`
319
- - `context preview` 前自动索引工作区
320
- 4. `graphPolicy.autoIndexOnRun`
321
- - `run` 前自动索引工作区
322
- 5. `graphPolicy.layerQuota`
323
- - 控制 L1/L2/L3 锚点配额
324
- 6. `learningPolicy.exportPath`
325
- - 学习样本导出路径
326
- 7. `learningPolicy.eventsPath`
327
- - 运行反馈事件日志路径(用于 nightly 学习)
328
- 8. `learningPolicy.summaryPath`
329
- - 学习汇总指标路径
330
- 9. `routingPolicy.enableDynamicRouting`
331
- - 启用按 provider 健康状态的自动路由
332
- 10. `routingPolicy.requireApiKeyForHealthy`
333
- - 若开启,缺少 apiKey 的 provider 会被标记为不健康并触发 fallback
334
- 11. `routingPolicy.providerPriority`
335
- - 设置 fallback 优先级,例如 `["anthropic", "openai", "bailian", "doubao"]`
336
- 12. `skillPolicy.enableSkillFlywheel`
337
- - 开启技能飞轮(技能抽取、技能连接、技能提示复用)
338
- 13. `skillPolicy.maxSkillHints`
339
- - 每次规划注入的技能提示上限
340
-
341
- ## 本地测试验收清单
342
-
343
- 你可以按下面清单判断“本地可用”:
344
-
345
- 1. 质量门禁通过:`npm run lint && npm run build && npm test`
346
- 2. `graph index` 返回 `indexedFiles > 0`
347
- 3. `context preview` 返回 `summary > 0` 且 `anchors > 0`
348
- 4. `run "..."` 能返回正常执行输出
349
- 5. `plan "..."` 返回 `mode=...; ideas=...; plan=...`
350
-
351
- ## 正式使用测试
352
-
353
- 正式使用测试脚本(含通过标准)见:
354
-
355
- 1. `docs/testing/2026-05-28-formal-usage-test-plan.md`
356
- 2. `docs/testing/2026-05-28-formal-usage-test-report.md`
357
-
358
- ## VS Code 扩展本地试用
359
-
360
- ### 方式 A:安装已打包 VSIX
250
+ 在 VS Code 中 `F5` 启动 Extension Development Host。
251
+
252
+ ### 安装 VSIX
253
+
254
+ [GitHub Releases](https://github.com/Roarpeng/GraphFlow/releases) 下载最新 VSIX,或本地:
361
255
 
362
256
  ```bash
363
- code --install-extension artifacts/graphflow-vscode-0.5.0.vsix
257
+ cd vscode-extension && npm run package
258
+ code --install-extension artifacts/graphflow-vscode-*.vsix
364
259
  ```
365
260
 
366
- 安装后可在命令面板执行:
261
+ ## 本地验收清单
367
262
 
368
- 1. `GraphFlow: Run Task`
369
- 2. `GraphFlow: Show Runs`
370
- 3. `GraphFlow: Plan & Brainstorm`
371
- 4. `GraphFlow: Graph Snapshot`
372
- 5. `GraphFlow: Skill Insights`
263
+ 1. `npm run ci` 全绿
264
+ 2. `graph index` `indexedFiles > 0`
265
+ 3. `context preview` `summary > 0` 且 `anchors > 0`
266
+ 4. VS Code **Show Graph** → 画布正常显示节点聚类(非角落小点)
267
+ 5. `plan` / `run` 返回正常输出
373
268
 
374
- 并可在 Agent 对话框通过 `@graphflow` 使用:
269
+ 正式测试文档:`docs/testing/2026-05-28-formal-usage-test-plan.md`
375
270
 
376
- 1. `/run <task>`
377
- 2. `/plan <task>`
378
- 3. `/history`
379
- 4. `/diagnose`
380
- 5. `/learn`
381
- 6. `/graph`
382
- 7. `/skills`
271
+ ## 常见问题
383
272
 
384
- 分发给同事:
273
+ **`context preview` 返回 0 anchors**
385
274
 
386
- 1. 直接发送 `artifacts/graphflow-vscode-0.5.0.vsix`
387
- 2. 同事执行 `code --install-extension artifacts/graphflow-vscode-0.5.0.vsix`
388
- 3. 不需要克隆 GraphFlow 仓库即可使用插件核心能力
275
+ - 先执行 `graph index` 或 Settings 建图
276
+ - 检查查询词是否命中代码符号(如 `orchestrator`、`planner`)
389
277
 
390
- ### 方式 B:开发模式运行扩展
278
+ **知识图谱面板空白或只有小点**
391
279
 
392
- ```bash
393
- cd vscode-extension
394
- npm install
395
- npm run build
396
- ```
280
+ - 升级到 **v0.6.13+** 并重载窗口
281
+ - 点击画布工具栏 **「适应」**
397
282
 
398
- 然后在 VS Code 中按 `F5` 启动 Extension Development Host 进行联调。
399
-
400
- ## 常见问题
283
+ **API Key 未配置**
401
284
 
402
- 1. `context preview` 返回 0 anchors
403
- - 先执行 `npm run start -- graph index .`
404
- - 检查查询词是否命中现有代码符号(例如 `orchestrator`, `runtime`, `planner`)
285
+ - 在 `graphflow.config.json` 配置 provider `apiKey`,支持 `${ENV_VAR}` 占位
405
286
 
406
- 2. 扩展打包产物不存在
407
- - 确认目录 `artifacts/` 已存在
408
- - 在 `vscode-extension` 目录执行 `npm run package`
287
+ **无 LLM 时能用吗**
409
288
 
410
- 3. API Key 未配置导致模型调用失败
411
- - 在 `graphflow.config.json` 中配置对应 provider 的 `apiKey`
412
- - `graphflow.config.json` 与示例模板支持 `${ENV_VAR}` 环境变量占位写法
289
+ - 可以:结构索引、图谱可视化、context preview(基于结构图谱)、MCP `graphflow_inspect_graph` 均不强制 LLM
413
290
 
414
- ## 项目结构(简版)
291
+ ## 项目结构
415
292
 
416
293
  ```text
417
294
  GraphFlow/
418
295
  ├── src/
419
- │ ├── core/
420
- │ ├── graph/
421
- │ ├── routing/
422
- │ ├── learning/
423
- │ └── surfaces/cli/
424
- ├── tests/
425
- ├── docs/releases/
426
- ├── vscode-extension/
427
- └── artifacts/
296
+ │ ├── core/ # 编排核心类型
297
+ │ ├── graph/ # 索引、上下文切片、snapshot-view
298
+ │ ├── routing/ # 模型路由与健康探测
299
+ │ ├── learning/ # 向量、episode、skill
300
+ │ └── surfaces/
301
+ ├── cli/ # CLI + runtime 子模块
302
+ │ └── mcp/ # MCP server
303
+ ├── tests/ # 41 文件 / 177 tests
304
+ ├── vscode-extension/ # VS Code 面板与命令
305
+ ├── docs/
306
+ └── CHANGELOG.md
428
307
  ```
429
308
 
430
309
  ## 版本与变更
431
310
 
432
- 1. 变更日志:`CHANGELOG.md`
433
- 2. 发布文档:`docs/releases/v0.3.0.md`
434
- 3. License:`LICENSE`
311
+ - 变更日志:`CHANGELOG.md`
312
+ - License:Apache-2.0
@@ -10,6 +10,12 @@ export declare const SCAFFOLD_TIERS: {
10
10
  };
11
11
  };
12
12
  export declare const DEFAULT_EMBEDDING_MODEL = "Xenova/bge-base-zh-v1.5";
13
+ export declare const DEFAULT_MAX_CONTEXT_TOKENS = 1500;
14
+ /** Unified output directory for all knowledge-graph artifacts. */
15
+ export declare const DEFAULT_OUTPUT_DIR = "graphflow-out";
16
+ /** Pre-v0.6.9 default; upgraded automatically when still present in saved configs. */
17
+ export declare const LEGACY_MAX_CONTEXT_TOKENS = 400;
18
+ export declare function resolveMaxContextTokens(value?: number): number;
13
19
  export declare function getDefaultConfig(): GraphFlowConfig;
14
20
  /** Minimal overlay written by `graphflow init`; inherits providers/tiers from root config. */
15
21
  export declare function getDefaultOverlayConfig(): GraphFlowConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGhD,eAAO,MAAM,cAAc;;;;;;;;;CAGjB,CAAC;AAEX,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AAEjE,wBAAgB,gBAAgB,IAAI,eAAe,CA4DlD;AAED,8FAA8F;AAC9F,wBAAgB,uBAAuB,IAAI,eAAe,CAUzD"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGhD,eAAO,MAAM,cAAc;;;;;;;;;CAGjB,CAAC;AAEX,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AACjE,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAC/C,kEAAkE;AAClE,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAClD,sFAAsF;AACtF,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED,wBAAgB,gBAAgB,IAAI,eAAe,CA6DlD;AAED,8FAA8F;AAC9F,wBAAgB,uBAAuB,IAAI,eAAe,CAUzD"}