chore(release): 更新版本至 0.7.0.beta2
This commit is contained in:
parent
fd2660d21a
commit
7f387fd6e7
@ -52,7 +52,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.beta1 --depth 1 https://github.com/xerrors/Yuxi.git
|
||||
git clone --branch v0.7.0.beta2 --depth 1 https://github.com/xerrors/Yuxi.git
|
||||
cd Yuxi
|
||||
|
||||
# Linux/macOS
|
||||
|
||||
@ -99,7 +99,7 @@
|
||||
**1. 克隆代码并初始化**
|
||||
|
||||
```bash
|
||||
git clone --branch v0.7.0.beta1 --depth 1 https://github.com/xerrors/Yuxi.git
|
||||
git clone --branch v0.7.0.beta2 --depth 1 https://github.com/xerrors/Yuxi.git
|
||||
cd Yuxi
|
||||
|
||||
# Linux/macOS
|
||||
|
||||
@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
||||
|
||||
[project]
|
||||
name = "yuxi"
|
||||
version = "0.7.0.beta1"
|
||||
version = "0.7.0.beta2"
|
||||
description = "Yuxi 智能知识库与知识图谱平台核心后端包"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.12,<3.14"
|
||||
|
||||
@ -5264,7 +5264,7 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "yuxi"
|
||||
version = "0.7.0.beta1"
|
||||
version = "0.7.0.beta2"
|
||||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "agent-sandbox" },
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "yuxi-workspace"
|
||||
version = "0.7.0.beta1"
|
||||
version = "0.7.0.beta2"
|
||||
description = "基于大模型的智能知识库与知识图谱智能体开发平台,融合了 RAG 技术与知识图谱技术,基于 LangGraph v1 + Vue.js + FastAPI + LightRAG 架构构建"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.12,<3.14"
|
||||
|
||||
@ -5489,7 +5489,7 @@ wheels = [
|
||||
|
||||
[[package]]
|
||||
name = "yuxi"
|
||||
version = "0.7.0.beta1"
|
||||
version = "0.7.0.beta2"
|
||||
source = { editable = "package" }
|
||||
dependencies = [
|
||||
{ name = "agent-sandbox" },
|
||||
@ -5646,7 +5646,7 @@ requires-dist = [
|
||||
|
||||
[[package]]
|
||||
name = "yuxi-workspace"
|
||||
version = "0.7.0.beta1"
|
||||
version = "0.7.0.beta2"
|
||||
source = { virtual = "." }
|
||||
dependencies = [
|
||||
{ name = "arq" },
|
||||
|
||||
@ -30,7 +30,7 @@ services:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/api.Dockerfile
|
||||
image: yuxi-api:${YUXI_VERSION:-0.7.0.beta1}
|
||||
image: yuxi-api:${YUXI_VERSION:-0.7.0.beta2}
|
||||
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.beta1}
|
||||
image: yuxi-api:${YUXI_VERSION:-0.7.0.beta2}
|
||||
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.beta1}
|
||||
image: yuxi-web:${YUXI_VERSION:-0.7.0.beta2}
|
||||
container_name: web-prod
|
||||
ports:
|
||||
- "80:80"
|
||||
|
||||
@ -38,7 +38,7 @@ services:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/api.Dockerfile
|
||||
image: yuxi-api:${YUXI_VERSION:-0.7.0.beta1}
|
||||
image: yuxi-api:${YUXI_VERSION:-0.7.0.beta2}
|
||||
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.beta1}
|
||||
image: yuxi-api:${YUXI_VERSION:-0.7.0.beta2}
|
||||
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.beta1}
|
||||
image: yuxi-sandbox-provisioner:${YUXI_VERSION:-0.7.0.beta2}
|
||||
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.beta1}
|
||||
image: yuxi-web:${YUXI_VERSION:-0.7.0.beta2}
|
||||
container_name: web-dev
|
||||
volumes:
|
||||
- ./web/src:/app/src
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
|
||||
### 开发记录
|
||||
|
||||
- 发布版本号更新至 `0.7.0.beta2`,同步 package、Docker 镜像标签与快速开始分支引用。
|
||||
- 新增内置「深度研究」多智能体:编排器 Agent(`deep-research`,ChatbotAgent 后端)负责澄清、拆解、并行调度子智能体与综合成稿,配套两个子智能体 `research-explorer`(围绕单个子问题多轮检索网页/知识库并返回带引用发现)和 `fact-verifier`(对抗式核验关键论断、标注冲突与置信度);完整研究方法论沉淀为新增内置 Skill `deep-research`(依赖 `tavily_search`),编排器运行时读取并据此调度。三者随 `lifespan` 启动通过 `AgentRepository.ensure_deep_research_agents` 幂等落库(已存在不覆盖管理员修改)。
|
||||
- 新增内置 `general-purpose` 通用任务子智能体:使用 `SubAgentBackend` 与空运行配置,作为 `task` 工具的通用委派目标,由启动初始化自动写入数据库。
|
||||
- 收敛 MCP 创建与编辑入口:前端移除整段配置文本入口和模式切换器,仅保留表单字段提交;后端 MCP 创建/更新请求拒绝额外配置字段,避免绕过表单约束。
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
|
||||
```bash
|
||||
# 克隆最新版本
|
||||
git clone --branch v0.7.0.beta1 --depth 1 https://github.com/xerrors/Yuxi.git
|
||||
git clone --branch v0.7.0.beta2 --depth 1 https://github.com/xerrors/Yuxi.git
|
||||
cd Yuxi
|
||||
```
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "yuxi-web",
|
||||
"version": "0.7.0.beta1",
|
||||
"version": "0.7.0.beta2",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
|
||||
@ -611,7 +611,9 @@ let panelContainerWidth = 0
|
||||
let streamingStateRefreshTimer = null
|
||||
|
||||
const formatTodoName = (content) => {
|
||||
return Array.from(String(content || '')).slice(0, TODO_NAME_MAX_LENGTH).join('')
|
||||
return Array.from(String(content || ''))
|
||||
.slice(0, TODO_NAME_MAX_LENGTH)
|
||||
.join('')
|
||||
}
|
||||
|
||||
const getPanelContainerWidth = () => {
|
||||
@ -991,9 +993,7 @@ const currentApprovalQuestions = computed(() =>
|
||||
const shouldSuppressRefsForApproval = () =>
|
||||
currentApprovalModalVisible.value ||
|
||||
Boolean(
|
||||
approvalState.threadId &&
|
||||
currentChatId.value === approvalState.threadId &&
|
||||
isProcessing.value
|
||||
approvalState.threadId && currentChatId.value === approvalState.threadId && isProcessing.value
|
||||
)
|
||||
|
||||
// 判断某轮对话是否已「收尾」,即可以展示 refs(来源/操作栏):
|
||||
|
||||
@ -3,7 +3,11 @@
|
||||
class="agent-file-preview"
|
||||
:class="[
|
||||
containerClass,
|
||||
{ 'is-full-height': fullHeight, 'is-borderless': borderless, 'has-preview-header': showHeader }
|
||||
{
|
||||
'is-full-height': fullHeight,
|
||||
'is-borderless': borderless,
|
||||
'has-preview-header': showHeader
|
||||
}
|
||||
]"
|
||||
>
|
||||
<div v-if="showHeader" class="preview-header">
|
||||
|
||||
@ -231,7 +231,11 @@
|
||||
</span>
|
||||
</template>
|
||||
<a-button v-else class="main-btn" type="link" @click="openFileDetail(record)">
|
||||
<FileTypeIcon :name="record.displayName || text" :size="16" :style="{ marginRight: '8px' }" />
|
||||
<FileTypeIcon
|
||||
:name="record.displayName || text"
|
||||
:size="16"
|
||||
:style="{ marginRight: '8px' }"
|
||||
/>
|
||||
{{ record.displayName || text }}
|
||||
</a-button>
|
||||
</div>
|
||||
|
||||
@ -206,7 +206,9 @@ const visibleRelationshipEdges = computed(() =>
|
||||
const visibleEntityCount = computed(() => visibleEntityNodes.value.length)
|
||||
const visibleRelationshipCount = computed(() => visibleRelationshipEdges.value.length)
|
||||
|
||||
const nodeTypeStats = computed(() => buildTypeStats(visibleEntityNodes.value, getNodeVisualLabel, getNodeColor))
|
||||
const nodeTypeStats = computed(() =>
|
||||
buildTypeStats(visibleEntityNodes.value, getNodeVisualLabel, getNodeColor)
|
||||
)
|
||||
|
||||
const edgeTypeStats = computed(() =>
|
||||
buildTypeStats(visibleRelationshipEdges.value, getEdgeVisualLabel, getEdgeColor)
|
||||
@ -755,7 +757,9 @@ defineExpose({
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 0 0 1px var(--color-bg-container), 0 0 0 2px var(--gray-200);
|
||||
box-shadow:
|
||||
0 0 0 1px var(--color-bg-container),
|
||||
0 0 0 2px var(--gray-200);
|
||||
}
|
||||
|
||||
.type-name {
|
||||
|
||||
@ -65,7 +65,9 @@
|
||||
:key="`v2-${providerId}`"
|
||||
>
|
||||
<template #title>
|
||||
<span :title="providerId">{{ getProviderDisplayName(providerId, providerData) }}</span>
|
||||
<span :title="providerId">{{
|
||||
getProviderDisplayName(providerId, providerData)
|
||||
}}</span>
|
||||
</template>
|
||||
<a-menu-item
|
||||
v-for="model in providerData.models"
|
||||
|
||||
@ -56,7 +56,9 @@ const props = defineProps({
|
||||
const TODO_NAME_MAX_LENGTH = 20
|
||||
|
||||
const formatTodoName = (content) => {
|
||||
return Array.from(String(content || '')).slice(0, TODO_NAME_MAX_LENGTH).join('')
|
||||
return Array.from(String(content || ''))
|
||||
.slice(0, TODO_NAME_MAX_LENGTH)
|
||||
.join('')
|
||||
}
|
||||
|
||||
const formatTodoNameTitle = (content) => String(content || '')
|
||||
|
||||
@ -71,10 +71,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a-form
|
||||
layout="vertical"
|
||||
class="extension-form inline-edit-form"
|
||||
>
|
||||
<a-form layout="vertical" class="extension-form inline-edit-form">
|
||||
<section class="form-section">
|
||||
<div class="form-section-title">
|
||||
<span>基础信息</span>
|
||||
|
||||
@ -1,11 +1,7 @@
|
||||
import { unref } from 'vue'
|
||||
import { agentApi } from '@/apis'
|
||||
import { handleChatError } from '@/utils/errorHandler'
|
||||
import {
|
||||
compareRunSeq,
|
||||
normalizeRunSeq,
|
||||
resolveRunResumeAfterSeq
|
||||
} from '@/utils/runStreamResume'
|
||||
import { compareRunSeq, normalizeRunSeq, resolveRunResumeAfterSeq } from '@/utils/runStreamResume'
|
||||
|
||||
const RUN_INTERRUPTED_STATUS = 'interrupted'
|
||||
const RUN_TERMINAL_STATUSES = new Set(['completed', 'failed', 'cancelled'])
|
||||
|
||||
@ -192,7 +192,6 @@ const currentAgentLabel = computed(() => {
|
||||
return currentAgentOption.value?.label || '智能体'
|
||||
})
|
||||
|
||||
|
||||
const agentDropdownOpen = ref(false)
|
||||
|
||||
const handleAgentSwitch = async (agentId, hasActiveThread) => {
|
||||
@ -214,7 +213,6 @@ const openAgentManagement = () => {
|
||||
agentDropdownOpen.value = false
|
||||
router.push({ name: 'ModelManageComp', query: { tab: 'agents' } })
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
||||
@ -175,9 +175,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="flow-caption">
|
||||
智能体发起检索 · 引擎融合向量与图谱 · 召回知识增强生成
|
||||
</p>
|
||||
<p class="flow-caption">智能体发起检索 · 引擎融合向量与图谱 · 召回知识增强生成</p>
|
||||
</div>
|
||||
|
||||
<div class="stat-row" v-if="realtimeStats.length">
|
||||
|
||||
Loading…
Reference in New Issue
Block a user