AstrBot 4.3.5__py3-none-any.whl → 4.5.0__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.
Files changed (68) hide show
  1. astrbot/core/agent/runners/tool_loop_agent_runner.py +31 -2
  2. astrbot/core/astrbot_config_mgr.py +23 -51
  3. astrbot/core/config/default.py +92 -12
  4. astrbot/core/conversation_mgr.py +36 -1
  5. astrbot/core/core_lifecycle.py +24 -5
  6. astrbot/core/db/migration/migra_45_to_46.py +44 -0
  7. astrbot/core/db/vec_db/base.py +33 -2
  8. astrbot/core/db/vec_db/faiss_impl/document_storage.py +310 -52
  9. astrbot/core/db/vec_db/faiss_impl/embedding_storage.py +31 -3
  10. astrbot/core/db/vec_db/faiss_impl/vec_db.py +81 -23
  11. astrbot/core/file_token_service.py +6 -1
  12. astrbot/core/initial_loader.py +6 -3
  13. astrbot/core/knowledge_base/chunking/__init__.py +11 -0
  14. astrbot/core/knowledge_base/chunking/base.py +24 -0
  15. astrbot/core/knowledge_base/chunking/fixed_size.py +57 -0
  16. astrbot/core/knowledge_base/chunking/recursive.py +155 -0
  17. astrbot/core/knowledge_base/kb_db_sqlite.py +299 -0
  18. astrbot/core/knowledge_base/kb_helper.py +348 -0
  19. astrbot/core/knowledge_base/kb_mgr.py +287 -0
  20. astrbot/core/knowledge_base/models.py +114 -0
  21. astrbot/core/knowledge_base/parsers/__init__.py +15 -0
  22. astrbot/core/knowledge_base/parsers/base.py +50 -0
  23. astrbot/core/knowledge_base/parsers/markitdown_parser.py +25 -0
  24. astrbot/core/knowledge_base/parsers/pdf_parser.py +100 -0
  25. astrbot/core/knowledge_base/parsers/text_parser.py +41 -0
  26. astrbot/core/knowledge_base/parsers/util.py +13 -0
  27. astrbot/core/knowledge_base/retrieval/__init__.py +16 -0
  28. astrbot/core/knowledge_base/retrieval/hit_stopwords.txt +767 -0
  29. astrbot/core/knowledge_base/retrieval/manager.py +273 -0
  30. astrbot/core/knowledge_base/retrieval/rank_fusion.py +138 -0
  31. astrbot/core/knowledge_base/retrieval/sparse_retriever.py +130 -0
  32. astrbot/core/pipeline/process_stage/method/llm_request.py +29 -7
  33. astrbot/core/pipeline/process_stage/utils.py +80 -0
  34. astrbot/core/platform/astr_message_event.py +8 -7
  35. astrbot/core/platform/sources/misskey/misskey_adapter.py +380 -44
  36. astrbot/core/platform/sources/misskey/misskey_api.py +581 -45
  37. astrbot/core/platform/sources/misskey/misskey_event.py +76 -41
  38. astrbot/core/platform/sources/misskey/misskey_utils.py +254 -43
  39. astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py +2 -1
  40. astrbot/core/platform/sources/satori/satori_adapter.py +27 -1
  41. astrbot/core/platform/sources/satori/satori_event.py +270 -99
  42. astrbot/core/provider/manager.py +14 -9
  43. astrbot/core/provider/provider.py +67 -0
  44. astrbot/core/provider/sources/anthropic_source.py +4 -4
  45. astrbot/core/provider/sources/dashscope_source.py +10 -9
  46. astrbot/core/provider/sources/dify_source.py +6 -8
  47. astrbot/core/provider/sources/gemini_embedding_source.py +1 -2
  48. astrbot/core/provider/sources/openai_embedding_source.py +1 -2
  49. astrbot/core/provider/sources/openai_source.py +18 -15
  50. astrbot/core/provider/sources/openai_tts_api_source.py +1 -1
  51. astrbot/core/star/context.py +3 -0
  52. astrbot/core/star/star.py +6 -0
  53. astrbot/core/star/star_manager.py +13 -7
  54. astrbot/core/umop_config_router.py +81 -0
  55. astrbot/core/updator.py +1 -1
  56. astrbot/core/utils/io.py +23 -12
  57. astrbot/dashboard/routes/__init__.py +2 -0
  58. astrbot/dashboard/routes/config.py +137 -9
  59. astrbot/dashboard/routes/knowledge_base.py +1065 -0
  60. astrbot/dashboard/routes/plugin.py +24 -5
  61. astrbot/dashboard/routes/update.py +1 -1
  62. astrbot/dashboard/server.py +6 -0
  63. astrbot/dashboard/utils.py +161 -0
  64. {astrbot-4.3.5.dist-info → astrbot-4.5.0.dist-info}/METADATA +29 -13
  65. {astrbot-4.3.5.dist-info → astrbot-4.5.0.dist-info}/RECORD +68 -44
  66. {astrbot-4.3.5.dist-info → astrbot-4.5.0.dist-info}/WHEEL +0 -0
  67. {astrbot-4.3.5.dist-info → astrbot-4.5.0.dist-info}/entry_points.txt +0 -0
  68. {astrbot-4.3.5.dist-info → astrbot-4.5.0.dist-info}/licenses/LICENSE +0 -0
@@ -8,7 +8,7 @@ import ssl
8
8
  import certifi
9
9
 
10
10
  from .route import Route, Response, RouteContext
11
- from astrbot.core import logger
11
+ from astrbot.core import logger, file_token_service
12
12
  from quart import request
13
13
  from astrbot.core.star.star_manager import PluginManager
14
14
  from astrbot.core.core_lifecycle import AstrBotCoreLifecycle
@@ -54,6 +54,8 @@ class PluginRoute(Route):
54
54
  EventType.OnAfterMessageSentEvent: "发送消息后",
55
55
  }
56
56
 
57
+ self._logo_cache = {}
58
+
57
59
  async def reload_plugins(self):
58
60
  if DEMO_MODE:
59
61
  return (
@@ -147,7 +149,7 @@ class PluginRoute(Route):
147
149
  return False
148
150
 
149
151
  # 加载缓存文件
150
- with open(cache_file, "r", encoding="utf-8") as f:
152
+ with open(cache_file, encoding="utf-8") as f:
151
153
  cache_data = json.load(f)
152
154
 
153
155
  cached_md5 = cache_data.get("md5")
@@ -197,7 +199,7 @@ class PluginRoute(Route):
197
199
  """加载本地缓存的插件市场数据"""
198
200
  try:
199
201
  if os.path.exists(cache_file):
200
- with open(cache_file, "r", encoding="utf-8") as f:
202
+ with open(cache_file, encoding="utf-8") as f:
201
203
  cache_data = json.load(f)
202
204
  # 检查缓存是否有效
203
205
  if "data" in cache_data and "timestamp" in cache_data:
@@ -209,7 +211,7 @@ class PluginRoute(Route):
209
211
  logger.warning(f"加载插件市场缓存失败: {e}")
210
212
  return None
211
213
 
212
- def _save_plugin_cache(self, cache_file: str, data, md5: str = None):
214
+ def _save_plugin_cache(self, cache_file: str, data, md5: str | None = None):
213
215
  """保存插件市场数据到本地缓存"""
214
216
  try:
215
217
  # 确保目录存在
@@ -227,12 +229,27 @@ class PluginRoute(Route):
227
229
  except Exception as e:
228
230
  logger.warning(f"保存插件市场缓存失败: {e}")
229
231
 
232
+ async def get_plugin_logo_token(self, logo_path: str):
233
+ try:
234
+ if token := self._logo_cache.get(logo_path):
235
+ if not await file_token_service.check_token_expired(token):
236
+ return self._logo_cache[logo_path]
237
+ token = await file_token_service.register_file(logo_path, timeout=300)
238
+ self._logo_cache[logo_path] = token
239
+ return token
240
+ except Exception as e:
241
+ logger.warning(f"获取插件 Logo 失败: {e}")
242
+ return None
243
+
230
244
  async def get_plugins(self):
231
245
  _plugin_resp = []
232
246
  plugin_name = request.args.get("name")
233
247
  for plugin in self.plugin_manager.context.get_all_stars():
234
248
  if plugin_name and plugin.name != plugin_name:
235
249
  continue
250
+ logo_url = None
251
+ if plugin.logo_path:
252
+ logo_url = await self.get_plugin_logo_token(plugin.logo_path)
236
253
  _t = {
237
254
  "name": plugin.name,
238
255
  "repo": "" if plugin.repo is None else plugin.repo,
@@ -245,6 +262,8 @@ class PluginRoute(Route):
245
262
  "handlers": await self.get_plugin_handlers_info(
246
263
  plugin.star_handler_full_names
247
264
  ),
265
+ "display_name": plugin.display_name,
266
+ "logo": f"/api/file/{logo_url}" if logo_url else None,
248
267
  }
249
268
  _plugin_resp.append(_t)
250
269
  return (
@@ -469,7 +488,7 @@ class PluginRoute(Route):
469
488
  return Response().error(f"插件 {plugin_name} 没有README文件").__dict__
470
489
 
471
490
  try:
472
- with open(readme_path, "r", encoding="utf-8") as f:
491
+ with open(readme_path, encoding="utf-8") as f:
473
492
  readme_content = f.read()
474
493
 
475
494
  return (
@@ -67,7 +67,7 @@ class UpdateRoute(Route):
67
67
  "version": f"v{VERSION}",
68
68
  "has_new_version": ret is not None,
69
69
  "dashboard_version": dv,
70
- "dashboard_has_new_version": dv and dv != f"v{VERSION}",
70
+ "dashboard_has_new_version": bool(dv and dv != f"v{VERSION}"),
71
71
  },
72
72
  ).__dict__
73
73
  except Exception as e:
@@ -72,6 +72,7 @@ class AstrBotDashboard:
72
72
  )
73
73
  self.persona_route = PersonaRoute(self.context, db, core_lifecycle)
74
74
  self.t2i_route = T2iRoute(self.context, core_lifecycle)
75
+ self.kb_route = KnowledgeBaseRoute(self.context, core_lifecycle)
75
76
 
76
77
  self.app.add_url_rule(
77
78
  "/api/plug/<path:subpath>",
@@ -177,6 +178,11 @@ class AstrBotDashboard:
177
178
  else:
178
179
  port = self.core_lifecycle.astrbot_config["dashboard"].get("port", 6185)
179
180
  host = self.core_lifecycle.astrbot_config["dashboard"].get("host", "0.0.0.0")
181
+ enable = self.core_lifecycle.astrbot_config["dashboard"].get("enable", True)
182
+
183
+ if not enable:
184
+ logger.info("WebUI 已被禁用")
185
+ return
180
186
 
181
187
  logger.info(f"正在启动 WebUI, 监听地址: http://{host}:{port}")
182
188
 
@@ -0,0 +1,161 @@
1
+ import base64
2
+ import os
3
+ import traceback
4
+ from io import BytesIO
5
+ from astrbot.api import logger
6
+ from astrbot.core.knowledge_base.kb_helper import KBHelper
7
+ from astrbot.core.knowledge_base.kb_mgr import KnowledgeBaseManager
8
+ from astrbot.core.db.vec_db.faiss_impl import FaissVecDB
9
+
10
+
11
+ async def generate_tsne_visualization(
12
+ query: str, kb_names: list[str], kb_manager: KnowledgeBaseManager
13
+ ) -> str | None:
14
+ """生成 t-SNE 可视化图片
15
+
16
+ Args:
17
+ query: 查询文本
18
+ kb_names: 知识库名称列表
19
+ kb_manager: 知识库管理器
20
+
21
+ Returns:
22
+ 图片路径或 None
23
+ """
24
+ try:
25
+ import faiss
26
+ import numpy as np
27
+ import matplotlib
28
+
29
+ matplotlib.use("Agg") # 使用非交互式后端
30
+ import matplotlib.pyplot as plt
31
+ from sklearn.manifold import TSNE
32
+ except ImportError as e:
33
+ raise Exception(
34
+ "缺少必要的库以生成 t-SNE 可视化。请安装 matplotlib 和 scikit-learn: {e}"
35
+ ) from e
36
+
37
+ try:
38
+ # 获取第一个知识库的向量数据
39
+ kb_helper: KBHelper | None = None
40
+ for kb_name in kb_names:
41
+ kb_helper = await kb_manager.get_kb_by_name(kb_name)
42
+ if kb_helper:
43
+ break
44
+
45
+ if not kb_helper:
46
+ logger.warning("未找到知识库")
47
+ return None
48
+
49
+ kb = kb_helper.kb
50
+ index_path = f"data/knowledge_base/{kb.kb_id}/index.faiss"
51
+
52
+ # 读取 FAISS 索引
53
+ if not os.path.exists(index_path):
54
+ logger.warning(f"FAISS 索引不存在: {index_path}")
55
+ return None
56
+
57
+ index = faiss.read_index(index_path)
58
+
59
+ if index.ntotal == 0:
60
+ logger.warning("索引为空")
61
+ return None
62
+
63
+ # 提取所有向量
64
+ logger.info(f"提取 {index.ntotal} 个向量用于可视化...")
65
+ if isinstance(index, faiss.IndexIDMap):
66
+ base_index = faiss.downcast_index(index.index)
67
+ if hasattr(base_index, "reconstruct_n"):
68
+ vectors = base_index.reconstruct_n(0, index.ntotal)
69
+ else:
70
+ vectors = np.zeros((index.ntotal, index.d), dtype=np.float32)
71
+ for i in range(index.ntotal):
72
+ base_index.reconstruct(i, vectors[i])
73
+ elif hasattr(index, "reconstruct_n"):
74
+ vectors = index.reconstruct_n(0, index.ntotal)
75
+ else:
76
+ vectors = np.zeros((index.ntotal, index.d), dtype=np.float32)
77
+ for i in range(index.ntotal):
78
+ index.reconstruct(i, vectors[i])
79
+
80
+ # 获取查询向量
81
+ vec_db: FaissVecDB = kb_helper.vec_db # type: ignore
82
+ embedding_provider = vec_db.embedding_provider
83
+ query_embedding = await embedding_provider.get_embedding(query)
84
+ query_vector = np.array([query_embedding], dtype=np.float32)
85
+
86
+ # 合并所有向量和查询向量
87
+ all_vectors = np.vstack([vectors, query_vector])
88
+
89
+ # t-SNE 降维
90
+ logger.info("开始 t-SNE 降维...")
91
+ perplexity = min(30, all_vectors.shape[0] - 1)
92
+ tsne = TSNE(n_components=2, random_state=42, perplexity=perplexity)
93
+ vectors_2d = tsne.fit_transform(all_vectors)
94
+
95
+ # 分离知识库向量和查询向量
96
+ kb_vectors_2d = vectors_2d[:-1]
97
+ query_vector_2d = vectors_2d[-1]
98
+
99
+ # 可视化
100
+ logger.info("生成可视化图表...")
101
+ plt.figure(figsize=(14, 10))
102
+
103
+ # 绘制知识库向量
104
+ scatter = plt.scatter(
105
+ kb_vectors_2d[:, 0],
106
+ kb_vectors_2d[:, 1],
107
+ alpha=0.5,
108
+ s=40,
109
+ c=range(len(kb_vectors_2d)),
110
+ cmap="viridis",
111
+ label="Knowledge Base Vectors",
112
+ )
113
+
114
+ # 绘制查询向量(红色 X)
115
+ plt.scatter(
116
+ query_vector_2d[0],
117
+ query_vector_2d[1],
118
+ c="red",
119
+ s=300,
120
+ marker="X",
121
+ edgecolors="black",
122
+ linewidths=2,
123
+ label="Query",
124
+ zorder=5,
125
+ )
126
+
127
+ # 添加查询文本标注
128
+ plt.annotate(
129
+ "Query",
130
+ (query_vector_2d[0], query_vector_2d[1]),
131
+ xytext=(10, 10),
132
+ textcoords="offset points",
133
+ fontsize=10,
134
+ bbox={"boxstyle": "round,pad=0.5", "fc": "yellow", "alpha": 0.7},
135
+ arrowprops={"arrowstyle": "->", "connectionstyle": "arc3,rad=0"},
136
+ )
137
+
138
+ plt.colorbar(scatter, label="Vector Index")
139
+ plt.title(
140
+ f"t-SNE Visualization: Query in Knowledge Base\n"
141
+ f"({index.ntotal} vectors, {index.d} dimensions, KB: {kb.kb_name})",
142
+ fontsize=14,
143
+ pad=20,
144
+ )
145
+ plt.xlabel("t-SNE Dimension 1", fontsize=12)
146
+ plt.ylabel("t-SNE Dimension 2", fontsize=12)
147
+ plt.grid(True, alpha=0.3)
148
+ plt.legend(fontsize=10, loc="upper right")
149
+
150
+ # base64 编码图片返回
151
+ buffer = BytesIO()
152
+ plt.savefig(buffer, format="png", dpi=150, bbox_inches="tight")
153
+ plt.close()
154
+ buffer.seek(0)
155
+ img_base64 = base64.b64encode(buffer.read()).decode("utf-8")
156
+ return img_base64
157
+
158
+ except Exception as e:
159
+ logger.error(f"生成 t-SNE 可视化时出错: {e}")
160
+ logger.error(traceback.format_exc())
161
+ return None
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: AstrBot
3
- Version: 4.3.5
3
+ Version: 4.5.0
4
4
  Summary: 易上手的多平台 LLM 聊天机器人及开发框架
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.10
7
7
  Requires-Dist: aiocqhttp>=1.4.4
8
8
  Requires-Dist: aiodocker>=0.24.0
9
+ Requires-Dist: aiofiles>=25.1.0
9
10
  Requires-Dist: aiohttp>=3.11.18
10
11
  Requires-Dist: aiosqlite>=0.21.0
11
12
  Requires-Dist: anthropic>=0.51.0
@@ -25,10 +26,11 @@ Requires-Dist: docstring-parser>=0.16
25
26
  Requires-Dist: faiss-cpu==1.10.0
26
27
  Requires-Dist: filelock>=3.18.0
27
28
  Requires-Dist: google-genai>=1.14.0
29
+ Requires-Dist: jieba>=0.42.1
28
30
  Requires-Dist: lark-oapi>=1.4.15
29
31
  Requires-Dist: lxml-html-clean>=0.4.2
32
+ Requires-Dist: markitdown-no-magika[docx,xls,xlsx]>=0.1.2
30
33
  Requires-Dist: mcp>=1.8.0
31
- Requires-Dist: mi-googlesearch-python==1.3.0.post1
32
34
  Requires-Dist: openai>=1.78.0
33
35
  Requires-Dist: ormsgpack>=1.9.1
34
36
  Requires-Dist: pillow>=11.2.1
@@ -38,9 +40,11 @@ Requires-Dist: py-cord>=2.6.1
38
40
  Requires-Dist: pydantic~=2.10.3
39
41
  Requires-Dist: pydub>=0.25.1
40
42
  Requires-Dist: pyjwt>=2.10.1
43
+ Requires-Dist: pypdf>=6.1.1
41
44
  Requires-Dist: python-telegram-bot>=22.0
42
45
  Requires-Dist: qq-botpy>=1.2.1
43
46
  Requires-Dist: quart>=0.20.0
47
+ Requires-Dist: rank-bm25>=0.2.2
44
48
  Requires-Dist: readability-lxml>=0.8.4.1
45
49
  Requires-Dist: silk-python>=0.2.6
46
50
  Requires-Dist: slack-sdk>=3.35.0
@@ -58,21 +62,32 @@ Description-Content-Type: text/markdown
58
62
 
59
63
  <div align="center">
60
64
 
65
+ <br>
66
+
67
+ <div>
61
68
  <a href="https://trendshift.io/repositories/12875" target="_blank"><img src="https://trendshift.io/api/badge/repositories/12875" alt="Soulter%2FAstrBot | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
69
+ <a href="https://hellogithub.com/repository/AstrBotDevs/AstrBot" target="_blank"><img src="https://api.hellogithub.com/v1/widgets/recommend.svg?rid=d127d50cd5e54c5382328acc3bb25483&claim_uid=ZO9by7qCXgSd6Lp" alt="Featured|HelloGitHub" style="width: 250px; height: 54px;" width="250" height="54" /></a>
70
+ </div>
71
+
72
+ <br>
62
73
 
63
- [![GitHub release (latest by date)](https://img.shields.io/github/v/release/Soulter/AstrBot?style=for-the-badge&color=76bad9)](https://github.com/Soulter/AstrBot/releases/latest)
74
+ <div>
75
+ <img src="https://img.shields.io/github/v/release/AstrBotDevs/AstrBot?style=for-the-badge&color=76bad9" href="https://github.com/AstrBotDevs/AstrBot/releases/latest">
64
76
  <img src="https://img.shields.io/badge/python-3.10+-blue.svg?style=for-the-badge&color=76bad9" alt="python">
65
77
  <a href="https://hub.docker.com/r/soulter/astrbot"><img alt="Docker pull" src="https://img.shields.io/docker/pulls/soulter/astrbot.svg?style=for-the-badge&color=76bad9"/></a>
66
- <a href="https://qm.qq.com/cgi-bin/qm/qr?k=wtbaNx7EioxeaqS9z7RQWVXPIxg2zYr7&jump_from=webapi&authKey=vlqnv/AV2DbJEvGIcxdlNSpfxVy+8vVqijgreRdnVKOaydpc+YSw4MctmEbr0k5"><img alt="QQ_community" src="https://img.shields.io/badge/QQ群-775869627-purple?style=for-the-badge&color=76bad9"></a>
67
- <a href="https://t.me/+hAsD2Ebl5as3NmY1"><img alt="Telegram_community" src="https://img.shields.io/badge/Telegram-AstrBot-purple?style=for-the-badge&color=76bad9"></a>
68
- ![Dynamic JSON Badge](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.soulter.top%2Fastrbot%2Fplugin-num&query=%24.result&suffix=%E4%B8%AA&style=for-the-badge&label=%E6%8F%92%E4%BB%B6%E5%B8%82%E5%9C%BA&cacheSeconds=3600)
78
+ <a href="https://qm.qq.com/cgi-bin/qm/qr?k=wtbaNx7EioxeaqS9z7RQWVXPIxg2zYr7&jump_from=webapi&authKey=vlqnv/AV2DbJEvGIcxdlNSpfxVy+8vVqijgreRdnVKOaydpc+YSw4MctmEbr0k5"><img alt="QQ_community" src="https://img.shields.io/badge/QQ群-775869627-purple?style=for-the-badge&color=76bad9"></a>
79
+ <a href="https://t.me/+hAsD2Ebl5as3NmY1"><img alt="Telegram_community" src="https://img.shields.io/badge/Telegram-AstrBot-purple?style=for-the-badge&color=76bad9"></a>
80
+ <img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.soulter.top%2Fastrbot%2Fplugin-num&query=%24.result&suffix=%E4%B8%AA&style=for-the-badge&label=%E6%8F%92%E4%BB%B6%E5%B8%82%E5%9C%BA&cacheSeconds=3600">
81
+ </div>
82
+
83
+ <br>
69
84
 
70
- <a href="https://github.com/Soulter/AstrBot/blob/master/README_en.md">English</a> |
71
- <a href="https://github.com/Soulter/AstrBot/blob/master/README_ja.md">日本語</a> |
85
+ <a href="https://github.com/AstrBotDevs/AstrBot/blob/master/README_en.md">English</a> |
86
+ <a href="https://github.com/AstrBotDevs/AstrBot/blob/master/README_ja.md">日本語</a> |
72
87
  <a href="https://astrbot.app/">文档</a> |
73
88
  <a href="https://blog.astrbot.app/">Blog</a> |
74
89
  <a href="https://astrbot.featurebase.app/roadmap">路线图</a> |
75
- <a href="https://github.com/Soulter/AstrBot/issues">问题提交</a>
90
+ <a href="https://github.com/AstrBotDevs/AstrBot/issues">问题提交</a>
76
91
  </div>
77
92
 
78
93
  AstrBot 是一个开源的一站式 Agent 聊天机器人平台及开发框架。
@@ -115,7 +130,7 @@ AstrBot 已由雨云官方上架至云应用平台,可一键部署。
115
130
 
116
131
  社区贡献的部署方式。
117
132
 
118
- [![Run on Repl.it](https://repl.it/badge/github/Soulter/AstrBot)](https://repl.it/github/Soulter/AstrBot)
133
+ [![Run on Repl.it](https://repl.it/badge/github/AstrBotDevs/AstrBot)](https://repl.it/github/AstrBotDevs/AstrBot)
119
134
 
120
135
  #### Windows 一键安装器部署
121
136
 
@@ -172,6 +187,7 @@ uv run main.py
172
187
  | QQ(OneBot) | ✔ |
173
188
  | Telegram | ✔ |
174
189
  | 企微应用 | ✔ |
190
+ | 企微智能机器人 | ✔ |
175
191
  | 微信客服 | ✔ |
176
192
  | 微信公众号 | ✔ |
177
193
  | 飞书 | ✔ |
@@ -180,7 +196,6 @@ uv run main.py
180
196
  | Discord | ✔ |
181
197
  | Satori | ✔ |
182
198
  | Misskey | ✔ |
183
- | 企微智能机器人 | 将支持 |
184
199
  | Whatsapp | 将支持 |
185
200
  | LINE | 将支持 |
186
201
 
@@ -191,6 +206,7 @@ uv run main.py
191
206
  | [KOOK](https://github.com/wuyan1003/astrbot_plugin_kook_adapter) | ✔ |
192
207
  | [VoceChat](https://github.com/HikariFroya/astrbot_plugin_vocechat) | ✔ |
193
208
  | [Bilibili 私信](https://github.com/Hina-Chat/astrbot_plugin_bilibili_adapter) | ✔ |
209
+ | [wxauto](https://github.com/luosheng520qaq/wxauto-repost-onebotv11) | ✔ |
194
210
 
195
211
  ## ⚡ 提供商支持情况
196
212
 
@@ -252,7 +268,7 @@ uv run main.py
252
268
  AstrBot 使用 `ruff` 进行代码格式化和检查。
253
269
 
254
270
  ```bash
255
- git clone https://github.com/Soulter/AstrBot
271
+ git clone https://github.com/AstrBotDevs/AstrBot
256
272
  pip install pre-commit
257
273
  pre-commit install
258
274
  ```
@@ -276,7 +292,7 @@ pre-commit install
276
292
 
277
293
  <div align="center">
278
294
 
279
- [![Star History Chart](https://api.star-history.com/svg?repos=soulter/astrbot&type=Date)](https://star-history.com/#soulter/astrbot&Date)
295
+ [![Star History Chart](https://api.star-history.com/svg?repos=astrbotdevs/astrbot&type=Date)](https://star-history.com/#astrbotdevs/astrbot&Date)
280
296
 
281
297
  </div>
282
298
 
@@ -21,16 +21,17 @@ astrbot/cli/utils/plugin.py,sha256=kS37S3bAK3q43mL2wvQM8FuqaSkgLQU_Yt2XqxjnxNo,8
21
21
  astrbot/cli/utils/version_comparator.py,sha256=3gLFA94eswvFsBVDSJmOTLJKxTdCD9kkQFy2Lu7vcTc,3482
22
22
  astrbot/core/__init__.py,sha256=-1atHjMqQyequsw6A1heEr4LldE0JVII9MXcuQFSAQM,1218
23
23
  astrbot/core/astr_agent_context.py,sha256=emypZloG0UWATEKUobDH8yLYcqmaVj9N3HwMQmvY3sc,375
24
- astrbot/core/astrbot_config_mgr.py,sha256=Z1OwN1DKoZFdul9S8wWeRTiPjKnp0OiYQlmSloVw5nI,10024
25
- astrbot/core/conversation_mgr.py,sha256=DCnFXhdB0vf94vclX8l-JbLRcSny3cwxhwecAV4jbW0,12217
26
- astrbot/core/core_lifecycle.py,sha256=z8ivxD4OY5iBK8XO078OlmvSwnCtpTKtiuMF_AF1Adk,11588
24
+ astrbot/core/astrbot_config_mgr.py,sha256=jQZJjdcmYF-dSdWLykTDi3IW-OwEBPboSmYWXLAsVs0,8747
25
+ astrbot/core/conversation_mgr.py,sha256=_N91hLjpW7BgnOtqvjRX-OK6xAZU4a0trawfJBCc60c,13569
26
+ astrbot/core/core_lifecycle.py,sha256=MBOeW0B8Kkg6fF5BRVf2tx4jJ4oXqlxUlOJMiAQmRTg,12467
27
27
  astrbot/core/event_bus.py,sha256=781lHFtnOfxBqS4CSxwTiPyoPvYOlbJce6arUGVfZEg,2536
28
- astrbot/core/file_token_service.py,sha256=JmojgbEV022CTiFLsueOHrTnQV3BUnF5-_XU8x-1yz8,3107
29
- astrbot/core/initial_loader.py,sha256=bycQeKq_xcP3cp-4jVlgoF2GE8nrWvEtkFZm2tL-A3g,1716
28
+ astrbot/core/file_token_service.py,sha256=LMU9NOc4RF7FUniZq5dhpR-auE3mVdZ2o0-ogcY-PEA,3315
29
+ astrbot/core/initial_loader.py,sha256=c-rvcPIOOYYzlfSfu4VN5LsAmblFWJTr8tQRX2mooWo,1789
30
30
  astrbot/core/log.py,sha256=wFCYVMMoyiMlGCI0PE8lYdJBd3SpxrkXjx1PvnlOEIU,8521
31
31
  astrbot/core/persona_mgr.py,sha256=iWvGsiHpky1fbPhmfQP1jDzHTWqv6g3GQ7ZROeOdaAc,7300
32
32
  astrbot/core/platform_message_history_mgr.py,sha256=qNd5No1HzaLKQ6XVFdJohaiwAB6cjJVXPSwgmxsUyAs,1514
33
- astrbot/core/updator.py,sha256=voVD-08Jc-s7TBqiRboZk1DLlPQjcstr6LgPklIWlVk,4588
33
+ astrbot/core/umop_config_router.py,sha256=ky6mTDQ3tIq-7Xz5XiM9Djmg_7b7WD8ejQIt5qsjkr0,2962
34
+ astrbot/core/updator.py,sha256=ry2Xg5ex1k_TdhOM1UMi_PsK2HF6H6n4OUlaXWLXs7c,4592
34
35
  astrbot/core/zip_updator.py,sha256=iSwa3S2fHXGqYA3ie4SEMrWNy6fSDpW5toCygQFdKSQ,8828
35
36
  astrbot/core/agent/agent.py,sha256=ruwCYv7ySS5zxmhD_49ABKJ8CZSS4lY2fQ2rTlitP-k,365
36
37
  astrbot/core/agent/handoff.py,sha256=_046TjTUda3CxtXR0ngb_z3f1XGTqx9pfhh28_Dl3Ts,1168
@@ -42,23 +43,43 @@ astrbot/core/agent/tool.py,sha256=fXFkQGFIIoX9Y1GYj_LIGyrybOeEKSqOo7-3F10zf58,89
42
43
  astrbot/core/agent/tool_executor.py,sha256=keliOV_lyrI6CALr-MAVCdLE-HjxZh9zygoY61IVkfM,384
43
44
  astrbot/core/agent/runners/__init__.py,sha256=KwR34OKGVSQpJ_MaGVP_MX5L1SZ4oU-lv4GuMbSF5Ys,65
44
45
  astrbot/core/agent/runners/base.py,sha256=exZS_d2BsrLz-xgeY9ZUPuXikBDUnKxO-dU3ZFQMhRs,1625
45
- astrbot/core/agent/runners/tool_loop_agent_runner.py,sha256=O4sYg1V3dbUcZFLek5Izi-aEJb983tk9DJOCBQvQjro,13558
46
+ astrbot/core/agent/runners/tool_loop_agent_runner.py,sha256=bg-YKJV2jRNyR2gu3FZNx_aKIFUYr5zjyzJWDlVLVpU,14940
46
47
  astrbot/core/config/__init__.py,sha256=0CO_3sKtI3WOwWT0k4i6TleWq1SAWJFfB8KjnYB8Zig,172
47
48
  astrbot/core/config/astrbot_config.py,sha256=X-b3c5m4msgJrdYFH2LXic5XKY0ViuUMdNZ335zqSBw,6335
48
- astrbot/core/config/default.py,sha256=vbUAFpfz7ckiih9Hi3rXKq-WsTK3Ut0rs1RyPW90ZHY,126511
49
+ astrbot/core/config/default.py,sha256=wqWnrQlpgzojHB_Mur8duaGTiik0vR6dBifJxrgX0_c,131302
49
50
  astrbot/core/db/__init__.py,sha256=JOAMt7_j0y96CuArXJ-YY_qXisSartOZwyDTKf9ZDn8,8844
50
51
  astrbot/core/db/po.py,sha256=NDOJpUXI1i4BF1uymCj07opwXM0gdHBtwCoL16Xj4jc,7798
51
52
  astrbot/core/db/sqlite.py,sha256=_5-B2Jlare4twLG0TlO95bVTaLu0HAXsfpX5LOcoVWA,26082
52
53
  astrbot/core/db/migration/helper.py,sha256=FcwpvBANNeyBSrRhXyd3hudHYEyhTyrcRg9mU9lZtqY,1935
53
54
  astrbot/core/db/migration/migra_3_to_4.py,sha256=I1CesaBbf5wj9agtNWxDl1V-qixmwdURbBQf5Vzagrk,15025
55
+ astrbot/core/db/migration/migra_45_to_46.py,sha256=Fw6DG_eJ2zNZkEs2tmSqvgDDapslzLpm5SaJhGuN32E,1559
54
56
  astrbot/core/db/migration/shared_preferences_v3.py,sha256=tE11WIpwT-Q8yVBkw4eveRr1PmFdNRJQSprH4xdO3G4,1245
55
57
  astrbot/core/db/migration/sqlite_v3.py,sha256=U3Uysd_IGT4ObqCFE7yQeIo_1kBrAYb_r09Uy_Vvr3A,15002
56
- astrbot/core/db/vec_db/base.py,sha256=Oc1mE-ecAaroQBxtVy5aGW9lHIbARRChjvAwaOFIMVE,1058
58
+ astrbot/core/db/vec_db/base.py,sha256=CGqXkxoUluu4L-m-Pkx04ecU2hHg7z6xs2fKlavTPuM,1809
57
59
  astrbot/core/db/vec_db/faiss_impl/__init__.py,sha256=S3gwB-ZL9aPJwDM5ia8a_t-xsfANKoslpJvtNd5ErcU,57
58
- astrbot/core/db/vec_db/faiss_impl/document_storage.py,sha256=6aswY7f6vmpnJ7BXjVUFUI4vA3i83R9FzN35XWrS8yI,4166
59
- astrbot/core/db/vec_db/faiss_impl/embedding_storage.py,sha256=pSu-ySlli-wbeVFQ7v-ZWpVn08m3Rr9uld1_692_aZQ,1810
60
+ astrbot/core/db/vec_db/faiss_impl/document_storage.py,sha256=CHNYUasgiIth35BRt2mMw_PfBwlcsSlaQ9ZaSemsYTE,13448
61
+ astrbot/core/db/vec_db/faiss_impl/embedding_storage.py,sha256=xh1ym9VJ1-TOJQ-u_thA31g9wpqlApKG2VUHmq-_F-Y,2920
60
62
  astrbot/core/db/vec_db/faiss_impl/sqlite_init.sql,sha256=RiF1mnAFAHtyThOsS0qjvniUF5t9Y8k-gjSlh51p2x8,681
61
- astrbot/core/db/vec_db/faiss_impl/vec_db.py,sha256=Tpp-pNoRWc1MnRRpo6CeM2TbSc9lDwGNwufXspxDlfc,5146
63
+ astrbot/core/db/vec_db/faiss_impl/vec_db.py,sha256=tgE0O58XIbd0tf7kAUdkSjFEiIB-PgjgWrT5VWhwdcI,7085
64
+ astrbot/core/knowledge_base/kb_db_sqlite.py,sha256=_yWPGRnqYG7TG1nNqGmRP3cu5ZVmQvumX2rhvhrHLyo,11052
65
+ astrbot/core/knowledge_base/kb_helper.py,sha256=46E1WNgAJwvIlPnEug7Do7TCE9nsIivrNbRcq36wP5Y,12030
66
+ astrbot/core/knowledge_base/kb_mgr.py,sha256=DJY3noHavR9NzxqlAW-T9kjjssZ0-pyuaKnMKziZ2nI,9740
67
+ astrbot/core/knowledge_base/models.py,sha256=k5iijWxEIhxkdinIVFQZ5MXVNi78tAh7uRhUl-qDwMA,3931
68
+ astrbot/core/knowledge_base/chunking/__init__.py,sha256=l_N4AhYoRksf0Ba9DTRkagTMh-GPtJhIdrLhD2KlwOQ,157
69
+ astrbot/core/knowledge_base/chunking/base.py,sha256=a8EcYz3Oo0IJVVGTN_Lgce72RHFF5CSx1-4rG2CiQP4,470
70
+ astrbot/core/knowledge_base/chunking/fixed_size.py,sha256=yitpENu_IcFo8SsIEyt9IEPOhbWIqZrgZlTqYm1xTdc,1557
71
+ astrbot/core/knowledge_base/chunking/recursive.py,sha256=6JXMFx7HrV_diYqUMym8QJ-rUYfpwSp1E-D8cvL2AYo,5721
72
+ astrbot/core/knowledge_base/parsers/__init__.py,sha256=VedaV8zxk8TPBKzIQhUwbIop5FVN-INoNJYdTGDdqLg,258
73
+ astrbot/core/knowledge_base/parsers/base.py,sha256=JAsLZ6-57PADmSaaBW9mBllNZIuSRziqW_zhV73vTn8,962
74
+ astrbot/core/knowledge_base/parsers/markitdown_parser.py,sha256=L6W2PhkLIUP0xy8BOR1DwH7vMCDORztTnRG8rG-ykgg,700
75
+ astrbot/core/knowledge_base/parsers/pdf_parser.py,sha256=TxUQHl4dp3lVXbdJMxX3ZWFjblg2hZFoyFKbsVK40wk,3091
76
+ astrbot/core/knowledge_base/parsers/text_parser.py,sha256=XFo6y3eha4g4y3iZ_4KORoWdvYWX-zrjLUt4phSk2Ao,1094
77
+ astrbot/core/knowledge_base/parsers/util.py,sha256=wjBUHBC3Cfau5hvspjDrqsMjxh5BF8NjZgNiQtShmss,398
78
+ astrbot/core/knowledge_base/retrieval/__init__.py,sha256=UHpL0MqdRtpySSk2Yd-C_yd_m1nlhRK0rFv24lUCwlU,328
79
+ astrbot/core/knowledge_base/retrieval/hit_stopwords.txt,sha256=8LikiRxpjLdAfJYyOQ2tUUPM9wEEZ0y3Mh_XXsxAeug,5271
80
+ astrbot/core/knowledge_base/retrieval/manager.py,sha256=VP31I5lG_qQLFE7e27IljPT-lcd9MQbJi3jYT3FOFNk,8433
81
+ astrbot/core/knowledge_base/retrieval/rank_fusion.py,sha256=Rf5_BShFRTTYp7I6VbNnUnaEp0OhIMSfb3u1seSXTr4,4412
82
+ astrbot/core/knowledge_base/retrieval/sparse_retriever.py,sha256=O93uwRkZYJwS0C2Yi92bM4jPTVST0Ye13xaQOLfohek,3777
62
83
  astrbot/core/message/components.py,sha256=AzJACQYgw0Yo1iwSIyQWtfE8Xyo-6Q8KcQPE9yT5otQ,28208
63
84
  astrbot/core/message/message_event_result.py,sha256=dooPyzDVV4danPNQBvZsSXemGsihnBjW3qYByYUEa1s,7248
64
85
  astrbot/core/pipeline/__init__.py,sha256=-jo6a9lKmwY8oPoifJi0IMLPOVdknQKG30ppIyCs5Bg,1461
@@ -73,7 +94,8 @@ astrbot/core/pipeline/content_safety_check/strategies/keywords.py,sha256=j3Ns_IH
73
94
  astrbot/core/pipeline/content_safety_check/strategies/strategy.py,sha256=G32Xf42EgeyEnhyPLVYlUMiSnDNHUUnnz_MG0PXqfV4,1234
74
95
  astrbot/core/pipeline/preprocess_stage/stage.py,sha256=QSgOswf8FHy1j4QozRxJv4qVd-RynG8eriHufian60U,4194
75
96
  astrbot/core/pipeline/process_stage/stage.py,sha256=2hCX5LdUCzX2RbleMLF_Yqiot9YDyutF3ePPOZsWeA0,2677
76
- astrbot/core/pipeline/process_stage/method/llm_request.py,sha256=vfOv3NgsjbbwnbhhjFuj3wPd12TyFZTvpaY1O8VkwXc,26181
97
+ astrbot/core/pipeline/process_stage/utils.py,sha256=1pGcZpQiMpdvULLrLpqTau9IwkTKTAE4L0XmcIPwPxU,2591
98
+ astrbot/core/pipeline/process_stage/method/llm_request.py,sha256=LaI9GaFhzm1Du_dDvgfLM1nUhdXC3rjm4hI6XAUl39o,26945
77
99
  astrbot/core/pipeline/process_stage/method/star_request.py,sha256=IuPP7qnxvBgKV6a9D3wLU4_KU3Ec3Ml7IOADQCXDgqk,2501
78
100
  astrbot/core/pipeline/rate_limit_check/stage.py,sha256=I_GkpSgioN0-T_catMwpRKtxx-TiMmvu8vV_FE5ORIA,4072
79
101
  astrbot/core/pipeline/respond/stage.py,sha256=XE5yGsHGxESP0zAGmx3qHovP1wGaJDXUgfLb5Z4wasE,10837
@@ -82,7 +104,7 @@ astrbot/core/pipeline/session_status_check/stage.py,sha256=woucuVbzzQoi62MDoP3lT
82
104
  astrbot/core/pipeline/waking_check/stage.py,sha256=URBFmfid1CKhtCGjH7OzFmxBE-Gt9vv1eYlp6msIv_Q,8240
83
105
  astrbot/core/pipeline/whitelist_check/stage.py,sha256=VcmLs0VfmspNTsitL_WrZXfv2lR2Nktrb5JEWc1VJuw,2403
84
106
  astrbot/core/platform/__init__.py,sha256=jQ4UiThp7cDHfmIXAgBDodET87onl7mjii0CAD3RXTY,361
85
- astrbot/core/platform/astr_message_event.py,sha256=pDZO52rLdPcPc-3c3VhK8SuUKmmxJimhaOh7W6BU19M,14657
107
+ astrbot/core/platform/astr_message_event.py,sha256=Re_tL9bugMXYpBu9WbWIeIPgHlDNy56FNGWShkCV5hg,14851
86
108
  astrbot/core/platform/astrbot_message.py,sha256=r7jlUPfaOEh0yCSHaS1KQtYarZ9B4ikqMZwDj-wLv_k,2655
87
109
  astrbot/core/platform/manager.py,sha256=UTA6Y4DE5gpkJtV_oEeKG1EH0KoaWHFT3RkjJ7HEwzM,8264
88
110
  astrbot/core/platform/message_session.py,sha256=Hitdfb7IK4SohaMFld0s0UlwLDpVw5UPTToh05bvH60,1076
@@ -100,17 +122,17 @@ astrbot/core/platform/sources/discord/discord_platform_adapter.py,sha256=aeR1lv8
100
122
  astrbot/core/platform/sources/discord/discord_platform_event.py,sha256=1YjlH3P-jY3tsE2dBFBnX9833_h55lI6A4xmLcOvlac,12008
101
123
  astrbot/core/platform/sources/lark/lark_adapter.py,sha256=JO_gBvAw6e2hTkXWOYeeSPUqdDjnsyVmtXh9SWXZO4A,8233
102
124
  astrbot/core/platform/sources/lark/lark_event.py,sha256=NXz624wDWV8NLi00va9KdMOvRo7o4FMafV-w2-Znzxg,5133
103
- astrbot/core/platform/sources/misskey/misskey_adapter.py,sha256=E1RSbuQ1D0blXBj66oQYyIHn2q5X4hkMZh6MS6XDKqg,14714
104
- astrbot/core/platform/sources/misskey/misskey_api.py,sha256=3q4mE3Y5TuY3tErHHLhzwv1MC0Bu2_Wj2R4Qu73GtN4,14546
105
- astrbot/core/platform/sources/misskey/misskey_event.py,sha256=wssLcT9bx-bXGiQw08uZNussmSR-2sfNjnbrrDn8xRY,4697
106
- astrbot/core/platform/sources/misskey/misskey_utils.py,sha256=BQO2nsqMYy5UDhqAoRtUuj72x9OwAnrIUx5AoHrIiJE,10747
125
+ astrbot/core/platform/sources/misskey/misskey_adapter.py,sha256=GrHoeogD4xe7H6c-yFEkDf5FrhEH2WfsqTGJyErGwkE,29088
126
+ astrbot/core/platform/sources/misskey/misskey_api.py,sha256=JEvYyKCxjLNo0WdVE2MiqxKryn3ki9YqZRZmZZCxsvs,35773
127
+ astrbot/core/platform/sources/misskey/misskey_event.py,sha256=Rt6I0ho1MyZUOVNKlxIQaPqzc1JR61HmBIKe7NVQOsQ,6464
128
+ astrbot/core/platform/sources/misskey/misskey_utils.py,sha256=fTxgsScSTWJ1XqsKXYxMMhb_U3CXAyMKlzHQ7Wc5zic,18029
107
129
  astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py,sha256=f8PA-kFZPe5iRqZZN4YYKj4wZSfozz8ySskxiE6BgpU,11954
108
130
  astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py,sha256=6zJGUdXc-EkQp8ITPRYr99tVEFIRc20x4Fs-9QVT8Zk,7279
109
131
  astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py,sha256=PTW_WpZSzlFuchtpu0uAIMy2KcDMi_BBnr6tUgOJNZk,4295
110
132
  astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_event.py,sha256=BrxaNhG3sy5QAKf8DlZlum6R7m9X5Fm0SxBrKIC_1hg,499
111
- astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py,sha256=5A8EVmdx0j1lrd4lmJhM3S_tJJYsdMrEcR93X-lYT4Y,3726
112
- astrbot/core/platform/sources/satori/satori_adapter.py,sha256=1CJOMXraR1uXCZc8-oHQF0sdqIM_xmQBFjZarhNGlEQ,26827
113
- astrbot/core/platform/sources/satori/satori_event.py,sha256=itSbWfA7Ym2qUWNreoWHLdg7xlFdfdNi6Jd3CM9Bjtw,10617
133
+ astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py,sha256=YOH6yV6YqI0RlxMVLA29cPh7CkS7CBbdbFe1QmFVxSo,3812
134
+ astrbot/core/platform/sources/satori/satori_adapter.py,sha256=wOsWD-Jb3Mps8fzfDGfokRB42k6pDN2gvpieajWULcQ,27815
135
+ astrbot/core/platform/sources/satori/satori_event.py,sha256=I-ppTK4lPd2TY58LdiQ20eCGPtMPn-nSaWpS6J4zqhM,16095
114
136
  astrbot/core/platform/sources/slack/client.py,sha256=p0gCh9gj_VR8IacGg09-BXp2IM8C0oTnodrvEVmShMA,5637
115
137
  astrbot/core/platform/sources/slack/slack_adapter.py,sha256=BdZTCNXsO5nUKY2HrZD5tpxMzpnvL7n3_vr2JgJfDS0,15812
116
138
  astrbot/core/platform/sources/slack/slack_event.py,sha256=RYTJBqk5-CYQKgk-ejPuMKJyfaxSTqPjvfqKvPNg5Yw,8791
@@ -141,27 +163,27 @@ astrbot/core/provider/__init__.py,sha256=fhD_KB1-KpqJ7woaXDXc7kdlmL3XPQz3xlc5IkF
141
163
  astrbot/core/provider/entites.py,sha256=-353AdRDA6ST4AS48cQ1RRAXHSy3F7pVS_28hW4cG2U,388
142
164
  astrbot/core/provider/entities.py,sha256=CkC-U9nafBKo2n2kLZqzukosDX7RuZWAK4DMBHQkasA,11238
143
165
  astrbot/core/provider/func_tool_manager.py,sha256=NuWMmAJaEwoJ3XCSvhwtmzDPdzX4K4BIRKuKgF0FlQk,20881
144
- astrbot/core/provider/manager.py,sha256=GoRR4hTRyYaaWH6_ICx0tflqG1Lng72dVOuq6pagb5k,21729
145
- astrbot/core/provider/provider.py,sha256=3R0xWAYuUQ0VXWja1TZtVVfqN8d3f9VhhYdpdqj5uaA,7239
166
+ astrbot/core/provider/manager.py,sha256=NJa0dpFwOXA6KFPwzRFgFEJ3D5L3wGtXXMYzHRDZBqc,21951
167
+ astrbot/core/provider/provider.py,sha256=I_240hwpzkHudVdeGrCEqJODjVR0yls3n84cviXyquI,9954
146
168
  astrbot/core/provider/register.py,sha256=bWAF9zWNnSYQWjmZIXiWgxFaeWIiWjEoEIN_xhmq3mM,1830
147
- astrbot/core/provider/sources/anthropic_source.py,sha256=GQY8TUw56V6pIGfqwT7KeJ-8dBSDZi7jjCwbhSsVekQ,15184
169
+ astrbot/core/provider/sources/anthropic_source.py,sha256=VKTd1wc6_6Z5G4l7Sqy3sqEqid-IMbPgi1s7RiYpaBw,15202
148
170
  astrbot/core/provider/sources/azure_tts_source.py,sha256=V8WGpMFeYn-DhmE2FtYYYir-51T1S81XKvP08tslm8E,9350
149
171
  astrbot/core/provider/sources/coze_api_client.py,sha256=dr2QpON0I83eIyadh5XDEVnGl26Jm5rbXGzQKkLBBcc,10820
150
172
  astrbot/core/provider/sources/coze_source.py,sha256=KddH9Ryl-cuaobjVBY5ar_cPEb5MUDvc7Pqx9BTp9Oo,25215
151
- astrbot/core/provider/sources/dashscope_source.py,sha256=HPzMCI-x5Ht76KxxvWHSwffW5tq6gWJQl48O_YKCTcc,7321
173
+ astrbot/core/provider/sources/dashscope_source.py,sha256=M93QNShgfdVy1rG8ffEKPUdHNLc02xEK-hGEbGvhr3k,7346
152
174
  astrbot/core/provider/sources/dashscope_tts.py,sha256=gMm876jMiL15bmMbkAaQSP-XKjSdL1rBLrXCFVQXJhQ,5522
153
- astrbot/core/provider/sources/dify_source.py,sha256=Q0VmnacKwD-fOnvwYqbrRMspDYOlJZAHnjBawRzshw4,11472
175
+ astrbot/core/provider/sources/dify_source.py,sha256=ktT-uHoCnDFQYMS1U5ueOHvuMvIVyX9qiPgWZADBTlE,11352
154
176
  astrbot/core/provider/sources/edge_tts_source.py,sha256=foO2E0Wdc2wJy8yMbLUyX0cjkP6MD4vPCbc8q3Ckkug,4716
155
177
  astrbot/core/provider/sources/fishaudio_tts_api_source.py,sha256=Tu4wHh5txKDWn3_Z57hWgzTU8QUw1oVFBndAqmp4aLY,5439
156
- astrbot/core/provider/sources/gemini_embedding_source.py,sha256=FlVlacBLlxo4ZZgrBhurDQRuDYRGtR8Du35XuXEY9nI,2307
178
+ astrbot/core/provider/sources/gemini_embedding_source.py,sha256=jrB2NJqXuZQootOiAGzZfuh-xEaeUxGc4HAfqjqjRLk,2272
157
179
  astrbot/core/provider/sources/gemini_source.py,sha256=U7imSkoR1kQyTZN_ueCnbMlJ3bi6cjSNdKivLeOUGeU,28787
158
180
  astrbot/core/provider/sources/gemini_tts_source.py,sha256=mNcb9G6Lb58L2zoSYzroQGyASGrv3k4ZjmOIVvhii_o,2886
159
181
  astrbot/core/provider/sources/gsv_selfhosted_source.py,sha256=7wSQ32AJv4cisjnedENfpThd1kHDqYvnMSCpwbpNNM4,5936
160
182
  astrbot/core/provider/sources/gsvi_tts_source.py,sha256=EoYuAf85NVcPPbyRWkE_doWF-7R8IM5o9ozxbbvaFRk,2025
161
183
  astrbot/core/provider/sources/minimax_tts_api_source.py,sha256=jNLP_4-UHq_Iekvjn3h7G6YZjTCGuII-hq-1RhzjSlE,5877
162
- astrbot/core/provider/sources/openai_embedding_source.py,sha256=IIz25EksuIWINKpLqfKG-9Qc4bJ398w24oMjoArXFUA,1669
163
- astrbot/core/provider/sources/openai_source.py,sha256=_koDL9xmsFb4Gf2r-1VWzKMGTwQcgs00RKtWOZqcfck,20944
164
- astrbot/core/provider/sources/openai_tts_api_source.py,sha256=ClRxEuBJ2-vM5rpMwwhOZXXJanq6asEAVPRvD9wYFrI,1626
184
+ astrbot/core/provider/sources/openai_embedding_source.py,sha256=3KH9WDXZEShESgu1lGgR_8wKzG88qKm0u5yR8lafBHQ,1634
185
+ astrbot/core/provider/sources/openai_source.py,sha256=R4U-epiyajct6E8FMMJpObsR-7p9QWXbFhfrCxvMUic,21045
186
+ astrbot/core/provider/sources/openai_tts_api_source.py,sha256=HpLR-hnwNV2u5ohO78phCpkAVRXnBkOSSPLKMeyzGmQ,1624
165
187
  astrbot/core/provider/sources/sensevoice_selfhosted_source.py,sha256=2-NUDRiJJs3onxnrovdoVqUMI8bxGu2J2n3ZgwjxEm0,3828
166
188
  astrbot/core/provider/sources/vllm_rerank_source.py,sha256=Gv_veniilJ5v9lPGlQG_zmQYmHfhNggYIwj5p02CoLE,2275
167
189
  astrbot/core/provider/sources/volcengine_tts.py,sha256=eNS7XUtDTunGuZV8UaI4-ghNyY_fDRW0hiZPssBNsPQ,4143
@@ -171,12 +193,12 @@ astrbot/core/provider/sources/zhipu_source.py,sha256=wUXp9wjMoFjYKqjwkDDUWGduzkr
171
193
  astrbot/core/star/README.md,sha256=LXxqxp3xv_oejO8ocBPOrbmLe0WB4feu43fYDNddHTQ,161
172
194
  astrbot/core/star/__init__.py,sha256=ynSwMrdCLyVMN3Q9flS_mcDDjdIGrkLBpfeDVoFj6PM,2080
173
195
  astrbot/core/star/config.py,sha256=f4h1YFt1Tn6S2D-LvnhM483qaD8JdWjl-TBRV9CeYBo,3593
174
- astrbot/core/star/context.py,sha256=6s2EdmIghQhLj2MFeRb5zwqO_wbug9zDTrljQgn-FvI,12961
196
+ astrbot/core/star/context.py,sha256=DEqoXpG_h2XeEwhZ5EevKo2EmX2H5mOUl4IODQXAFFk,13132
175
197
  astrbot/core/star/session_llm_manager.py,sha256=c9vPbL454_H--x5c-cjbiH-y1CrcMfTLfbhNmKgSYio,8467
176
198
  astrbot/core/star/session_plugin_manager.py,sha256=3vxbqPikZg4ZTHG_STvEKeqNplo78wknILSnFCmHTr0,5291
177
- astrbot/core/star/star.py,sha256=fEgg7pxiIsnRg4Xw_KBIyOy3V919MpIgAWQ7FoE7bWc,1690
199
+ astrbot/core/star/star.py,sha256=5jdigpi4WCTLROdg0q15cLOCgER6uNY9x3elqglCa_g,1831
178
200
  astrbot/core/star/star_handler.py,sha256=0hQq5QOre3AjPx7AfZfyfvx2k-iVBCaXg0hofvqE2k4,4888
179
- astrbot/core/star/star_manager.py,sha256=c6s90gg3SgUIQ2UZxUUhslFPdS3jxVaVZOulvSMRU7M,36392
201
+ astrbot/core/star/star_manager.py,sha256=cVj4yQYPwS20Y9w1ThnVz8jfeG62xKFDPxcJi65muyE,36703
180
202
  astrbot/core/star/star_tools.py,sha256=tAX49jAcGc5mFYu7FW3MrTFgAKtX-_TIE3tfeEArGx4,10863
181
203
  astrbot/core/star/updator.py,sha256=IVml0S4WGmKRl42EeDbU0bP8-7d0yfEY0X9qpshI_RA,3129
182
204
  astrbot/core/star/filter/__init__.py,sha256=xhdp6MMbBJbCHDDtBcAzWZ86DSFTPKzj8RpE2Cdb8ls,469
@@ -193,7 +215,7 @@ astrbot/core/star/register/star_handler.py,sha256=Dy6WkDyhHOe975uB9yAB7NsWFo0njZ
193
215
  astrbot/core/utils/astrbot_path.py,sha256=ZK-OmCTOxH63GQ4kBMGZs9ybKmKuHMNXdW9RKqLbYRk,1227
194
216
  astrbot/core/utils/command_parser.py,sha256=Cwd4zzyKEoC-er0a-9WZ5n2g4F8eH9p6BHxD96gjaVM,617
195
217
  astrbot/core/utils/dify_api_client.py,sha256=EpV3hPB0aFWGQtjgtS-SEM3EFmBoMmvEOKyU52TQgbY,4809
196
- astrbot/core/utils/io.py,sha256=zFxFVNEPA04Jr15GGdf6K3-9gBe4pxxGfsxqkqSXZ0Q,9082
218
+ astrbot/core/utils/io.py,sha256=gHviSn-HCqoImGhusgFrgtxzGIeewbfJPM1ZlRRkdNA,9423
197
219
  astrbot/core/utils/log_pipe.py,sha256=AU-y7vvAUtegH3XRenJqsFpmH0UIV4zUfLWh-5uPkCI,883
198
220
  astrbot/core/utils/metrics.py,sha256=uFGS3ZU81vcUbhiIrc-VAy9t5Lc6Oxh13wGYcl3oVGY,2456
199
221
  astrbot/core/utils/path_util.py,sha256=_PKjMtQBGD_C7o5BzN4-NSsqCffPSr9NwiHQHTSehkM,3130
@@ -210,25 +232,27 @@ astrbot/core/utils/t2i/renderer.py,sha256=WPA1EBt8RQ3_3asnK9neIy66eg9WYdlPzJKh_D
210
232
  astrbot/core/utils/t2i/template_manager.py,sha256=EO6YO9A9bkwv_MLUNTqMtaFfd5r7sWpD0-K1qcRu1lI,4522
211
233
  astrbot/core/utils/t2i/template/astrbot_powershell.html,sha256=UcjetoIJG3pJRUHMDOor3Nhj7FFmVXXpkySkpXXztO4,4943
212
234
  astrbot/core/utils/t2i/template/base.html,sha256=fQvq4I4lrlH2s_jwAzj62lWeC4g87xXsYJMJ0XunCPA,6619
213
- astrbot/dashboard/server.py,sha256=4d_0xDfMW-qKabVLBEVzOnjxF3qIiNMr3dvaxZO-cEk,9049
214
- astrbot/dashboard/routes/__init__.py,sha256=Bn6_rbYtujttHKHEn8Smv2RiObhwWyH9TagW4HZSzGw,710
235
+ astrbot/dashboard/server.py,sha256=EEm0l76TY39B14ZebPjsVEsi83-qVAzGw-kqOWksHaI,9296
236
+ astrbot/dashboard/utils.py,sha256=SqfUqTaRseeiJWGgSlrRm4CuxgJgqw7MXODjl0J2pXA,5343
237
+ astrbot/dashboard/routes/__init__.py,sha256=tx0Rp-SV0dfj7f9znL0d84MOxK4lRLeqfCQhBA7_aac,783
215
238
  astrbot/dashboard/routes/auth.py,sha256=igVjZWluaQpF-lrg-Ueb4IA553dA_Sn6pAxY34-83i8,2964
216
239
  astrbot/dashboard/routes/chat.py,sha256=6dGKXBkbGb5TGcIMFh6tr6bvdv7yekrgehSdkYSZ8Ls,13232
217
- astrbot/dashboard/routes/config.py,sha256=VRbWmtmPKSpWkyHb-NU02FUgE5Z3qq1aRnq31CBOPPs,34840
240
+ astrbot/dashboard/routes/config.py,sha256=AucpVJgif082vMtemB8kD7YG7nF4nSF3NPIqJZj5Zx8,39961
218
241
  astrbot/dashboard/routes/conversation.py,sha256=4-jGtd5ApzcN1Jh6UAGet0A7oPkRMvvxk1gKc47KHmo,10768
219
242
  astrbot/dashboard/routes/file.py,sha256=y3yi4ari-ELwiDicuniBlvXhVe8d1JgWRl6FdC42v9k,706
243
+ astrbot/dashboard/routes/knowledge_base.py,sha256=EKF2e1htzwQ85RHHRiOuzqUh986KoymU_i3DJdwC0vE,39547
220
244
  astrbot/dashboard/routes/log.py,sha256=hDl6Niz_Vs4xb64USjCBzdOcm68GDpEsQrNrLr8yKGc,2114
221
245
  astrbot/dashboard/routes/persona.py,sha256=6icnNNE8A0Yy1WI0INWD9ZPKC7VcZG-xHDfYElhaP8M,7857
222
- astrbot/dashboard/routes/plugin.py,sha256=cGGJVEM55uRiPo-EeD5apZQISzPw9vux7a-U2dE4fZQ,19429
246
+ astrbot/dashboard/routes/plugin.py,sha256=aAGDd2mLblJuGoA4vyyteKEXqqVGN7kn0qTS5TMQnrA,20268
223
247
  astrbot/dashboard/routes/route.py,sha256=V-Wm88D0BmxSYAUbedunykbWy5p7Tggae9nDhxm7LZU,1545
224
248
  astrbot/dashboard/routes/session_management.py,sha256=yYcaXDwOiNYoLrseCxazLoFpxj_rsOUQ9-_8zifAAXE,26811
225
249
  astrbot/dashboard/routes/stat.py,sha256=KCtP0-f9g664gM2SOBgnU8uKx6zt93-5Kut-d7wd7zk,6910
226
250
  astrbot/dashboard/routes/static_file.py,sha256=7KnNcOb1BVqSTft114LhGsDkfg69X2jHEm0tOK0kW0Y,1169
227
251
  astrbot/dashboard/routes/t2i.py,sha256=scp05AxoJM9cubrkSMBu1BbIWP1BMS50eFEPZ9S6WKM,8893
228
252
  astrbot/dashboard/routes/tools.py,sha256=xVw6sG6xnANZm-M2JXT75ftH_I58MMJ0FqejODnP4Xw,14658
229
- astrbot/dashboard/routes/update.py,sha256=cFeb0EGA69afhSB4o1HJYsvlBQGQotQXQJsp_juJ6ck,6707
230
- astrbot-4.3.5.dist-info/METADATA,sha256=DRMmyvO3PH-HQaBFmW2PU58Z2G2ov77ITzwNzpHl0Ng,10323
231
- astrbot-4.3.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
232
- astrbot-4.3.5.dist-info/entry_points.txt,sha256=OEF09YmhBWYuViXrvTLLpstF4ccmNwDL8r7nnFD0pfI,53
233
- astrbot-4.3.5.dist-info/licenses/LICENSE,sha256=zPfQj5Mq8-gThIiBcxETr7t8gND9bZWOjTGQAr80TQI,34500
234
- astrbot-4.3.5.dist-info/RECORD,,
253
+ astrbot/dashboard/routes/update.py,sha256=sWDH_diqNHugUoVzPSxLUHPtb_nv5YIEEIOGjA6VB7o,6713
254
+ astrbot-4.5.0.dist-info/METADATA,sha256=SKECZPkwtXdOkSCk7gIkE__d30vm23timLpj3nPsLG0,10883
255
+ astrbot-4.5.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
256
+ astrbot-4.5.0.dist-info/entry_points.txt,sha256=OEF09YmhBWYuViXrvTLLpstF4ccmNwDL8r7nnFD0pfI,53
257
+ astrbot-4.5.0.dist-info/licenses/LICENSE,sha256=zPfQj5Mq8-gThIiBcxETr7t8gND9bZWOjTGQAr80TQI,34500
258
+ astrbot-4.5.0.dist-info/RECORD,,