ForcePilot/CLAUDE.md

9.2 KiB
Raw Blame History

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

项目概述

语析 (Yuxi-Know) 是一个基于大模型的智能知识库与知识图谱问答系统,融合了 RAG检索增强生成与知识图谱技术。

  • 技术栈: FastAPI + Vue.js 3 + LangGraph + LightRAG + Neo4j + Milvus
  • Python版本: ≥3.11
  • 当前版本: v0.3.0-beta
  • 许可证: MIT

开发命令

Docker 环境管理

# 启动所有服务
make start
# 或: docker compose up -d

# 停止所有服务
make stop
# 或: docker compose down

# 查看后端日志
make logs
# 或: docker logs --tail=50 api-dev

代码质量

# 代码检查
make lint
# 或: uv run python -m ruff check .

# 代码格式化
make format
# 或: uv run ruff format . && uv run ruff check . --fix

# 查看格式化差异
make format_diff
# 或: uv run ruff format --diff .

测试

# 运行 API 单元测试
make router-tests
# 或: docker compose exec -T api uv run --group test pytest test/api

# 运行特定测试文件
docker compose exec -T api uv run --group test pytest test/api/test_xxx.py

# 带覆盖率报告
docker compose exec -T api uv run --group test pytest test/ --cov=src --cov-report=html

架构设计

分层架构

前端层 (Vue.js 3)
    ↓ HTTP/REST API
API层 (FastAPI)
    ↓
业务逻辑层 (Service)
    ├─ 智能体系统 (Agent - LangGraph)
    ├─ 知识库管理 (KnowledgeBase)
    ├─ 任务管理 (Tasker)
    └─ 认证服务 (Auth)
    ↓
数据访问层
    ├─ SQLite (对话、用户、统计)
    ├─ Neo4j (知识图谱)
    ├─ Milvus/Chroma (向量数据库)
    └─ MinIO (文件存储)

核心目录结构

src/                       # 核心Python源代码
├── agents/                # 智能体框架 (LangGraph)
│   ├── chatbot/           # 聊天机器人智能体
│   ├── react/             # ReAct智能体
│   └── common/            # 通用组件 (工具、模型、上下文)
├── knowledge/             # 知识库核心模块
│   ├── implementations/   # 具体实现 (Milvus, Chroma, LightRAG)
│   └── manager.py         # 知识库管理器
├── models/                # LLM模型加载 (chat, embed, rerank)
├── storage/               # 数据存储层
│   ├── db/                # SQLite ORM模型
│   ├── minio/             # MinIO对象存储
│   └── conversation/      # 对话历史管理
├── config/                # 配置管理
│   └── static/            # 静态配置 (models.yaml, agents_meta.yaml)
├── plugins/               # 文档处理插件 (MinerU, PaddleOCR)
└── utils/                 # 工具函数

server/                    # FastAPI应用层
├── main.py                # FastAPI应用入口
├── routers/               # API路由 (7个主要路由)
│   ├── auth_router.py     # /api/auth/*
│   ├── chat_router.py     # /api/chat/*
│   ├── knowledge_router.py # /api/knowledge/*
│   ├── graph_router.py    # /api/graph/*
│   ├── dashboard_router.py # /api/dashboard/*
│   ├── system_router.py   # /api/system/*
│   └── task_router.py     # /api/tasks/*
├── services/              # 业务逻辑服务
│   └── tasker.py          # 后台异步任务管理器
└── utils/                 # 服务层工具 (认证、用户管理)

web/                       # Vue.js前端应用
├── src/
│   ├── views/             # 页面视图
│   ├── components/        # 可复用组件
│   ├── layouts/           # 布局模板 (AppLayout, BlankLayout)
│   ├── router/            # Vue Router配置
│   ├── stores/            # Pinia状态管理
│   ├── apis/              # API调用层
│   └── utils/             # 前端工具函数
└── vite.config.js         # Vite构建配置

关键架构决策

1. 智能体系统 (LangGraph)

所有智能体基于 LangGraph 的状态机模型构建:

  • 状态定义: messages[], context (包含 system_prompt, model, tools, mcps)
  • 节点: llm_call (调用LLM), dynamic_tools_node (工具执行)
  • : 通过 tools_condition 判断是否需要工具调用
  • 持久化: 使用 SQLite Checkpointer 支持中断恢复

可用工具:

  • 知识库查询工具
  • 知识图谱查询工具
  • Web搜索工具 (Tavily)
  • 计算器工具
  • MySQL查询工具

2. 知识库系统

支持三种知识库实现:

  • Milvus: 生产级向量数据库
  • Chroma: 轻量级向量数据库
  • LightRAG: 图增强检索系统,自动构建知识图谱

所有知识库通过 KnowledgeBaseFactory 工厂模式创建,由 KnowledgeBaseManager 统一管理。

3. 异步任务系统 (Tasker)

所有耗时操作(文档处理、知识图谱构建)均通过 Tasker 异步队列处理:

  • 任务队列: FIFO队列管理
  • 进度跟踪: 实时更新任务状态
  • 结果存储: 完成后存储到 SQLite
  • 失败重试: 支持失败回调处理

4. 文档处理

支持多种格式文档:

  • 文本: .txt, .md
  • 文档: .doc, .docx, .pdf
  • 网页: .html, .htm
  • 数据: .json, .csv, .xls, .xlsx
  • 图片: .jpg, .jpeg, .png, .bmp, .tiff (需要 OCR)

处理流程:

  1. 选择合适的解析器 (MinerU for PDF, PaddleOCR for images)
  2. 文本提取与分块
  3. Embedding 向量化
  4. 存储到向量数据库
  5. 可选:知识图谱构建 (LightRAG)

配置管理

环境变量配置

项目根目录 .env 文件(从 .env.template 复制):

# 模型提供商 API Key (推荐使用硅基流动)
SILICONFLOW_API_KEY=xxx
OPENAI_API_KEY=xxx
DEEPSEEK_API_KEY=xxx
ZHIPUAI_API_KEY=xxx

# 数据库配置
NEO4J_URI=bolt://graph:7687
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=0123456789
MILVUS_URI=http://milvus:19530

# 文档处理服务 (需要GPU)
MINERU_OCR_URI=http://mineru:30000
PADDLEX_URI=http://paddlex:8080

# Web搜索 (可选)
TAVILY_API_KEY=xxx

模型配置

src/config/static/models.yaml 定义所有可用的 LLM 和 Embedding 模型:

  • LLM模型: 支持 OpenAI, DeepSeek, SiliconFlow, Together, ZhipuAI 等
  • Embedding模型: 支持 OpenAI, HuggingFace 本地模型
  • 重排序模型: 支持 Jina Reranker

数据库服务

Docker Compose 服务

服务名 端口 用途
api-dev 5050 FastAPI后端服务
web-dev 5173 Vue.js前端服务
graph (Neo4j) 7474/7687 知识图谱数据库
milvus 19530 向量数据库
minio 9000/9001 对象存储
etcd 2379 Milvus元数据存储

访问地址

开发最佳实践

后端开发

  1. 路由: 新增 API 路由在 server/routers/ 下,并在 server/routers/__init__.py 注册
  2. 业务逻辑: 核心业务代码放在 src/ 下,避免在路由中编写复杂逻辑
  3. 异步任务: 耗时操作必须使用 Tasker 异步处理
  4. 代码规范: 提交前运行 make lintmake format
  5. 测试: 为新增 API 编写单元测试 test/api/test_xxx.py

前端开发

  1. API调用: 统一在 web/src/apis/ 下定义 API 函数
  2. 状态管理: 使用 Pinia stores (web/src/stores/)
  3. 组件: 可复用组件放在 web/src/components/
  4. 样式: 使用 Less参考 web/src/assets/css/base.css 配色系统
  5. 热更新: Vite 支持热更新,无需重启容器

智能体开发

  1. 工具定义: 在 src/agents/common/tools.py 定义新工具
  2. 工具包: 复杂工具可创建 toolkitsrc/agents/common/toolkits/mysql/
  3. LangGraph状态: 在智能体 graph 定义中添加自定义 State 字段
  4. 上下文管理: 使用 Context 对象传递智能体配置

重要文件

文件 用途
src/config/app.py 全局配置管理
server/main.py FastAPI应用入口
src/knowledge/manager.py 知识库管理器
src/agents/chatbot/graph.py LangGraph智能体定义
server/services/tasker.py 异步任务管理器
src/storage/db/models.py SQLAlchemy ORM模型
docker-compose.yml 服务编排配置
pyproject.toml Python依赖与工具配置
web/src/router/index.js 前端路由配置

常见问题

  1. Milvus启动失败: docker compose up milvus -d && docker restart api-dev
  2. 模型加载失败: 检查 .env 中的 API Key 是否正确配置
  3. 任务卡住: 查看 Tasker 日志,可能是工具执行超时
  4. 前端无法连接后端: 检查 Vite 配置中的代理设置

v0.3 重大变更

  • .env 文件位置: 从 src/.env 移到项目根目录
  • 数据库重构: 不再使用 MemorySaver改用新的存储结构
  • 自定义模型移除: 改用自定义 provider 方式
  • 新增功能: Dashboard 统计、消息反馈、用户管理增强

文档资源