Compare commits
7 Commits
refactor/s
...
fix/3786
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bc8312b11d | ||
|
|
23ab724e3d | ||
|
|
758ce40cc1 | ||
|
|
3e7bb80492 | ||
|
|
75e95aa9ca | ||
|
|
a389842e25 | ||
|
|
0f6a3c3f5a |
@@ -69,7 +69,7 @@ const sidebarItem: menu[] = [
|
||||
},
|
||||
{
|
||||
title: 'core.navigation.sessionManagement',
|
||||
icon: 'mdi-account-group',
|
||||
icon: 'mdi-pencil-ruler',
|
||||
to: '/session-management'
|
||||
},
|
||||
{
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
<v-card flat>
|
||||
<v-card-title class="d-flex align-center py-3 px-4">
|
||||
<span class="text-h4">{{ tm('customRules.title') }}</span>
|
||||
<v-chip size="small" class="ml-2">{{ totalItems }} {{ tm('customRules.rulesCount') }}</v-chip>
|
||||
<v-btn icon="mdi-information-outline" size="small" variant="text" href="https://astrbot.app/use/custom-rules.html" target="_blank"></v-btn>
|
||||
<v-chip size="small" class="ml-1">{{ totalItems }} {{ tm('customRules.rulesCount') }}</v-chip>
|
||||
<v-row class="me-4 ms-4" dense>
|
||||
<v-text-field v-model="searchQuery" prepend-inner-icon="mdi-magnify" :label="tm('search.placeholder')"
|
||||
hide-details clearable variant="solo-filled" flat class="me-4" density="compact"></v-text-field>
|
||||
@@ -28,8 +29,8 @@
|
||||
<v-card-text class="pa-0">
|
||||
<v-data-table-server :headers="headers" :items="filteredRulesList" :loading="loading"
|
||||
:items-length="totalItems" v-model:items-per-page="itemsPerPage" v-model:page="currentPage"
|
||||
@update:options="onTableOptionsUpdate" class="elevation-0" style="font-size: 12px;"
|
||||
v-model="selectedItems" show-select item-value="umo" return-object>
|
||||
@update:options="onTableOptionsUpdate" class="elevation-0" style="font-size: 12px;" v-model="selectedItems"
|
||||
show-select item-value="umo" return-object>
|
||||
|
||||
<!-- UMO 信息 -->
|
||||
<template v-slot:item.umo_info="{ item }">
|
||||
@@ -40,7 +41,8 @@
|
||||
</v-chip>
|
||||
<span class="text-truncate" style="max-width: 300px;">{{ item.umo }}</span>
|
||||
<div class="d-flex align-center" v-if="item.rules?.session_service_config?.custom_name || true">
|
||||
<span class="ml-2" style="color: gray; font-size: 10px;" v-if="item.rules?.session_service_config?.custom_name">
|
||||
<span class="ml-2" style="color: gray; font-size: 10px;"
|
||||
v-if="item.rules?.session_service_config?.custom_name">
|
||||
({{ item.rules?.session_service_config?.custom_name }})
|
||||
</span>
|
||||
<v-btn icon size="x-small" variant="text" class="ml-1" @click.stop="openQuickEditName(item)">
|
||||
@@ -257,7 +259,7 @@
|
||||
<v-spacer></v-spacer>
|
||||
<v-btn variant="text" @click="deleteDialog = false">{{ tm('buttons.cancel') }}</v-btn>
|
||||
<v-btn color="error" variant="tonal" @click="deleteAllRules" :loading="deleting">{{ tm('buttons.delete')
|
||||
}}</v-btn>
|
||||
}}</v-btn>
|
||||
</v-card-actions>
|
||||
</v-card>
|
||||
</v-dialog>
|
||||
|
||||
@@ -6,7 +6,7 @@ from collections import defaultdict
|
||||
from astrbot import logger
|
||||
from astrbot.api import star
|
||||
from astrbot.api.event import AstrMessageEvent
|
||||
from astrbot.api.message_components import Image, Plain
|
||||
from astrbot.api.message_components import At, Image, Plain
|
||||
from astrbot.api.platform import MessageType
|
||||
from astrbot.api.provider import Provider, ProviderRequest
|
||||
from astrbot.core.astrbot_config_mgr import AstrBotConfigManager
|
||||
@@ -142,6 +142,8 @@ class LongTermMemory:
|
||||
logger.error(f"获取图片描述失败: {e}")
|
||||
else:
|
||||
parts.append(" [Image]")
|
||||
elif isinstance(comp, At):
|
||||
parts.append(f" [At: {comp.name}]")
|
||||
|
||||
final_message = "".join(parts)
|
||||
logger.debug(f"ltm | {event.unified_msg_origin} | {final_message}")
|
||||
|
||||
@@ -41,7 +41,6 @@ class ProcessLLMRequest:
|
||||
if default_persona:
|
||||
persona_id = default_persona["name"]
|
||||
|
||||
|
||||
persona = next(
|
||||
builtins.filter(
|
||||
lambda persona: persona["name"] == persona_id,
|
||||
|
||||
@@ -14,7 +14,7 @@ from astrbot.core.utils.session_waiter import (
|
||||
)
|
||||
|
||||
|
||||
class Waiter(Star):
|
||||
class Main(Star):
|
||||
"""会话控制"""
|
||||
|
||||
def __init__(self, context: Context):
|
||||
|
||||
@@ -21,7 +21,17 @@ async def core_lifecycle_td(tmp_path_factory):
|
||||
log_broker = LogBroker()
|
||||
core_lifecycle = AstrBotCoreLifecycle(log_broker, db)
|
||||
await core_lifecycle.initialize()
|
||||
return core_lifecycle
|
||||
try:
|
||||
yield core_lifecycle
|
||||
finally:
|
||||
# 优先停止核心生命周期以释放资源(包括关闭 MCP 等后台任务)
|
||||
try:
|
||||
_stop_res = core_lifecycle.stop()
|
||||
if asyncio.iscoroutine(_stop_res):
|
||||
await _stop_res
|
||||
except Exception:
|
||||
# 停止过程中如有异常,不影响后续清理
|
||||
pass
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
|
||||
@@ -39,6 +39,7 @@ def plugin_manager_pm(tmp_path):
|
||||
message_history_manager = MagicMock()
|
||||
persona_manager = MagicMock()
|
||||
astrbot_config_mgr = MagicMock()
|
||||
knowledge_base_manager = MagicMock()
|
||||
|
||||
star_context = Context(
|
||||
event_queue,
|
||||
@@ -50,6 +51,7 @@ def plugin_manager_pm(tmp_path):
|
||||
message_history_manager,
|
||||
persona_manager,
|
||||
astrbot_config_mgr,
|
||||
knowledge_base_manager=knowledge_base_manager,
|
||||
)
|
||||
|
||||
# Create the PluginManager instance
|
||||
|
||||
Reference in New Issue
Block a user