Skip to main content

Build structured knowledge bases from documents and code, with graph-based querying.

Project description

Ewan-kb

从 Java 后端代码和业务文档中构建按业务域组织的知识库,并生成可查询的知识图谱。

适合需要沉淀业务知识、梳理流程、支持新成员理解系统的团队。构建完成后产出两类产物:

  • 面向人的业务知识库文档
  • 面向查询的结构化图谱

完整使用体验目前以 Claude Code 为主。底层 ewankb CLI 可单独使用,但 Claude Code 仍是推荐入口。

适用场景

适合:

  • Java 微服务后端 + 业务文档较多的企业项目
  • 需要按业务域整理知识,而不只是做代码图谱的团队
  • 希望同时支持文档检索、图谱查询和流程理解的场景

暂不适合:

  • 非 Java 后端为主的项目
  • 只需要通用代码图谱、不需要业务知识库分层的场景
  • 不使用 Claude Code 的工作流

快速开始

构建者

负责搭建和维护知识库,通常是熟悉系统代码和业务的研发。

# 1. 安装
pip install ewankb
ewankb install          # 安装 Claude Code skills

# 2. 首次构建(交互式引导,自动配置 llm_config.json)
/ewankb <知识库路径>

# 3. 增量构建(自动检测变更,只重跑受影响的域)
/ewankb

使用者

只需克隆已构建好的知识库,创建 llm_config.json 填入 API 凭证后即可查询。

# 1. 安装
pip install ewankb
ewankb install          # 安装 Claude Code skills

# 2. 克隆知识库
git clone <知识库地址> my-kb
cd my-kb

# 3. 创建 llm_config.json
cat > llm_config.json << 'EOF'
{
  "api_key": "your-api-key-here",
  "base_url": "",
  "model": "claude-haiku-4-5-20251001",
  "api_protocol": "anthropic"
}
EOF

# 4. 开始查询
/ewankb-query <问题>

源码安装

git clone https://github.com/Ewan-Jone/ewan-kb.git
cd ewan-kb
pip install -e .
ewankb install

运行环境:Python 3.10+。自动拉取 graphifyyanthropicrank-bm25jieba 等依赖。

自测验证

仓库内置了商城项目 fixture(5 个业务域、24 个 Java 文件、8 个业务文档),用于跑通完整流程并验证功能效果:

# 运行 E2E 测试(需要 ANTHROPIC_API_KEY 环境变量)
pytest tests/test_mall_e2e.py -v

# 构建产物保留在 /tmp/ewankb_test_mall/ 方便手动查看
KEEP_OUTPUT=1 pytest tests/test_mall_e2e.py -v

测试流程:域发现 → 知识库构建 → 图谱构建 → 图谱查询 → 文档检索,覆盖所有核心功能。

fixture 结构:

tests/fixtures/商城项目/
├── source/repos/mall-backend/src/main/java/com/mall/application/apps/
│   ├── order/      # 订单域(5 文件)
│   ├── product/    # 商品域(5 文件)
│   ├── payment/    # 支付域(5 文件)
│   ├── inventory/  # 库存域(4 文件)
│   └── member/     # 会员域(5 文件)
└── source/docs/
    ├── 101_订单需求文档.md
    ├── 102_商品需求方案.md
    ├── 103_支付接口API文档.md
    ├── ...(共 8 个文档,覆盖 5 种类型)

Service 类之间的跨域 import(如 OrderService → ProductService, PaymentService)会在图谱中形成跨域关联边。

常用命令

Claude Code 入口

命令 用途
/ewankb 完整构建知识库
/ewankb --build-kb 仅构建 domains/knowledgeBase/
/ewankb --build-kb --skip-discover 跳过域发现,直接重跑知识库流水线
/ewankb --build-graph 仅构建图谱
/ewankb discover 单独执行域发现
/ewankb pull 拉取远程知识库并同步源码/文档
/ewankb push 提交并推送知识库
/ewankb diff 检测变更并展示受影响域
/ewankb-query <问题> 图谱查询(默认)
/ewankb-query kb <问题> 文档检索
/ewankb-query deep <问题> 图谱 + 文档双路对比

CLI 命令

命令 说明
ewankb init <name> 初始化新知识库目录
ewankb preflight --fix --dir . 检查环境并补齐缺失目录/配置
ewankb discover 域发现
ewankb knowledgebase 构建 domains/ + knowledgeBase/
ewankb knowledgebase --skip-discover 跳过域发现直接执行 7 步流水线
ewankb build 完整构建(知识库 + 图谱)
ewankb build --kb 仅构建知识库
ewankb build --graph 仅构建图谱
ewankb diff 检测 source/ 变更
ewankb rebuild 清空生成产物,做一次干净重建
ewankb query <text> 图谱查询
ewankb query <text> --dir /path/to/kb 图谱查询(指定知识库目录)
ewankb query-kb <text> 文档检索
ewankb query-kb <text> --dir /path/to/kb 文档检索(指定知识库目录)
ewankb graph-stats 图谱统计
ewankb communities 查看社区聚类
ewankb config --show 查看当前配置
ewankb install 安装 Claude Code skills

构建产物

完整知识库包含四层产物:

source/          →  domains/           →  knowledgeBase/     →  graph/
(原始数据)         (域组织 + AI 产物)     (最终知识库)           (可查询图谱)

目录示例:

my-knowledge-base/
├── project_config.json          # 项目元数据
├── llm_config.json              # LLM 凭证(不提交 git)
├── source/                      # 原始数据
│   ├── repos/                   # 代码仓库
│   ├── docs/                    # 业务文档(.md)
│   └── .cache/                  # 增量构建缓存
├── domains/                     # 域组织层
│   ├── _meta/domains.json       # 域定义
│   └── {域名}/
│       ├── README.md            # 域概览(AI 生成)
│       ├── PROCESSES.md         # 流程文档(AI 生成)
│       ├── 代码模块说明/
│       ├── 需求文档/
│       └── ...
├── knowledgeBase/               # 最终知识库
│   ├── _state/                  # 流水线状态 + BM25 索引
│   ├── 需求文档/
│   ├── 业务规则/
│   └── ...
└── graph/                       # 知识图谱
    ├── graph.json
    ├── communities.json
    └── domain_suggestions.json

四层职责:

职责 产物 Git 提交
source/ 存放原始代码和文档 Java 代码、.md 文档
domains/ 按业务域组织,存放中间产物和 AI 生成概览 README、PROCESSES、分类文档
knowledgeBase/ 最终知识库,按文档类型平铺 迁移后的 .md 文档、BM25 索引
graph/ 知识图谱(AST + 语义) graph.json、统计、建议

核心流程

域发现(discover)

扫描 source/repos/ 下的 Java 包路径,提取业务 segment,跳过技术层词汇,由 LLM 翻译为中文业务域。

产出:domains/_meta/domains.json

知识库构建(knowledgebase)

7 步流水线:

步骤 说明
analyze_code 扫描代码结构,生成 code_analysis.json
extract 读取文档全文,分类到对应域和文档类型
gen_code_module_docs 为每个域生成代码模块说明文档
enrich 为文档追加关联代码信息(类名、接口路径等)
gen_overview 为每个域生成 README.md
gen_processes 为每个域生成 PROCESSES.md
migrate domains/ 下的文档迁移到 knowledgeBase/

完成后自动构建 BM25 索引,供 query_kb 使用。

图谱构建(build-graph)

  1. 使用 graphify 提取 AST 节点和调用关系
  2. domains/ 的 README 和流程文档中提取语义节点
  3. 合并 AST 节点和语义节点
  4. 做社区检测并输出统计结果

产出:graph/graph.jsoncommunities.jsondomain_suggestions.json

增量更新

首次构建后记录 source/ 文件哈希,对比新增、修改、删除文件,映射到业务域,清理受影响域的生成产物,只重跑受影响域对应的流水线。

查询

  • 图谱查询:基于关键词匹配起始节点 + BFS/DFS 遍历,支持 verbose=True 返回结构化 JSON
  • 文档检索:基于 BM25 关键词排名,支持按域过滤
  • 双路对比:图谱查询 + 文档检索结果合并

KBContext 类封装了查询逻辑,支持多 KB 环境(通过 EWANKB_DIR 环境变量切换)。

配置

project_config.json(项目元数据,提交 git)

字段 说明
project_name 项目中文名
system_name 系统名称,用于 LLM prompt
doc_type_rules 文档类型识别规则
code_structure 代码仓库目录约定
skip_domains 跳过不生成概览的域列表
segment_stopwords 域发现停用词表

llm_config.json(LLM 凭证,不提交 git)

字段 说明
api_key LLM API Key
base_url LLM API Base URL,留空则使用 Anthropic 官方
model 模型名称,默认 claude-haiku-4-5-20251001
api_protocol API 协议类型:anthropicopenai

每位使用者需创建自己的 llm_config.json。模板见 examples/llm_config.example.json

域发现停用词

segment_stopwords 控制从 Java 包路径提取业务 segment 的方式。内置默认值来源于 tools/discover/segment_stopwords.json,项目级配置会完全覆盖默认值。

词表 作用
segment_stopwords 技术层、框架、项目名,匹配时直接跳过
package_wrappers 技术分层目录名,跳过后继续往后找
generic_noise 无业务区分度的泛化词,不作为域标识

与 graphify 的关系

graphify 是通用知识图谱构建工具。Ewan-kb 底层调用 graphify 做 AST 提取,但不止停在图谱层,增加了业务域组织、知识库文档生成和流程提炼能力。

维度 graphify Ewan-kb
定位 通用知识图谱 业务域知识库(含图谱)
组织方式 按代码结构 / 社区聚类 按业务域(自动发现 + AI 翻译)
输出形态 图谱(graph.json 四层结构
文档产物 域概览、流程文档、BM25 索引
查询方式 图谱遍历 图谱查询 + 文档检索 + 双路对比

已知限制

  • 代码域发现仅支持 Java,依赖包路径约定
  • LLM 语义提取质量依赖 prompt 和模型能力
  • 文档语义入图主要通过 Claude Code skill 触发
  • 消费者 clone 知识库后需自行配置 llm_config.json

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ewankb-0.1.8.tar.gz (109.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ewankb-0.1.8-py3-none-any.whl (121.2 kB view details)

Uploaded Python 3

File details

Details for the file ewankb-0.1.8.tar.gz.

File metadata

  • Download URL: ewankb-0.1.8.tar.gz
  • Upload date:
  • Size: 109.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for ewankb-0.1.8.tar.gz
Algorithm Hash digest
SHA256 56eb52c9de416dd6e76277cfaea97cf930f48fede9a170a2a2de5a7dbe8ee5c9
MD5 bd0e72124319028babb8b6b121039f80
BLAKE2b-256 23b75b4175be98be710cc32aed4de04d8ce701c6a073d3c101b56bf8e21df51a

See more details on using hashes here.

File details

Details for the file ewankb-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: ewankb-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 121.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for ewankb-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 7d527cf3a1ce62f972bad79630bacb8c5c11d25d99bf8ec0dc83c0c698851abd
MD5 986219340164cd39b325033338cbb092
BLAKE2b-256 c4e5e9354253616af13e8b54f29696626c180c145acc2f777424459589a4b0da

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page