diff --git a/README.en.md b/README.en.md index 09a14795..620364d0 100644 --- a/README.en.md +++ b/README.en.md @@ -24,6 +24,8 @@ Yuxi is an LLM-powered platform for building knowledge-base and knowledge-graph agents. It unifies **RAG retrieval**, **Milvus-backed in-knowledge-base graphs**, and **LangGraph multi-agent orchestration** into a single multi-tenant workspace: administrators configure knowledge bases, models, and permissions, while users chat — in a ChatGPT-like interface — with agents that can mount Skills, MCPs, sub-agents, and sandbox tools, and receive answers with cited sources, graph-based reasoning, and deliverable artifacts. +Navigation: [Introduction](https://xerrors.github.io/Yuxi/) | [Quick Start](https://xerrors.github.io/Yuxi/intro/quick-start) | [Roadmap](https://xerrors.github.io/Yuxi/develop-guides/roadmap); for the latest updates, see the [changelog](https://xerrors.github.io/Yuxi/develop-guides/changelog). + ## Core Features - 🤖 **Agent development** — Built on LangGraph, with sub-agents (SubAgents), Skills, MCPs, Tools, and middleware; long-running tasks run asynchronously on a background worker, backed by a sandbox file system for persisting, previewing, and downloading tool artifacts. @@ -52,7 +54,7 @@ Yuxi is an LLM-powered platform for building knowledge-base and knowledge-graph **1. Clone and initialize** ```bash -git clone --branch v0.7.0.beta2 --depth 1 https://github.com/xerrors/Yuxi.git +git clone --branch v0.7.0.beta3 --depth 1 https://github.com/xerrors/Yuxi.git cd Yuxi # Linux/macOS diff --git a/README.md b/README.md index a41f24bb..3b816532 100644 --- a/README.md +++ b/README.md @@ -7,31 +7,25 @@ [![](https://img.shields.io/github/issues/xerrors/Yuxi?color=F48D73)](https://github.com/xerrors/Yuxi/issues) [![License](https://img.shields.io/github/license/bitcookies/winrar-keygen.svg?logo=github)](https://github.com/xerrors/Yuxi/blob/main/LICENSE) [![DeepWiki](https://img.shields.io/badge/DeepWiki-blue.svg)](https://deepwiki.com/xerrors/Yuxi) -[![demo](https://img.shields.io/badge/demo-00A1D6.svg?style=flat&logo=bilibili&logoColor=white)](https://www.bilibili.com/video/BV1TZEx6NEit/) xerrors%2FYuxi | Trendshift -[[文档]](https://xerrors.github.io/Yuxi) · [[English]](README.en.md) +[[项目文档]](https://xerrors.github.io/Yuxi) · [[English]](README.en.md) ![arch](https://xerrors.oss-cn-shanghai.aliyuncs.com/github/arch.png) -**图由 GPT-Image-2 生成* - ## 简介 语析(Yuxi)是一个基于大模型的智能知识库与知识图谱智能体开发平台。它把 **RAG 检索**、**Milvus 知识库内知识图谱** 与 **LangGraph 多智能体编排** 整合进统一的多租户工作台:管理员配置知识库、模型与权限,用户在类 ChatGPT 的界面中与可挂载 Skills、MCP、子智能体和沙盒工具的智能体对话,并获得带引用来源、知识图谱推理与可交付产物的回答。 -## 核心特性 +导航:[项目介绍](https://xerrors.github.io/Yuxi/) | [快速开始](https://xerrors.github.io/Yuxi/intro/quick-start) | [开发路线图](https://xerrors.github.io/Yuxi/develop-guides/roadmap);最新开发动态,详见 [changelog](https://xerrors.github.io/Yuxi/develop-guides/changelog)。 -- 🤖 **智能体开发** —— 基于 LangGraph 构建,支持子智能体(SubAgents)、Skills、MCP、Tools 与中间件机制;长耗时任务由后台 worker 异步执行,配套沙盒文件系统支持工具产物落盘、预览与下载。 -- 📚 **知识库(RAG)** —— 多格式文档解析(MinerU / PaddleX / OCR),可配置 Embedding 与 Rerank 模型,支持知识库评估与 PDF / 图片在线预览,检索来源回填到对话引用。 -- 🕸️ **知识图谱** —— 在 Milvus 知识库内构建、展示和检索实体关系图谱,并与 chunk 检索结果融合参与智能体推理。 -- 🏢 **多租户与权限** —— 用户 / 部门级权限管理,模型供应商统一配置,支持 API Key 认证供外部系统集成调用。 -- ⚙️ **平台与工程化** —— Vue + FastAPI 架构,开箱即用的 Docker Compose 部署,支持暗黑模式、LITE 轻量启动与生产级编排。 + +![image-20260606190609377](https://xerrors.oss-cn-shanghai.aliyuncs.com/github/image-20260606235615139.png) ## 技术栈 @@ -42,56 +36,6 @@ | 存储 | PostgreSQL · Redis · MinIO · Milvus · Neo4j | | 文档解析 | MinerU · PaddleX · RapidOCR | | 部署 | Docker Compose | - -![image-20260606190609377](https://xerrors.oss-cn-shanghai.aliyuncs.com/github/image-20260606235615139.png) - -## 最新动态 - - -
-[2026/06] v0.7.0 开发中(重要不兼容变更) - -**重大变更** - -- **模型配置收敛**:移除旧版 v1 模型配置与 Ollama 支持,运行时统一使用 `provider_id:model_id` 与独立 provider 模块,自定义 provider 迁移到数据库 -- **智能体运行时收敛**:用户可见的 `AgentConfig` 收敛为数据库持久化的一级 `Agent`,新增 `/api/agent` 管理与运行接口,前端只提交 `agent_id` -- **知识库能力收敛**:以 Yuxi 的知识库增强图谱构建、展示、检索链路替换历史 LightRAG 集成,并移除 Upload 类型;知识库类型收敛为单个类型与只读连接器(**Dify**、**Notion**),减少历史集成带来的兼容性问题 -- **Skill 安装与权限收敛**:以 `source_type / share_config / enabled` 表达来源、生效范围与启用状态;内置 Skill 启动自动入库并默认全局启用,上传/远程统一改为「解析草稿 → 确认安装」 - - - -详见 [changelog](docs/develop-guides/changelog.md)。 - -
- -
-[2026/04/01] v0.6.0 版本发布 - -详见 [changelog](docs/develop-guides/changelog.md) - -
- -
-[2026/03/01] v0.5.0 版本发布 - -详见 [changelog](docs/develop-guides/changelog.md) - -
- -
-[2025/12/19] v0.4.0 版本发布 - -详见 [changelog](docs/develop-guides/changelog.md) - -
- -
-[2025/11/05] v0.3.0 版本发布 - -详见 [changelog](docs/develop-guides/changelog.md) - -
- ## 快速开始 **前置要求**:已安装 [Docker](https://docs.docker.com/get-docker/) 与 Docker Compose,并准备至少一个兼容 OpenAI 接口的大模型 API。 @@ -99,7 +43,7 @@ **1. 克隆代码并初始化** ```bash -git clone --branch v0.7.0.beta2 --depth 1 https://github.com/xerrors/Yuxi.git +git clone --branch v0.7.0.beta3 --depth 1 https://github.com/xerrors/Yuxi.git cd Yuxi # Linux/macOS @@ -121,49 +65,6 @@ docker compose up --build > 💡 不需要知识库 / 知识图谱等重依赖时,可使用 `make up-lite` 以 LITE 轻量模式启动,加快冷启动速度。更多部署说明见 [项目文档](https://xerrors.github.io/Yuxi)。 -## 示例与演示 - - - - - - - - - - - - - - -
- 对话工作台 -
- 对话工作台 -
- 沙盒文件系统 -
- 沙盒文件系统 -
- Agentic RAG -
- Agentic RAG -
- 知识图谱 -
- 知识图谱 -
- 检索评估 -
- 检索评估 -
- 多知识源接入 -
- 多知识源接入 -
- - - ## 致谢 本项目参考并引用了以下优秀开源项目,在此致以诚挚的感谢: diff --git a/backend/package/pyproject.toml b/backend/package/pyproject.toml index af652b0f..7c67cf07 100644 --- a/backend/package/pyproject.toml +++ b/backend/package/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "yuxi" -version = "0.7.0.beta2" +version = "0.7.0.beta3" description = "Yuxi 智能知识库与知识图谱平台核心后端包" readme = "README.md" requires-python = ">=3.12,<3.14" diff --git a/backend/package/uv.lock b/backend/package/uv.lock index d7c69c0a..39a51374 100644 --- a/backend/package/uv.lock +++ b/backend/package/uv.lock @@ -5264,7 +5264,7 @@ wheels = [ [[package]] name = "yuxi" -version = "0.7.0.beta2" +version = "0.7.0.beta3" source = { editable = "." } dependencies = [ { name = "agent-sandbox" }, diff --git a/backend/package/yuxi/agents/models.py b/backend/package/yuxi/agents/models.py index be86bc4e..dcb82657 100644 --- a/backend/package/yuxi/agents/models.py +++ b/backend/package/yuxi/agents/models.py @@ -6,6 +6,10 @@ from yuxi.utils import get_docker_safe_url from yuxi.utils.logging_config import logger +def _requires_non_streaming_tool_calls(provider_id: str, model_id: str) -> bool: + return provider_id.startswith("siliconflow") + + def load_chat_model(fully_specified_name: str, **kwargs) -> BaseChatModel: if not fully_specified_name: raise ValueError("model spec 不能为空") @@ -47,10 +51,14 @@ def load_chat_model(fully_specified_name: str, **kwargs) -> BaseChatModel: from langchain_openai import ChatOpenAI + openai_kwargs = dict(kwargs) + if _requires_non_streaming_tool_calls(info.provider_id, info.model_id): + openai_kwargs.setdefault("disable_streaming", "tool_calling") + return ChatOpenAI( model=info.model_id, api_key=SecretStr(api_key), base_url=base_url, stream_usage=True, - **kwargs, + **openai_kwargs, ) diff --git a/backend/package/yuxi/models/providers/builtin.py b/backend/package/yuxi/models/providers/builtin.py index a7cbab45..5a85da51 100644 --- a/backend/package/yuxi/models/providers/builtin.py +++ b/backend/package/yuxi/models/providers/builtin.py @@ -24,12 +24,6 @@ BUILTIN_PROVIDERS: list[dict[str, Any]] = [ # "api_key_env": "GEMINI_API_KEY", # "models_endpoint": "https://generativelanguage.googleapis.com/v1beta/models", # }, - # { - # "provider_id": "lmstudio", - # "display_name": "LM Studio", - # "base_url": "http://localhost:1234/v1", - # "models_endpoint": "http://localhost:1234/v1/models", - # }, { "provider_id": "deepseek", "display_name": "DeepSeek", diff --git a/backend/package/yuxi/models/providers/cache.py b/backend/package/yuxi/models/providers/cache.py index 8bb4fce7..c5e34431 100644 --- a/backend/package/yuxi/models/providers/cache.py +++ b/backend/package/yuxi/models/providers/cache.py @@ -33,7 +33,7 @@ class ModelInfo: # 运行时配置 api_key: str base_url: str - provider_type: str # openai / anthropic / gemini / openrouter / lmstudio + provider_type: str # openai / anthropic / gemini / openrouter # 可选配置 headers: dict[str, str] = field(default_factory=dict) diff --git a/backend/package/yuxi/models/providers/service.py b/backend/package/yuxi/models/providers/service.py index a4b6ee0e..7e4585b3 100644 --- a/backend/package/yuxi/models/providers/service.py +++ b/backend/package/yuxi/models/providers/service.py @@ -20,7 +20,7 @@ from yuxi.storage.postgres.models_business import ModelProvider VALID_MODEL_TYPES = {"chat", "embedding", "rerank"} VALID_MODEL_SOURCES = {"manual", "remote"} -VALID_PROVIDER_TYPES = {"openai", "anthropic", "gemini", "openrouter", "lmstudio"} +VALID_PROVIDER_TYPES = {"openai", "anthropic", "gemini", "openrouter"} _PROVIDER_ID_RE = re.compile(r"^[a-zA-Z0-9][a-zA-Z0-9_-]{1,99}$") diff --git a/backend/package/yuxi/services/chat_service.py b/backend/package/yuxi/services/chat_service.py index 4ccf88e2..d53548df 100644 --- a/backend/package/yuxi/services/chat_service.py +++ b/backend/package/yuxi/services/chat_service.py @@ -231,7 +231,7 @@ def _message_chunk_yuxi_events( "type": "tool_call_delta", "message_id": message_id, "tool_call_id": tool_call_chunk.get("id"), - "name": tool_call_chunk.get("name"), + "name": tool_call_chunk.get("name") or None, "args_delta": args_delta, "index": tool_call_chunk.get("index") if tool_call_chunk.get("index") is not None else 0, **route, @@ -377,7 +377,7 @@ async def _save_ai_message( for tc in tool_calls_data: await conv_repo.add_tool_call( message_id=ai_msg.id, - tool_name=tc.get("name", "unknown"), + tool_name=tc.get("name") or "unknown", tool_input=tc.get("args", {}), status="pending", langgraph_tool_call_id=tc.get("id"), diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 8f8f833c..7b152a80 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "yuxi-workspace" -version = "0.7.0.beta2" +version = "0.7.0.beta3" description = "基于大模型的智能知识库与知识图谱智能体开发平台,融合了 RAG 技术与知识图谱技术,基于 LangGraph v1 + Vue.js + FastAPI + LightRAG 架构构建" readme = "README.md" requires-python = ">=3.12,<3.14" diff --git a/backend/uv.lock b/backend/uv.lock index 7903806f..30fc23e0 100644 --- a/backend/uv.lock +++ b/backend/uv.lock @@ -5489,7 +5489,7 @@ wheels = [ [[package]] name = "yuxi" -version = "0.7.0.beta2" +version = "0.7.0.beta3" source = { editable = "package" } dependencies = [ { name = "agent-sandbox" }, @@ -5646,7 +5646,7 @@ requires-dist = [ [[package]] name = "yuxi-workspace" -version = "0.7.0.beta2" +version = "0.7.0.beta3" source = { virtual = "." } dependencies = [ { name = "arq" }, diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 8ddd8e3a..dc7b3477 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -30,7 +30,7 @@ services: build: context: . dockerfile: docker/api.Dockerfile - image: yuxi-api:${YUXI_VERSION:-0.7.0.beta2} + image: yuxi-api:${YUXI_VERSION:-0.7.0.beta3} container_name: api-prod working_dir: /app networks: @@ -68,7 +68,7 @@ services: build: context: . dockerfile: docker/api.Dockerfile - image: yuxi-api:${YUXI_VERSION:-0.7.0.beta2} + image: yuxi-api:${YUXI_VERSION:-0.7.0.beta3} container_name: worker-prod working_dir: /app networks: @@ -145,7 +145,7 @@ services: context: . dockerfile: docker/web.Dockerfile target: production - image: yuxi-web:${YUXI_VERSION:-0.7.0.beta2} + image: yuxi-web:${YUXI_VERSION:-0.7.0.beta3} container_name: web-prod ports: - "80:80" diff --git a/docker-compose.yml b/docker-compose.yml index bf228bf8..7d6e67dc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -38,7 +38,7 @@ services: build: context: . dockerfile: docker/api.Dockerfile - image: yuxi-api:${YUXI_VERSION:-0.7.0.beta2} + image: yuxi-api:${YUXI_VERSION:-0.7.0.beta3} container_name: api-dev working_dir: /app volumes: @@ -86,7 +86,7 @@ services: build: context: . dockerfile: docker/api.Dockerfile - image: yuxi-api:${YUXI_VERSION:-0.7.0.beta2} + image: yuxi-api:${YUXI_VERSION:-0.7.0.beta3} container_name: worker-dev working_dir: /app volumes: @@ -125,7 +125,7 @@ services: build: context: ./docker/sandbox_provisioner dockerfile: Dockerfile - image: yuxi-sandbox-provisioner:${YUXI_VERSION:-0.7.0.beta2} + image: yuxi-sandbox-provisioner:${YUXI_VERSION:-0.7.0.beta3} container_name: sandbox-provisioner volumes: - ./docker/volumes/yuxi:/app/saves @@ -179,7 +179,7 @@ services: context: . dockerfile: docker/web.Dockerfile target: development - image: yuxi-web:${YUXI_VERSION:-0.7.0.beta2} + image: yuxi-web:${YUXI_VERSION:-0.7.0.beta3} container_name: web-dev volumes: - ./web/src:/app/src diff --git a/docs/.vitepress/theme/components/YuxiHome.vue b/docs/.vitepress/theme/components/YuxiHome.vue index cf9c8c9f..c7bbf57d 100644 --- a/docs/.vitepress/theme/components/YuxiHome.vue +++ b/docs/.vitepress/theme/components/YuxiHome.vue @@ -453,7 +453,7 @@ const vReveal = {
# 1. 克隆并初始化
-git clone --branch v0.7.0.dev0 --depth 1 https://github.com/xerrors/Yuxi.git
+git clone --branch v0.7.0.beta3 --depth 1 https://github.com/xerrors/Yuxi.git
 cd Yuxi && ./scripts/init.sh
 
 # 2. 使用 Docker 启动
diff --git a/docs/develop-guides/changelog.md b/docs/develop-guides/changelog.md
index 6483aad2..4ff8d481 100644
--- a/docs/develop-guides/changelog.md
+++ b/docs/develop-guides/changelog.md
@@ -43,6 +43,7 @@
 - 收敛知识库文件解析参数:文件级 `processing_params` 统一保存 `ocr_engine` 与 `ocr_engine_config`,解析阶段直接使用该结构并保留分块参数快照。
 - 修复知识库文件大小显示为 0 的问题:文件上传时 `file_sizes` 参数未正确传播或历史数据缺失导致 DB 中 `file_size` 为 `None`;新增 `MinIOClient.stat_file/astat_file` 获取文件大小方法,`add_file_record` 在 `size` 缺失时从 MinIO 回补,`_load_metadata` 加载元数据后自动为缺少 `size` 的文件从 MinIO 补全并持久化。
 - 优化评估基准自动生成:生成任务支持配置队列并发数,默认 10,范围 1-20。
+- 完善模型供应商类型:普通聊天模型运行时新增 Anthropic provider type 适配,并清理不再支持的旧 provider type 入口。
 - 重梳理知识库评估存储:评估数据集、题目、评估运行和逐题结果统一入库,JSONL 仅作为导入/导出格式;后端和前端 API 统一使用 dataset/run 语义;评估运行支持用户命名,历史记录按名称展示,综合评分只聚合检索指标。
 - 扩展知识库上传来源:添加“从工作区上传”模式,后端将当前用户工作区文件预处理上传到 MinIO,前端沿用现有 `addDocuments` 入库链路提交 MinIO URL、内容哈希和文件大小。
 - 重构知识库详情页布局:`DatabaseInfo` 改为顶部详情 header + 左侧功能 tab 侧边栏 + 右侧内容区,Milvus 默认进入文件管理,并将检索测试、知识图谱、知识导图、检索配置、RAG 评估和评估基准统一纳入侧边栏导航;只读连接器保留检索测试与检索配置。
@@ -57,6 +58,7 @@
 - 优化智能体对话页细节:状态面板隐藏空 section,待办名称限制为 20 个中文汉字以内,模型选择器展示供应商名称,并收紧附件状态标签与文件编辑浮动操作样式。
 - 标准化 Agent run/SSE 执行链路:run 创建时持久化输入消息并提交后入队,worker 统一写入 Redis Stream envelope,SSE 输出 `event/data/id`、心跳注释、`Last-Event-ID` 回放和终止 `end` 事件;前端强制使用 run API 并支持 ask_user_question 中断后以 resume run 恢复;事件 envelope 构造收敛到统一 helper,前端优先使用 envelope 一级 `thread_id` 路由。
 - Agent run SSE 新增 `verbose=false` 精简模式:默认仍返回完整事件载荷;精简模式仅在 SSE 输出前重建最小 payload,跳过 `metadata` 和空 `yuxi.agent_state`,将同一 data 内的 `request_id` 外提为单个字段,移除 chunk 中重复的 `meta`、`metadata`、`thread_id`、`response`、空 `namespace` 和图片 base64 等调试字段,保留消息增量、工具调用、工具结果、非空 Agent state、终止状态和 SSE 游标,前端订阅默认使用精简模式。
+- 修复 SiliconFlow MiniMax 工具调用流式兼容:MiniMax 在 OpenAI 兼容流中会在参数增量 chunk 返回空 `function.name`,LangGraph v3 event stream 会将空名称写入最终工具调用并导致工具执行失败;该模型默认对工具调用禁用流式模型响应,保留 LangGraph v3 运行事件并避免 agent-chat 中出现空工具名。
 - 收敛后端模块边界:文档解析从 `plugins.parser` 移动到 `knowledge.parser`,内容审查从 `plugins.guard` 移动到 `services.guard`。
 - 收敛文件服务边界:文件预览判断抽为独立服务,Viewer 文件系统的 workspace 分支复用用户 workspace 服务,线程运行时上下文解析从泛化 `filesystem_service` 拆出为 agent runtime helper。
 - 升级 DeepAgents 到 0.6.7 并适配新版文件系统协议:SubAgentMiddleware 改为显式 subagent spec,Skills prompt 补齐新版占位符;sandbox/skills backend 复用新版 `ReadResult`、`GlobResult`、`GrepResult` 等协议类型,文件权限在 backend 层明确区分 skills、uploads、outputs 与 workspace,保留最小 `CustomCompositeBackend` 以避免非 route glob 误扫其他 route;Agent 上下文压缩改为复用 DeepAgents SummarizationMiddleware,历史摘要与大工具结果统一 offload 到 outputs。
diff --git a/docs/develop-guides/roadmap.md b/docs/develop-guides/roadmap.md
index a4d8f7c8..6162eed8 100644
--- a/docs/develop-guides/roadmap.md
+++ b/docs/develop-guides/roadmap.md
@@ -8,38 +8,42 @@
 ### 看板
 
 **知识库**
-- [ ] office 组件预览,docx/pptx 可以转PDF,然后前端预览
-- [ ] 知识库工具新增 query_keywords 工具,专门用于基于关键词命中的排序
+- [ ] office 组件预览,docx/pptx 可以转PDF,然后前端预览 
+- [ ] 知识库工具新增 query_keywords 工具,专门用于基于关键词命中的排序 
 - [ ] 调研将当前知识库映射为虚拟文件系统的可行性,先明确文件树映射、权限边界、内容读取与 Agent 工具调用形态,再决定是否实现
 - [ ] 增强知识库检索体验:增强 metadata、标签等
 - [ ] 优化思维导图构建的接口设计,支持增量构建和更新
-- [ ] 个人工作区增加可检索能力(但是不做向量化)
+- [ ] 个人工作区增加可检索能力(但是不做向量化) 
 
 
 **智能体**
-- [ ] 子智能体缺少异步的机制
-- [ ] 子智能体缺少 steer 机制
+- [ ] 子智能体缺少异步的机制 
+- [ ] 子智能体缺少 steer 机制 
 - [ ] 子智能体的双向通信,缺少 ask_for_main_agent 的机制
 - [ ] 子智能体与子智能体的通信机制
 - [ ] 如何停掉一个子智能体、查看智能体的进度
-- [ ] RAG 评估支持 Agent 模式
+- [ ] RAG 评估支持 Agent 模式 
 - [ ] 添加 Agent 独立调用接口,方便后续评估使用
+- [ ] 任务队列 
+
+**并发与分布式**
+- [ ] 提高 FastAPI 的并发能力
 
 **其他**
 - [ ] 历史对话新增分组(或者叫做项目)
 - [ ] 集成 Memory,基于 deepagents 的文件后端实现,需要考虑定位
+- [ ] 模型供应商类型继续补齐非 OpenAI 兼容适配,并清理不再支持的 provider type 字样 
 
 **仅设想**
 - [ ] Yuxi-cli 相关的功能,放在后续版本中实现(不是类似于编程助手,而是管理平台的工,等各个 router 接口优化之后)
-
-
-
+- [ ] Yuxi-cli 支持 `yuxi upload `,将本地文件夹上传到系统中
 
 
 ### Bugs
 - [ ] 目前的知识库的图片存在公开访问风险
 - [ ] 点开对话的时候要能够自动定位到尾部,而不是最开始。
 - [ ] HTML 渲染侧边模式底部有部分无法渲染,全屏情况下下面有白边
+- [ ] Summary 无法正常触发
 
 ---
 
diff --git a/docs/intro/quick-start.md b/docs/intro/quick-start.md
index fad84557..7988a8b4 100644
--- a/docs/intro/quick-start.md
+++ b/docs/intro/quick-start.md
@@ -3,7 +3,7 @@
 欢迎使用 Yuxi(语析),这是一个智能知识库和知识图谱 Agent 开发平台。
 本指南将帮助你在几分钟内启动并运行系统,使你能够利用 LangGraph、RAG 技术和知识图谱构建 AI 驱动的知识应用。
 
-![系统架构图](https://xerrors.oss-cn-shanghai.aliyuncs.com/github/image-20260326130844668.png)
+![系统架构图](https://xerrors.oss-cn-shanghai.aliyuncs.com/github/arch.png)
 
 
 ::: tip 提示
@@ -20,7 +20,7 @@
 
 ```bash
 # 克隆最新版本
-git clone --branch v0.7.0.beta2 --depth 1 https://github.com/xerrors/Yuxi.git
+git clone --branch v0.7.0.beta3 --depth 1 https://github.com/xerrors/Yuxi.git
 cd Yuxi
 ```
 
diff --git a/scripts/bump-version.sh b/scripts/bump-version.sh
index eac5457b..7500271b 100755
--- a/scripts/bump-version.sh
+++ b/scripts/bump-version.sh
@@ -10,7 +10,7 @@ set -euo pipefail
 #
 # 该脚本从 backend/package/pyproject.toml 读取当前版本,
 # 自动同步所有需要硬编码版本号的位置。
-# --dev 模式不会更新 README.md 和 docs/intro/quick-start.md 中 git clone --branch 的版本号。
+# --dev 模式不会更新 README.md、docs/intro/quick-start.md 和文档首页中 git clone --branch 的版本号。
 # =============================================================================
 
 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -70,6 +70,7 @@ if [ "$DEV_MODE" = false ]; then
     echo "  - README.md"
     echo "  - README.en.md"
     echo "  - docs/intro/quick-start.md"
+    echo "  - docs/.vitepress/theme/components/YuxiHome.vue"
 fi
 echo ""
 read -rp "确认继续? [y/N] " confirm
@@ -142,8 +143,12 @@ if [ "$DEV_MODE" = false ]; then
     echo "→ 更新 docs/intro/quick-start.md"
     perl -pi -e "s/(git clone --branch v)[0-9]+\\.[0-9]+\\.[0-9]+(\\.[a-zA-Z0-9]+)?/\${1}${NEW_VERSION}/g" \
         "${PROJECT_ROOT}/docs/intro/quick-start.md"
+
+    echo "→ 更新 docs/.vitepress/theme/components/YuxiHome.vue"
+    perl -pi -e "s/(git clone --branch v)[0-9]+\\.[0-9]+\\.[0-9]+(\\.[a-zA-Z0-9]+)?/\${1}${NEW_VERSION}/g" \
+        "${PROJECT_ROOT}/docs/.vitepress/theme/components/YuxiHome.vue"
 else
-    echo "→ dev 模式,跳过 README.md、README.en.md 和 docs/intro/quick-start.md 的分支版本更新"
+    echo "→ dev 模式,跳过 README.md、README.en.md、docs/intro/quick-start.md 和文档首页的分支版本更新"
 fi
 
 # -----------------------------------------------------------------------------
diff --git a/web/package.json b/web/package.json
index a71287fc..883fd197 100644
--- a/web/package.json
+++ b/web/package.json
@@ -1,6 +1,6 @@
 {
   "name": "yuxi-web",
-  "version": "0.7.0.beta2",
+  "version": "0.7.0.beta3",
   "private": true,
   "type": "module",
   "scripts": {
diff --git a/web/src/components/ConversationNavSection.vue b/web/src/components/ConversationNavSection.vue
index 000b9c46..f5d6da6c 100644
--- a/web/src/components/ConversationNavSection.vue
+++ b/web/src/components/ConversationNavSection.vue
@@ -31,7 +31,7 @@
                     
                     
                       重命名
@@ -74,7 +74,7 @@