diff --git a/AGENTS.md b/AGENTS.md index 3706ab94..9c6059bc 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,7 +1,7 @@ # 项目目录结构 (Project Overview) -Yuxi-Know 是一个基于大模型的智能知识库与知识图谱智能体开发平台,融合了 RAG 技术与知识图谱技术,基于 LangGraph v1 + Vue.js + FastAPI + LightRAG 架构构建。项目完全通过 Docker Compose 进行管理,支持热重载开发。 +Yuxi 是一个基于大模型的智能知识库与知识图谱智能体开发平台,融合了 RAG 技术与知识图谱技术,基于 LangGraph v1 + Vue.js + FastAPI + LightRAG 架构构建。项目完全通过 Docker Compose 进行管理,支持热重载开发。 ## 开发准则 diff --git a/CLAUDE.md b/CLAUDE.md index 72a6f2be..f112a4cd 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,7 +1,7 @@ # 项目目录结构 (Project Overview) -Yuxi-Know 是一个基于大模型的智能知识库与知识图谱智能体开发平台,融合了 RAG 技术与知识图谱技术,基于 LangGraph v1 + Vue.js + FastAPI + LightRAG 架构构建。项目完全通过 Docker Compose 进行管理,支持热重载开发。 +Yuxi 是一个基于大模型的智能知识库与知识图谱智能体开发平台,融合了 RAG 技术与知识图谱技术,基于 LangGraph v1 + Vue.js + FastAPI + LightRAG 架构构建。项目完全通过 Docker Compose 进行管理,支持热重载开发。 ## 开发准则 diff --git a/backend/package/yuxi/__init__.py b/backend/package/yuxi/__init__.py index b2bd104a..15c857e0 100644 --- a/backend/package/yuxi/__init__.py +++ b/backend/package/yuxi/__init__.py @@ -17,5 +17,5 @@ executor = ThreadPoolExecutor() # noqa: E402 def get_version(): - """Return the Yuxi-Know version.""" + """Return the Yuxi version.""" return __version__ diff --git a/backend/package/yuxi/agents/deep_agent/__init__.py b/backend/package/yuxi/agents/deep_agent/__init__.py index d3cfb7c0..6983c466 100644 --- a/backend/package/yuxi/agents/deep_agent/__init__.py +++ b/backend/package/yuxi/agents/deep_agent/__init__.py @@ -18,5 +18,5 @@ __all__ = [ # 模块元数据 __version__ = "1.0.0" -__author__ = "Yuxi-Know Team" +__author__ = "Yuxi Team" __description__ = "基于 create_deep_agent 的深度分析智能体" diff --git a/backend/package/yuxi/config/static/info.template.yaml b/backend/package/yuxi/config/static/info.template.yaml index 311da59d..fc5840de 100644 --- a/backend/package/yuxi/config/static/info.template.yaml +++ b/backend/package/yuxi/config/static/info.template.yaml @@ -10,8 +10,8 @@ organization: # 项目信息 branding: - name: "Yuxi-Know" - title: "Yuxi-Know: 更智能的知识库智能体平台" # 系统标题 + name: "Yuxi" + title: "Yuxi: 更智能的知识库智能体平台" # 系统标题 subtitle: "大模型驱动的知识库智能体平台" # 副标题 features: diff --git a/backend/scripts/batch_upload.py b/backend/scripts/batch_upload.py index 54d1eabc..a2c0e942 100644 --- a/backend/scripts/batch_upload.py +++ b/backend/scripts/batch_upload.py @@ -337,7 +337,7 @@ def upload( poll_interval: int = typer.Option(5, help="Polling interval in seconds for checking task status."), ): """ - Batch upload and process files into a Yuxi-Know knowledge base. + Batch upload and process files into a Yuxi knowledge base. """ console.print(f"[bold green]Starting batch upload for knowledge base: {db_id}[/bold green]") diff --git a/backend/scripts/init.ps1 b/backend/scripts/init.ps1 index 7d5d7b4a..c3d79fb5 100644 --- a/backend/scripts/init.ps1 +++ b/backend/scripts/init.ps1 @@ -1,8 +1,8 @@ -# Yuxi-Know Initialization Script for PowerShell -# This script helps set up the environment for the Yuxi-Know project +# Yuxi Initialization Script for PowerShell +# This script helps set up the environment for the Yuxi project # Note: API keys will be visible during input - use with care -Write-Host "🚀 Initializing Yuxi-Know project..." -ForegroundColor Cyan +Write-Host "🚀 Initializing Yuxi project..." -ForegroundColor Cyan Write-Host "==================================" -ForegroundColor Cyan # Check if .env file exists diff --git a/backend/scripts/init.sh b/backend/scripts/init.sh index c72f542f..a884323f 100644 --- a/backend/scripts/init.sh +++ b/backend/scripts/init.sh @@ -1,11 +1,11 @@ #!/bin/bash -# Yuxi-Know Initialization Script for Bash/Linux/macOS -# This script helps set up the environment for the Yuxi-Know project +# Yuxi Initialization Script for Bash/Linux/macOS +# This script helps set up the environment for the Yuxi project set -e -echo "🚀 Initializing Yuxi-Know project..." +echo "🚀 Initializing Yuxi project..." echo "==================================" # Check if .env file exists diff --git a/backend/server/routers/knowledge_router.py b/backend/server/routers/knowledge_router.py index 3f4c402a..53cdfdb5 100644 --- a/backend/server/routers/knowledge_router.py +++ b/backend/server/routers/knowledge_router.py @@ -1362,7 +1362,7 @@ async def get_supported_file_types(current_user: User = Depends(get_admin_user)) @knowledge.post("/files/markdown") async def mark_it_down(file: UploadFile = File(...), current_user: User = Depends(get_admin_user)): - """调用 src.knowledge.indexing 下面的 process_file_to_markdown 解析为 markdown,参数是文件,需要管理员权限""" + """调用 yuxi.knowledge.indexing 下面的 process_file_to_markdown 解析为 markdown,参数是文件,需要管理员权限""" try: content = await file.read() markdown_content = await process_file_to_markdown(content) diff --git a/backend/test/run_tests.sh b/backend/test/run_tests.sh index 3819743e..bdd82ebf 100755 --- a/backend/test/run_tests.sh +++ b/backend/test/run_tests.sh @@ -3,7 +3,7 @@ # 测试脚本运行器 # 提供快速运行不同类型测试的方法 -echo "Yuxi-Know API 测试运行器" +echo "Yuxi API 测试运行器" echo "========================" # 检查测试服务是否运行 diff --git a/backend/test/test_dify_kb.py b/backend/test/test_dify_kb.py index a5a886a5..4a6493d6 100644 --- a/backend/test/test_dify_kb.py +++ b/backend/test/test_dify_kb.py @@ -79,7 +79,7 @@ async def test_dify_kb_aquery_maps_records(monkeypatch, tmp_path): } monkeypatch.setattr( - "src.knowledge.implementations.dify.httpx.AsyncClient", + "yuxi.knowledge.implementations.dify.httpx.AsyncClient", lambda **kwargs: _FakeAsyncClient(response_payload=payload, **kwargs), ) @@ -110,7 +110,7 @@ async def test_dify_kb_aquery_error_returns_empty(monkeypatch, tmp_path): } monkeypatch.setattr( - "src.knowledge.implementations.dify.httpx.AsyncClient", + "yuxi.knowledge.implementations.dify.httpx.AsyncClient", lambda **kwargs: _FakeAsyncClient(raises=RuntimeError("boom"), **kwargs), ) diff --git a/backend/test/test_graph_unit.py b/backend/test/test_graph_unit.py index 6e38638c..9bbc1cde 100644 --- a/backend/test/test_graph_unit.py +++ b/backend/test/test_graph_unit.py @@ -36,7 +36,7 @@ async def test_txt_add_vector_entity_parsing(): mock_session.execute_write.side_effect = side_effect_execute_write # Mock embedding model - with patch("src.models.select_embedding_model") as mock_select_model: + with patch("yuxi.models.select_embedding_model") as mock_select_model: mock_embed_model = MagicMock() mock_select_model.return_value = mock_embed_model @@ -52,14 +52,14 @@ async def test_txt_add_vector_entity_parsing(): gd.embed_model_name = "test_model" # Mock config where it's imported in upload_graph_service.py - # The import is `from src import config`, so patch at the usage location + # The import is `from yuxi import config`, so patch at the usage location mock_config = MagicMock() mock_config.embed_model = "test_model" mock_embed_info = MagicMock() mock_embed_info.dimension = 1024 mock_config.embed_model_names = {"test_model": mock_embed_info} - with patch("src.knowledge.graphs.upload_graph_service.config", mock_config): + with patch("yuxi.knowledge.graphs.upload_graph_service.config", mock_config): # Test data: Mixed format triples = [ # Legacy format diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 164b7ff6..971a49b0 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -5,7 +5,7 @@ import markdownItTaskCheckbox from 'markdown-it-task-checkbox' // https://vitepress.dev/reference/site-config export default defineConfig({ lang: 'zh-CN', - title: "Yuxi-Know", + title: "Yuxi", description: "语析", base: '/Yuxi-Know/', srcDir: './', @@ -35,7 +35,7 @@ export default defineConfig({ { text: '简介', items: [ - { text: '什么是 Yuxi-Know?', link: '/latest/intro/project-overview' }, + { text: '什么是 Yuxi?', link: '/latest/intro/project-overview' }, { text: '快速开始', link: '/latest/intro/quick-start' }, { text: '模型配置', link: '/latest/intro/model-config' }, { text: '知识库与知识图谱', link: '/latest/intro/knowledge-base' }, @@ -77,7 +77,7 @@ export default defineConfig({ { text: '简介', items: [ - { text: '什么是 Yuxi-Know?', link: '/v0.4.0/intro/project-overview' }, + { text: '什么是 Yuxi?', link: '/v0.4.0/intro/project-overview' }, { text: '快速开始', link: '/v0.4.0/intro/quick-start' }, { text: '模型配置', link: '/v0.4.0/intro/model-config' }, { text: '知识库与知识图谱', link: '/v0.4.0/intro/knowledge-base' }, diff --git a/docs/index.md b/docs/index.md index 4ee6b3c7..fdacedb2 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,7 +3,7 @@ layout: home hero: - name: "Yuxi-Know" + name: "Yuxi" text: "智能知识库与知识图谱问答系统" tagline: 基于 LangGraph + Vue.js + FastAPI + LightRAG 架构构建的智能问答平台 image: diff --git a/docs/latest/advanced/branding.md b/docs/latest/advanced/branding.md index 499641b9..0acb6fc4 100644 --- a/docs/latest/advanced/branding.md +++ b/docs/latest/advanced/branding.md @@ -1,18 +1,18 @@ # 品牌自定义 -Yuxi-Know 支持完整的品牌自定义,包括 Logo、组织名称、版权信息、登录协议等,方便企业用户进行品牌定制。 +Yuxi 支持完整的品牌自定义,包括 Logo、组织名称、版权信息、登录协议等,方便企业用户进行品牌定制。 ## 品牌信息配置 ### 步骤 1:复制模板文件 ```bash -cp src/config/static/info.template.yaml src/config/static/info.local.yaml +cp backend/package/yuxi/config/static/info.template.yaml backend/package/yuxi/config/static/info.local.yaml ``` ### 步骤 2:编辑品牌信息 -在 `src/config/static/info.local.yaml` 中配置你的品牌信息: +在 `backend/package/yuxi/config/static/info.local.yaml` 中配置你的品牌信息: - 应用名称 - 组织名称 @@ -25,7 +25,7 @@ cp src/config/static/info.template.yaml src/config/static/info.local.yaml 在 `.env` 中指定配置文件路径: ```env -YUXI_BRAND_FILE_PATH=src/config/static/info.local.yaml +YUXI_BRAND_FILE_PATH=backend/package/yuxi/config/static/info.local.yaml ``` ::: tip 配置优先级 @@ -38,7 +38,7 @@ YUXI_BRAND_FILE_PATH=src/config/static/info.local.yaml ### 配置项 -在 `src/config/static/info.local.yaml` 的 `footer` 下新增以下字段: +在 `backend/package/yuxi/config/static/info.local.yaml` 的 `footer` 下新增以下字段: ```yaml footer: diff --git a/docs/latest/advanced/configuration.md b/docs/latest/advanced/configuration.md index b358e1f8..d1f2d455 100644 --- a/docs/latest/advanced/configuration.md +++ b/docs/latest/advanced/configuration.md @@ -1,10 +1,10 @@ # 配置系统详解 -Yuxi-Know 采用了现代化的配置管理系统,基于 Pydantic BaseModel 和 TOML 格式,提供了类型安全、智能提示和选择性持久化等特性。这套系统既满足了开发者对灵活配置的需求,又保证了运行时的稳定性。 +Yuxi 采用了现代化的配置管理系统,基于 Pydantic BaseModel 和 TOML 格式,提供了类型安全、智能提示和选择性持久化等特性。这套系统既满足了开发者对灵活配置的需求,又保证了运行时的稳定性。 ## 设计理念 -传统的配置文件往往存在以下问题:格式不统一、类型安全缺失、难以追踪哪些配置是用户修改过的。Yuxi-Know 的配置系统针对这些问题给出了解决方案: +传统的配置文件往往存在以下问题:格式不统一、类型安全缺失、难以追踪哪些配置是用户修改过的。Yuxi 的配置系统针对这些问题给出了解决方案: - **类型安全**:基于 Pydantic,所有配置项都有明确的类型定义 - **智能提示**:IDE 可以根据类型定义提供自动补全 @@ -26,7 +26,7 @@ Yuxi-Know 采用了现代化的配置管理系统,基于 Pydantic BaseModel ### 各层作用 -1. **代码默认值**:定义在 `src/config/app.py` 和 `src/config/static/models.py` 中,提供所有配置项的初始值 +1. **代码默认值**:定义在 `backend/package/yuxi/config/app.py` 和 `backend/package/yuxi/config/static/models.py` 中,提供所有配置项的初始值 2. **用户配置**:保存在 `saves/config/base.toml`,只包含用户实际修改过的配置项。这种设计的好处是:当代码更新添加了新配置项时,不会被用户的旧配置文件覆盖 @@ -72,7 +72,7 @@ DEFAULT_CHAT_MODEL_PROVIDERS: dict[str, ChatModelProvider] = { ### 读取配置 ```python -from src.config import config +from yuxi.config import config # 访问配置项 model = config.default_model @@ -82,7 +82,7 @@ reranker_enabled = config.enable_reranker ### 修改配置 ```python -from src.config import config +from yuxi.config import config # 修改配置 config.enable_reranker = True @@ -95,7 +95,7 @@ config.save() ### 配置验证 ```python -from src.config import config +from yuxi.config import config # 检查模型提供商可用性 for provider, status in config.model_provider_status.items(): @@ -112,7 +112,7 @@ embed_models = config.get_embed_model_choices() ### 步骤 1:添加提供商配置 -在 `src/config/static/models.py` 的 `DEFAULT_CHAT_MODEL_PROVIDERS` 字典中添加新条目: +在 `backend/package/yuxi/config/static/models.py` 的 `DEFAULT_CHAT_MODEL_PROVIDERS` 字典中添加新条目: ```python "new-provider": ChatModelProvider( @@ -144,7 +144,7 @@ NEW_PROVIDER_API_KEY=your_api_key_here 配置可以动态修改,无需重启服务: ```python -from src.config import config +from yuxi.config import config # 更新单个配置项 config.enable_reranker = True diff --git a/docs/latest/advanced/deployment.md b/docs/latest/advanced/deployment.md index 5f1ae543..059cb961 100644 --- a/docs/latest/advanced/deployment.md +++ b/docs/latest/advanced/deployment.md @@ -1,6 +1,6 @@ # 生产部署指南 -本文档介绍如何在生产环境中部署 Yuxi-Know。 +本文档介绍如何在生产环境中部署 Yuxi。 ## 前置要求 diff --git a/docs/latest/advanced/document-processing.md b/docs/latest/advanced/document-processing.md index 227b8827..3c0bc228 100644 --- a/docs/latest/advanced/document-processing.md +++ b/docs/latest/advanced/document-processing.md @@ -1,6 +1,6 @@ # 文档处理与 OCR -Yuxi-Know 支持多种文档格式的智能解析,从简单的文本文件到复杂的 PDF 文档,都能自动提取内容并转换为可检索的格式。 +Yuxi 支持多种文档格式的智能解析,从简单的文本文件到复杂的 PDF 文档,都能自动提取内容并转换为可检索的格式。 ## 支持的文件类型 diff --git a/docs/latest/advanced/misc.md b/docs/latest/advanced/misc.md index 85b4df80..fe57f326 100644 --- a/docs/latest/advanced/misc.md +++ b/docs/latest/advanced/misc.md @@ -1,6 +1,6 @@ # 其他配置 -本文档介绍 Yuxi-Know 的其他配置选项,包括内容安全、网页搜索和服务端口等。 +本文档介绍 Yuxi 的其他配置选项,包括内容安全、网页搜索和服务端口等。 ## 内容安全 @@ -22,7 +22,7 @@ **关键词检测** -敏感词库位于 `src/config/static/bad_keywords.txt`,每行一个关键词。修改后实时生效,无需重启服务。 +敏感词库位于 `backend/package/yuxi/config/static/bad_keywords.txt`,每行一个关键词。修改后实时生效,无需重启服务。 **LLM 检测** diff --git a/docs/latest/agents/agents-config.md b/docs/latest/agents/agents-config.md index 5bc91ed4..390a69a2 100644 --- a/docs/latest/agents/agents-config.md +++ b/docs/latest/agents/agents-config.md @@ -1,6 +1,6 @@ # 智能体开发指南 -Yuxi-Know 的智能体系统基于 LangGraph 构建,提供了灵活而强大的 Agent 开发能力。通过统一的 `AgentManager`,系统能够自动发现和管理所有智能体,让开发者能够专注于业务逻辑的实现。 +Yuxi 的智能体系统基于 LangGraph 构建,提供了灵活而强大的 Agent 开发能力。通过统一的 `AgentManager`,系统能够自动发现和管理所有智能体,让开发者能够专注于业务逻辑的实现。 ## 智能体架构 @@ -15,7 +15,7 @@ Yuxi-Know 的智能体系统基于 LangGraph 构建,提供了灵活而强大 ### 自动发现机制 -智能体采用自动发现模式。在 `src/agents/__init__.py` 中,系统会遍历 `src/agents` 目录,自动注册所有继承自 `BaseAgent` 的类。这意味着开发者只需要按照规范编写代码,智能体就会自动被系统识别,无需手动配置。 +智能体采用自动发现模式。在 `backend/package/yuxi/agents/__init__.py` 中,系统会遍历 `backend/package/yuxi/agents` 目录,自动注册所有继承自 `BaseAgent` 的类。这意味着开发者只需要按照规范编写代码,智能体就会自动被系统识别,无需手动配置。 仓库预置了几个可以直接使用的智能体示例: @@ -29,10 +29,10 @@ Yuxi-Know 的智能体系统基于 LangGraph 构建,提供了灵活而强大 ### 目录结构 -在 `src/agents` 目录下创建新的智能体包,建议保持以下结构: +在 `backend/package/yuxi/agents` 目录下创建新的智能体包,建议保持以下结构: ``` -src/agents/ +backend/package/yuxi/agents/ └── my_agent/ ├── __init__.py # 暴露主类 ├── graph.py # Graph 构造逻辑 @@ -44,7 +44,7 @@ src/agents/ 智能体类需要继承 `BaseAgent` 并实现异步的 `get_graph` 方法: ```python -from src.agents.common import BaseAgent +from yuxi.agents.common import BaseAgent from langgraph.prebuilt import create_agent class MyAgent(BaseAgent): diff --git a/docs/latest/agents/context-config.md b/docs/latest/agents/context-config.md index abbef9e6..7237f795 100644 --- a/docs/latest/agents/context-config.md +++ b/docs/latest/agents/context-config.md @@ -5,7 +5,7 @@ ## BaseContext 详解 ```python -from src.agents.common import BaseContext +from yuxi.agents.common import BaseContext from dataclasses import dataclass @dataclass(kw_only=True) @@ -38,9 +38,9 @@ class MyAgentContext(BaseContext): 有时需要自定义工具选项,比如 ReporterAgent 需要包含 MySQL 工具: ```python -from src.agents.common import BaseContext, gen_tool_info -from src.agents.common.toolkits.buildin import calculator, query_knowledge_graph -from src.agents.common.toolkits.mysql import get_mysql_tools +from yuxi.agents.common import BaseContext, gen_tool_info +from yuxi.agents.common.toolkits.buildin import calculator, query_knowledge_graph +from yuxi.agents.common.toolkits.mysql import get_mysql_tools @dataclass(kw_only=True) class ReporterContext(BaseContext): diff --git a/docs/latest/agents/middleware.md b/docs/latest/agents/middleware.md index 5027bc85..fa2e031f 100644 --- a/docs/latest/agents/middleware.md +++ b/docs/latest/agents/middleware.md @@ -17,7 +17,7 @@ 支持文件上传功能的中间件。如果智能体需要处理用户上传的文档,可以启用此中间件: ```python -from src.agents.common.middlewares import inject_attachment_context +from yuxi.agents.common.middlewares import inject_attachment_context async def get_graph(self): graph = create_agent( @@ -41,4 +41,4 @@ async def get_graph(self): ## 自定义中间件 -新增中间件时,将其放入 `src/agents/common/middlewares` 目录,然后在智能体的 `middleware` 列表中引用即可。 +新增中间件时,将其放入 `backend/package/yuxi/agents/common/middlewares` 目录,然后在智能体的 `middleware` 列表中引用即可。 diff --git a/docs/latest/agents/skills-management.md b/docs/latest/agents/skills-management.md index 7b993331..50f08e63 100644 --- a/docs/latest/agents/skills-management.md +++ b/docs/latest/agents/skills-management.md @@ -1,6 +1,6 @@ # Skills 管理系统 -Skills 是 Yuxi-Know 系统中用于扩展 Agent 能力的重要机制。通过 Skills,开发者可以将特定的工具、提示词模板或领域知识打包成可复用的技能包,让 Agent 在对话过程中能够调用这些额外能力。 +Skills 是 Yuxi 系统中用于扩展 Agent 能力的重要机制。通过 Skills,开发者可以将特定的工具、提示词模板或领域知识打包成可复用的技能包,让 Agent 在对话过程中能够调用这些额外能力。 ## 为什么需要 Skills @@ -280,4 +280,4 @@ A:系统会在保存依赖配置时进行校验,如果引用的工具或 MCP --- -通过 Skills 机制,Yuxi-Know 为 Agent 提供了一个灵活、可扩展的能力扩展框架。你可以将自己积累的业务知识、工具能力封装成 Skills,让不同的 Agent 复用这些能力,极大地提升了系统的可维护性和复用性。 +通过 Skills 机制,Yuxi 为 Agent 提供了一个灵活、可扩展的能力扩展框架。你可以将自己积累的业务知识、工具能力封装成 Skills,让不同的 Agent 复用这些能力,极大地提升了系统的可维护性和复用性。 diff --git a/docs/latest/agents/tools-system.md b/docs/latest/agents/tools-system.md index da6a7ad7..ed5ea289 100644 --- a/docs/latest/agents/tools-system.md +++ b/docs/latest/agents/tools-system.md @@ -1,6 +1,6 @@ # 工具系统 -Yuxi-Know 提供了统一的工具获取机制,支持多种工具类型的动态组装。 +Yuxi 提供了统一的工具获取机制,支持多种工具类型的动态组装。 ## 工具获取机制 @@ -11,7 +11,7 @@ Yuxi-Know 提供了统一的工具获取机制,支持多种工具类型的动 3. **MCP 工具**:根据 `context.mcps` 加载并过滤的 MCP 服务器工具 ```python -from src.agents.common.tools import get_tools_from_context +from yuxi.agents.common.tools import get_tools_from_context async def get_graph(self, **kwargs): context = self.get_context() @@ -20,16 +20,16 @@ async def get_graph(self, **kwargs): ## 工具注册机制 -Yuxi-Know 的工具系统基于注册机制而非继承体系,这一点与 LangChain 原生的 `@tool` 装饰器有本质区别。 +Yuxi 的工具系统基于注册机制而非继承体系,这一点与 LangChain 原生的 `@tool` 装饰器有本质区别。 -LangChain 的 `@tool` 装饰器通常需要继承特定基类或实现特定接口,创建的工具有着强烈的框架耦合。而 Yuxi-Know 的工具注册表是一个独立的全局注册中心,任何符合规范的函数都可以通过 `@tool` 装饰器注册到系统中,无需继承任何基类,也不需要了解框架内部实现。 +LangChain 的 `@tool` 装饰器通常需要继承特定基类或实现特定接口,创建的工具有着强烈的框架耦合。而 Yuxi 的工具注册表是一个独立的全局注册中心,任何符合规范的函数都可以通过 `@tool` 装饰器注册到系统中,无需继承任何基类,也不需要了解框架内部实现。 -需要特别说明的是,Yuxi-Know 的 `@tool` 装饰器并非全新实现,而是基于 LangChain 原生 `@tool` 的扩展。装饰器的核心逻辑继承自 LangChain,新增了 `category`、`tags`、`display_name` 等元数据字段用于前端展示和分类,原有的 LangChain 特性(如函数参数注解、描述文档等)完全兼容。 +需要特别说明的是,Yuxi 的 `@tool` 装饰器并非全新实现,而是基于 LangChain 原生 `@tool` 的扩展。装饰器的核心逻辑继承自 LangChain,新增了 `category`、`tags`、`display_name` 等元数据字段用于前端展示和分类,原有的 LangChain 特性(如函数参数注解、描述文档等)完全兼容。 -注册表的核心位于 `src/agents/common/toolkits/registry.py`,它维护着一个全局的工具实例列表。当系统启动时,所有导入 `toolkits` 包的模块都会自动执行其内部的工具注册逻辑,这意味着开发者只需要在自己的模块中添加装饰器,工具就会自动被发现和使用。 +注册表的核心位于 `backend/package/yuxi/agents/common/toolkits/registry.py`,它维护着一个全局的工具实例列表。当系统启动时,所有导入 `toolkits` 包的模块都会自动执行其内部的工具注册逻辑,这意味着开发者只需要在自己的模块中添加装饰器,工具就会自动被发现和使用。 ```python -from src.agents.common.toolkits.registry import tool +from yuxi.agents.common.toolkits.registry import tool @tool(category="buildin", tags=["计算"], display_name="计算器") def calculator(a: float, b: float, operation: str) -> float: @@ -54,7 +54,7 @@ def calculator(a: float, b: float, operation: str) -> float: 与内置工具不同,知识库工具是动态生成的。当在智能体配置中指定 `context.knowledges` 时,系统会根据指定的 knowledge 名称动态创建对应的检索工具。这种设计使得知识库工具不需要预先注册,而是在运行时按需生成。 ```python -from src.agents.common.toolkits.kbs import get_common_kb_tools +from yuxi.agents.common.toolkits.kbs import get_common_kb_tools kb_tools = get_common_kb_tools(knowledge_names=["kb1", "kb2"]) ``` diff --git a/docs/latest/changelog/contributing.md b/docs/latest/changelog/contributing.md index 59073f1b..16a456b9 100644 --- a/docs/latest/changelog/contributing.md +++ b/docs/latest/changelog/contributing.md @@ -1,6 +1,6 @@ # 参与贡献 -感谢你对 Yuxi-Know 项目的兴趣!我们欢迎任何形式的贡献,包括但不限于代码提交、功能建议、问题反馈和文档改进。 +感谢你对 Yuxi 项目的兴趣!我们欢迎任何形式的贡献,包括但不限于代码提交、功能建议、问题反馈和文档改进。 贡献者名单 diff --git a/docs/latest/changelog/faq.md b/docs/latest/changelog/faq.md index dcacfd13..6419a094 100644 --- a/docs/latest/changelog/faq.md +++ b/docs/latest/changelog/faq.md @@ -1,6 +1,6 @@ # 常见问题 -以下是 Yuxi-Know 在安装和使用过程中最常见的问题及其解决方案。 +以下是 Yuxi 在安装和使用过程中最常见的问题及其解决方案。 ## Docker 与启动问题 diff --git a/docs/latest/changelog/run-architecture-migration-v4.md b/docs/latest/changelog/run-architecture-migration-v4.md index 8a1b5157..6b229134 100644 --- a/docs/latest/changelog/run-architecture-migration-v4.md +++ b/docs/latest/changelog/run-architecture-migration-v4.md @@ -148,14 +148,14 @@ sequenceDiagram ### 后端 -1. `/Yuxi-Know/src/services/run_queue_service.py` -2. `/Yuxi-Know/src/services/run_worker.py` -3. `/Yuxi-Know/src/services/agent_run_service.py` -4. `/Yuxi-Know/src/repositories/agent_run_repository.py` +1. `/Yuxi-Know/backend/package/yuxi/services/run_queue_service.py` +2. `/Yuxi-Know/backend/package/yuxi/services/run_worker.py` +3. `/Yuxi-Know/backend/package/yuxi/services/agent_run_service.py` +4. `/Yuxi-Know/backend/package/yuxi/repositories/agent_run_repository.py` 5. `/Yuxi-Know/server/routers/chat_router.py` 6. `/Yuxi-Know/server/worker_main.py` -7. `/Yuxi-Know/src/storage/postgres/manager.py` -8. `/Yuxi-Know/src/storage/postgres/models_business.py` +7. `/Yuxi-Know/backend/package/yuxi/storage/postgres/manager.py` +8. `/Yuxi-Know/backend/package/yuxi/storage/postgres/models_business.py` ### 前端 diff --git a/docs/latest/intro/knowledge-base.md b/docs/latest/intro/knowledge-base.md index ceafe5b8..7788679a 100644 --- a/docs/latest/intro/knowledge-base.md +++ b/docs/latest/intro/knowledge-base.md @@ -1,6 +1,6 @@ # 知识库与知识图谱 -Yuxi-Know 提供了强大的知识管理能力,将知识以向量和图谱两种形式存储,既支持传统的语义检索,又能构建结构化的知识关系网络。 +Yuxi 提供了强大的知识管理能力,将知识以向量和图谱两种形式存储,既支持传统的语义检索,又能构建结构化的知识关系网络。 ## 为什么需要知识库 @@ -161,4 +161,4 @@ POST /api/knowledge/databases/{db_id}/documents --- -知识库是 Yuxi-Know 的核心能力之一,通过本文档的介绍,你应该能够掌握创建和使用知识库的基本方法。对于更高级的用法,如评估基准构建、图增强检索优化等,可以进一步探索系统的其他功能。 +知识库是 Yuxi 的核心能力之一,通过本文档的介绍,你应该能够掌握创建和使用知识库的基本方法。对于更高级的用法,如评估基准构建、图增强检索优化等,可以进一步探索系统的其他功能。 diff --git a/docs/latest/intro/model-config.md b/docs/latest/intro/model-config.md index 55fe1bd6..600a9e6f 100644 --- a/docs/latest/intro/model-config.md +++ b/docs/latest/intro/model-config.md @@ -182,7 +182,7 @@ models = [ #### 1. 配置模型信息 -在 `src/config/static/models.py` 中的默认配置部分添加: +在 `backend/package/yuxi/config/static/models.py` 中的默认配置部分添加: ```python # 默认嵌入模型配置 @@ -214,8 +214,8 @@ DEFAULT_RERANKERS: dict[str, RerankerInfo] = { 你也可以通过代码动态添加本地模型: ```python -from src.config import config -from src.config.static.models import EmbedModelInfo, RerankerInfo +from yuxi.config import config +from yuxi.config.static.models import EmbedModelInfo, RerankerInfo # 添加本地嵌入模型 config.embed_model_names["local/embed-model"] = EmbedModelInfo( diff --git a/docs/latest/intro/project-overview.md b/docs/latest/intro/project-overview.md index b07e61a3..e28ab031 100644 --- a/docs/latest/intro/project-overview.md +++ b/docs/latest/intro/project-overview.md @@ -1,6 +1,6 @@ # 项目简介 -Yuxi-Know(语析)是一个基于大模型的智能知识库与知识图谱智能体开发平台。它融合了 RAG(检索增强生成)技术与知识图谱技术,为用户提供智能问答和知识管理服务。 +Yuxi(语析)是一个基于大模型的智能知识库与知识图谱智能体开发平台。它融合了 RAG(检索增强生成)技术与知识图谱技术,为用户提供智能问答和知识管理服务。 ## 设计理念 @@ -62,7 +62,7 @@ Yuxi-Know(语析)是一个基于大模型的智能知识库与知识图谱 ## 适用场景 -Yuxi-Know 适用于以下场景: +Yuxi 适用于以下场景: - **企业知识库**:构建私有知识问答系统 - **智能客服**:基于文档的自动问答 diff --git a/docs/latest/intro/quick-start.md b/docs/latest/intro/quick-start.md index c45e77ec..cf3b1da4 100644 --- a/docs/latest/intro/quick-start.md +++ b/docs/latest/intro/quick-start.md @@ -1,6 +1,6 @@ # 快速开始指南 -Yuxi-Know(语析)是一个基于知识图谱和向量数据库的智能知识库系统。通过本文档,你可以在几分钟内完成环境搭建并开始使用。 +Yuxi(语析)是一个基于知识图谱和向量数据库的智能知识库系统。通过本文档,你可以在几分钟内完成环境搭建并开始使用。 ::: tip 提示 除了此文档网站外,你还可以访问 [Zread](https://zread.ai/xerrors/Yuxi-Know) 或 [DeepWiki](https://deepwiki.com/xerrors/Yuxi-Know) 查看自动生成的详细项目文档。 diff --git a/docs/v0.4.0/advanced/agents-config.md b/docs/v0.4.0/advanced/agents-config.md index 6547098b..400240c4 100644 --- a/docs/v0.4.0/advanced/agents-config.md +++ b/docs/v0.4.0/advanced/agents-config.md @@ -2,7 +2,7 @@ ## 智能体开发 -系统基于 [LangGraph](https://github.com/langchain-ai/langgraph) 并通过统一的 `AgentManager` 管理所有智能体。`src/agents/__init__.py` 会在启动时遍历 `src/agents` 目录,对每个包含 `__init__.py` 的子包执行自动发现:所有继承 `BaseAgent` 的类都会被注册并立即初始化,因此只要代码落位正确,就不需要再手动登记或修改管理器。 +系统基于 [LangGraph](https://github.com/langchain-ai/langgraph) 并通过统一的 `AgentManager` 管理所有智能体。`backend/package/yuxi/agents/__init__.py` 会在启动时遍历 `backend/package/yuxi/agents` 目录,对每个包含 `__init__.py` 的子包执行自动发现:所有继承 `BaseAgent` 的类都会被注册并立即初始化,因此只要代码落位正确,就不需要再手动登记或修改管理器。 仓库预置了若干可直接运行的智能体:`chatbot` 聚焦对话与动态工具调度,`reporter` 演示报告类链路。这些目录展示了上下文类、Graph 构造方式、子智能体引用以及中间件组合的范例,新增功能时可以直接复用。 @@ -14,29 +14,29 @@ - `description`: 智能体功能描述 - `examples`: 示例问题列表(数组格式) -例如,`src/agents/chatbot/metadata.toml`: +例如,`backend/package/yuxi/agents/chatbot/metadata.toml`: -<<< @/../src/agents/chatbot/metadata.toml +<<< @/../backend/package/yuxi/agents/chatbot/metadata.toml **注意**:`metadata.toml` 文件是可选的,如果没有提供,系统将使用智能体类的基本属性。 ### 创建新的智能体 -在 `src/agents` 下新建一个包,保持与现有目录一致的结构:放置 Graph 构造逻辑(通常命名为 `graph.py`),并在包内的 `__init__.py` 中暴露主类。 +在 `backend/package/yuxi/agents` 下新建一个包,保持与现有目录一致的结构:放置 Graph 构造逻辑(通常命名为 `graph.py`),并在包内的 `__init__.py` 中暴露主类。 -智能体类必须继承 `src.agents.common.BaseAgent`,同时实现异步的 `get_graph` 方法来返回编译后的 LangGraph 实例,并配置好 `checkpointer`,否则无法从历史对话中恢复。 +智能体类必须继承 `yuxi.agents.common.BaseAgent`,同时实现异步的 `get_graph` 方法来返回编译后的 LangGraph 实例,并配置好 `checkpointer`,否则无法从历史对话中恢复。 需要额外上下文字段时,可继承 `BaseContext` 构建自己的配置表单,再把类绑定到 `context_schema`,平台会在 `saves/agents/` 下生成默认配置。 案例 基于MySQL工具,以及自定义 MCP Server 的数据库报表助手。 -<<< @/../src/agents/reporter/graph.py +<<< @/../backend/package/yuxi/agents/reporter/graph.py 智能体实例的生命周期交给管理器处理,会在自动发现时完成初始化并缓存单例,以便快速响应请求。在容器内热重载时,只要保存文件即可触发重新导入;需要强制刷新可调用 `agent_manager.get_agent(, reload=True)`。 -更多动态工具选择与 MCP 注册的例子,见 `src/agents/chatbot/graph.py` 中的中间件组合。 +更多动态工具选择与 MCP 注册的例子,见 `backend/package/yuxi/agents/chatbot/graph.py` 中的中间件组合。 ### 拓展现有智能体 @@ -46,13 +46,13 @@ ### 子智能体与中间件 -子智能体集中放在 `src/agents/common/subagents` 目录,典型例子是 `calc_agent`,它通过 LangChain 的 `create_agent` 构建计算器能力并以工具暴露给主图。新增子智能体时沿用这一结构:在目录内编写封装函数与 `@tool` 装饰器,导出后即可被任意智能体调用。 +子智能体集中放在 `backend/package/yuxi/agents/common/subagents` 目录,典型例子是 `calc_agent`,它通过 LangChain 的 `create_agent` 构建计算器能力并以工具暴露给主图。新增子智能体时沿用这一结构:在目录内编写封装函数与 `@tool` 装饰器,导出后即可被任意智能体调用。 -中间件位于 `src/agents/common/middlewares`,包含上下文感知提示词、模型选择、动态工具加载以及附件注入等实现。如果需要编写新的中间件,请遵循 LangChain 官方文档中对 `AgentMiddleware`、`ModelRequest`、`ModelResponse` 等接口的定义,完成后在该目录的 `__init__.py` 暴露入口,主智能体即可在 `middleware` 列表中引用。 +中间件位于 `backend/package/yuxi/agents/common/middlewares`,包含上下文感知提示词、模型选择、动态工具加载以及附件注入等实现。如果需要编写新的中间件,请遵循 LangChain 官方文档中对 `AgentMiddleware`、`ModelRequest`、`ModelResponse` 等接口的定义,完成后在该目录的 `__init__.py` 暴露入口,主智能体即可在 `middleware` 列表中引用。 #### 文件上传中间件 -文件上传功能通过 `inject_attachment_context` 中间件实现(位于 `src/agents/common/middlewares/attachment_middleware.py`)。该中间件基于 LangChain 1.0 的 `AgentMiddleware` 标准实现,具有以下特点: +文件上传功能通过 `inject_attachment_context` 中间件实现(位于 `backend/package/yuxi/agents/common/middlewares/attachment_middleware.py`)。该中间件基于 LangChain 1.0 的 `AgentMiddleware` 标准实现,具有以下特点: 1. **状态扩展**:定义 `AttachmentState` 扩展 `AgentState`,添加可选的 `attachments` 字段 2. **自动注入**:在模型调用前,从 `request.state` 中读取附件并转换为 `SystemMessage` @@ -72,7 +72,7 @@ class MyAgent(BaseAgent): **步骤 2:添加中间件**(让智能体能够处理附件内容) ```python -from src.agents.common.middlewares import inject_attachment_context +from yuxi.agents.common.middlewares import inject_attachment_context async def get_graph(self): graph = create_agent( @@ -102,7 +102,7 @@ async def get_graph(self): 系统会根据配置自动组装工具集合,涵盖知识图谱查询、向量检索生成的动态工具、MySQL 只读查询能力、Tavily 搜索以及所有注册的 MCP 工具。 -工具的启用状态和描述由配置文件或环境变量决定,当依赖缺失时会被中间件自动忽略,从而避免在图中加载不可用能力。MCP Server 的接入方式保持不变,只需在 `src/agents/common/mcp.py` 的 `MCP_SERVERS` 中填入服务地址与 `transport` 类型,如需更多范式可参阅 LangChain 官方文档。 +工具的启用状态和描述由配置文件或环境变量决定,当依赖缺失时会被中间件自动忽略,从而避免在图中加载不可用能力。MCP Server 的接入方式保持不变,只需在 `backend/package/yuxi/agents/common/mcp.py` 的 `MCP_SERVERS` 中填入服务地址与 `transport` 类型,如需更多范式可参阅 LangChain 官方文档。 ### MCP 服务器配置方式 @@ -172,7 +172,7 @@ MCP_SERVERS = { "tool", "run", "arxiv-mcp-server", - "--storage-path", "src/agents/mcp_repos/arxiv-mcp-server" + "--storage-path", "backend/package/yuxi/agents/mcp_repos/arxiv-mcp-server" ], "transport": "stdio" } @@ -197,7 +197,7 @@ MCP_SERVERS = { 系统支持动态加载 MCP 工具: ```python -from src.agents.common.mcp import get_mcp_tools, add_mcp_server +from yuxi.agents.common.mcp import get_mcp_tools, add_mcp_server # 获取特定服务器的工具 tools = await get_mcp_tools("sequentialthinking") @@ -227,7 +227,7 @@ MYSQL_PORT=3306 MYSQL_CHARSET=utf8mb4 ``` -所有查询限定在只读范围(SELECT、SHOW、DESCRIBE、EXPLAIN),请求会经过表名校验与超时控制,默认限制 60 秒与 100 行输出,并可通过配置调整上限。连接信息会反馈给 LangGraph,智能体可以自动陈述数据库用途并选择更准确的检索策略。详见代码部分 `src/agents/common/toolkits/mysql/` +所有查询限定在只读范围(SELECT、SHOW、DESCRIBE、EXPLAIN),请求会经过表名校验与超时控制,默认限制 60 秒与 100 行输出,并可通过配置调整上限。连接信息会反馈给 LangGraph,智能体可以自动陈述数据库用途并选择更准确的检索策略。详见代码部分 `backend/package/yuxi/agents/common/toolkits/mysql/` ### 多模态图片支持 diff --git a/docs/v0.4.0/advanced/branding.md b/docs/v0.4.0/advanced/branding.md index 6a841cfc..514e927f 100644 --- a/docs/v0.4.0/advanced/branding.md +++ b/docs/v0.4.0/advanced/branding.md @@ -7,14 +7,14 @@ ### 1. 复制模板文件 ```bash -cp src/config/static/info.template.yaml src/config/static/info.local.yaml +cp backend/package/yuxi/config/static/info.template.yaml backend/package/yuxi/config/static/info.local.yaml ``` ### 2. 编辑品牌信息 -在 `src/config/static/info.local.yaml` 中配置: +在 `backend/package/yuxi/config/static/info.local.yaml` 中配置: -<<< @/../src/config/static/info.template.yaml +<<< @/../backend/package/yuxi/config/static/info.template.yaml 上述中提到的 ICON 预设了下面这些,如果需要更多的 ICONS,可以手动从 `lucide-vue-next` 中引入。 @@ -25,7 +25,7 @@ cp src/config/static/info.template.yaml src/config/static/info.local.yaml 在 `.env` 文件中指定配置文件路径: ```bash -YUXI_BRAND_FILE_PATH=src/config/static/info.local.yaml +YUXI_BRAND_FILE_PATH=backend/package/yuxi/config/static/info.local.yaml ``` ::: tip 配置优先级 diff --git a/docs/v0.4.0/advanced/configuration.md b/docs/v0.4.0/advanced/configuration.md index 456fdb77..6f8866ca 100644 --- a/docs/v0.4.0/advanced/configuration.md +++ b/docs/v0.4.0/advanced/configuration.md @@ -11,8 +11,8 @@ Yuxi-Know 从 v0.3.x 版本开始采用了全新的配置系统,基于 Pydanti ``` 配置系统架构 ├── 默认配置 (代码定义) -│ ├── src/config/static/models.py (模型配置) -│ └── src/config/app.py (应用配置) +│ ├── backend/package/yuxi/config/static/models.py (模型配置) +│ └── backend/package/yuxi/config/app.py (应用配置) ├── 用户配置 (TOML 文件) │ └── saves/config/base.toml (仅保存用户修改) └── 环境变量 (运行时覆盖) @@ -21,7 +21,7 @@ Yuxi-Know 从 v0.3.x 版本开始采用了全新的配置系统,基于 Pydanti ### 核心组件 -#### 1. Config 类 (`src/config/app.py`) +#### 1. Config 类 (`backend/package/yuxi/config/app.py`) 主配置类,继承自 Pydantic BaseModel,提供: @@ -44,7 +44,7 @@ class Config(BaseModel): model_provider_status: dict[str, bool] = Field(exclude=True) ``` -#### 2. 模型配置类 (`src/config/static/models.py`) +#### 2. 模型配置类 (`backend/package/yuxi/config/static/models.py`) 定义了三种类型的模型配置: @@ -95,7 +95,7 @@ config.save() # 只保存 enable_reranker 到 TOML 文件 # enable_reranker = true ``` -### 默认模型配置 (`src/config/static/models.py`) +### 默认模型配置 (`backend/package/yuxi/config/static/models.py`) 包含所有支持的模型提供商的默认配置,开发者可以直接修改此文件添加新的模型: @@ -140,7 +140,7 @@ models = [ ### 动态配置更新 ```python -from src.config import config +from yuxi.config import config # 更新配置 config.enable_reranker = True @@ -160,7 +160,7 @@ config._save_models_to_file("siliconflow") ```python # 验证配置 -from src.config import config +from yuxi.config import config # 检查模型提供商可用性 for provider, status in config.model_provider_status.items(): diff --git a/docs/v0.4.0/advanced/misc.md b/docs/v0.4.0/advanced/misc.md index 3872da1a..422f16ac 100644 --- a/docs/v0.4.0/advanced/misc.md +++ b/docs/v0.4.0/advanced/misc.md @@ -7,11 +7,11 @@ 检测流程为,接收到用户输入之后,就对用户的输入进行检测是否合规,同时在流式传输的过程中进行实时检测(仅关键词)。当流式输出结束之后,则开始检测整个内容。 **注意**,使用 LLM 检测虽然可以大大缓解提示词注入带来的问题,但也会在用户交互上带来延迟影响,需要考虑是否启用。 -对于关键词检测,敏感词词库位于 `src/config/static/bad_keywords.txt` 文件,每行一个关键词,实时生效,无需重启服务。 +对于关键词检测,敏感词词库位于 `backend/package/yuxi/config/static/bad_keywords.txt` 文件,每行一个关键词,实时生效,无需重启服务。 -对于 LLM 检测,Prompt 可以看到 `src/plugins/guard.py`: +对于 LLM 检测,Prompt 可以看到 `backend/package/yuxi/plugins/guard.py`: -<<< @/../src/plugins/guard.py#guard_prompt +<<< @/../backend/package/yuxi/plugins/guard.py#guard_prompt ## 网页搜索 diff --git a/docs/v0.4.0/intro/model-config.md b/docs/v0.4.0/intro/model-config.md index b7afba61..867ebd7b 100644 --- a/docs/v0.4.0/intro/model-config.md +++ b/docs/v0.4.0/intro/model-config.md @@ -40,7 +40,7 @@ default_model: siliconflow/deepseek-ai/DeepSeek-V3.2 ::: tip 配置系统升级 (v0.3.x) 从 `v0.3.x` 版本开始,模型配置系统已升级为基于 Pydantic BaseModel 的类型安全配置,支持 TOML 格式的用户配置文件。 -- **默认配置**: `src/config/static/models.py` (Python 代码) +- **默认配置**: `backend/package/yuxi/config/static/models.py` (Python 代码) - **用户配置**: `saves/config/base.toml` (TOML 格式,仅保存用户修改) - **自定义供应商**: `saves/config/custom_providers.toml` (独立配置文件) ::: @@ -156,7 +156,7 @@ models = [ #### 1. 配置模型信息 -在 `src/config/static/models.py` 中的默认配置部分添加: +在 `backend/package/yuxi/config/static/models.py` 中的默认配置部分添加: ```python # 默认嵌入模型配置 @@ -188,8 +188,8 @@ DEFAULT_RERANKERS: dict[str, RerankerInfo] = { 你也可以通过代码动态添加本地模型: ```python -from src.config import config -from src.config.static.models import EmbedModelInfo, RerankerInfo +from yuxi.config import config +from yuxi.config.static.models import EmbedModelInfo, RerankerInfo # 添加本地嵌入模型 config.embed_model_names["local/embed-model"] = EmbedModelInfo( diff --git a/package-lock.json b/package-lock.json index 5a0691fe..4536b291 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "Yuxi-Know", + "name": "Yuxi", "lockfileVersion": 3, "requires": true, "packages": { diff --git a/src/agents/common/toolkits/buildin/tools.py b/src/agents/common/toolkits/buildin/tools.py index 66a397ce..97b0f8dd 100644 --- a/src/agents/common/toolkits/buildin/tools.py +++ b/src/agents/common/toolkits/buildin/tools.py @@ -6,11 +6,11 @@ from typing import Annotated, Any import requests from langgraph.types import interrupt -from src import config, graph_base -from src.agents.common.toolkits.registry import ToolExtraMetadata, _all_tool_instances, _extra_registry, tool -from src.storage.minio import aupload_file_to_minio -from src.utils import logger -from src.utils.question_utils import normalize_questions +from yuxi import config, graph_base +from yuxi.agents.common.toolkits.registry import ToolExtraMetadata, _all_tool_instances, _extra_registry, tool +from yuxi.storage.minio import aupload_file_to_minio +from yuxi.utils import logger +from yuxi.utils.question_utils import normalize_questions # Lazy initialization for TavilySearch (only when API key is available) _tavily_search_instance = None diff --git a/src/services/chat_stream_service.py b/src/services/chat_stream_service.py index 245b7e1d..d5ea7d91 100644 --- a/src/services/chat_stream_service.py +++ b/src/services/chat_stream_service.py @@ -9,17 +9,17 @@ from typing import Any from langchain.messages import AIMessage, AIMessageChunk, HumanMessage from langgraph.types import Command -from src import config as conf -from src.agents import agent_manager -from src.plugins.guard import content_guard -from src.repositories.agent_config_repository import AgentConfigRepository -from src.repositories.conversation_repository import ConversationRepository -from src.storage.postgres.manager import pg_manager -from src.utils.logging_config import logger -from src.utils.question_utils import ( +from yuxi import config as conf +from yuxi.agents import agent_manager +from yuxi.plugins.guard import content_guard +from yuxi.repositories.agent_config_repository import AgentConfigRepository +from yuxi.repositories.conversation_repository import ConversationRepository +from yuxi.storage.postgres.manager import pg_manager +from yuxi.utils.logging_config import logger +from yuxi.utils.question_utils import ( normalize_options as _normalize_interrupt_options, ) -from src.utils.question_utils import ( +from yuxi.utils.question_utils import ( normalize_questions as _normalize_interrupt_questions, ) diff --git a/web/package.json b/web/package.json index 9861148f..3551ad56 100644 --- a/web/package.json +++ b/web/package.json @@ -1,5 +1,5 @@ { - "name": "yuxi-know-web", + "name": "yuxi-web", "version": "0.5.3.web", "private": true, "scripts": { diff --git a/web/src/components/ChatSidebarComponent.vue b/web/src/components/ChatSidebarComponent.vue index c24da204..07773148 100644 --- a/web/src/components/ChatSidebarComponent.vue +++ b/web/src/components/ChatSidebarComponent.vue @@ -12,7 +12,7 @@ alt="logo" class="brand-logo" /> -
{{ branding.name || organization.name || 'Yuxi-Know' }}
+
{{ branding.name || organization.name || 'Yuxi' }}
{ }) const brandName = computed(() => { const orgName = brandOrgName.value - const brandNameRaw = infoStore.branding?.name?.trim() || 'Yuxi-Know' + const brandNameRaw = infoStore.branding?.name?.trim() || 'Yuxi' if (orgName && brandNameRaw && orgName !== brandNameRaw) { return brandNameRaw