AstrBot 4.7.0__py3-none-any.whl → 4.7.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- astrbot/core/config/default.py +1 -1
- astrbot/core/star/session_llm_manager.py +0 -107
- astrbot/core/star/session_plugin_manager.py +0 -81
- astrbot/dashboard/routes/knowledge_base.py +0 -156
- astrbot/dashboard/routes/session_management.py +40 -1
- {astrbot-4.7.0.dist-info → astrbot-4.7.1.dist-info}/METADATA +1 -1
- {astrbot-4.7.0.dist-info → astrbot-4.7.1.dist-info}/RECORD +10 -10
- {astrbot-4.7.0.dist-info → astrbot-4.7.1.dist-info}/WHEEL +0 -0
- {astrbot-4.7.0.dist-info → astrbot-4.7.1.dist-info}/entry_points.txt +0 -0
- {astrbot-4.7.0.dist-info → astrbot-4.7.1.dist-info}/licenses/LICENSE +0 -0
astrbot/core/config/default.py
CHANGED
|
@@ -171,110 +171,3 @@ class SessionServiceManager:
|
|
|
171
171
|
|
|
172
172
|
# 如果没有配置,默认为启用(兼容性考虑)
|
|
173
173
|
return True
|
|
174
|
-
|
|
175
|
-
@staticmethod
|
|
176
|
-
def set_session_status(session_id: str, enabled: bool) -> None:
|
|
177
|
-
"""设置会话的整体启停状态
|
|
178
|
-
|
|
179
|
-
Args:
|
|
180
|
-
session_id: 会话ID (unified_msg_origin)
|
|
181
|
-
enabled: True表示启用,False表示禁用
|
|
182
|
-
|
|
183
|
-
"""
|
|
184
|
-
session_config = (
|
|
185
|
-
sp.get("session_service_config", {}, scope="umo", scope_id=session_id) or {}
|
|
186
|
-
)
|
|
187
|
-
session_config["session_enabled"] = enabled
|
|
188
|
-
sp.put(
|
|
189
|
-
"session_service_config",
|
|
190
|
-
session_config,
|
|
191
|
-
scope="umo",
|
|
192
|
-
scope_id=session_id,
|
|
193
|
-
)
|
|
194
|
-
|
|
195
|
-
logger.info(
|
|
196
|
-
f"会话 {session_id} 的整体状态已更新为: {'启用' if enabled else '禁用'}",
|
|
197
|
-
)
|
|
198
|
-
|
|
199
|
-
@staticmethod
|
|
200
|
-
def should_process_session_request(event: AstrMessageEvent) -> bool:
|
|
201
|
-
"""检查是否应该处理会话请求(会话整体启停检查)
|
|
202
|
-
|
|
203
|
-
Args:
|
|
204
|
-
event: 消息事件
|
|
205
|
-
|
|
206
|
-
Returns:
|
|
207
|
-
bool: True表示应该处理,False表示跳过
|
|
208
|
-
|
|
209
|
-
"""
|
|
210
|
-
session_id = event.unified_msg_origin
|
|
211
|
-
return SessionServiceManager.is_session_enabled(session_id)
|
|
212
|
-
|
|
213
|
-
# =============================================================================
|
|
214
|
-
# 会话命名相关方法
|
|
215
|
-
# =============================================================================
|
|
216
|
-
|
|
217
|
-
@staticmethod
|
|
218
|
-
def get_session_custom_name(session_id: str) -> str | None:
|
|
219
|
-
"""获取会话的自定义名称
|
|
220
|
-
|
|
221
|
-
Args:
|
|
222
|
-
session_id: 会话ID (unified_msg_origin)
|
|
223
|
-
|
|
224
|
-
Returns:
|
|
225
|
-
str: 自定义名称,如果没有设置则返回None
|
|
226
|
-
|
|
227
|
-
"""
|
|
228
|
-
session_services = sp.get(
|
|
229
|
-
"session_service_config",
|
|
230
|
-
{},
|
|
231
|
-
scope="umo",
|
|
232
|
-
scope_id=session_id,
|
|
233
|
-
)
|
|
234
|
-
return session_services.get("custom_name")
|
|
235
|
-
|
|
236
|
-
@staticmethod
|
|
237
|
-
def set_session_custom_name(session_id: str, custom_name: str) -> None:
|
|
238
|
-
"""设置会话的自定义名称
|
|
239
|
-
|
|
240
|
-
Args:
|
|
241
|
-
session_id: 会话ID (unified_msg_origin)
|
|
242
|
-
custom_name: 自定义名称,可以为空字符串来清除名称
|
|
243
|
-
|
|
244
|
-
"""
|
|
245
|
-
session_config = (
|
|
246
|
-
sp.get("session_service_config", {}, scope="umo", scope_id=session_id) or {}
|
|
247
|
-
)
|
|
248
|
-
if custom_name and custom_name.strip():
|
|
249
|
-
session_config["custom_name"] = custom_name.strip()
|
|
250
|
-
else:
|
|
251
|
-
# 如果传入空名称,则删除自定义名称
|
|
252
|
-
session_config.pop("custom_name", None)
|
|
253
|
-
sp.put(
|
|
254
|
-
"session_service_config",
|
|
255
|
-
session_config,
|
|
256
|
-
scope="umo",
|
|
257
|
-
scope_id=session_id,
|
|
258
|
-
)
|
|
259
|
-
|
|
260
|
-
logger.info(
|
|
261
|
-
f"会话 {session_id} 的自定义名称已更新为: {custom_name.strip() if custom_name and custom_name.strip() else '已清除'}",
|
|
262
|
-
)
|
|
263
|
-
|
|
264
|
-
@staticmethod
|
|
265
|
-
def get_session_display_name(session_id: str) -> str:
|
|
266
|
-
"""获取会话的显示名称(优先显示自定义名称,否则显示原始session_id的最后一段)
|
|
267
|
-
|
|
268
|
-
Args:
|
|
269
|
-
session_id: 会话ID (unified_msg_origin)
|
|
270
|
-
|
|
271
|
-
Returns:
|
|
272
|
-
str: 显示名称
|
|
273
|
-
|
|
274
|
-
"""
|
|
275
|
-
custom_name = SessionServiceManager.get_session_custom_name(session_id)
|
|
276
|
-
if custom_name:
|
|
277
|
-
return custom_name
|
|
278
|
-
|
|
279
|
-
# 如果没有自定义名称,返回session_id的最后一段
|
|
280
|
-
return session_id.split(":")[2] if session_id.count(":") >= 2 else session_id
|
|
@@ -42,87 +42,6 @@ class SessionPluginManager:
|
|
|
42
42
|
# 如果都没有配置,默认为启用(兼容性考虑)
|
|
43
43
|
return True
|
|
44
44
|
|
|
45
|
-
@staticmethod
|
|
46
|
-
def set_plugin_status_for_session(
|
|
47
|
-
session_id: str,
|
|
48
|
-
plugin_name: str,
|
|
49
|
-
enabled: bool,
|
|
50
|
-
) -> None:
|
|
51
|
-
"""设置插件在指定会话中的启停状态
|
|
52
|
-
|
|
53
|
-
Args:
|
|
54
|
-
session_id: 会话ID (unified_msg_origin)
|
|
55
|
-
plugin_name: 插件名称
|
|
56
|
-
enabled: True表示启用,False表示禁用
|
|
57
|
-
|
|
58
|
-
"""
|
|
59
|
-
# 获取当前配置
|
|
60
|
-
session_plugin_config = sp.get(
|
|
61
|
-
"session_plugin_config",
|
|
62
|
-
{},
|
|
63
|
-
scope="umo",
|
|
64
|
-
scope_id=session_id,
|
|
65
|
-
)
|
|
66
|
-
if session_id not in session_plugin_config:
|
|
67
|
-
session_plugin_config[session_id] = {
|
|
68
|
-
"enabled_plugins": [],
|
|
69
|
-
"disabled_plugins": [],
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
session_config = session_plugin_config[session_id]
|
|
73
|
-
enabled_plugins = session_config.get("enabled_plugins", [])
|
|
74
|
-
disabled_plugins = session_config.get("disabled_plugins", [])
|
|
75
|
-
|
|
76
|
-
if enabled:
|
|
77
|
-
# 启用插件
|
|
78
|
-
if plugin_name in disabled_plugins:
|
|
79
|
-
disabled_plugins.remove(plugin_name)
|
|
80
|
-
if plugin_name not in enabled_plugins:
|
|
81
|
-
enabled_plugins.append(plugin_name)
|
|
82
|
-
else:
|
|
83
|
-
# 禁用插件
|
|
84
|
-
if plugin_name in enabled_plugins:
|
|
85
|
-
enabled_plugins.remove(plugin_name)
|
|
86
|
-
if plugin_name not in disabled_plugins:
|
|
87
|
-
disabled_plugins.append(plugin_name)
|
|
88
|
-
|
|
89
|
-
# 保存配置
|
|
90
|
-
session_config["enabled_plugins"] = enabled_plugins
|
|
91
|
-
session_config["disabled_plugins"] = disabled_plugins
|
|
92
|
-
session_plugin_config[session_id] = session_config
|
|
93
|
-
sp.put(
|
|
94
|
-
"session_plugin_config",
|
|
95
|
-
session_plugin_config,
|
|
96
|
-
scope="umo",
|
|
97
|
-
scope_id=session_id,
|
|
98
|
-
)
|
|
99
|
-
|
|
100
|
-
logger.info(
|
|
101
|
-
f"会话 {session_id} 的插件 {plugin_name} 状态已更新为: {'启用' if enabled else '禁用'}",
|
|
102
|
-
)
|
|
103
|
-
|
|
104
|
-
@staticmethod
|
|
105
|
-
def get_session_plugin_config(session_id: str) -> dict[str, list[str]]:
|
|
106
|
-
"""获取指定会话的插件配置
|
|
107
|
-
|
|
108
|
-
Args:
|
|
109
|
-
session_id: 会话ID (unified_msg_origin)
|
|
110
|
-
|
|
111
|
-
Returns:
|
|
112
|
-
Dict[str, List[str]]: 包含enabled_plugins和disabled_plugins的字典
|
|
113
|
-
|
|
114
|
-
"""
|
|
115
|
-
session_plugin_config = sp.get(
|
|
116
|
-
"session_plugin_config",
|
|
117
|
-
{},
|
|
118
|
-
scope="umo",
|
|
119
|
-
scope_id=session_id,
|
|
120
|
-
)
|
|
121
|
-
return session_plugin_config.get(
|
|
122
|
-
session_id,
|
|
123
|
-
{"enabled_plugins": [], "disabled_plugins": []},
|
|
124
|
-
)
|
|
125
|
-
|
|
126
45
|
@staticmethod
|
|
127
46
|
def filter_handlers_by_session(event: AstrMessageEvent, handlers: list) -> list:
|
|
128
47
|
"""根据会话配置过滤处理器列表
|
|
@@ -60,10 +60,6 @@ class KnowledgeBaseRoute(Route):
|
|
|
60
60
|
# "/kb/media/delete": ("POST", self.delete_media),
|
|
61
61
|
# 检索
|
|
62
62
|
"/kb/retrieve": ("POST", self.retrieve),
|
|
63
|
-
# 会话知识库配置
|
|
64
|
-
"/kb/session/config/get": ("GET", self.get_session_kb_config),
|
|
65
|
-
"/kb/session/config/set": ("POST", self.set_session_kb_config),
|
|
66
|
-
"/kb/session/config/delete": ("POST", self.delete_session_kb_config),
|
|
67
63
|
}
|
|
68
64
|
self.register_routes()
|
|
69
65
|
|
|
@@ -920,158 +916,6 @@ class KnowledgeBaseRoute(Route):
|
|
|
920
916
|
logger.error(traceback.format_exc())
|
|
921
917
|
return Response().error(f"检索失败: {e!s}").__dict__
|
|
922
918
|
|
|
923
|
-
# ===== 会话知识库配置 API =====
|
|
924
|
-
|
|
925
|
-
async def get_session_kb_config(self):
|
|
926
|
-
"""获取会话的知识库配置
|
|
927
|
-
|
|
928
|
-
Query 参数:
|
|
929
|
-
- session_id: 会话 ID (必填)
|
|
930
|
-
|
|
931
|
-
返回:
|
|
932
|
-
- kb_ids: 知识库 ID 列表
|
|
933
|
-
- top_k: 返回结果数量
|
|
934
|
-
- enable_rerank: 是否启用重排序
|
|
935
|
-
"""
|
|
936
|
-
try:
|
|
937
|
-
from astrbot.core import sp
|
|
938
|
-
|
|
939
|
-
session_id = request.args.get("session_id")
|
|
940
|
-
|
|
941
|
-
if not session_id:
|
|
942
|
-
return Response().error("缺少参数 session_id").__dict__
|
|
943
|
-
|
|
944
|
-
# 从 SharedPreferences 获取配置
|
|
945
|
-
config = await sp.session_get(session_id, "kb_config", default={})
|
|
946
|
-
|
|
947
|
-
logger.debug(f"[KB配置] 读取到配置: session_id={session_id}")
|
|
948
|
-
|
|
949
|
-
# 如果没有配置,返回默认值
|
|
950
|
-
if not config:
|
|
951
|
-
config = {"kb_ids": [], "top_k": 5, "enable_rerank": True}
|
|
952
|
-
|
|
953
|
-
return Response().ok(config).__dict__
|
|
954
|
-
|
|
955
|
-
except Exception as e:
|
|
956
|
-
logger.error(f"[KB配置] 获取配置时出错: {e}", exc_info=True)
|
|
957
|
-
return Response().error(f"获取会话知识库配置失败: {e!s}").__dict__
|
|
958
|
-
|
|
959
|
-
async def set_session_kb_config(self):
|
|
960
|
-
"""设置会话的知识库配置
|
|
961
|
-
|
|
962
|
-
Body:
|
|
963
|
-
- scope: 配置范围 (目前只支持 "session")
|
|
964
|
-
- scope_id: 会话 ID (必填)
|
|
965
|
-
- kb_ids: 知识库 ID 列表 (必填)
|
|
966
|
-
- top_k: 返回结果数量 (可选, 默认 5)
|
|
967
|
-
- enable_rerank: 是否启用重排序 (可选, 默认 true)
|
|
968
|
-
"""
|
|
969
|
-
try:
|
|
970
|
-
from astrbot.core import sp
|
|
971
|
-
|
|
972
|
-
data = await request.json
|
|
973
|
-
|
|
974
|
-
scope = data.get("scope")
|
|
975
|
-
scope_id = data.get("scope_id")
|
|
976
|
-
kb_ids = data.get("kb_ids", [])
|
|
977
|
-
top_k = data.get("top_k", 5)
|
|
978
|
-
enable_rerank = data.get("enable_rerank", True)
|
|
979
|
-
|
|
980
|
-
# 验证参数
|
|
981
|
-
if scope != "session":
|
|
982
|
-
return Response().error("目前仅支持 session 范围的配置").__dict__
|
|
983
|
-
|
|
984
|
-
if not scope_id:
|
|
985
|
-
return Response().error("缺少参数 scope_id").__dict__
|
|
986
|
-
|
|
987
|
-
if not isinstance(kb_ids, list):
|
|
988
|
-
return Response().error("kb_ids 必须是列表").__dict__
|
|
989
|
-
|
|
990
|
-
# 验证知识库是否存在
|
|
991
|
-
kb_mgr = self._get_kb_manager()
|
|
992
|
-
invalid_ids = []
|
|
993
|
-
valid_ids = []
|
|
994
|
-
for kb_id in kb_ids:
|
|
995
|
-
kb_helper = await kb_mgr.get_kb(kb_id)
|
|
996
|
-
if kb_helper:
|
|
997
|
-
valid_ids.append(kb_id)
|
|
998
|
-
else:
|
|
999
|
-
invalid_ids.append(kb_id)
|
|
1000
|
-
logger.warning(f"[KB配置] 知识库不存在: {kb_id}")
|
|
1001
|
-
|
|
1002
|
-
if invalid_ids:
|
|
1003
|
-
logger.warning(f"[KB配置] 以下知识库ID无效: {invalid_ids}")
|
|
1004
|
-
|
|
1005
|
-
# 允许保存空列表,表示明确不使用任何知识库
|
|
1006
|
-
if kb_ids and not valid_ids:
|
|
1007
|
-
# 只有当用户提供了 kb_ids 但全部无效时才报错
|
|
1008
|
-
return Response().error(f"所有提供的知识库ID都无效: {kb_ids}").__dict__
|
|
1009
|
-
|
|
1010
|
-
# 如果 kb_ids 为空列表,表示用户想清空配置
|
|
1011
|
-
if not kb_ids:
|
|
1012
|
-
valid_ids = []
|
|
1013
|
-
|
|
1014
|
-
# 构建配置对象(只保存有效的ID)
|
|
1015
|
-
config = {
|
|
1016
|
-
"kb_ids": valid_ids,
|
|
1017
|
-
"top_k": top_k,
|
|
1018
|
-
"enable_rerank": enable_rerank,
|
|
1019
|
-
}
|
|
1020
|
-
|
|
1021
|
-
# 保存到 SharedPreferences
|
|
1022
|
-
await sp.session_put(scope_id, "kb_config", config)
|
|
1023
|
-
|
|
1024
|
-
# 立即验证是否保存成功
|
|
1025
|
-
verify_config = await sp.session_get(scope_id, "kb_config", default={})
|
|
1026
|
-
|
|
1027
|
-
if verify_config == config:
|
|
1028
|
-
return (
|
|
1029
|
-
Response()
|
|
1030
|
-
.ok(
|
|
1031
|
-
{"valid_ids": valid_ids, "invalid_ids": invalid_ids},
|
|
1032
|
-
"保存知识库配置成功",
|
|
1033
|
-
)
|
|
1034
|
-
.__dict__
|
|
1035
|
-
)
|
|
1036
|
-
logger.error("[KB配置] 配置保存失败,验证不匹配")
|
|
1037
|
-
return Response().error("配置保存失败").__dict__
|
|
1038
|
-
|
|
1039
|
-
except Exception as e:
|
|
1040
|
-
logger.error(f"[KB配置] 设置配置时出错: {e}", exc_info=True)
|
|
1041
|
-
return Response().error(f"设置会话知识库配置失败: {e!s}").__dict__
|
|
1042
|
-
|
|
1043
|
-
async def delete_session_kb_config(self):
|
|
1044
|
-
"""删除会话的知识库配置
|
|
1045
|
-
|
|
1046
|
-
Body:
|
|
1047
|
-
- scope: 配置范围 (目前只支持 "session")
|
|
1048
|
-
- scope_id: 会话 ID (必填)
|
|
1049
|
-
"""
|
|
1050
|
-
try:
|
|
1051
|
-
from astrbot.core import sp
|
|
1052
|
-
|
|
1053
|
-
data = await request.json
|
|
1054
|
-
|
|
1055
|
-
scope = data.get("scope")
|
|
1056
|
-
scope_id = data.get("scope_id")
|
|
1057
|
-
|
|
1058
|
-
# 验证参数
|
|
1059
|
-
if scope != "session":
|
|
1060
|
-
return Response().error("目前仅支持 session 范围的配置").__dict__
|
|
1061
|
-
|
|
1062
|
-
if not scope_id:
|
|
1063
|
-
return Response().error("缺少参数 scope_id").__dict__
|
|
1064
|
-
|
|
1065
|
-
# 从 SharedPreferences 删除配置
|
|
1066
|
-
await sp.session_remove(scope_id, "kb_config")
|
|
1067
|
-
|
|
1068
|
-
return Response().ok(message="删除知识库配置成功").__dict__
|
|
1069
|
-
|
|
1070
|
-
except Exception as e:
|
|
1071
|
-
logger.error(f"删除会话知识库配置失败: {e}")
|
|
1072
|
-
logger.error(traceback.format_exc())
|
|
1073
|
-
return Response().error(f"删除会话知识库配置失败: {e!s}").__dict__
|
|
1074
|
-
|
|
1075
919
|
async def upload_document_from_url(self):
|
|
1076
920
|
"""从 URL 上传文档
|
|
1077
921
|
|
|
@@ -74,7 +74,10 @@ class SessionManagementRoute(Route):
|
|
|
74
74
|
umo_id = pref.scope_id
|
|
75
75
|
if umo_id not in umo_rules:
|
|
76
76
|
umo_rules[umo_id] = {}
|
|
77
|
-
|
|
77
|
+
if pref.key == "session_plugin_config" and umo_id in pref.value["val"]:
|
|
78
|
+
umo_rules[umo_id][pref.key] = pref.value["val"][umo_id]
|
|
79
|
+
else:
|
|
80
|
+
umo_rules[umo_id][pref.key] = pref.value["val"]
|
|
78
81
|
|
|
79
82
|
# 搜索过滤
|
|
80
83
|
if search:
|
|
@@ -185,6 +188,35 @@ class SessionManagementRoute(Route):
|
|
|
185
188
|
for p in provider_manager.tts_provider_insts
|
|
186
189
|
]
|
|
187
190
|
|
|
191
|
+
# 获取可用的插件列表(排除 reserved 的系统插件)
|
|
192
|
+
plugin_manager = self.core_lifecycle.plugin_manager
|
|
193
|
+
available_plugins = [
|
|
194
|
+
{
|
|
195
|
+
"name": p.name,
|
|
196
|
+
"display_name": p.display_name or p.name,
|
|
197
|
+
"desc": p.desc,
|
|
198
|
+
}
|
|
199
|
+
for p in plugin_manager.context.get_all_stars()
|
|
200
|
+
if not p.reserved and p.name
|
|
201
|
+
]
|
|
202
|
+
|
|
203
|
+
# 获取可用的知识库列表
|
|
204
|
+
available_kbs = []
|
|
205
|
+
kb_manager = self.core_lifecycle.kb_manager
|
|
206
|
+
if kb_manager:
|
|
207
|
+
try:
|
|
208
|
+
kbs = await kb_manager.list_kbs()
|
|
209
|
+
available_kbs = [
|
|
210
|
+
{
|
|
211
|
+
"kb_id": kb.kb_id,
|
|
212
|
+
"kb_name": kb.kb_name,
|
|
213
|
+
"emoji": kb.emoji,
|
|
214
|
+
}
|
|
215
|
+
for kb in kbs
|
|
216
|
+
]
|
|
217
|
+
except Exception as e:
|
|
218
|
+
logger.warning(f"获取知识库列表失败: {e!s}")
|
|
219
|
+
|
|
188
220
|
return (
|
|
189
221
|
Response()
|
|
190
222
|
.ok(
|
|
@@ -197,6 +229,8 @@ class SessionManagementRoute(Route):
|
|
|
197
229
|
"available_chat_providers": available_chat_providers,
|
|
198
230
|
"available_stt_providers": available_stt_providers,
|
|
199
231
|
"available_tts_providers": available_tts_providers,
|
|
232
|
+
"available_plugins": available_plugins,
|
|
233
|
+
"available_kbs": available_kbs,
|
|
200
234
|
"available_rule_keys": AVAILABLE_SESSION_RULE_KEYS,
|
|
201
235
|
}
|
|
202
236
|
)
|
|
@@ -229,6 +263,11 @@ class SessionManagementRoute(Route):
|
|
|
229
263
|
if rule_key not in AVAILABLE_SESSION_RULE_KEYS:
|
|
230
264
|
return Response().error(f"不支持的规则键: {rule_key}").__dict__
|
|
231
265
|
|
|
266
|
+
if rule_key == "session_plugin_config":
|
|
267
|
+
rule_value = {
|
|
268
|
+
umo: rule_value,
|
|
269
|
+
}
|
|
270
|
+
|
|
232
271
|
# 使用 shared preferences 更新规则
|
|
233
272
|
await sp.session_put(umo, rule_key, rule_value)
|
|
234
273
|
|
|
@@ -56,7 +56,7 @@ astrbot/core/agent/runners/dify/dify_agent_runner.py,sha256=LYwpjOcBWf3XlwNVzrDv
|
|
|
56
56
|
astrbot/core/agent/runners/dify/dify_api_client.py,sha256=OXukDVgNx3VmYw6OCzjXyP8JmDWEFuy81sD9XnC4VRo,6530
|
|
57
57
|
astrbot/core/config/__init__.py,sha256=vZjtpC7vr-IvBgSUtbS04C0wpulmCG5tPmcEP1WYE_4,172
|
|
58
58
|
astrbot/core/config/astrbot_config.py,sha256=nGyvHyR9VJH9Pk0XKYyeDFVxjwbyVb9u0lIsuvpe3fg,6276
|
|
59
|
-
astrbot/core/config/default.py,sha256=
|
|
59
|
+
astrbot/core/config/default.py,sha256=3tipwUYSFBELGH2iXQRk3-SNjhCWrR-n_yVcnhIntJw,142988
|
|
60
60
|
astrbot/core/config/i18n_utils.py,sha256=T2uLmhx1nohJIou14QQBjb2TSvdxDxtfUjVHpwy13z0,3841
|
|
61
61
|
astrbot/core/db/__init__.py,sha256=s4oIWazGk2U1-9dkr3bvq8M4g9nwOXy4e3f53zlvAJk,10326
|
|
62
62
|
astrbot/core/db/po.py,sha256=zFv5eU4tuM6E4ehGzugHnszWl6VBpS_rcD9IjjjkhXE,9398
|
|
@@ -210,8 +210,8 @@ astrbot/core/star/README.md,sha256=LXxqxp3xv_oejO8ocBPOrbmLe0WB4feu43fYDNddHTQ,1
|
|
|
210
210
|
astrbot/core/star/__init__.py,sha256=ccAN4tGmHjKmMIuL4L0KTFpPz6_uf26yhCj0XQBf2do,2112
|
|
211
211
|
astrbot/core/star/config.py,sha256=FgrBz_fUrBU0-9BxD8enX-xGNGVbFxst3UT10sboYNA,3531
|
|
212
212
|
astrbot/core/star/context.py,sha256=a4jeHhQSx5NpzOmO1kPR5QxeOJEoivx9bsncou_-Wn4,21036
|
|
213
|
-
astrbot/core/star/session_llm_manager.py,sha256=
|
|
214
|
-
astrbot/core/star/session_plugin_manager.py,sha256=
|
|
213
|
+
astrbot/core/star/session_llm_manager.py,sha256=W_ZgNDyUPjMQGccqnK83hFjZvSCv5BLQeyv5fHvRLUw,5307
|
|
214
|
+
astrbot/core/star/session_plugin_manager.py,sha256=8sEzOxf_Gq-dwK_S-4rwocAFsYzx7Yi4FJuMRttPTac,2830
|
|
215
215
|
astrbot/core/star/star.py,sha256=Wkf81teNZ27JE_JrENuP0SrpFc2uFYRxHQsWo8R9-No,1826
|
|
216
216
|
astrbot/core/star/star_handler.py,sha256=Vv8GW70AUrezB0bjj8AzzdlnqOsX27LTypTlhiYbB-A,4927
|
|
217
217
|
astrbot/core/star/star_manager.py,sha256=_oFOYaf8IFhWy2KwRJ6TVVbjoywYLt2imuv5yTAqP4o,40343
|
|
@@ -256,19 +256,19 @@ astrbot/dashboard/routes/chat.py,sha256=v1nfoq3jSqiUnVZd9DilvPDgKz6_kIo8WdUG_dwZ
|
|
|
256
256
|
astrbot/dashboard/routes/config.py,sha256=IsSEl8flf1M79LTgUgMweewYaHQrr5Fxze335EkTXro,40535
|
|
257
257
|
astrbot/dashboard/routes/conversation.py,sha256=sFHgkpNDdTR9qkSOC_JfSjzkfTuv63iaMxvh52wQUzM,10773
|
|
258
258
|
astrbot/dashboard/routes/file.py,sha256=gULvXP9PnVOQlyv_PCEzZQE5ptnGQEjFPvwOLxdVgb4,708
|
|
259
|
-
astrbot/dashboard/routes/knowledge_base.py,sha256=
|
|
259
|
+
astrbot/dashboard/routes/knowledge_base.py,sha256=_3jjcpBjfErP9NI-h4FYBaw3lm5_eIhmfF-uju94Icg,39873
|
|
260
260
|
astrbot/dashboard/routes/log.py,sha256=84OFiLM-Cnqf3HxFne-ykUezfnArlwH4HyY8MJxch00,2143
|
|
261
261
|
astrbot/dashboard/routes/persona.py,sha256=MEcNHMxJmyvZ3ZhytI5IP7L3FSlMr1JDvdd5efN9Q-M,7833
|
|
262
262
|
astrbot/dashboard/routes/plugin.py,sha256=lc50jRSRcJfpKMrT1OlFDuA7e841SSCEyEhFXiX742c,20508
|
|
263
263
|
astrbot/dashboard/routes/route.py,sha256=GT5fYW9fxYmdVj5_6-Wob7nw_-JXuUNDMXGPWKZUbd8,1547
|
|
264
|
-
astrbot/dashboard/routes/session_management.py,sha256=
|
|
264
|
+
astrbot/dashboard/routes/session_management.py,sha256=3h-zlkiAN4MQQLETGORNoWDtnGCSbqxnK2mTu6jMeCY,14998
|
|
265
265
|
astrbot/dashboard/routes/stat.py,sha256=OgNM491WFuDSAQbbJUGl4_UsqrQNefOGMMRIPLLoVBQ,6780
|
|
266
266
|
astrbot/dashboard/routes/static_file.py,sha256=7KnNcOb1BVqSTft114LhGsDkfg69X2jHEm0tOK0kW0Y,1169
|
|
267
267
|
astrbot/dashboard/routes/t2i.py,sha256=F6smxdL99MF7cRw3hqS6-2GErw8Zhsv0V0mfBUeEk-c,8931
|
|
268
268
|
astrbot/dashboard/routes/tools.py,sha256=YsVFrwVIhxAI-Ikme7YPrHVnPVTkJ1IaH7n6ciREjdE,14663
|
|
269
269
|
astrbot/dashboard/routes/update.py,sha256=qXiqQ_dbqRVftOzGgCQrvK8-qopVK6zKhhVVJ9SK26U,6648
|
|
270
|
-
astrbot-4.7.
|
|
271
|
-
astrbot-4.7.
|
|
272
|
-
astrbot-4.7.
|
|
273
|
-
astrbot-4.7.
|
|
274
|
-
astrbot-4.7.
|
|
270
|
+
astrbot-4.7.1.dist-info/METADATA,sha256=7VCintJ9fcOvWXwadmXR1TKiW0AZ0s6ecwmVXPBNvqY,10370
|
|
271
|
+
astrbot-4.7.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
272
|
+
astrbot-4.7.1.dist-info/entry_points.txt,sha256=OEF09YmhBWYuViXrvTLLpstF4ccmNwDL8r7nnFD0pfI,53
|
|
273
|
+
astrbot-4.7.1.dist-info/licenses/LICENSE,sha256=zPfQj5Mq8-gThIiBcxETr7t8gND9bZWOjTGQAr80TQI,34500
|
|
274
|
+
astrbot-4.7.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|