@roarpeng/graphflow 0.6.15 → 1.0.4

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 (181) hide show
  1. package/AGENTS.md +1 -1
  2. package/CHANGELOG.md +54 -1
  3. package/README.md +149 -44
  4. package/dist/agents/insight.d.ts +83 -0
  5. package/dist/agents/insight.d.ts.map +1 -0
  6. package/dist/agents/insight.js +381 -0
  7. package/dist/agents/insight.js.map +1 -0
  8. package/dist/agents/validator.d.ts.map +1 -1
  9. package/dist/agents/validator.js +19 -8
  10. package/dist/agents/validator.js.map +1 -1
  11. package/dist/agents/worker.d.ts.map +1 -1
  12. package/dist/agents/worker.js +3 -2
  13. package/dist/agents/worker.js.map +1 -1
  14. package/dist/config/defaults.js +1 -1
  15. package/dist/config/defaults.js.map +1 -1
  16. package/dist/config/discover-workspace.d.ts +16 -0
  17. package/dist/config/discover-workspace.d.ts.map +1 -0
  18. package/dist/config/discover-workspace.js +112 -0
  19. package/dist/config/discover-workspace.js.map +1 -0
  20. package/dist/config/resolve.d.ts.map +1 -1
  21. package/dist/config/resolve.js +22 -8
  22. package/dist/config/resolve.js.map +1 -1
  23. package/dist/config/scaffold.d.ts.map +1 -1
  24. package/dist/config/scaffold.js +2 -1
  25. package/dist/config/scaffold.js.map +1 -1
  26. package/dist/config/schema.d.ts +31 -0
  27. package/dist/config/schema.d.ts.map +1 -1
  28. package/dist/config/workspace-root.d.ts +24 -0
  29. package/dist/config/workspace-root.d.ts.map +1 -0
  30. package/dist/config/workspace-root.js +59 -0
  31. package/dist/config/workspace-root.js.map +1 -0
  32. package/dist/core/orchestrator.d.ts +7 -0
  33. package/dist/core/orchestrator.d.ts.map +1 -1
  34. package/dist/core/orchestrator.js +54 -3
  35. package/dist/core/orchestrator.js.map +1 -1
  36. package/dist/core/state-machine.d.ts +1 -0
  37. package/dist/core/state-machine.d.ts.map +1 -1
  38. package/dist/core/state-machine.js +20 -0
  39. package/dist/core/state-machine.js.map +1 -1
  40. package/dist/core/types.d.ts +9 -3
  41. package/dist/core/types.d.ts.map +1 -1
  42. package/dist/graph/adaptive-budget.d.ts +18 -0
  43. package/dist/graph/adaptive-budget.d.ts.map +1 -0
  44. package/dist/graph/adaptive-budget.js +50 -0
  45. package/dist/graph/adaptive-budget.js.map +1 -0
  46. package/dist/graph/artifact-manager.d.ts +72 -0
  47. package/dist/graph/artifact-manager.d.ts.map +1 -0
  48. package/dist/graph/artifact-manager.js +215 -0
  49. package/dist/graph/artifact-manager.js.map +1 -0
  50. package/dist/graph/compression-model.d.ts +52 -0
  51. package/dist/graph/compression-model.d.ts.map +1 -0
  52. package/dist/graph/compression-model.js +125 -0
  53. package/dist/graph/compression-model.js.map +1 -0
  54. package/dist/graph/context-slicer.d.ts +32 -0
  55. package/dist/graph/context-slicer.d.ts.map +1 -1
  56. package/dist/graph/context-slicer.js +159 -1
  57. package/dist/graph/context-slicer.js.map +1 -1
  58. package/dist/graph/file-indexer.d.ts +31 -0
  59. package/dist/graph/file-indexer.d.ts.map +1 -1
  60. package/dist/graph/file-indexer.js +332 -3
  61. package/dist/graph/file-indexer.js.map +1 -1
  62. package/dist/graph/graph-compression.d.ts +44 -0
  63. package/dist/graph/graph-compression.d.ts.map +1 -0
  64. package/dist/graph/graph-compression.js +155 -0
  65. package/dist/graph/graph-compression.js.map +1 -0
  66. package/dist/graph/graph-utils.d.ts +4 -1
  67. package/dist/graph/graph-utils.d.ts.map +1 -1
  68. package/dist/graph/graph-utils.js +62 -0
  69. package/dist/graph/graph-utils.js.map +1 -1
  70. package/dist/graph/graphify-file-client.d.ts.map +1 -1
  71. package/dist/graph/graphify-file-client.js +30 -8
  72. package/dist/graph/graphify-file-client.js.map +1 -1
  73. package/dist/graph/language-indexers/c-cpp.d.ts +9 -1
  74. package/dist/graph/language-indexers/c-cpp.d.ts.map +1 -1
  75. package/dist/graph/language-indexers/c-cpp.js +328 -103
  76. package/dist/graph/language-indexers/c-cpp.js.map +1 -1
  77. package/dist/graph/language-indexers/index.d.ts +20 -0
  78. package/dist/graph/language-indexers/index.d.ts.map +1 -1
  79. package/dist/graph/language-indexers/index.js +4 -0
  80. package/dist/graph/language-indexers/index.js.map +1 -1
  81. package/dist/graph/language-indexers/java.d.ts +12 -0
  82. package/dist/graph/language-indexers/java.d.ts.map +1 -0
  83. package/dist/graph/language-indexers/java.js +273 -0
  84. package/dist/graph/language-indexers/java.js.map +1 -0
  85. package/dist/graph/language-indexers/python.d.ts.map +1 -1
  86. package/dist/graph/language-indexers/python.js +47 -4
  87. package/dist/graph/language-indexers/python.js.map +1 -1
  88. package/dist/graph/language-indexers/ruby.d.ts +14 -0
  89. package/dist/graph/language-indexers/ruby.d.ts.map +1 -0
  90. package/dist/graph/language-indexers/ruby.js +245 -0
  91. package/dist/graph/language-indexers/ruby.js.map +1 -0
  92. package/dist/graph/language-indexers/rust.d.ts +10 -1
  93. package/dist/graph/language-indexers/rust.d.ts.map +1 -1
  94. package/dist/graph/language-indexers/rust.js +254 -80
  95. package/dist/graph/language-indexers/rust.js.map +1 -1
  96. package/dist/graph/language-indexers/tree-sitter-loader.d.ts +8 -1
  97. package/dist/graph/language-indexers/tree-sitter-loader.d.ts.map +1 -1
  98. package/dist/graph/language-indexers/tree-sitter-loader.js +64 -13
  99. package/dist/graph/language-indexers/tree-sitter-loader.js.map +1 -1
  100. package/dist/graph/language-indexers/typescript.d.ts.map +1 -1
  101. package/dist/graph/language-indexers/typescript.js +72 -8
  102. package/dist/graph/language-indexers/typescript.js.map +1 -1
  103. package/dist/graph/metrics.d.ts +33 -0
  104. package/dist/graph/metrics.d.ts.map +1 -0
  105. package/dist/graph/metrics.js +117 -0
  106. package/dist/graph/metrics.js.map +1 -0
  107. package/dist/graph/repo-map.d.ts +25 -0
  108. package/dist/graph/repo-map.d.ts.map +1 -0
  109. package/dist/graph/repo-map.js +80 -0
  110. package/dist/graph/repo-map.js.map +1 -0
  111. package/dist/graph/semantic-compression.d.ts +65 -0
  112. package/dist/graph/semantic-compression.d.ts.map +1 -0
  113. package/dist/graph/semantic-compression.js +173 -0
  114. package/dist/graph/semantic-compression.js.map +1 -0
  115. package/dist/graph/token-savings.d.ts +52 -0
  116. package/dist/graph/token-savings.d.ts.map +1 -0
  117. package/dist/graph/token-savings.js +113 -0
  118. package/dist/graph/token-savings.js.map +1 -0
  119. package/dist/index.d.ts +2 -1
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +7 -1
  122. package/dist/index.js.map +1 -1
  123. package/dist/integrations/agent-mcp-installer.d.ts +13 -0
  124. package/dist/integrations/agent-mcp-installer.d.ts.map +1 -1
  125. package/dist/integrations/agent-mcp-installer.js +287 -29
  126. package/dist/integrations/agent-mcp-installer.js.map +1 -1
  127. package/dist/learning/episodic-memory.d.ts +8 -1
  128. package/dist/learning/episodic-memory.d.ts.map +1 -1
  129. package/dist/learning/episodic-memory.js +33 -0
  130. package/dist/learning/episodic-memory.js.map +1 -1
  131. package/dist/learning/hnsw-index.d.ts +46 -0
  132. package/dist/learning/hnsw-index.d.ts.map +1 -0
  133. package/dist/learning/hnsw-index.js +138 -0
  134. package/dist/learning/hnsw-index.js.map +1 -0
  135. package/dist/routing/model-router.d.ts +7 -0
  136. package/dist/routing/model-router.d.ts.map +1 -1
  137. package/dist/routing/model-router.js +36 -0
  138. package/dist/routing/model-router.js.map +1 -1
  139. package/dist/skills/index.d.ts +157 -0
  140. package/dist/skills/index.d.ts.map +1 -0
  141. package/dist/skills/index.js +157 -0
  142. package/dist/skills/index.js.map +1 -0
  143. package/dist/surfaces/cli/index.js +119 -0
  144. package/dist/surfaces/cli/index.js.map +1 -1
  145. package/dist/surfaces/cli/output.d.ts.map +1 -1
  146. package/dist/surfaces/cli/output.js +7 -0
  147. package/dist/surfaces/cli/output.js.map +1 -1
  148. package/dist/surfaces/cli/runtime/graph.d.ts +77 -3
  149. package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -1
  150. package/dist/surfaces/cli/runtime/graph.js +170 -10
  151. package/dist/surfaces/cli/runtime/graph.js.map +1 -1
  152. package/dist/surfaces/cli/runtime/panel.d.ts.map +1 -1
  153. package/dist/surfaces/cli/runtime/panel.js +2 -0
  154. package/dist/surfaces/cli/runtime/panel.js.map +1 -1
  155. package/dist/surfaces/cli/runtime/routing.d.ts +24 -1
  156. package/dist/surfaces/cli/runtime/routing.d.ts.map +1 -1
  157. package/dist/surfaces/cli/runtime/routing.js +72 -0
  158. package/dist/surfaces/cli/runtime/routing.js.map +1 -1
  159. package/dist/surfaces/cli/runtime/settings.d.ts.map +1 -1
  160. package/dist/surfaces/cli/runtime/settings.js +4 -1
  161. package/dist/surfaces/cli/runtime/settings.js.map +1 -1
  162. package/dist/surfaces/cli/runtime/types.d.ts +36 -0
  163. package/dist/surfaces/cli/runtime/types.d.ts.map +1 -1
  164. package/dist/surfaces/cli/runtime.d.ts +2 -2
  165. package/dist/surfaces/cli/runtime.d.ts.map +1 -1
  166. package/dist/surfaces/cli/runtime.js +11 -1
  167. package/dist/surfaces/cli/runtime.js.map +1 -1
  168. package/dist/surfaces/mcp/server.d.ts.map +1 -1
  169. package/dist/surfaces/mcp/server.js +145 -4
  170. package/dist/surfaces/mcp/server.js.map +1 -1
  171. package/dist/utils/logger.js +1 -1
  172. package/dist/utils/logger.js.map +1 -1
  173. package/package.json +6 -2
  174. package/scripts/safe-postinstall.cjs +167 -12
  175. package/src/surfaces/trae-skill/graphflow/SKILL.md +535 -0
  176. package/wasm/tree-sitter-c.wasm +0 -0
  177. package/wasm/tree-sitter-go.wasm +0 -0
  178. package/wasm/tree-sitter-java.wasm +0 -0
  179. package/wasm/tree-sitter-python.wasm +0 -0
  180. package/wasm/tree-sitter-ruby.wasm +0 -0
  181. package/wasm/tree-sitter-rust.wasm +0 -0
package/AGENTS.md CHANGED
@@ -40,7 +40,7 @@ From this repository:
40
40
 
41
41
  - Use `graphflow_plan` before multi-step edits.
42
42
  - Use `graphflow_preview_context` before large refactors or codebase-wide questions.
43
- - Use `graphflow_run` when you want GraphFlow to execute its own orchestration loop.
43
+ - Use `graphflow_run` when you want GraphFlow to plan and package a task with compressed context, returning a structured execution descriptor (executionDescriptor) for you to execute. GraphFlow delegates execution to external coding agents by default (bridge mode).
44
44
  - Use `graphflow_index` after workspace changes if graph freshness matters.
45
45
  - Use `graphflow_inspect_graph` and `graphflow_skill_insights` for observability.
46
46
  - Use `graphflow_diagnose` when model/provider routing looks wrong.
package/CHANGELOG.md CHANGED
@@ -4,7 +4,60 @@ All notable changes to this project are documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
- ## [0.6.15] - 2026-06-16
7
+ ## [1.0.3] - 2026-06-24
8
+
9
+ ### Fixed
10
+
11
+ - **CI**:`m17` 测试不再硬编码 `/usr/bin/node`,兼容 GitHub Actions hosted Node 路径。
12
+ - **图谱存储**:`graphify-file-client` 原子写入(temp + rename);损坏 JSON 时优雅降级为空 store 并提示 rebuild。
13
+ - **上下文检索**:`rankNodesForContextQuery` 降低 `.cursor/mcp.json`、`docs/integrations` 等配置噪声,优先 `src/` 与 Symbol 节点。
14
+ - **MCP metrics**:`graphflow_metrics` 支持 `rootDir` 并绑定工作区。
15
+
16
+ ## [1.0.2] - 2026-06-24
17
+
18
+ ### Fixed
19
+
20
+ - **MCP ENOENT(fnm 临时路径)**:安装 MCP 时不再写入 fnm multishell 临时 `node` 绝对路径;优先使用 IDE 自带 Electron(`ELECTRON_RUN_AS_NODE`),否则回退稳定 `node`。
21
+ - **Trae CN 支持**:安装器识别 `~/.trae-cn` 并写入 `~/.config/Trae CN/User/mcp.json`。
22
+
23
+ ## [1.0.1] - 2026-06-24
24
+
25
+ ### Fixed
26
+
27
+ - **多项目工作区隔离**:MCP / 扩展 / npm 包不再把图谱绑定到 vendor 目录或全局配置里的陈旧 `workspaceRoot`。
28
+ - **自动发现工作区**:新增 `discover-workspace`,从 cwd 向上查找项目根;仅在 runtime 目录(vendor、extensions)时回退到 IDE 环境变量。
29
+ - **MCP launcher**:子进程 `cwd` 与 `GRAPHFLOW_WORKSPACE_ROOT` 指向用户打开的项目,不再固定在扩展 vendor。
30
+ - **MCP 安装器**:默认写入 `GRAPHFLOW_WORKSPACE_ROOT: "${workspaceFolder}"`,merge 已有 env,扩展有工作区时同时写用户级与项目级配置。
31
+ - **MCP 工具**:`preview_context`、`inspect_graph`、`skill_insights`、`stats` 支持可选 `rootDir` 覆盖。
32
+
33
+ ## [1.0.0] - 2026-06-19
34
+
35
+ 首个正式版本。在 0.6.x 基础上完成「诚实执行语义」收敛与「上下文压缩」体系,所有新增能力均端到端接线到 CLI / MCP / orchestrator。
36
+
37
+ ### Added
38
+
39
+ - **混合压缩模型策略(compressor role)**:新增 `compressor` 角色,默认复用 economy tier(`backend: "inherit"`)——配置了外部 provider(OpenAI/Anthropic/百炼)就用其 economy 模型,纯离线则回退内嵌 minicpm。零额外配置。
40
+ - **内嵌模型首次自动下载**:无外部 LLM 时,`resolveCompressionModel` 复用既有断点续传下载器,首次按需拉取 minicpm GGUF 到 `~/.graphflow/models/`(类似 Playwright 浏览器下载)。
41
+ - **图结构压缩(零成本,默认开启)**:`graph-compression.ts` 提供边权重加权连通子图(`extractConnectedSubgraph`)、加权 PageRank 中心性(`computePageRank`)、检索序与中心性融合重排(`blendWithCentrality`)。preview / orchestrator 默认启用。
42
+ - **语义压缩(opt-in)**:`semantic-compression.ts` 通过 minicpm/economy LLM 对相似节点聚类合并(`clusterSimilarNodes` + `summarizeCluster`)、长节点改写(`densifyNodeContent`),由 `graphPolicy.compression.enabled` 开启。
43
+ - **RepoMap 概览模式(opt-in)**:`repo-map.ts` 在 token 预算紧张时返回模块级地图(每模块一行 exports 摘要),由 `compression.enableRepoMapFallback` 开启。
44
+ - **自适应 Token 预算(opt-in)**:`adaptive-budget.ts` 的 `estimateContextBudget` 按任务复杂度(refactor/多文件/架构/局部修复/加测试)动态调整预算,由 `compression.enableAdaptiveBudget` 开启。
45
+ - **HNSW 向量索引(可选依赖)**:`hnsw-index.ts` 在候选集 ≥200 节点时使用 hnswlib-node ANN 加速(10~100x),未安装时优雅降级线性扫描。`hnswlib-node` 列为 optionalDependency。
46
+ - **`buildEnhancedContextPackage`**:统一六步压缩 pipeline(RepoMap fallback → 关键词+向量召回 → 图压缩 → 语义压缩 → 分层配额 → 边扩展),preview 与 orchestrator 共用。
47
+ - **压缩诊断**:`route diagnose` 输出新增 `compression=<backend>:<provider>/<model>` 行,可查当前压缩模型来源。
48
+ - 测试 m43(bridge 模式)、m44(增强压缩)、m45(真机 benchmark)。
49
+
50
+ ### Changed
51
+
52
+ - **执行语义诚实化(bridge 模式)**:`graphflow_run` 默认进入 bridge 模式——规划 + 压缩上下文后输出 `executionDescriptor` 移交外部 coding agent 执行,状态为 `HUMAN_REVIEW_REQUIRED` 并标注 `[DELEGATED]`,不再伪造 `COMPLETED`。
53
+ - **校验启发式标注**:规则校验结果统一标注 `[heuristic]` 与 `heuristic_validation` riskTag;检测并拒绝 provider 占位符回显(`[openai:model] ...`)。
54
+ - `graphPolicy.compression` 配置项扩展:`enableGraphCompression` / `enableRepoMapFallback` / `enableAdaptiveBudget` / `enableHnsw`。
55
+
56
+ ### Fixed
57
+
58
+ - worker 兜底分支不再返回 `"Simulated change..."` 伪造输出,无可用执行模式时抛出明确错误。
59
+ - README 版本号、测试数与失效文档引用同步至 1.0。
60
+
8
61
 
9
62
  ### Added
10
63
 
package/README.md CHANGED
@@ -4,54 +4,70 @@ A Context-Aware Multi-Agent Orchestration Engine.
4
4
 
5
5
  GraphFlow 是一个基于 TypeScript/Node.js 的多智能体编排引擎,将 **Graphify 式知识图谱** 与 **Superpowers 式任务编排** 整合为可本地运行的上下文层:自动建图、压缩检索、规划执行、经验沉淀,并通过 CLI、MCP 与 VS Code 扩展对外暴露。
6
6
 
7
- ## 当前能力总览(v0.6.13)
7
+ ## 当前能力总览(v1.0.0+)
8
8
 
9
9
  | 能力域 | 说明 |
10
10
  | --- | --- |
11
- | **任务编排** | 按任务复杂度分流 simple / complex;DAG 并行执行、校验、重试、集成轮 |
11
+ | **任务规划与移交** | 按任务复杂度分流 simple / complex;DAG 规划;`graphflow_plan_insight` 六顶思考帽 + 5-Why 深度分析;默认 **bridge 模式**输出结构化任务描述符交给外部 coding agent 执行 |
12
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`) |
13
+ | **知识图谱** | 工作区 AST 索引(TS/JS/Python/Rust/Go/C/C++/Java/Ruby);File / Module / Symbol 节点 + 依赖/引用/定义边;图谱 artifact 导入/导出 |
14
+ | **上下文压缩** | L1/L2/L3 分层锚点;近无损打包;图结构压缩(边权重+PageRank,零成本默认开启);可选语义压缩(minicpm/economy LLM 聚类合并);向量召回 + RRF + HNSW;RepoMap 概览;自适应预算 |
15
+ | **持续建图** | 默认 `autoIndexOnSave`;preview / run 前按需增量索引(`hasPendingGraphIndexWork`);MCP `graphflow_index_file` 单文件增量 |
16
16
  | **语义增强** | 可选 post-index LLM 语义 enrich;OpenBMB 本地 embedded 模式 |
17
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 |
18
+ | **可观测性** | `graphflow_stats` 累计 token 节省;`graphflow_metrics` Prometheus 指标;VS Code 知识图谱 Snapshot |
19
+ | **Agent 接入** | CLI `--json`;MCP stdio(**16 工具**);Cursor / Claude Code 规则与示例配置 |
20
+ | **VS Code 扩展** | Settings、建图、路由测试、Context Preview、**知识图谱可视化**、Skill Insights、Chat Agent、一键安装 MCP |
20
21
  | **存储后端** | `file`(JSON)/ `memory` / `sqlite`(FTS5)/ `mcp-http`(Graphify) |
21
- | **工程质量** | TypeScript strict;**41 测试文件 / 177 tests**;`npm run ci` 含扩展 esbuild 打包与 bundled runtime smoke |
22
+ | **多项目隔离** | 全局配置共享 LLM/路由;**图谱路径按当前工作区解析**,不再串读其它项目的 `graphflow-out` |
23
+ | **工程质量** | TypeScript strict;**49 测试文件 / 200+ tests**;`npm run ci` 含扩展 esbuild 打包与 bundled runtime smoke |
22
24
 
23
25
  ### 一句话总结
24
26
 
25
- > 从 task 描述出发,自动规划 → 路由模型 → 压缩图谱上下文(含向量召回)→ 执行/校验/重试,并把经验沉淀回知识图谱;Coding Agent 通过 MCP/CLI 优先消费压缩上下文而非整库扫描。
27
+ > 从 task 描述出发,自动规划 → 路由模型 → 压缩图谱上下文(含向量召回)→ **输出结构化执行描述符交给外部 coding agent**,并把经验沉淀回知识图谱;定位为 **上下文与规划服务(context service)**,而非独立执行器。
26
28
 
27
- ### v0.6.7 – v0.6.13 近期演进
29
+ ### v1.0.0 核心(2026-06)
28
30
 
29
- 1. **知识图谱可视化(v0.6.12–0.6.13)**
30
- - 可读标签(文件名、符号名、目录组)、代码层 / 学习层 Tab
31
- - 暗色面板、目录聚类着色、关系线型、缩放/平移
32
- - 双击节点或「打开源文件」跳转源码行
33
- - 布局归一化修复大图谱「只剩角落小点」问题
31
+ - **诚实执行语义(bridge 模式)**:`graphflow_run` 规划 + 压缩上下文后输出 `executionDescriptor`,交给 Cursor / Claude Code 等外部 agent 执行,不再伪造 `COMPLETED`。
32
+ - **三层渐进压缩**:图结构压缩(默认零成本)→ 向量召回 + HNSW → 可选语义压缩(economy / minicpm)。
33
+ - **混合压缩模型**:`compressor` 角色默认继承 economy tier;纯离线时首次按需下载 minicpm GGUF。
34
34
 
35
- 2. **持续静默建图(v0.6.11)**
36
- - `autoIndexOnSave` 默认开启;保存文件后 debounce 增量索引
37
- - 旧配置 `maxContextTokens: 400` 自动升级到 1500
35
+ ### 最新更新(v1.0.x / main)
38
36
 
39
- 3. **Runtime 模块化与扩展打包(v0.6.10)**
40
- - `runtime/` 子模块 + `GraphFlowRuntimeModule` 类型校验
41
- - VS Code 扩展 esbuild 单文件 bundle
37
+ 1. **多项目图谱隔离**
38
+ - 全局配置(`~/.graphflow.config.json`)只保存 LLM、路由等**机器级**设置,**不再持久化 `workspaceRoot`**
39
+ - 运行时按 `process.cwd()` `GRAPHFLOW_WORKSPACE_ROOT` 解析 `graphflow-out/graphflow-graph.json`
40
+ - 修复:切换项目后 Snapshot / MCP 仍显示旧项目图谱的问题
42
41
 
43
- 4. **配置与健壮性(v0.6.7–0.6.9)**
44
- - 全局配置优先(`~/.graphflow.config.json`)
45
- - 损坏 JSON 容错;postinstall 需显式 `GRAPHFLOW_ENABLE_POSTINSTALL=1`
46
- - 无工作区也可打开 Settings;CI 可复现 `npm ci`
42
+ 2. **索引与语言扩展**
43
+ - 新增 **Java**(`.java`)、**Ruby**(`.rb`)tree-sitter 索引器
44
+ - C/C++、Rust 索引器增强;WASM 语法包可随 npm 包离线分发(`npm run wasm:download`)
45
+ - MCP 新增 `graphflow_index_file` 单文件增量索引
47
46
 
48
- 5. **无 LLM 也能建图(v0.6.6 起)**
47
+ 3. **MCP 工具扩展(9 16)**
48
+ - `graphflow_plan_insight`:六顶思考帽 + 5-Why 深度规划
49
+ - `graphflow_export_artifact` / `graphflow_import_artifact`:图谱压缩包导入导出
50
+ - `graphflow_stats`:累计 token 节省统计
51
+ - `graphflow_metrics`:Prometheus 格式可观测性指标
52
+
53
+ 4. **知识图谱可视化(延续 v0.6.12+)**
54
+ - 可读标签、代码层/学习层 Tab、目录聚类、缩放平移、跳转源码
55
+ - Snapshot 为**采样视图**(默认约 120 节点 / 200 边),顶栏显示全库真实规模
56
+
57
+ 5. **配置与工程**
58
+ - 全局配置优先;损坏 JSON 容错;CI 全链路 validate + VSIX 打包
49
59
  - Settings「建立图谱(无需 LLM)」或 `graph index` 即可生成结构图谱
50
- - 可选「测试路由并建立图谱」在 LLM 连通后触发语义 enrich
60
+
61
+ ### 历史演进(v0.6.7 – v0.6.13 摘要)
62
+
63
+ - v0.6.12–0.6.13:知识图谱面板、布局归一化、Snapshot 可读标签
64
+ - v0.6.11:`autoIndexOnSave` 默认开启;`maxContextTokens` 400 → 1500 自动升级
65
+ - v0.6.10:runtime 模块化、VS Code esbuild bundle
66
+ - v0.6.7–0.6.9:全局配置脚手架、无工作区也可打开 Settings
51
67
 
52
68
  ### 发布信息
53
69
 
54
- - 最新版本:**v0.6.13**(root + vscode-extension);npm:`@roarpeng/graphflow@0.6.13`
70
+ - 最新版本:**v1.0.4**(root + vscode-extension);npm:`@roarpeng/graphflow@1.0.4`
55
71
  - **GitHub Release**:push 到 `main` 且 CI 通过后自动发布 VSIX(见 [Actions](https://github.com/Roarpeng/GraphFlow/actions))
56
72
  - 变更日志:`CHANGELOG.md`
57
73
 
@@ -68,7 +84,7 @@ npm install
68
84
  npm run ci
69
85
  ```
70
86
 
71
- 预期:`lint` 无错误、`build` 成功、**177 tests** 通过、扩展 bundle 与 runtime smoke 通过。
87
+ 预期:`lint` 无错误、`build` 成功、**200+ tests** 通过、扩展 bundle 与 runtime smoke 通过。
72
88
 
73
89
  ## Agent 工具接入
74
90
 
@@ -83,19 +99,32 @@ GraphFlow 支持两种对外接入方式:
83
99
  npm run start:mcp
84
100
  ```
85
101
 
86
- ### MCP 工具一览
102
+ ### MCP 工具一览(16 个)
87
103
 
88
104
  | 工具 | 用途 |
89
105
  | --- | --- |
90
- | `graphflow_preview_context` | 压缩任务相关上下文(优先调用) |
91
- | `graphflow_plan` | 多步任务分解 |
92
- | `graphflow_run` | 执行编排循环 |
93
- | `graphflow_index` / `graphflow_rebuild` | 增量 / 全量建图 |
94
- | `graphflow_inspect_graph` | 图谱快照与统计 |
95
- | `graphflow_enrich_graph` | 语义增强 |
106
+ | `graphflow_preview_context` | 压缩任务相关上下文(**优先调用**) |
107
+ | `graphflow_plan` | 多步任务分解与 DAG 规划 |
108
+ | `graphflow_plan_insight` | 六顶思考帽 + 5-Why 深度分析后规划(复杂任务) |
109
+ | `graphflow_run` | 规划 + 压缩上下文,输出 bridge 执行描述符 |
110
+ | `graphflow_index` | 全工作区增量建图 |
111
+ | `graphflow_index_file` | 单文件增量建图(适合 onSave / watcher) |
112
+ | `graphflow_rebuild` | 清空缓存后全量重建 |
113
+ | `graphflow_inspect_graph` | 图谱快照统计与样本节点 |
114
+ | `graphflow_enrich_graph` | 符号节点语义增强 |
96
115
  | `graphflow_skill_insights` | 技能学习洞察 |
97
- | `graphflow_diagnose` | 路由健康诊断 |
98
- | `graphflow_model_download` | OpenBMB 模型下载 |
116
+ | `graphflow_diagnose` | 路由与压缩模型健康诊断 |
117
+ | `graphflow_model_download` | OpenBMB / minicpm 模型下载 |
118
+ | `graphflow_export_artifact` | 导出压缩图谱 artifact |
119
+ | `graphflow_import_artifact` | 导入图谱 artifact |
120
+ | `graphflow_stats` | 累计 token 节省 ROI 统计 |
121
+ | `graphflow_metrics` | Prometheus 格式运行指标 |
122
+
123
+ **MCP 建图提示**:用户级 MCP 进程的 `cwd` 不一定是当前项目。请任选其一:
124
+
125
+ - 调用 `graphflow_index` 时传入 `rootDir`(项目绝对路径)
126
+ - 在 MCP 配置中设置 `GRAPHFLOW_WORKSPACE_ROOT` 环境变量
127
+ - 使用 VS Code 扩展「建立图谱」或项目级 `.cursor/mcp.json`
99
128
 
100
129
  CLI 示例:
101
130
 
@@ -143,6 +172,54 @@ npm run start -- skill insights
143
172
 
144
173
  ## 进阶能力
145
174
 
175
+ ### 上下文压缩(v1.0 核心)
176
+
177
+ GraphFlow 的压缩采用「三层渐进」策略,先用零成本图结构压缩砍掉冗余节点,再按需用 LLM 做语义合并:
178
+
179
+ | 层 | 机制 | 成本 | 默认 |
180
+ | --- | --- | --- | --- |
181
+ | 图结构压缩 | 边权重连通子图 + PageRank 中心性重排 | 零 LLM | **开启** |
182
+ | 向量召回 | embedding + RRF 融合;候选 ≥200 自动用 HNSW ANN | 零 LLM | 配 embedding 时开启 |
183
+ | 语义压缩 | minicpm/economy LLM 聚类合并相似节点 + 长节点改写 | LLM | opt-in |
184
+ | RepoMap 概览 | 预算紧张时返回模块级地图 | 零 LLM | opt-in |
185
+ | 自适应预算 | 按任务复杂度动态调整 token 预算 | 零 LLM | opt-in |
186
+
187
+ **压缩模型策略(零额外配置)**:压缩复用 economy tier——
188
+
189
+ - 配了外部 provider(OpenAI/Anthropic/百炼)→ 自动用其 economy 模型(如 `gpt-4.1-mini`)
190
+ - 纯离线无外部 LLM → 自动回退内嵌 minicpm,**首次使用按需下载** GGUF 到 `~/.graphflow/models/`(约 650MB,仅一次)
191
+
192
+ 配置示例:
193
+
194
+ ```json
195
+ {
196
+ "graphPolicy": {
197
+ "compression": {
198
+ "enabled": true,
199
+ "backend": "inherit",
200
+ "enableGraphCompression": true,
201
+ "enableHnsw": true,
202
+ "enableRepoMapFallback": false,
203
+ "enableAdaptiveBudget": false,
204
+ "autoDownloadEmbedded": true
205
+ }
206
+ }
207
+ }
208
+ ```
209
+
210
+ 查看当前压缩模型来源:
211
+
212
+ ```bash
213
+ npm run start -- route diagnose
214
+ # 输出含:compression=inherit:openai/gpt-4.1-mini
215
+ ```
216
+
217
+ **HNSW 加速(可选依赖)**:大仓库(候选 ≥200 节点)向量召回自动使用 HNSW ANN(10~100x 提速)。需安装可选依赖:
218
+
219
+ ```bash
220
+ npm install hnswlib-node # 未安装时自动降级线性扫描,不影响功能
221
+ ```
222
+
146
223
  ### SQLite / FTS5 后端
147
224
 
148
225
  ```json
@@ -189,8 +266,10 @@ const run = await orchestrate(
189
266
  | Rust | `.rs` |
190
267
  | Go | `.go` |
191
268
  | C / C++ | `.c .h .cc .cpp .cxx .hpp .hxx` |
269
+ | Java | `.java` |
270
+ | Ruby | `.rb` |
192
271
 
193
- 通过 `graphPolicy.includeExtensions` 限制扫描范围。
272
+ 通过 `graphPolicy.includeExtensions` 限制扫描范围。tree-sitter WASM 语法包随 npm 包分发;开发/发布前可执行 `npm run wasm:download` 预下载到 `wasm/`。
194
273
 
195
274
  ## 配置文件
196
275
 
@@ -200,12 +279,26 @@ const run = await orchestrate(
200
279
  cp graphflow.config.example.json graphflow.config.json
201
280
  ```
202
281
 
282
+ ### 全局 vs 项目配置
283
+
284
+ | 层级 | 路径 | 适合存放 |
285
+ | --- | --- | --- |
286
+ | 全局 | `~/.graphflow.config.json` | Provider、API Key、Smart/Economy 模型、路由策略 |
287
+ | 项目根 | `graphflow.config.json` | 项目专属覆盖(可选) |
288
+ | 项目覆盖 | `.graphflow/config.json` | 工作区局部覆盖(`graphflow init` 生成) |
289
+
290
+ **多项目重要约定**:
291
+
292
+ - 图谱文件默认写在**当前工作区**下的 `graphflow-out/graphflow-graph.json`
293
+ - 全局配置**不应**包含固定的 `workspaceRoot`(旧版本若已写入,请删除该字段)
294
+ - MCP / 脚本可通过环境变量指定工作区:`GRAPHFLOW_WORKSPACE_ROOT=/path/to/project`
295
+
203
296
  关键项:
204
297
 
205
298
  | 配置 | 说明 |
206
299
  | --- | --- |
207
300
  | `graphPolicy.transport` | `file` / `memory` / `sqlite` / `mcp-http` |
208
- | `graphPolicy.graphStorePath` | JSON 或 `.sqlite` 路径 |
301
+ | `graphPolicy.graphStorePath` | 相对当前工作区的 JSON 或 `.sqlite` 路径 |
209
302
  | `graphPolicy.maxContextTokens` | 压缩上下文预算(默认 **1500**) |
210
303
  | `graphPolicy.autoIndexOnSave` | 保存后增量索引(默认 **true**) |
211
304
  | `graphPolicy.autoIndexOnPreview` / `autoIndexOnRun` | preview / run 前自动索引 |
@@ -265,11 +358,22 @@ code --install-extension artifacts/graphflow-vscode-*.vsix
265
358
  3. `context preview` → `summary > 0` 且 `anchors > 0`
266
359
  4. VS Code **Show Graph** → 画布正常显示节点聚类(非角落小点)
267
360
  5. `plan` / `run` 返回正常输出
268
-
269
- 正式测试文档:`docs/testing/2026-05-28-formal-usage-test-plan.md`
361
+ 6. `route diagnose` → 显示 `compression=<backend>:<provider>/<model>`
270
362
 
271
363
  ## 常见问题
272
364
 
365
+ **切换项目后 Snapshot 显示别的仓库的图谱**
366
+
367
+ - 检查 `~/.graphflow.config.json` 是否含有旧的 `workspaceRoot`,**删除该字段**后重载窗口
368
+ - 在当前项目重新「建立图谱」,确认顶栏 `store` 路径指向本项目的 `graphflow-out/`
369
+ - 使用 v1.0.x 最新版(已修复全局 `workspaceRoot` 串项目问题)
370
+
371
+ **MCP 建图失败或索引到错误目录**
372
+
373
+ - `graphflow_index` 传入 `rootDir: "/你的项目绝对路径"`
374
+ - 或在 MCP 配置中加 `"env": { "GRAPHFLOW_WORKSPACE_ROOT": "/你的项目绝对路径" }`
375
+ - 离线环境首次索引多语言项目时,确保 `wasm/` 语法包存在或网络可访问 unpkg
376
+
273
377
  **`context preview` 返回 0 anchors**
274
378
 
275
379
  - 先执行 `graph index` 或 Settings 建图
@@ -277,8 +381,9 @@ code --install-extension artifacts/graphflow-vscode-*.vsix
277
381
 
278
382
  **知识图谱面板空白或只有小点**
279
383
 
280
- - 升级到 **v0.6.13+** 并重载窗口
384
+ - 升级到 **v1.0.0+** 并重载窗口
281
385
  - 点击画布工具栏 **「适应」**
386
+ - 注意:画布展示的是**采样子图**(约 120 节点),全库规模请看顶栏统计
282
387
 
283
388
  **API Key 未配置**
284
389
 
@@ -300,7 +405,7 @@ GraphFlow/
300
405
  │ └── surfaces/
301
406
  │ ├── cli/ # CLI + runtime 子模块
302
407
  │ └── mcp/ # MCP server
303
- ├── tests/ # 41 文件 / 177 tests
408
+ ├── tests/ # 49 文件 / 200+ tests
304
409
  ├── vscode-extension/ # VS Code 面板与命令
305
410
  ├── docs/
306
411
  └── CHANGELOG.md
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Six Thinking Hats + Five Whys Insight Engine.
3
+ *
4
+ * Borrowed from Edward de Bono's "Six Thinking Hats" framework —
5
+ * before planning a task, analyze it through 6 distinct perspectives,
6
+ * and auto-apply 5-level Why chains to key observations that fall
7
+ * below a confidence threshold.
8
+ *
9
+ * The 5 Why triggers are automatic: whenever a hat produces an
10
+ * observation with low certainty (< 0.6), the chain is applied to
11
+ * drill toward root cause.
12
+ */
13
+ import type { TaskNode } from "../core/types";
14
+ import type { ModelSelection } from "../routing/model-router";
15
+ import { type PromptContext } from "../routing/provider-executor";
16
+ /** === Hat Definitions === */
17
+ export interface HatDefinition {
18
+ name: string;
19
+ color: "white" | "red" | "black" | "yellow" | "green" | "blue";
20
+ role: string;
21
+ focus: string;
22
+ question: string;
23
+ whyFocus: string;
24
+ whyRootFocus: string;
25
+ }
26
+ export declare const SIX_HATS: HatDefinition[];
27
+ /** === Five Whys Chain === */
28
+ export interface WhyStep {
29
+ level: 1 | 2 | 3 | 4 | 5;
30
+ question: string;
31
+ answer: string;
32
+ certainty: number;
33
+ }
34
+ export interface FiveWhyResult {
35
+ initialObservation: string;
36
+ certainty: number;
37
+ steps: WhyStep[];
38
+ rootCause: string;
39
+ }
40
+ export interface WhyChainSection {
41
+ hat: HatDefinition;
42
+ /** Key observation produced by this hat */
43
+ observation: string;
44
+ certainty: number;
45
+ /** 5-level why chain (only non-trivial ones are expanded) */
46
+ whyChain: FiveWhyResult | null;
47
+ /** Critical findings that should influence the plan */
48
+ criticalInsight: string;
49
+ }
50
+ /** === Six Hats Analysis Result === */
51
+ export interface SixHatsInsight {
52
+ task: string;
53
+ hats: WhyChainSection[];
54
+ blueHatSynthesis: string;
55
+ rootCauses: string[];
56
+ criticalRisks: string[];
57
+ coreValue: string;
58
+ refinedTaskStatement: string;
59
+ }
60
+ /** === Main Entry Points === */
61
+ export interface PlanInsightOptions {
62
+ selection: ModelSelection;
63
+ context?: PromptContext;
64
+ }
65
+ /**
66
+ * Run the full Six Thinking Hats + Five Whys analysis on a task,
67
+ * then generate a DAG-style plan that incorporates the insights.
68
+ *
69
+ * @param task The task to analyze
70
+ * @param options Model selection and context options
71
+ */
72
+ export declare function planInsight(task: string, options: PlanInsightOptions): Promise<{
73
+ insight: SixHatsInsight;
74
+ plan: TaskNode[];
75
+ }>;
76
+ /**
77
+ * Run the Six Thinking Hats analysis with automatic 5 Why triggers.
78
+ *
79
+ * Each hat produces an observation. If the observation's certainty
80
+ * is below THRESHOLD (0.6), a 5 Why chain is automatically applied.
81
+ */
82
+ export declare function analyzeWithSixHats(task: string, options: PlanInsightOptions): Promise<SixHatsInsight>;
83
+ //# sourceMappingURL=insight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insight.d.ts","sourceRoot":"","sources":["../../src/agents/insight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAGrF,8BAA8B;AAE9B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,QAAQ,EAAE,aAAa,EAuDnC,CAAC;AAEF,8BAA8B;AAE9B,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,aAAa,CAAC;IACnB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,uCAAuC;AAEvC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,gCAAgC;AAEhC,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC;IACT,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,QAAQ,EAAE,CAAC;CAClB,CAAC,CAID;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,cAAc,CAAC,CAkCzB"}